2 # Try and be like autotools configure, but without autotools
4 # Ensure that we do not inherit these from env
13 [ "$var" = "$opt" ] && var=
16 --with-cc|CC) CC=$var;;
18 --disable-debug) DEBUG=no;;
19 --enable-debug) DEBUG=yes;;
20 --prefix) PREFIX=$var;;
21 --sysconfdir) SYSCONFDIR=$var;;
22 --bindir) BINDIR=$var;;
23 --libexecdir) LIBEXECDIR=$var;;
24 --statedir|--localstatedir) STATEDIR=$var;;
25 --rundir) RUNDIR=$var;;
26 --mandir) MANDIR=$var;;
27 --with-ccopts|CFLAGS) CFLAGS=$var;;
28 CPPFLAGS) CPPFLAGS=$var;;
31 --target) TARGET=$var;;
32 --libdir) LIBDIR=$var;;
33 --datadir|--infodir) ;; # ignore autotools
34 --icondir) ICONDIR=$var;;
35 --with-gtk|--with-gtk+) WITH_GTK=${var:-yes};;
36 --without-gtk|--without-gtk+) WITH_GTK=no;;
37 --enable-notification) NOTIFY=yes;;
38 --disable-notification) NOTIFY=no;;
39 --help) echo "See the README file for available options"; exit 0;;
40 *) echo "$0: WARNING: unknown option $opt" >&2;;
47 : ${PREFIX:=/usr/local}
48 : ${SYSCONFDIR:=$PREFIX/etc}
49 : ${BINDIR:=$PREFIX/bin}
50 : ${LIBEXECDIR:=$PREFIX/libexec}
52 : ${MANDIR:=${PREFIX:-/usr}/share/man}
54 : ${ICONDIR:=$PREFIX/share/dhcpcd/icons}
58 x="$(which "$1" 2>/dev/null)"
63 for x in /sbin/"$1" /usr/sbin/"$1" \
64 /usr/pkg/sbin/"$1" /usr/local/sbin/"$1"
77 if [ -z "$BUILD" ]; then
78 BUILD=`uname -m`-unknown-`uname -s | tr '[:upper:]' '[:lower:]'`
80 if [ -z "$HOST" ]; then
81 [ -z "$TARGET" ] && TARGET=$BUILD
84 if [ -z "$TARGET" ]; then
85 [ -z "$HOST" ] && HOST=$BUILD
90 # Derive OS from cpu-manufacturer-os-kernel
100 echo "Configuring dhcpcd-ui for ... $OS"
101 rm -f $CONFIG_H $CONFIG_MK
102 echo "# $OS" >$CONFIG_MK
103 echo "/* $OS */" >$CONFIG_H
105 for x in PREFIX SYSCONFDIR BINDIR ICONDIR; do
107 # Make files look nice for import
110 [ $l -gt 3 ] && t=" "
111 echo "$x=$t $v" >>$CONFIG_MK
113 [ $l -gt 2 ] && t=" "
114 echo "#define $x$t \"$v\"" >>$CONFIG_H
117 if [ -z "$CC" ]; then
118 printf "Looking for compiler ... "
119 for b in $TARGET- ""; do
120 for cc in gcc pcc icc cc; do
121 if type $b$cc >/dev/null 2>&1; then
127 [ -n "$CC" ] && break
129 if [ -z "$CC" ]; then
131 echo "no suitable compiler found - aborting" >&2
135 echo "Using compiler $CC"
137 echo "CC= $CC" >>$CONFIG_MK
139 if [ -z "$CFLAGS" ]; then
142 echo "CFLAGS= $CFLAGS" >>$CONFIG_MK
143 if [ -n "$CPPLAGS" ]; then
144 echo "CPPLAGS= $CPPLAGS" >>$CONFIG_MK
147 if [ -n "$DEBUG" -a "$DEBUG" != no -a "$DEBUG" != false ]; then
148 echo "Enabling memory debugging"
149 echo "CPPFLAGS+= -DDEBUG_MEMORY" >>$CONFIG_MK
150 elif [ -z "$DEBUG" -a -d .git ]; then
151 printf "Found git ... "
153 echo "LDADD+= -Wl,-rpath=../libdhcpcd" >>$CONFIG_MK
157 if [ "$DEBUG" != no -a "$DEBUG" != false ]; then
158 echo "Adding debugging CFLAGS"
159 cat <<EOF >>$CONFIG_MK
160 CFLAGS+= -Wall -Wextra -Wimplicit -Wshadow -Wformat=2
161 CFLAGS+= -Wmissing-prototypes -Wmissing-declarations
162 CFLAGS+= -Wmissing-noreturn -Wmissing-format-attribute
163 CFLAGS+= -Wredundant-decls -Wnested-externs
164 CFLAGS+= -Winline -Wwrite-strings -Wcast-align -Wcast-qual
165 CFLAGS+= -Wpointer-arith
166 CFLAGS+= -Wdeclaration-after-statement -Wsequence-point
171 # Add CPPFLAGS and CFLAGS to CC for testing features
172 XCC="$CC `$SED -n -e 's/CPPLAGS+=*\(.*\)/\1/p' $CONFIG_MK`"
173 XCC="$XCC `$SED -n -e 's/CFLAGS+=*\(.*\)/\1/p' $CONFIG_MK`"
175 if [ -z "$STRLCPY" ]; then
176 printf "Testing for strlcpy ... "
177 cat <<EOF >_strlcpy.c
180 const char s1[] = "foo";
182 strlcpy(s2, s1, sizeof(s2));
186 if $XCC _strlcpy.c -o _strlcpy 2>/dev/null; then
192 rm -f _strlcpy.c _strlcpy
194 if [ "$STRLCPY" = no ]; then
195 echo "#define strlcpy(dst, src, n) snprintf(dst, n, \"%s\", src)" \
199 if [ -z "$LIBDIR" ]; then
200 printf "lib directory name ... "
201 case `readlink /lib` in
203 *) LIBNAME=$(basename `readlink /lib`);;
206 echo "LIBNAME= $LIBNAME" >>$CONFIG_MK
207 LIBDIR=${PREFIX}/${LIBNAME}
208 echo "LIBDIR= \${PREFIX}/\${LIBNAME}" >>$CONFIG_MK
210 echo "LIBDIR= $LIBDIR" >>$CONFIG_MK
213 # We normally want to build in the static library
214 if [ "$LIBDHCPCD" = yes ]; then
216 echo "LIB_DHCPCD_INSTALL= _libinstall" >>$CONFIG_MK
218 x="-Wl,-Bstatic -ldhcpcd -Wl,-Bdynamic"
220 echo "LIB_DHCPCD= $x" >>$CONFIG_MK
223 DBUS_CFLAGS=$(pkg-config --cflags dbus-1) || exit 1
224 DBUS_LIBS=$(pkg-config --libs dbus-1) || exit 1
225 echo "DBus CFLAGS=$DBUS_CFLAGS"
226 echo "DBus LIBS=$DBUS_LIBS"
227 echo "DBUS_CFLAGS= $DBUS_CFLAGS" >>$CONFIG_MK
228 echo "DBUS_LIBS= $DBUS_LIBS" >>$CONFIG_MK
231 if [ "$WITH_GTK" = yes -o -z "$WITH_GTK" ]; then
232 PKG="dbus-1 gtk+-2.0"
233 if [ "$NOTIFY" = yes ]; then
234 PKG="$PKG${PKG:+ }libnotify"
235 echo "NOTIFY= -DNOTIFY" >>$CONFIG_MK
237 GTK_CFLAGS=$(pkg-config --cflags $PKG)
238 [ $? != 0 -a "$WITH_GTK" = yes ] && exit 1
239 GTK_LIBS=$(pkg-config --libs $PKG)
240 [ $? != 0 -a "$WITH_GTK" = yes ] && exit 1
241 echo "GTK+ CFLAGS=$GTK_CFLAGS"
242 echo "GTK+ LIBS=$GTK_LIBS"
243 echo "GTK_CFLAGS= $GTK_CFLAGS" >>$CONFIG_MK
244 echo "GTK_LIBS= $GTK_LIBS" >>$CONFIG_MK
245 UI="$UI${UI:+ }dhcpcd-gtk"
248 if [ -z "$UI" ]; then
249 echo "no UI is available, not building." >&2
252 echo "UI= $UI" >>config.mk
255 echo " SYSCONFDIR = $SYSCONFDIR"
256 echo " BINDIR = $BINDIR"
257 echo " LIBDIR = $LIBDIR"
258 echo " ICONDIR = $ICONDIR"
262 echo "MKDIR= \${TOPDIR}/mk" >>$CONFIG_MK