xref: /pciutils/lib/configure (revision bca6bbaf)
1727ce158SMartin Mares#!/bin/sh
23b75e19aSMartin Mares# Configuration script for the PCI library
317ec7e70SMartin Mares# (c) 1998--2013 Martin Mares <[email protected]>
4666422c6SMartin Mares
5666422c6SMartin MaresLC_ALL=C
6666422c6SMartin Maresexport LC_ALL
7727ce158SMartin Mares
814d6c0a3SMartin Maresecho_n() {
914d6c0a3SMartin Mares	if [ -n "$BASH" ]
1014d6c0a3SMartin Mares	then
1114d6c0a3SMartin Mares		echo -n "$*"
1214d6c0a3SMartin Mares	else
1314d6c0a3SMartin Mares		echo "$*\c"
1414d6c0a3SMartin Mares	fi
1514d6c0a3SMartin Mares}
1614d6c0a3SMartin Mares
173b75e19aSMartin Maresif [ -z "$VERSION" -o -z "$IDSDIR" ] ; then
183b75e19aSMartin Mares	echo >&2 "Please run the configure script from the top-level Makefile"
193b75e19aSMartin Mares	exit 1
203b75e19aSMartin Maresfi
213b75e19aSMartin Mares
2214d6c0a3SMartin Maresecho_n "Configuring libpci for your system..."
233b75e19aSMartin Maresif [ -z "$HOST" ] ; then
24727ce158SMartin Mares	sys=`uname -s`
25727ce158SMartin Mares	rel=`uname -r`
26d0097572SMartin Mares	realsys="$sys"
2714d6c0a3SMartin Mares	if [ "$sys" = "AIX" -a -x /usr/bin/oslevel -a -x /usr/sbin/lsattr ]
2814d6c0a3SMartin Mares	then
2914d6c0a3SMartin Mares		rel=`/usr/bin/oslevel`
3014d6c0a3SMartin Mares		proc=`/usr/sbin/lsdev -C -c processor -S available -F name | head -1`
3114d6c0a3SMartin Mares		cpu=`/usr/sbin/lsattr -F value -l $proc -a type | sed 's/_.*//'`
3214d6c0a3SMartin Mares	else
3340e253d7SFrançois Revol		cpu=`uname -m | sed 's/^i.86$/i386/;s/^sun4u$/sparc64/;s/^i86pc$/i386/;s/^BePC$/i386/;s/^BeMac$/powerpc/;s/^BeBox$/powerpc/'`
3414d6c0a3SMartin Mares	fi
3599091df9SMartin Mares	if [ "$sys" = "GNU/kFreeBSD" -o "$sys" = "DragonFly" ]
36d1058e9dSMartin Mares	then
37d1058e9dSMartin Mares		sys=freebsd
38d1058e9dSMartin Mares	fi
396c4e6afeSMartin Mares	if [ "$sys" = "CYGWIN_NT-5.1" -o "$sys" = "CYGWIN_NT-6.0" ]
40550d67d1SMartin Mares	then
41550d67d1SMartin Mares		sys=cygwin
42550d67d1SMartin Mares	fi
433b75e19aSMartin Mares	HOST=${3:-$cpu-$sys}
443b75e19aSMartin Maresfi
45f683f54aSAlon Bar-Lev[ -n "$RELEASE" ] && rel="${RELEASE}"
46b0eb18ccSMartin Mares# CAVEAT: tr on Solaris is a bit weird and the extra [] is otherwise harmless.
47f683f54aSAlon Bar-Levhost=`echo $HOST | sed -e 's/^\([^-]*\)-\([^-]*\)-\([^-]*\)-\([^-]*\)$/\1-\3/' -e 's/^\([^-]*\)-\([^-]*\)$/\1--\2/' | tr '[A-Z]' '[a-z]'`
480d656226SMartin Marescpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
490d656226SMartin Maressys=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
50f683f54aSAlon Bar-Levecho " $host $rel $cpu $sys"
51168b4f46SMartin Mares
52727ce158SMartin Maresc=config.h
53840d09aeSMartin Maresm=config.mk
5459a0211aSMartin Maresecho >$c '#define PCI_CONFIG_H'
55daf2ef4eSMartin Maresecho >>$c "#define PCI_ARCH_`echo $cpu | tr '[a-z]' '[A-Z]'`"
56b0eb18ccSMartin Maresecho >>$c "#define PCI_OS_`echo $sys | tr '[a-z]' '[A-Z]'`"
57d7ea742cSMartin Maresecho >$m 'WITH_LIBS='
58168b4f46SMartin Mares
5914d6c0a3SMartin Maresecho_n "Looking for access methods..."
6017b215b0SMartin MaresLIBRESOLV=-lresolv
618d1cb3d7SRichard YaoLIBEXT=so
62168b4f46SMartin Mares
63168b4f46SMartin Marescase $sys in
640d656226SMartin Mares	linux*)
652100f710SMartin Mares		echo_n " sysfs proc"
66489233b4SMartin Mares		echo >>$c '#define PCI_HAVE_PM_LINUX_SYSFS'
67489233b4SMartin Mares		echo >>$c '#define PCI_HAVE_PM_LINUX_PROC'
68489233b4SMartin Mares		echo >>$c '#define PCI_HAVE_LINUX_BYTEORDER_H'
69489233b4SMartin Mares		echo >>$c '#define PCI_PATH_PROC_BUS_PCI "/proc/bus/pci"'
70489233b4SMartin Mares		echo >>$c '#define PCI_PATH_SYS_BUS_PCI "/sys/bus/pci"'
71727ce158SMartin Mares		case $cpu in
72f683f54aSAlon Bar-Lev				i?86|x86_64)	echo_n " i386-ports"
73489233b4SMartin Mares						echo >>$c '#define PCI_HAVE_PM_INTEL_CONF'
74727ce158SMartin Mares						;;
75727ce158SMartin Mares		esac
7615296723SMartin Mares		echo >>$c '#define PCI_HAVE_64BIT_ADDRESS'
77168b4f46SMartin Mares		;;
780d656226SMartin Mares	sunos)
798fc75dbcSMartin Mares		case $cpu in
80f683f54aSAlon Bar-Lev				i?86)		echo_n " i386-ports"
81489233b4SMartin Mares						echo >>$c "#define PCI_HAVE_PM_INTEL_CONF"
828fc75dbcSMartin Mares						;;
838fc75dbcSMartin Mares				*)
84545d5126SMartin Mares						echo " The PCI library does not support Solaris for this architecture: $cpu"
858fc75dbcSMartin Mares						exit 1
868fc75dbcSMartin Mares						;;
878fc75dbcSMartin Mares		esac
88e49ed044SMartin Mares		echo >>$c '#define PCI_HAVE_STDINT_H'
898fc75dbcSMartin Mares		;;
90657bd95dSMarek Cruz	freebsd*)
9114d6c0a3SMartin Mares		echo_n " fbsd-device"
92489233b4SMartin Mares		echo >>$c '#define PCI_HAVE_PM_FBSD_DEVICE'
93489233b4SMartin Mares		echo >>$c '#define PCI_PATH_FBSD_DEVICE "/dev/pci"'
94d0097572SMartin Mares		if [ "$realsys" != "GNU/kFreeBSD" ] ; then
9517b215b0SMartin Mares			LIBRESOLV=
96d0097572SMartin Mares		fi
97168b4f46SMartin Mares		;;
98b6359063SMartin Mares        openbsd)
99b6359063SMartin Mares	        echo_n " obsd-device"
100b6359063SMartin Mares		echo >>$c '#define PCI_HAVE_PM_OBSD_DEVICE'
101b6359063SMartin Mares		echo >>$c '#define PCI_PATH_OBSD_DEVICE "/dev/pci"'
10217b215b0SMartin Mares		LIBRESOLV=
103b6359063SMartin Mares		;;
1047cb1afbeSRichard Yao
1058d1cb3d7SRichard Yao        darwin*)
1064e35117cSMartin Mares	        echo_n " darwin"
1077cb1afbeSRichard Yao		echo >>$c '#define PCI_HAVE_PM_DARWIN_DEVICE'
1087cb1afbeSRichard Yao		echo >>$m 'WITH_LIBS+=-lresolv -framework CoreFoundation -framework IOKit'
1097cb1afbeSRichard Yao		echo >>$c '#define PCI_HAVE_64BIT_ADDRESS'
1107cb1afbeSRichard Yao		LIBRESOLV=
1118d1cb3d7SRichard Yao		LIBEXT=dylib
1127cb1afbeSRichard Yao		;;
1130d656226SMartin Mares	aix)
11414d6c0a3SMartin Mares		echo_n " aix-device"
115489233b4SMartin Mares		echo >>$c '#define PCI_HAVE_PM_AIX_DEVICE'
116840d09aeSMartin Mares		echo >>$m 'CFLAGS=-g'
117840d09aeSMartin Mares		echo >>$m 'INSTALL=installbsd'
118840d09aeSMartin Mares		echo >>$m 'DIRINSTALL=mkdir -p'
11914d6c0a3SMartin Mares		;;
1200d656226SMartin Mares	netbsd)
121848b4347SMartin Mares		echo_n " nbsd-libpci"
122489233b4SMartin Mares		echo >>$c '#define PCI_HAVE_PM_NBSD_LIBPCI'
123489233b4SMartin Mares		echo >>$c '#define PCI_PATH_NBSD_DEVICE "/dev/pci0"'
124d7ea742cSMartin Mares		echo >>$m 'LIBNAME=libpciutils'
125d7ea742cSMartin Mares		echo >>$m 'WITH_LIBS+=-lpci'
12617b215b0SMartin Mares		LIBRESOLV=
127848b4347SMartin Mares		;;
1280d656226SMartin Mares    	gnu)
1298fc75dbcSMartin Mares		echo_n " i386-ports"
130489233b4SMartin Mares		echo >>$c '#define PCI_HAVE_PM_INTEL_CONF'
13180459c65SMartin Mares		;;
132550d67d1SMartin Mares	cygwin)
133550d67d1SMartin Mares		echo_n " i386-ports"
134550d67d1SMartin Mares		echo >>$c '#define PCI_HAVE_PM_INTEL_CONF'
135d4553175SMartin Mares		echo >>$m 'WITH_LIBS+=-lioperm'
136550d67d1SMartin Mares		;;
13740e253d7SFrançois Revol	beos|haiku)
13840e253d7SFrançois Revol		case $cpu in
13940e253d7SFrançois Revol				i?86|x86_64)	echo_n " i386-ports"
14040e253d7SFrançois Revol						echo >>$c '#define PCI_HAVE_PM_INTEL_CONF'
14140e253d7SFrançois Revol						;;
14240e253d7SFrançois Revol		esac
14340e253d7SFrançois Revol		echo >>$c '#define PCI_HAVE_STDINT_H'
14440e253d7SFrançois Revol		;;
145168b4f46SMartin Mares	*)
14680459c65SMartin Mares		echo " Unfortunately, your OS is not supported by the PCI Library"
147168b4f46SMartin Mares		exit 1
148168b4f46SMartin Mares		;;
149168b4f46SMartin Maresesac
150168b4f46SMartin Mares
1518d1cb3d7SRichard Yaoecho >>$m "LIBEXT="$LIBEXT
152489233b4SMartin Maresecho >>$c '#define PCI_HAVE_PM_DUMP'
153727ce158SMartin Maresecho " dump"
154cc062b4aSMartin Mares
155cc062b4aSMartin Maresecho_n "Checking for zlib support... "
1563b75e19aSMartin Maresif [ "$ZLIB" = yes -o "$ZLIB" = no ] ; then
1573b75e19aSMartin Mares	echo "$ZLIB (set manually)"
158cc062b4aSMartin Mareselse
159ff94bc05SMartin Mares	if [ -f /usr/include/zlib.h -o -f /usr/local/include/zlib.h ] ; then
1603b75e19aSMartin Mares		ZLIB=yes
161cc062b4aSMartin Mares	else
1623b75e19aSMartin Mares		ZLIB=no
163cc062b4aSMartin Mares	fi
1643b75e19aSMartin Mares	echo "$ZLIB (auto-detected)"
165cc062b4aSMartin Maresfi
1663b75e19aSMartin Maresif [ "$ZLIB" = yes ] ; then
167cc062b4aSMartin Mares	echo >>$c '#define PCI_COMPRESSED_IDS'
168840d09aeSMartin Mares	echo >>$c '#define PCI_IDS "pci.ids.gz"'
1695670e427SMartin Mares	echo >>$m 'LIBZ=-lz'
170d7ea742cSMartin Mares	echo >>$m 'WITH_LIBS+=$(LIBZ)'
171cc062b4aSMartin Mareselse
172840d09aeSMartin Mares	echo >>$c '#define PCI_IDS "pci.ids"'
173cc062b4aSMartin Maresfi
1743b75e19aSMartin Maresecho >>$c "#define PCI_PATH_IDS_DIR \"$IDSDIR\""
175cc062b4aSMartin Mares
1763b75e19aSMartin Maresecho_n "Checking for DNS support... "
1773b75e19aSMartin Maresif [ "$DNS" = yes -o "$DNS" = no ] ; then
1783b75e19aSMartin Mares	echo "$DNS (set manually)"
1793b75e19aSMartin Mareselse
1803b75e19aSMartin Mares	if [ -f /usr/include/resolv.h ] ; then
1813b75e19aSMartin Mares		DNS=yes
1823b75e19aSMartin Mares	else
1833b75e19aSMartin Mares		DNS=no
1843b75e19aSMartin Mares	fi
1853b75e19aSMartin Mares	echo "$DNS (auto-detected)"
1863b75e19aSMartin Maresfi
1873b75e19aSMartin Maresif [ "$DNS" = yes ] ; then
1883b75e19aSMartin Mares	echo >>$c "#define PCI_USE_DNS"
189cd2f6a34SMartin Mares	echo >>$c "#define PCI_ID_DOMAIN \"pci.id.ucw.cz\""
19017b215b0SMartin Mares	echo >>$m "WITH_LIBS+=$LIBRESOLV"
1913b75e19aSMartin Maresfi
1923b75e19aSMartin Mares
19317ec7e70SMartin Maresif [ "$sys" = linux ] ; then
19417ec7e70SMartin Mares	echo_n "Checking for libkmod... "
19517ec7e70SMartin Mares	LIBKMOD_DETECTED=
1965bfe14fdSMartin Mares	if [ -z "$PKG_CONFIG" ] ; then
1975bfe14fdSMartin Mares		PKG_CONFIG=pkg-config
1985bfe14fdSMartin Mares	fi
19917ec7e70SMartin Mares	if [ "$LIBKMOD" != no ] ; then
2005bfe14fdSMartin Mares		if ! which $PKG_CONFIG >/dev/null ; then
2015bfe14fdSMartin Mares			echo_n "($PKG_CONFIG not found) "
2025bfe14fdSMartin Mares		elif $PKG_CONFIG libkmod ; then
20317ec7e70SMartin Mares			LIBKMOD_DETECTED=1
20417ec7e70SMartin Mares		fi
20517ec7e70SMartin Mares	fi
20617ec7e70SMartin Mares	if [ "$LIBKMOD" = yes -o "$LIBKMOD" = no ] ; then
20717ec7e70SMartin Mares		echo "$LIBKMOD (set manually)"
20817ec7e70SMartin Mares		if [ "$LIBKMOD" = yes -a -z "$LIBKMOD_DETECTED" ] ; then
20917ec7e70SMartin Mares			echo "Requested use of libkmod, but it is not available. Giving up."
21017ec7e70SMartin Mares			exit 1
21117ec7e70SMartin Mares		fi
21217ec7e70SMartin Mares	else
21317ec7e70SMartin Mares		if [ -n "$LIBKMOD_DETECTED" ] ; then
21417ec7e70SMartin Mares			LIBKMOD=yes
21517ec7e70SMartin Mares		else
21617ec7e70SMartin Mares			LIBKMOD=no
21717ec7e70SMartin Mares		fi
21817ec7e70SMartin Mares		echo "$LIBKMOD (auto-detected)"
21917ec7e70SMartin Mares	fi
22017ec7e70SMartin Mares	if [ "$LIBKMOD" = yes ] ; then
22117ec7e70SMartin Mares		echo >>$c "#define PCI_USE_LIBKMOD"
2225bfe14fdSMartin Mares		echo >>$m "LIBKMOD_CFLAGS=$($PKG_CONFIG --cflags libkmod)"
2235bfe14fdSMartin Mares		echo >>$m "LIBKMOD_LIBS=$($PKG_CONFIG --libs libkmod)"
22417ec7e70SMartin Mares	fi
225*bca6bbafSMartin Mares
226*bca6bbafSMartin Mares	echo_n "Checking for udev hwdb support... "
227*bca6bbafSMartin Mares	if [ "$HWDB" = yes -o "$HWDB" = no ] ; then
228*bca6bbafSMartin Mares		echo "$HWDB (set manually)"
229*bca6bbafSMartin Mares	else
230*bca6bbafSMartin Mares		if `which pkg-config >/dev/null && pkg-config --atleast-version=196 libudev` ; then
231*bca6bbafSMartin Mares			HWDB=yes
232*bca6bbafSMartin Mares		else
233*bca6bbafSMartin Mares			HWDB=no
234*bca6bbafSMartin Mares		fi
235*bca6bbafSMartin Mares		echo "$HWDB (auto-detected)"
236*bca6bbafSMartin Mares	fi
237*bca6bbafSMartin Mares	if [ "$HWDB" = yes ] ; then
238*bca6bbafSMartin Mares		echo >>$c '#define PCI_HAVE_HWDB'
239*bca6bbafSMartin Mares		echo >>$m 'LIBUDEV=-ludev'
240*bca6bbafSMartin Mares		echo >>$m 'WITH_LIBS+=$(LIBUDEV)'
241*bca6bbafSMartin Mares	fi
24217ec7e70SMartin Maresfi
24317ec7e70SMartin Mares
244d7ea742cSMartin Maresecho "Checking whether to build a shared library... $SHARED (set manually)"
245d7ea742cSMartin Maresif [ "$SHARED" = no ] ; then
246d7ea742cSMartin Mares	echo >>$m 'PCILIB=$(LIBNAME).a'
247d7ea742cSMartin Mares	echo >>$m 'LDLIBS=$(WITH_LIBS)'
248d7ea742cSMartin Mares	echo >>$m 'LIB_LDLIBS='
249d7ea742cSMartin Mareselse
2508d1cb3d7SRichard Yao	if [ "$LIBEXT" = so ]; then
2518d1cb3d7SRichard Yao		echo >>$m 'PCILIB=$(LIBNAME).$(LIBEXT).$(VERSION)'
2528d1cb3d7SRichard Yao	else
2538d1cb3d7SRichard Yao		echo >>$m 'PCILIB=$(LIBNAME).$(VERSION).$(LIBEXT)'
2548d1cb3d7SRichard Yao	fi
255d7ea742cSMartin Mares	# We link the dependencies _to_ the library, so we do not need explicit deps in .pc
256d7ea742cSMartin Mares	echo >>$m 'LDLIBS='
257d7ea742cSMartin Mares	echo >>$m 'LIB_LDLIBS=$(WITH_LIBS)'
25859a0211aSMartin Mares	echo >>$c '#define PCI_SHARED_LIB'
2598d1cb3d7SRichard Yao	if [ "$SHARED" = yes -a "$LIBEXT" = so ]; then
2608d1cb3d7SRichard Yao		echo >>$m 'SONAME=-Wl,-soname,$(LIBNAME).$(LIBEXT)$(ABI_VERSION)'
261d7ea742cSMartin Mares	fi
262d7ea742cSMartin Maresfi
263d7ea742cSMartin Maresecho >>$m 'PCILIBPC=$(LIBNAME).pc'
264d7ea742cSMartin Mares
2653b75e19aSMartin Maresecho >>$c "#define PCILIB_VERSION \"$VERSION\""
266840d09aeSMartin Maressed '/"/{s/^#define \([^ ]*\) "\(.*\)"$/\1=\2/;p;d;};s/^#define \(.*\)/\1=1/' <$c >>$m
267