2 # Try and be like autotools configure, but without autotools
4 # Ensure that we do not inherit these from env
15 --with-cc|CC) CC=$var;;
17 --disable-debug) DEBUG=no;;
18 --enable-debug) DEBUG=yes;;
19 --prefix) PREFIX=$var;;
20 --sysconfdir) SYSCONFDIR=$var;;
21 --bindir) BINDIR=$var;;
22 --libexecdir) LIBEXECDIR=$var;;
23 --statedir|--localstatedir) STATEDIR=$var;;
24 --rundir) RUNDIR=$var;;
25 --mandir) MANDIR=$var;;
26 --with-ccopts|CFLAGS) CFLAGS=$var;;
27 CPPFLAGS) CPPFLAGS=$var;;
30 --target) TARGET=$var;;
31 --libdir) LIBDIR=$var;;
32 --datadir|--infodir) ;; # ignore autotools
33 --icondir) ICONDIR=$var;;
34 --with-gtk|--with-gtk+) WITH_GTK=${var:-yes};;
35 --without-gtk|--without-gtk+) WITH_GTK=no;;
36 --enable-notification) NOTIFY=yes;;
37 --disable-notification) NOTIFY=no;;
38 --help) echo "See the README file for available options"; exit 0;;
39 *) echo "$0: WARNING: unknown option $opt" >&2;;
46 : ${PREFIX:=/usr/local}
47 : ${SYSCONFDIR:=$PREFIX/etc}
48 : ${BINDIR:=$PREFIX/bin}
49 : ${LIBEXECDIR:=$PREFIX/libexec}
51 : ${MANDIR:=${PREFIX:-/usr}/share/man}
53 : ${ICONDIR:=$PREFIX/share/dhcpcd/icons}
57 x="$(which "$1" 2>/dev/null)"
62 for x in /sbin/"$1" /usr/sbin/"$1" \
63 /usr/pkg/sbin/"$1" /usr/local/sbin/"$1"
76 if [ -z "$BUILD" ]; then
77 BUILD=`uname -m`-unknown-`uname -s | tr '[:upper:]' '[:lower:]'`
79 if [ -z "$HOST" ]; then
80 [ -z "$TARGET" ] && TARGET=$BUILD
83 if [ -z "$TARGET" ]; then
84 [ -z "$HOST" ] && HOST=$BUILD
89 # Derive OS from cpu-manufacturer-os-kernel
99 echo "Configuring dhcpcd-dbus for ... $OS"
100 rm -f $CONFIG_H $CONFIG_MK
101 echo "# $OS" >$CONFIG_MK
102 echo "/* $OS */" >$CONFIG_H
104 for x in PREFIX SYSCONFDIR BINDIRi ICONDIR; do
106 # Make files look nice for import
109 [ $l -gt 3 ] && t=" "
110 echo "$x=$t $v" >>$CONFIG_MK
112 [ $l -gt 2 ] && t=" "
113 echo "#define $x$t \"$v\"" >>$CONFIG_H
116 if [ -z "$CC" ]; then
117 printf "Looking for compiler ... "
118 for b in $TARGET- ""; do
119 for cc in gcc pcc icc cc; do
120 if type $b$cc >/dev/null 2>&1; then
126 [ -n "$CC" ] && break
128 if [ -z "$CC" ]; then
130 echo "no suitable compiler found - aborting" >&2
134 echo "Using compiler $CC"
136 echo "CC= $CC" >>$CONFIG_MK
138 if [ -z "$CFLAGS"]; then
141 echo "CFLAGS= $CFLAGS" >>$CONFIG_MK
142 if [ -n "$CPPLAGS" ]; then
143 echo "CPPLAGS= $CPPLAGS" >>$CONFIG_MK
146 if [ -n "$DEBUG" -a "$DEBUG" != no -a "$DEBUG" != false ]; then
147 echo "Enabling memory debugging"
148 echo "CPPFLAGS+= -DDEBUG_MEMORY" >>$CONFIG_MK
149 elif [ -z "$DEBUG" -a -d .git ]; then
150 printf "Found git ... "
152 echo "LDADD+= -Wl,-rpath=../libdhcpcd" >>$CONFIG_MK
156 if [ "$DEBUG" != no -a "$DEBUG" != false ]; then
157 echo "Adding debugging CFLAGS"
158 cat <<EOF >>$CONFIG_MK
159 CFLAGS+= -Wall -Wextra -Wimplicit -Wshadow -Wformat=2
160 CFLAGS+= -Wmissing-prototypes -Wmissing-declarations
161 CFLAGS+= -Wmissing-noreturn -Wmissing-format-attribute
162 CFLAGS+= -Wredundant-decls -Wnested-externs
163 CFLAGS+= -Winline -Wwrite-strings -Wcast-align -Wcast-qual
164 CFLAGS+= -Wpointer-arith
165 CFLAGS+= -Wdeclaration-after-statement -Wsequence-point
170 # Add CPPFLAGS and CFLAGS to CC for testing features
171 XCC="$CC `$SED -n -e 's/CPPLAGS+=*\(.*\)/\1/p' $CONFIG_MK`"
172 XCC="$XCC `$SED -n -e 's/CFLAGS+=*\(.*\)/\1/p' $CONFIG_MK`"
174 if [ -z "$STRLCPY" ]; then
175 printf "Testing for strlcpy ... "
176 cat <<EOF >_strlcpy.c
179 const char s1[] = "foo";
181 strlcpy(s2, s1, sizeof(s2));
185 if $XCC _strlcpy.c -o _strlcpy 2>/dev/null; then
191 rm -f _strlcpy.c _strlcpy
193 if [ "$STRLCPY" = no ]; then
194 echo "#define strlcpy(dst, src, n) snprintf(dst, n, \"%s\", src)" \
198 if [ -z "$LIBDIR" ]; then
199 printf "lib directory name ... "
200 case `readlink /lib` in
202 *) LIBNAME=$(basename `readlink /lib`);;
205 echo "LIBNAME= $LIBNAME" >>$CONFIG_MK
206 LIBDIR=${PREFIX}/${LIBNAME}
207 echo "LIBDIR= \${PREFIX}/\${LIBNAME}" >>$CONFIG_MK
209 echo "LIBDIR= $LIBDIR" >>$CONFIG_MK
212 # We normally want to build in the static library
213 if [ "$LIBDHCPCD" = yes ]; then
215 echo "LIB_DHCPCD_INSTALL= _libinstall" >>$CONFIG_MK
217 x="-Wl,-Bstatic -ldhcpcd -Wl,-Bdynamic"
219 echo "LIB_DHCPCD= $x" >>$CONFIG_MK
222 DBUS_CFLAGS=$(pkg-config --cflags dbus-1) || exit 1
223 DBUS_LIBS=$(pkg-config --libs dbus-1) || exit 1
224 echo "DBus CFLAGS=$DBUS_CFLAGS"
225 echo "DBus LIBS=$DBUS_LIBS"
226 echo "DBUS_CFLAGS= $DBUS_CFLAGS" >>$CONFIG_MK
227 echo "DBUS_LIBS= $DBUS_LIBS" >>$CONFIG_MK
230 if [ "$WITH_GTK" = yes -o -z "$WITH_GTK" ]; then
231 PKG="dbus-1 gtk+-2.0"
232 if [ "$NOTIFY" = yes ]; then
233 PKG="$PKG${PKG:+ }libnotify"
234 echo "NOTIFY= -DNOTIFY" >>$CONFIG_MK
236 GTK_CFLAGS=$(pkg-config --cflags $PKG)
237 [ $? != 0 -a "$WITH_GTK" = yes ] && exit 1
238 GTK_LIBS=$(pkg-config --libs $PKG)
239 [ $? != 0 -a "$WITH_GTK" = yes ] && exit 1
240 echo "GTK+ CFLAGS=$GTK_CFLAGS"
241 echo "GTK+ LIBS=$GTK_LIBS"
242 echo "GTK_CFLAGS= $GTK_CFLAGS" >>$CONFIG_MK
243 echo "GTK_LIBS= $GTK_LIBS" >>$CONFIG_MK
244 UI="$UI${UI:+ }dhcpcd-gtk"
247 if [ -z "$UI" ]; then
248 echo "no UI is available, not building." >&2
251 echo "UI= $UI" >>config.mk
254 echo " SYSCONFDIR = $SYSCONFDIR"
255 echo " BINDIR = $BINDIR"
256 echo " LIBDIR = $LIBDIR"
257 echo " ICONDIR = $ICONDIR"
261 echo "MKDIR= \${TOPDIR}/mk" >>$CONFIG_MK