#!/bin/sh # # This file is part of msrtool. # # Copyright (c) 2008 Peter Stuge # # 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 later. VERSION="" REV="$(svnversion -c . 2>/dev/null)"; REV="${REV/*:}" VERSION="${VERSION:-$REV}" function findprog() { local WHAT FROMENV FILE WHAT="${1}" shift FROMENV="${1}" shift echo -n "searching for ${WHAT} (${*})..." 1>&2 test -n "${FROMENV}" && { echo " using environment: ${FROMENV}" 1>&2 echo "${FROMENV}" exit 0 } for parm in $(seq 0 $#); do test -z "${1}" && { shift continue } FILE="$(which "${1}" 2>/dev/null)" test $? -eq 0 && { echo "${1}" break } shift 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 } function trycompile() { local WHAT OUT WHAT="${1}" shift echo -n "finding CFLAGS for ${WHAT}... " 1>&2 OUT="${OUT}\n${CC} ${CFLAGS} -o .config.o -c .config.c" OUT="${OUT}\n$(${CC} ${CFLAGS} -o .config.o -c .config.c 2>&1)" test $? -eq 0 && { echo " using: ${CFLAGS}" 1>&2 echo "${CFLAGS}" exit 0 } for parm in $(seq 1 $#); do OUT="${OUT}\n${CC} ${CFLAGS} ${1} -o .config.o -c .config.c 2>&1" OUT="${OUT}\n$(${CC} ${CFLAGS} ${1} -o .config.o -c .config.c 2>&1)" test $? -eq 0 && { echo " using: ${CFLAGS} ${1}" 1>&2 echo "${CFLAGS} ${1}" exit 0 } shift done echo "failed!" 1>&2 echo 1>&2 echo -n "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 ${0}" 1>&2 echo 1>&2 exit 1 } function trylink() { local WHAT OUT WHAT="${1}" shift echo -n "finding LDFLAGS for ${WHAT}... " 1>&2 OUT="${OUT}\n${CC} -o .config .config.o ${LDFLAGS} 2>&1" OUT="${OUT}\n$(${CC} -o .config .config.o ${LDFLAGS} 2>&1)" test $? -eq 0 && { echo " using: ${LDFLAGS}" 1>&2 echo "${LDFLAGS}" exit 0 } for parm in $(seq 1 $#); do OUT="${OUT}\n${CC} -o .config .config.o ${LDFLAGS} ${1} 2>&1" OUT="${OUT}\n$(${CC} -o .config .config.o ${LDFLAGS} ${1} 2>&1)" test $? -eq 0 && { echo " using: ${LDFLAGS} ${1}" 1>&2 echo "${LDFLAGS} ${1}" exit 0 } shift done echo "failed!" 1>&2 echo 1>&2 echo -n "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 ${0}" 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 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") || { rm -f .config.c .config.o exit 1 } rm -f .config.c .config.o .config PREFIX="${PREFIX:-/usr/local}" OS_ARCH=$(uname) 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 echo -n "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@#/usr/local#g" \ Makefile.in >> Makefile echo " done" echo