xref: /pciutils/lib/configure (revision daf2ef4e)
1727ce158SMartin Mares#!/bin/sh
23b75e19aSMartin Mares# Configuration script for the PCI library
33b75e19aSMartin Mares# (c) 1998--2008 Martin Mares <[email protected]>
4727ce158SMartin Mares
514d6c0a3SMartin Maresecho_n() {
614d6c0a3SMartin Mares	if [ -n "$BASH" ]
714d6c0a3SMartin Mares	then
814d6c0a3SMartin Mares		echo -n "$*"
914d6c0a3SMartin Mares	else
1014d6c0a3SMartin Mares		echo "$*\c"
1114d6c0a3SMartin Mares	fi
1214d6c0a3SMartin Mares}
1314d6c0a3SMartin Mares
143b75e19aSMartin Maresif [ -z "$VERSION" -o -z "$IDSDIR" ] ; then
153b75e19aSMartin Mares	echo >&2 "Please run the configure script from the top-level Makefile"
163b75e19aSMartin Mares	exit 1
173b75e19aSMartin Maresfi
183b75e19aSMartin Mares
1914d6c0a3SMartin Maresecho_n "Configuring libpci for your system..."
203b75e19aSMartin Maresif [ -z "$HOST" ] ; then
21727ce158SMartin Mares	sys=`uname -s`
22727ce158SMartin Mares	rel=`uname -r`
2314d6c0a3SMartin Mares	if [ "$sys" = "AIX" -a -x /usr/bin/oslevel -a -x /usr/sbin/lsattr ]
2414d6c0a3SMartin Mares	then
2514d6c0a3SMartin Mares		rel=`/usr/bin/oslevel`
2614d6c0a3SMartin Mares		proc=`/usr/sbin/lsdev -C -c processor -S available -F name | head -1`
2714d6c0a3SMartin Mares		cpu=`/usr/sbin/lsattr -F value -l $proc -a type | sed 's/_.*//'`
2814d6c0a3SMartin Mares	else
298fc75dbcSMartin Mares		cpu=`uname -m | sed 's/^i.86$/i386/;s/^sun4u$/sparc64/;s/^i86pc$/i386/'`
3014d6c0a3SMartin Mares	fi
3199091df9SMartin Mares	if [ "$sys" = "GNU/kFreeBSD" -o "$sys" = "DragonFly" ]
32d1058e9dSMartin Mares	then
33d1058e9dSMartin Mares		sys=freebsd
34d1058e9dSMartin Mares	fi
35550d67d1SMartin Mares	if [ "$sys" = "CYGWIN_NT-5.1" ]
36550d67d1SMartin Mares	then
37550d67d1SMartin Mares		sys=cygwin
38550d67d1SMartin Mares	fi
393b75e19aSMartin Mares	HOST=${3:-$cpu-$sys}
403b75e19aSMartin Maresfi
41b0eb18ccSMartin Mares# CAVEAT: tr on Solaris is a bit weird and the extra [] is otherwise harmless.
423b75e19aSMartin Mareshost=`echo $HOST | sed 's/^\([^-]*\)-\([^-]*\)$/\1--\2/' | tr '[A-Z]' '[a-z]'`
430d656226SMartin Marescpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
440d656226SMartin Maressys=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
450d656226SMartin Maresecho " $host $rel"
46168b4f46SMartin Mares
47727ce158SMartin Maresc=config.h
48840d09aeSMartin Maresm=config.mk
4959a0211aSMartin Maresecho >$c '#define PCI_CONFIG_H'
50*daf2ef4eSMartin Maresecho >>$c "#define PCI_ARCH_`echo $cpu | tr '[a-z]' '[A-Z]'`"
51b0eb18ccSMartin Maresecho >>$c "#define PCI_OS_`echo $sys | tr '[a-z]' '[A-Z]'`"
52d7ea742cSMartin Maresecho >$m 'WITH_LIBS='
53168b4f46SMartin Mares
5414d6c0a3SMartin Maresecho_n "Looking for access methods..."
5517b215b0SMartin MaresLIBRESOLV=-lresolv
56168b4f46SMartin Mares
57168b4f46SMartin Marescase $sys in
580d656226SMartin Mares	linux*)
592100f710SMartin Mares		echo_n " sysfs proc"
60489233b4SMartin Mares		echo >>$c '#define PCI_HAVE_PM_LINUX_SYSFS'
61489233b4SMartin Mares		echo >>$c '#define PCI_HAVE_PM_LINUX_PROC'
62489233b4SMartin Mares		echo >>$c '#define PCI_HAVE_LINUX_BYTEORDER_H'
63489233b4SMartin Mares		echo >>$c '#define PCI_PATH_PROC_BUS_PCI "/proc/bus/pci"'
64489233b4SMartin Mares		echo >>$c '#define PCI_PATH_SYS_BUS_PCI "/sys/bus/pci"'
65727ce158SMartin Mares		case $cpu in
66623234ecSMartin Mares				i386|x86_64)	echo_n " i386-ports"
67489233b4SMartin Mares						echo >>$c '#define PCI_HAVE_PM_INTEL_CONF'
68727ce158SMartin Mares						;;
69727ce158SMartin Mares		esac
7015296723SMartin Mares		echo >>$c '#define PCI_HAVE_64BIT_ADDRESS'
71168b4f46SMartin Mares		;;
720d656226SMartin Mares	sunos)
738fc75dbcSMartin Mares		case $cpu in
748fc75dbcSMartin Mares				i386)		echo_n " i386-ports"
75489233b4SMartin Mares						echo >>$c "#define PCI_HAVE_PM_INTEL_CONF"
768fc75dbcSMartin Mares						;;
778fc75dbcSMartin Mares				*)
78545d5126SMartin Mares						echo " The PCI library does not support Solaris for this architecture: $cpu"
798fc75dbcSMartin Mares						exit 1
808fc75dbcSMartin Mares						;;
818fc75dbcSMartin Mares		esac
82e49ed044SMartin Mares		echo >>$c '#define PCI_HAVE_STDINT_H'
838fc75dbcSMartin Mares		;;
840d656226SMartin Mares	freebsd)
8514d6c0a3SMartin Mares		echo_n " fbsd-device"
86489233b4SMartin Mares		echo >>$c '#define PCI_HAVE_PM_FBSD_DEVICE'
87489233b4SMartin Mares		echo >>$c '#define PCI_PATH_FBSD_DEVICE "/dev/pci"'
8817b215b0SMartin Mares		LIBRESOLV=
89168b4f46SMartin Mares		;;
90b6359063SMartin Mares        openbsd)
91b6359063SMartin Mares	        echo_n " obsd-device"
92b6359063SMartin Mares		echo >>$c '#define PCI_HAVE_PM_OBSD_DEVICE'
93b6359063SMartin Mares		echo >>$c '#define PCI_PATH_OBSD_DEVICE "/dev/pci"'
9417b215b0SMartin Mares		LIBRESOLV=
95b6359063SMartin Mares		;;
960d656226SMartin Mares	aix)
9714d6c0a3SMartin Mares		echo_n " aix-device"
98489233b4SMartin Mares		echo >>$c '#define PCI_HAVE_PM_AIX_DEVICE'
99840d09aeSMartin Mares		echo >>$m 'CFLAGS=-g'
100840d09aeSMartin Mares		echo >>$m 'INSTALL=installbsd'
101840d09aeSMartin Mares		echo >>$m 'DIRINSTALL=mkdir -p'
10214d6c0a3SMartin Mares		;;
1030d656226SMartin Mares	netbsd)
104848b4347SMartin Mares		echo_n " nbsd-libpci"
105489233b4SMartin Mares		echo >>$c '#define PCI_HAVE_PM_NBSD_LIBPCI'
106489233b4SMartin Mares		echo >>$c '#define PCI_PATH_NBSD_DEVICE "/dev/pci0"'
107d7ea742cSMartin Mares		echo >>$m 'LIBNAME=libpciutils'
108d7ea742cSMartin Mares		echo >>$m 'WITH_LIBS+=-lpci'
10917b215b0SMartin Mares		LIBRESOLV=
110848b4347SMartin Mares		;;
1110d656226SMartin Mares    	gnu)
1128fc75dbcSMartin Mares		echo_n " i386-ports"
113489233b4SMartin Mares		echo >>$c '#define PCI_HAVE_PM_INTEL_CONF'
11480459c65SMartin Mares		;;
115550d67d1SMartin Mares	cygwin)
116550d67d1SMartin Mares		echo_n " i386-ports"
117550d67d1SMartin Mares		echo >>$c '#define PCI_HAVE_PM_INTEL_CONF'
118550d67d1SMartin Mares		echo >>$m 'LDLIBS+=-lioperm'
119550d67d1SMartin Mares		;;
120168b4f46SMartin Mares        *)
12180459c65SMartin Mares		echo " Unfortunately, your OS is not supported by the PCI Library"
122168b4f46SMartin Mares		exit 1
123168b4f46SMartin Mares		;;
124168b4f46SMartin Maresesac
125168b4f46SMartin Mares
126489233b4SMartin Maresecho >>$c '#define PCI_HAVE_PM_DUMP'
127727ce158SMartin Maresecho " dump"
128cc062b4aSMartin Mares
129cc062b4aSMartin Maresecho_n "Checking for zlib support... "
1303b75e19aSMartin Maresif [ "$ZLIB" = yes -o "$ZLIB" = no ] ; then
1313b75e19aSMartin Mares	echo "$ZLIB (set manually)"
132cc062b4aSMartin Mareselse
133ff94bc05SMartin Mares	if [ -f /usr/include/zlib.h -o -f /usr/local/include/zlib.h ] ; then
1343b75e19aSMartin Mares		ZLIB=yes
135cc062b4aSMartin Mares	else
1363b75e19aSMartin Mares		ZLIB=no
137cc062b4aSMartin Mares	fi
1383b75e19aSMartin Mares	echo "$ZLIB (auto-detected)"
139cc062b4aSMartin Maresfi
1403b75e19aSMartin Maresif [ "$ZLIB" = yes ] ; then
141cc062b4aSMartin Mares	echo >>$c '#define PCI_COMPRESSED_IDS'
142840d09aeSMartin Mares	echo >>$c '#define PCI_IDS "pci.ids.gz"'
1435670e427SMartin Mares	echo >>$m 'LIBZ=-lz'
144d7ea742cSMartin Mares	echo >>$m 'WITH_LIBS+=$(LIBZ)'
145cc062b4aSMartin Mareselse
146840d09aeSMartin Mares	echo >>$c '#define PCI_IDS "pci.ids"'
147cc062b4aSMartin Maresfi
1483b75e19aSMartin Maresecho >>$c "#define PCI_PATH_IDS_DIR \"$IDSDIR\""
149cc062b4aSMartin Mares
1503b75e19aSMartin Maresecho_n "Checking for DNS support... "
1513b75e19aSMartin Maresif [ "$DNS" = yes -o "$DNS" = no ] ; then
1523b75e19aSMartin Mares	echo "$DNS (set manually)"
1533b75e19aSMartin Mareselse
1543b75e19aSMartin Mares	if [ -f /usr/include/resolv.h ] ; then
1553b75e19aSMartin Mares		DNS=yes
1563b75e19aSMartin Mares	else
1573b75e19aSMartin Mares		DNS=no
1583b75e19aSMartin Mares	fi
1593b75e19aSMartin Mares	echo "$DNS (auto-detected)"
1603b75e19aSMartin Maresfi
1613b75e19aSMartin Maresif [ "$DNS" = yes ] ; then
1623b75e19aSMartin Mares	echo >>$c "#define PCI_USE_DNS"
163cd2f6a34SMartin Mares	echo >>$c "#define PCI_ID_DOMAIN \"pci.id.ucw.cz\""
16417b215b0SMartin Mares	echo >>$m "WITH_LIBS+=$LIBRESOLV"
1653b75e19aSMartin Maresfi
1663b75e19aSMartin Mares
167d7ea742cSMartin Maresecho "Checking whether to build a shared library... $SHARED (set manually)"
168d7ea742cSMartin Maresif [ "$SHARED" = no ] ; then
169d7ea742cSMartin Mares	echo >>$m 'PCILIB=$(LIBNAME).a'
170d7ea742cSMartin Mares	echo >>$m 'LDLIBS=$(WITH_LIBS)'
171d7ea742cSMartin Mares	echo >>$m 'LIB_LDLIBS='
172d7ea742cSMartin Mareselse
1735ad89ed9SMartin Mares	echo >>$m 'PCILIB=$(LIBNAME).so.$(VERSION)'
174d7ea742cSMartin Mares	# We link the dependencies _to_ the library, so we do not need explicit deps in .pc
175d7ea742cSMartin Mares	echo >>$m 'LDLIBS='
176d7ea742cSMartin Mares	echo >>$m 'LIB_LDLIBS=$(WITH_LIBS)'
17759a0211aSMartin Mares	echo >>$c '#define PCI_SHARED_LIB'
178d7ea742cSMartin Mares	if [ "$SHARED" = yes ] ; then
179d7ea742cSMartin Mares		echo >>$m 'SONAME=-Wl,-soname,$(LIBNAME).so$(ABI_VERSION)'
180d7ea742cSMartin Mares	fi
181d7ea742cSMartin Maresfi
182d7ea742cSMartin Maresecho >>$m 'PCILIBPC=$(LIBNAME).pc'
183d7ea742cSMartin Mares
1843b75e19aSMartin Maresecho >>$c "#define PCILIB_VERSION \"$VERSION\""
185840d09aeSMartin Maressed '/"/{s/^#define \([^ ]*\) "\(.*\)"$/\1=\2/;p;d;};s/^#define \(.*\)/\1=1/' <$c >>$m
186