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