blob: 1d11a464b97ff9eff033d7c40d8c8c4ed35a2c6d [file] [log] [blame]
#!/bin/sh
#
# This file is part of msrtool.
#
# Copyright (c) 2008, 2009 Peter Stuge <peter@stuge.se>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#
# If this is left unset, try to set the version string from the highest
# revision number of the checked out files.
VERSION=""
REV="`svnversion -c . 2>/dev/null | sed 's,.*:,,' 2>/dev/null`"
VERSION="${VERSION:-$REV}"
findprog() {
NPARMS=$#
WHAT="${1}"
shift
FROMENV="${1}"
shift
printf "searching for ${WHAT} (${*})..." 1>&2
test -n "${FROMENV}" && {
echo " using environment: ${FROMENV}" 1>&2
echo "${FROMENV}"
exit 0
}
i=2
while test $i -lt $NPARMS; do
test -z "${1}" && {
shift
i=$(($i+1))
continue
}
FILE="`which "${1}" 2>/dev/null`"
test $? -eq 0 && {
echo "${1}"
break
}
shift
i=$(($i+1))
done
test -z "${1}" && {
echo " not found!" 1>&2
echo 1>&2
echo "This is a fatal error, configure is exiting!" 1>&2
exit 1
}
echo " using ${FILE} in PATH" 1>&2
exit 0
}
trycompile() {
NPARMS=$#
WHAT="${1}"
shift
printf "finding CFLAGS for ${WHAT}... " 1>&2
OUT="${OUT}\n${CC} ${CFLAGS} -o .config.o -c .config.c"
OUT="${OUT}\n`echo "${CC} ${CFLAGS} -o .config.o -c .config.c"|sh 2>&1`"
test $? -eq 0 && {
echo " using: ${CFLAGS}" 1>&2
echo "${CFLAGS}"
exit 0
}
i=1
while test $i -lt $NPARMS; do
OUT="${OUT}\n${CC} ${CFLAGS} ${1} -o .config.o -c .config.c 2>&1"
OUT="${OUT}\n`echo "${CC} ${CFLAGS} ${1} -o .config.o -c .config.c"|sh 2>&1`"
test $? -eq 0 && {
echo " using: ${CFLAGS} ${1}" 1>&2
echo "${CFLAGS} ${1}"
exit 0
}
shift
i=$(($i+1))
done
echo "failed!" 1>&2
echo 1>&2
printf "The following compiler commands were executed:" 1>&2
echo -e "${OUT}\n" 1>&2
echo "This is a fatal error, configure is exiting!" 1>&2
echo 1>&2
echo "You can try to fix this by manually setting CFLAGS in the environment before" 1>&2
echo "running configure. E.g.:" 1>&2
echo "CFLAGS=-I/opt/somedir/include ./configure" 1>&2
echo 1>&2
exit 1
}
trylink() {
NPARMS=$#
WHAT="${1}"
shift
printf "finding LDFLAGS for ${WHAT}... " 1>&2
OUT="${OUT}\n${CC} -o .config .config.o ${LDFLAGS} 2>&1"
OUT="${OUT}\n`echo "${CC} -o .config .config.o ${LDFLAGS}"|sh 2>&1`"
test $? -eq 0 && {
echo " using: ${LDFLAGS}" 1>&2
echo "${LDFLAGS}"
exit 0
}
i=1
while test $i -lt $NPARMS; do
OUT="${OUT}\n${CC} -o .config .config.o ${LDFLAGS} ${1} 2>&1"
OUT="${OUT}\n`echo "${CC} -o .config .config.o ${LDFLAGS} ${1}"|sh 2>&1`"
test $? -eq 0 && {
echo " using: ${LDFLAGS} ${1}" 1>&2
echo "${LDFLAGS} ${1}"
exit 0
}
shift
i=$(($i+1))
done
echo "failed!" 1>&2
echo 1>&2
printf "The following linker commands were executed:" 1>&2
echo -e "${OUT}\n" 1>&2
echo "This is a fatal error, configure is exiting!" 1>&2
echo 1>&2
echo "You can try to fix this by manually setting LDFLAGS in the environment before" 1>&2
echo "running configure. E.g.:" 1>&2
echo "LDFLAGS=-L/opt/somedir/lib ./configure" 1>&2
echo 1>&2
exit 1
}
CC=`findprog "compiler" "${CC}" gcc cc icc` || exit
INSTALL=`findprog "install" "${INSTALL}" install ginstall` || exit
test -n "$DEBUG" && myCFLAGS="-O2 -g" || myCFLAGS="-Os"
CFLAGS="${CFLAGS} ${myCFLAGS} -Wall -Werror"
cat > .config.c << EOF
#include <pci/pci.h>
struct pci_access *pacc;
int main(int argc, char *argv[])
{ pacc = pci_alloc(); return 0; }
EOF
pc_CFLAGS="`pkg-config libpci --cflags 2>/dev/null`"
pc_LDFLAGS="`pkg-config libpci --libs 2>/dev/null`"
CFLAGS=`trycompile "libpci (from pciutils)" "${pc_CFLAGS}" "-I/usr/local/include"` || {
rm -f .config.c
exit 1
}
LDFLAGS=`trylink "libpci (from pciutils)" "${pc_LDFLAGS}" "-lpci -lz" "-L/usr/local/lib -lpci -lz" "-framework DirectHW -lpci -lz"` || {
rm -f .config.c .config.o
exit 1
}
rm -f .config.c .config.o .config
PREFIX="${PREFIX:-/usr/local}"
echo
echo "configured using the following settings:"
echo
echo "VERSION=${VERSION}"
echo "CC=${CC}"
echo "CFLAGS=${CFLAGS}"
echo "LDFLAGS=${LDFLAGS}"
echo "INSTALL=${INSTALL}"
echo "PREFIX=${PREFIX}"
echo
printf "creating Makefile..."
echo "# This file was automatically generated by configure" > Makefile
sed -e "s#@VERSION@#${VERSION}#g" \
-e "s#@CC@#${CC}#g" \
-e "s#@CFLAGS@#${CFLAGS}#g" \
-e "s#@LDFLAGS@#${LDFLAGS}#g" \
-e "s#@INSTALL@#${INSTALL}#g" \
-e "s#@PREFIX@#${PREFIX}#g" \
Makefile.in >> Makefile
echo " done"
echo