blob: 0606f4b8b984bad9a70f7bfc921779e4d57e3105 [file] [log] [blame]
Andriy Gapon7df17af2009-11-28 04:54:33 +00001#!/bin/sh
Peter Stugedad1e302008-11-22 17:13:36 +00002#
3# This file is part of msrtool.
4#
Peter Stugebe89c412009-11-28 04:45:34 +00005# Copyright (c) 2008, 2009 Peter Stuge <peter@stuge.se>
Peter Stugedad1e302008-11-22 17:13:36 +00006#
7# This program is free software; you can redistribute it and/or modify
8# it under the terms of the GNU General Public License version 2 as
9# published by the Free Software Foundation.
10#
11# This program is distributed in the hope that it will be useful,
12# but WITHOUT ANY WARRANTY; without even the implied warranty of
13# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14# GNU General Public License for more details.
15#
Peter Stugedad1e302008-11-22 17:13:36 +000016
17# If this is left unset, try to set the version string from the highest
Peter Stuge279cdbb2009-01-26 04:10:12 +000018# revision number of the checked out files.
Peter Stugedad1e302008-11-22 17:13:36 +000019VERSION=""
20
Iru Cai69bbfac2015-12-12 01:00:57 +080021REV="`git describe --always 2>/dev/null`"
Peter Stugedad1e302008-11-22 17:13:36 +000022VERSION="${VERSION:-$REV}"
23
Andriy Gapon7df17af2009-11-28 04:54:33 +000024findprog() {
Peter Stuge279cdbb2009-01-26 04:10:12 +000025 NPARMS=$#
Peter Stugedad1e302008-11-22 17:13:36 +000026 WHAT="${1}"
27 shift
28 FROMENV="${1}"
29 shift
Peter Stuge279cdbb2009-01-26 04:10:12 +000030 printf "searching for ${WHAT} (${*})..." 1>&2
Peter Stugedad1e302008-11-22 17:13:36 +000031 test -n "${FROMENV}" && {
32 echo " using environment: ${FROMENV}" 1>&2
33 echo "${FROMENV}"
34 exit 0
35 }
Peter Stuge279cdbb2009-01-26 04:10:12 +000036 i=2
37 while test $i -lt $NPARMS; do
Peter Stugedad1e302008-11-22 17:13:36 +000038 test -z "${1}" && {
39 shift
Andriy Gapon7df17af2009-11-28 04:54:33 +000040 i=$(($i+1))
Peter Stugedad1e302008-11-22 17:13:36 +000041 continue
42 }
Peter Stuge279cdbb2009-01-26 04:10:12 +000043 FILE="`which "${1}" 2>/dev/null`"
Peter Stugedad1e302008-11-22 17:13:36 +000044 test $? -eq 0 && {
45 echo "${1}"
46 break
47 }
48 shift
Andriy Gapon7df17af2009-11-28 04:54:33 +000049 i=$(($i+1))
Peter Stugedad1e302008-11-22 17:13:36 +000050 done
51 test -z "${1}" && {
52 echo " not found!" 1>&2
53 echo 1>&2
54 echo "This is a fatal error, configure is exiting!" 1>&2
55 exit 1
56 }
57 echo " using ${FILE} in PATH" 1>&2
58 exit 0
59}
60
Andriy Gapon7df17af2009-11-28 04:54:33 +000061trycompile() {
Peter Stuge279cdbb2009-01-26 04:10:12 +000062 NPARMS=$#
Peter Stugedad1e302008-11-22 17:13:36 +000063 WHAT="${1}"
64 shift
Peter Stuge279cdbb2009-01-26 04:10:12 +000065 printf "finding CFLAGS for ${WHAT}... " 1>&2
Peter Stugedad1e302008-11-22 17:13:36 +000066 OUT="${OUT}\n${CC} ${CFLAGS} -o .config.o -c .config.c"
Peter Stuge279cdbb2009-01-26 04:10:12 +000067 OUT="${OUT}\n`echo "${CC} ${CFLAGS} -o .config.o -c .config.c"|sh 2>&1`"
Peter Stugedad1e302008-11-22 17:13:36 +000068 test $? -eq 0 && {
69 echo " using: ${CFLAGS}" 1>&2
70 echo "${CFLAGS}"
71 exit 0
72 }
Peter Stuge279cdbb2009-01-26 04:10:12 +000073 i=1
74 while test $i -lt $NPARMS; do
Peter Stugedad1e302008-11-22 17:13:36 +000075 OUT="${OUT}\n${CC} ${CFLAGS} ${1} -o .config.o -c .config.c 2>&1"
Peter Stuge279cdbb2009-01-26 04:10:12 +000076 OUT="${OUT}\n`echo "${CC} ${CFLAGS} ${1} -o .config.o -c .config.c"|sh 2>&1`"
Peter Stugedad1e302008-11-22 17:13:36 +000077 test $? -eq 0 && {
78 echo " using: ${CFLAGS} ${1}" 1>&2
79 echo "${CFLAGS} ${1}"
80 exit 0
Stefan Reinauer14e22772010-04-27 06:56:47 +000081 }
Peter Stugedad1e302008-11-22 17:13:36 +000082 shift
Andriy Gapon7df17af2009-11-28 04:54:33 +000083 i=$(($i+1))
Peter Stugedad1e302008-11-22 17:13:36 +000084 done
85 echo "failed!" 1>&2
86 echo 1>&2
Peter Stuge279cdbb2009-01-26 04:10:12 +000087 printf "The following compiler commands were executed:" 1>&2
Peter Stugedad1e302008-11-22 17:13:36 +000088 echo -e "${OUT}\n" 1>&2
89 echo "This is a fatal error, configure is exiting!" 1>&2
90 echo 1>&2
91 echo "You can try to fix this by manually setting CFLAGS in the environment before" 1>&2
92 echo "running configure. E.g.:" 1>&2
Peter Stuge279cdbb2009-01-26 04:10:12 +000093 echo "CFLAGS=-I/opt/somedir/include ./configure" 1>&2
Peter Stugedad1e302008-11-22 17:13:36 +000094 echo 1>&2
95 exit 1
96}
97
Peter Stugef30a22202009-11-28 05:30:57 +000098trylink() {
Peter Stuge279cdbb2009-01-26 04:10:12 +000099 NPARMS=$#
Peter Stugedad1e302008-11-22 17:13:36 +0000100 WHAT="${1}"
101 shift
Peter Stuge279cdbb2009-01-26 04:10:12 +0000102 printf "finding LDFLAGS for ${WHAT}... " 1>&2
Peter Stugedad1e302008-11-22 17:13:36 +0000103 OUT="${OUT}\n${CC} -o .config .config.o ${LDFLAGS} 2>&1"
Peter Stuge279cdbb2009-01-26 04:10:12 +0000104 OUT="${OUT}\n`echo "${CC} -o .config .config.o ${LDFLAGS}"|sh 2>&1`"
Peter Stugedad1e302008-11-22 17:13:36 +0000105 test $? -eq 0 && {
106 echo " using: ${LDFLAGS}" 1>&2
107 echo "${LDFLAGS}"
108 exit 0
109 }
Peter Stuge279cdbb2009-01-26 04:10:12 +0000110 i=1
111 while test $i -lt $NPARMS; do
Peter Stugedad1e302008-11-22 17:13:36 +0000112 OUT="${OUT}\n${CC} -o .config .config.o ${LDFLAGS} ${1} 2>&1"
Peter Stuge279cdbb2009-01-26 04:10:12 +0000113 OUT="${OUT}\n`echo "${CC} -o .config .config.o ${LDFLAGS} ${1}"|sh 2>&1`"
Peter Stugedad1e302008-11-22 17:13:36 +0000114 test $? -eq 0 && {
115 echo " using: ${LDFLAGS} ${1}" 1>&2
116 echo "${LDFLAGS} ${1}"
117 exit 0
118 }
119 shift
Andriy Gapon7df17af2009-11-28 04:54:33 +0000120 i=$(($i+1))
Peter Stugedad1e302008-11-22 17:13:36 +0000121 done
122 echo "failed!" 1>&2
123 echo 1>&2
Peter Stuge279cdbb2009-01-26 04:10:12 +0000124 printf "The following linker commands were executed:" 1>&2
Peter Stugedad1e302008-11-22 17:13:36 +0000125 echo -e "${OUT}\n" 1>&2
126 echo "This is a fatal error, configure is exiting!" 1>&2
127 echo 1>&2
128 echo "You can try to fix this by manually setting LDFLAGS in the environment before" 1>&2
129 echo "running configure. E.g.:" 1>&2
Peter Stuge279cdbb2009-01-26 04:10:12 +0000130 echo "LDFLAGS=-L/opt/somedir/lib ./configure" 1>&2
Peter Stugedad1e302008-11-22 17:13:36 +0000131 echo 1>&2
132 exit 1
133}
134
Peter Stuge279cdbb2009-01-26 04:10:12 +0000135CC=`findprog "compiler" "${CC}" gcc cc icc` || exit
136INSTALL=`findprog "install" "${INSTALL}" install ginstall` || exit
Peter Stugedad1e302008-11-22 17:13:36 +0000137
138test -n "$DEBUG" && myCFLAGS="-O2 -g" || myCFLAGS="-Os"
139CFLAGS="${CFLAGS} ${myCFLAGS} -Wall -Werror"
140
Peter Stuge0924dee2008-11-25 02:03:16 +0000141cat > .config.c << EOF
142#include <pci/pci.h>
143struct pci_access *pacc;
144int main(int argc, char *argv[])
145{ pacc = pci_alloc(); return 0; }
146EOF
147
Peter Stuge279cdbb2009-01-26 04:10:12 +0000148pc_CFLAGS="`pkg-config libpci --cflags 2>/dev/null`"
149pc_LDFLAGS="`pkg-config libpci --libs 2>/dev/null`"
150CFLAGS=`trycompile "libpci (from pciutils)" "${pc_CFLAGS}" "-I/usr/local/include"` || {
Peter Stuge0924dee2008-11-25 02:03:16 +0000151 rm -f .config.c
152 exit 1
153}
Stefan Reinauer9018b6e2011-03-14 09:08:27 +0000154LDFLAGS=`trylink "libpci (from pciutils)" "${pc_LDFLAGS}" "-lpci -lz" "-L/usr/local/lib -lpci -lz" "-framework DirectHW -lpci -lz"` || {
Peter Stuge0924dee2008-11-25 02:03:16 +0000155 rm -f .config.c .config.o
156 exit 1
157}
158rm -f .config.c .config.o .config
159
Peter Stugedad1e302008-11-22 17:13:36 +0000160PREFIX="${PREFIX:-/usr/local}"
161
Peter Stugedad1e302008-11-22 17:13:36 +0000162echo
163echo "configured using the following settings:"
164echo
165echo "VERSION=${VERSION}"
166echo "CC=${CC}"
167echo "CFLAGS=${CFLAGS}"
168echo "LDFLAGS=${LDFLAGS}"
169echo "INSTALL=${INSTALL}"
170echo "PREFIX=${PREFIX}"
171echo
Peter Stuge279cdbb2009-01-26 04:10:12 +0000172printf "creating Makefile..."
Peter Stugedad1e302008-11-22 17:13:36 +0000173echo "# This file was automatically generated by configure" > Makefile
174sed -e "s#@VERSION@#${VERSION}#g" \
175 -e "s#@CC@#${CC}#g" \
176 -e "s#@CFLAGS@#${CFLAGS}#g" \
177 -e "s#@LDFLAGS@#${LDFLAGS}#g" \
178 -e "s#@INSTALL@#${INSTALL}#g" \
Peter Stugebe89c412009-11-28 04:45:34 +0000179 -e "s#@PREFIX@#${PREFIX}#g" \
Peter Stugedad1e302008-11-22 17:13:36 +0000180 Makefile.in >> Makefile
181echo " done"
182echo