1 #!/bin/sh 2 # Try and be like autotools configure, but without autotools 3 4 echo "configure args: $*" 5 exec 3>config.log 6 7 # Ensure that we do not inherit these from env 8 HOOKSET=false 9 INET= 10 INET6= 11 ARC4RANDOM= 12 CLOSEFROM= 13 GETLINE= 14 STRLCPY= 15 UDEV= 16 OS= 17 BUILD= 18 HOST= 19 HOSTCC= 20 TARGET= 21 DEBUG= 22 FORK= 23 STATIC= 24 INCLUDEDIR= 25 DEVS= 26 EMBEDDED= 27 POLL= 28 DBUS= 29 30 for x do 31 opt=${x%%=*} 32 var=${x#*=} 33 case "$opt" in 34 --os|OS) OS=$var;; 35 --debug) DEBUG=$var;; 36 --disable-debug) DEBUG=no;; 37 --enable-debug) DEBUG=yes;; 38 --fork) FORK=$var;; 39 --disable-fork) FORK=no;; 40 --enable-fork) FORK=yes;; 41 --disable-static) STATIC=no;; 42 --enable-static) STATIC=yes;; 43 --disable-ipv4) INET=no;; 44 --enable-ipv4) INET=yes;; 45 --disable-ipv6) INET6=no;; 46 --enable-ipv6) INET6=yes;; 47 --disable-embedded) EMBEDDED=no;; 48 --enable-embedded) EMBEDDED=yes;; 49 --enable-dbus) DBUS=yes;; 50 --disable-dbus) DBUS=no;; 51 --prefix) PREFIX=$var;; 52 --sysconfdir) SYSCONFDIR=$var;; 53 --bindir|--sbindir) SBINDIR=$var;; 54 --libexecdir) LIBEXECDIR=$var;; 55 --statedir|--localstatedir) STATEDIR=$var;; 56 --dbdir) DBDIR=$var;; 57 --rundir) RUNDIR=$var;; 58 --mandir) MANDIR=$var;; 59 --with-ccopts|CFLAGS) CFLAGS=$var;; 60 CC) CC=$var;; 61 CPPFLAGS) CPPFLAGS=$var;; 62 --with-hook) HOOKSCRIPTS="$HOOKSCRIPTS${HOOKSCRIPTS:+ }$var";; 63 --with-hooks|HOOKSCRIPTS) HOOKSCRIPTS=$var; HOOKSET=true;; 64 --build) BUILD=$var;; 65 --host) HOST=$var; HOSTCC=$var-;; 66 --target) TARGET=$var;; 67 --libdir) LIBDIR=$var;; 68 --without-arc4random) ARC4RANDOM=no;; 69 --without-closefrom) CLOSEFROM=no;; 70 --without-getline) GETLINE=no;; 71 --without-strlcpy) STRLCPY=no;; 72 --without-posix_spawn) POSIX_SPAWN=no;; 73 --without-md5) MD5=no;; 74 --without-sha2) SHA2=no;; 75 --without-sha256) SHA2=no;; 76 --without-dev) DEV=no;; 77 --without-udev) UDEV=no;; 78 --with-poll) POLL="$var";; 79 --serviceexists) SERVICEEXISTS=$var;; 80 --servicecmd) SERVICECMD=$var;; 81 --servicestatus) SERVICESTATUS=$var;; 82 --includedir) eval INCLUDEDIR="$INCLUDEDIR${INCLUDEDIR:+ }$var";; 83 --datadir|--infodir) ;; # ignore autotools 84 --disable-maintainer-mode|--disable-dependency-tracking) ;; 85 --disable-silent-rules) ;; 86 -V|--version) 87 v=$(sed -ne 's/.*VERSION[[:space:]]*"\([^"]*\).*/\1/p' defs.h); 88 c=$(sed -ne 's/^.*copyright\[\] = "\([^"]*\).*/\1/p' dhcpcd.c); 89 echo "dhcpcd-$v $c"; 90 exit 0;; 91 -h|--help) cat <<EOF 92 \`configure' configures this package to adapt to many kinds of systems. 93 94 Usage: configure [OPTION]... [VAR=VALUE]... 95 96 To assign environment variables (e.g., CC, CFLAGS...), specify them as 97 VAR=VALUE. See below for descriptions of some of the useful variables. 98 99 Defaults for the options are specified in brackets. 100 101 Configuration: 102 -h, --help display this help and exit 103 --help=short display options specific to this package 104 -V, --version display version information and exit 105 106 Installation directories: 107 --prefix=PREFIX install architecture-independent files in PREFIX [/] 108 109 By default, \`make install' will install all the files in \'/sbin', 110 \`/libexec', etc. You can specify 111 an installation prefix other than \`/' using \`--prefix', 112 for instance \`--prefix=$HOME'. 113 114 For better control, use the options below. 115 116 Fine tuning of the installation directories: 117 --bindir=DIR user executables [PREFIX/bin] 118 --sbindir=DIR system admin executables [PREFIX/sbin] 119 --libexecdir=DIR program executables [PREFIX/libexec] 120 --sysconfdir=DIR read-only single-machine data [PREFIX/etc] 121 --localstatedir=DIR modifiable single-machine data [PREFIX/var] 122 --libdir=DIR object code libraries [PREFIX/lib] 123 --includedir=DIR C header files [PREFIX/include] 124 --mandir=DIR man documentation [PREFIX/man] 125 126 System types: 127 --build=BUILD configure for building on BUILD [guessed] 128 --host=HOST build programs to run on HOST [BUILD] 129 --target=TARGET configure for building compilers for TARGET [HOST] 130 131 Optional Features: 132 --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) 133 --enable-FEATURE[=ARG] include FEATURE [ARG=yes] 134 135 Some influential environment variables: 136 CC C compiler command 137 CFLAGS C compiler flags 138 LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a 139 nonstandard directory <lib dir> 140 CPPFLAGS C/C++ preprocessor flags, e.g. -I<include dir> if you have 141 headers in a nonstandard directory <include dir> 142 CPP C preprocessor 143 144 Use these variables to override the choices made by \`configure' or to help 145 it to find libraries and programs with nonstandard names/locations. 146 EOF 147 exit 0 148 ;; 149 *) echo "$0: WARNING: unknown option $opt" >&2;; 150 esac 151 done 152 153 : ${SED:=sed} 154 : ${GREP:=grep} 155 : ${WC:=wc} 156 157 : ${FORK:=yes} 158 : ${SYSCONFDIR:=$PREFIX/etc} 159 : ${SBINDIR:=$PREFIX/sbin} 160 : ${LIBDIR:=$PREFIX/lib} 161 : ${LIBEXECDIR:=$PREFIX/libexec} 162 : ${STATEDIR:=/var} 163 : ${DBDIR:=$STATEDIR/db} 164 : ${RUNDIR:=$STATEDIR/run} 165 : ${MANDIR:=${PREFIX:-/usr}/share/man} 166 167 eval SYSCONFDIR="$SYSCONFDIR" 168 eval LIBDIR="$LIBDIR" 169 eval LIBEXECDIR="$LIBEXECDIR" 170 eval STATEDIR="$STATEDIR" 171 eval DBDIR="$DBDIR" 172 eval RUNDIR="$RUNDIR" 173 eval MANDIR="$MANDIR" 174 175 _which() 176 { 177 x="$(which "$1" 2>/dev/null)" 178 if [ -n "$x" ]; then 179 echo "$x" 180 return 0 181 fi 182 for x in /sbin/"$1" /usr/sbin/"$1" \ 183 /usr/pkg/sbin/"$1" /usr/local/sbin/"$1" 184 do 185 if [ -e "$x" ]; then 186 echo "$x" 187 return 0 188 fi 189 done 190 return 1 191 } 192 193 CONFIG_H=config.h 194 CONFIG_MK=config.mk 195 196 if [ -z "$BUILD" ]; then 197 # autoconf target triplet: cpu-vendor-os 198 BUILD=$(uname -m)-unknown-$(uname -s | tr '[:upper:]' '[:lower:]') 199 fi 200 : ${HOST:=$BUILD} 201 202 if [ -z "$OS" ]; then 203 echo "Deriving operating system from ... $HOST" 204 # Derive OS from cpu-vendor-[kernel-]os 205 CPU=${HOST%%-*} 206 REST=${HOST#*-} 207 if [ "$CPU" != "$REST" ]; then 208 VENDOR=${REST%%-*} 209 REST=${REST#*-} 210 if [ "$VENDOR" != "$REST" ]; then 211 # Use kernel if given, otherwise os 212 OS=${REST%%-*} 213 else 214 # 2 tupple 215 OS=$VENDOR 216 VENDOR= 217 fi 218 fi 219 220 # Work with cpu-kernel-os, ie Debian 221 case "$VENDOR" in 222 linux*|kfreebsd*) OS=$VENDOR; VENDOR= ;; 223 esac 224 # Special case 225 case "$OS" in 226 gnu*) OS=hurd;; # No HURD support as yet 227 esac 228 fi 229 230 echo "Configuring dhcpcd for ... $OS" 231 rm -f $CONFIG_H $CONFIG_MK 232 echo "# $OS" >$CONFIG_MK 233 echo "/* $OS */" >$CONFIG_H 234 235 for x in SYSCONFDIR SBINDIR LIBDIR LIBEXECDIR DBDIR RUNDIR; do 236 eval v=\$$x 237 # Make files look nice for import 238 l=$((10 - ${#x})) 239 unset t 240 [ $l -gt 3 ] && t=" " 241 echo "$x=$t $v" >>$CONFIG_MK 242 unset t 243 [ $l -gt 2 ] && t=" " 244 echo "#define $x$t \"$v\"" >>$CONFIG_H 245 done 246 echo "LIBDIR= $LIBDIR" >>$CONFIG_MK 247 echo "MANDIR= $MANDIR" >>$CONFIG_MK 248 249 # Always obey CC. 250 if [ -n "$CC" ]; then 251 HOSTCC= 252 else 253 CC=cc 254 _COMPILERS="cc clang gcc pcc icc" 255 fi 256 # Only look for a cross compiler if --host and --build are not the same 257 if [ -n "$HOSTCC" -a "$BUILD" != "$HOST" ]; then 258 for _CC in $_COMPILERS; do 259 _CC=$(_which "$HOSTCC$_CC") 260 if [ -x "$_CC" ]; then 261 CC=$_CC 262 break 263 fi 264 done 265 fi 266 if ! type "$CC" >/dev/null 2>&1; then 267 for _CC in $_COMPILERS; do 268 _CC=$(_which "$_CC") 269 if [ -x "$_CC" ]; then 270 CC=$_CC 271 break 272 fi 273 done 274 fi 275 276 # Set to blank, then append user config 277 # We do this so our SED call to append to XCC remains portable 278 if [ -n "$CFLAGS" ]; then 279 echo "CFLAGS=" >>$CONFIG_MK 280 echo "CFLAGS+= $CFLAGS" >>$CONFIG_MK 281 fi 282 if [ -n "$CPPFLAGS" ]; then 283 echo "CPPFLAGS=" >>$CONFIG_MK 284 echo "CPPFLAGS+= $CPPFLAGS" >>$CONFIG_MK 285 fi 286 if [ -n "$LDFLAGS" ]; then 287 echo "LDFLAGS=" >>$CONFIG_MK 288 echo "LDFLAGS+= $LDFLAGS" >>$CONFIG_MK 289 fi 290 291 # NetBSD: Even if we build for $PREFIX, the clueless user might move us to / 292 LDELF=/libexec/ld.elf_so 293 if [ -e "$LDELF" ]; then 294 echo "Linking against $LDELF" 295 echo "LDFLAGS+= -Wl,-dynamic-linker=$LDELF" >>$CONFIG_MK 296 echo "LDFLAGS+= -Wl,-rpath=${LIBDIR}" >>$CONFIG_MK 297 fi 298 299 if [ -z "$PREFIX" -o "$PREFIX" = / ]; then 300 ALLOW_USR_LIBS=false 301 else 302 ALLOW_USR_LIBS=true 303 fi 304 case "$OS" in 305 linux*|sunos*) ;; 306 *) 307 if ! [ -x "$LDELF" -o -x /libexec/ld-elf.so.[0-9]* ] && \ 308 [ -z "$PREFIX" -o "$PREFIX" = "/" ] 309 then 310 echo "Forcing a static build for $OS and \$PREFIX of /" 311 STATIC=yes 312 ALLOW_USR_LIBS=true 313 fi 314 ;; 315 esac 316 if [ "$STATIC" = yes ]; then 317 echo "LDFLAGS+= -static" >>$CONFIG_MK 318 fi 319 for x in $INCLUDEDIR; do 320 echo "CPPFLAGS+= -I$x" >>$CONFIG_MK 321 done 322 323 if [ -z "$DEBUG" -a -f .fslckout ]; then 324 printf "Found fossil checkout ... " 325 DEBUG=yes 326 fi 327 if [ -n "$DEBUG" -a "$DEBUG" != no -a "$DEBUG" != false ]; then 328 echo "Adding debugging CFLAGS" 329 cat <<EOF >>$CONFIG_MK 330 CFLAGS+= -g -Wall -Wextra 331 CFLAGS+= -Wmissing-prototypes -Wmissing-declarations 332 CFLAGS+= -Wmissing-format-attribute -Wnested-externs 333 CFLAGS+= -Winline -Wcast-align -Wcast-qual -Wpointer-arith 334 CFLAGS+= -Wreturn-type -Wswitch -Wshadow 335 CFLAGS+= -Wcast-qual -Wwrite-strings 336 CFLAGS+= -Wconversion 337 CFLAGS+= -Wformat=2 338 CFLAGS+= -Wpointer-sign -Wmissing-noreturn 339 EOF 340 case "$OS" in 341 mirbsd*|openbsd*);; # OpenBSD has many redundant decs in system headers 342 *) echo "CFLAGS+= -Wredundant-decls" >>$CONFIG_MK;; 343 esac 344 345 case "$OS" in 346 sunos*);; 347 *) echo "CFLAGS+= -Wstrict-overflow" >>$CONFIG_MK;; 348 esac 349 fi 350 351 if [ -z "$EMBEDDED" -o "$EMBEDDED" = yes ]; then 352 echo "dhcpcd-definitions.conf will be embedded in dhcpcd itself" 353 echo "DHCPCD_SRCS+= dhcpcd-embedded.c" >>$CONFIG_MK 354 else 355 echo "dhcpcd-definitions.conf will be installed to $LIBEXECDIR" 356 echo "CFLAGS+= -DEMBEDDED_CONFIG=\\\"$LIBEXECDIR/dhcpcd-definitions.conf\\\"" >>$CONFIG_MK 357 echo "EMBEDDEDINSTALL= _embeddedinstall" >>$CONFIG_MK 358 fi 359 360 if [ -n "$FORK" -a "$FORK" != yes -a "$FORK" != true ]; then 361 echo "There is no fork" 362 echo "CPPFLAGS+= -DTHERE_IS_NO_FORK" >>$CONFIG_MK 363 fi 364 365 case "$OS" in 366 freebsd*|kfreebsd*) 367 echo "CPPFLAGS+= -D_GNU_SOURCE" >>$CONFIG_MK 368 echo "DHCPCD_SRCS+= if-bsd.c" >>$CONFIG_MK 369 ;; 370 linux*) 371 echo "CPPFLAGS+= -D_GNU_SOURCE" >>$CONFIG_MK 372 # Large File Support, should be fine for 32-bit systems. 373 # But if this is the case, why is it not set by default? 374 echo "CPPFLAGS+= -D_FILE_OFFSET_BITS=64" >>$CONFIG_MK 375 echo "CPPFLAGS+= -D_LARGEFILE_SOURCE" >>$CONFIG_MK 376 echo "CPPFLAGS+= -D_LARGEFILE64_SOURCE" >>$CONFIG_MK 377 echo "DHCPCD_SRCS+= if-linux.c" >>$CONFIG_MK 378 # for RTM_NEWADDR and friends 379 echo "#include <asm/types.h> /* fix broken headers */" >>$CONFIG_H 380 echo "#include <linux/rtnetlink.h>" >>$CONFIG_H 381 ;; 382 qnx*) 383 echo "CPPFLAGS+= -D__EXT" >>$CONFIG_MK 384 echo "DHCPCD_SRCS+= if-bsd.c" >>$CONFIG_MK 385 ;; 386 sunos*) 387 echo "WARNING!!! Solaris support is at early development stage!" >&2 388 echo "so don't expect it to work just yet, patches welcome" >&2 389 echo "CPPFLAGS+= -D_XPG4_2 -D__EXTENSIONS__ -DBSD_COMP" \ 390 >>$CONFIG_MK 391 echo "DHCPCD_SRCS+= if-sun.c" >>$CONFIG_MK 392 393 # IPv6 won't work, but it will at least compile. 394 echo "CPPFLAGS+= -DIN6_IFF_DETACHED=0" >>$CONFIG_MK 395 echo "CPPFLAGS+= -DIN6_IFF_TENTATIVE=0" >>$CONFIG_MK 396 echo "CPPFLAGS+= -DIN6_IFF_DUPLICATED=0" >>$CONFIG_MK 397 ;; 398 *) 399 echo "DHCPCD_SRCS+= if-bsd.c" >>$CONFIG_MK 400 ;; 401 esac 402 403 if [ -z "$INET" -o "$INET" = yes ]; then 404 echo "CPPFLAGS+= -DINET" >>$CONFIG_MK 405 echo "DHCPCD_SRCS+= arp.c dhcp.c ipv4.c ipv4ll.c" >>$CONFIG_MK 406 fi 407 if [ -z "$INET6" -o "$INET6" = yes ]; then 408 echo "CPPFLAGS+= -DINET6" >>$CONFIG_MK 409 echo "DHCPCD_SRCS+= ipv6.c ipv6nd.c dhcp6.c" >>$CONFIG_MK 410 fi 411 412 if [ "$DBUS" = yes ]; then 413 echo "DBUS_SUPPORT= yes" >>$CONFIG_MK 414 echo "DBUSINSTALL= _dbusinstall" >>$CONFIG_MK 415 echo "CPPFLAGS+= -DPASSIVE_MODE" >>$CONFIG_MK 416 echo "DHCPCD_SRCS+= dbus/dbus-dict.c dbus/rpc-dbus.c" >>$CONFIG_MK 417 else 418 echo "DHCPCD_SRCS+= rpc-stub.c" >>$CONFIG_MK 419 fi 420 421 if [ -z "$HOOKSCRIPTS" ]; then 422 echo "DHCPCD_SRCS+= script-stub.c" >>$CONFIG_MK 423 else 424 echo "HOOK_SUPPORT= yes" >>$CONFIG_MK 425 echo "SCRIPTSINSTALL= _scriptsinstall" >>$CONFIG_MK 426 echo "DHCPCD_SRCS+= script.c" >>$CONFIG_MK 427 fi 428 429 echo "Using compiler .. $CC" 430 # Add CPPFLAGS and CFLAGS to CC for testing features 431 XCC="$CC `$SED -n -e 's/CPPFLAGS+=*\(.*\)/\1/p' $CONFIG_MK`" 432 XCC="$XCC `$SED -n -e 's/CFLAGS+=*\(.*\)/\1/p' $CONFIG_MK`" 433 434 # Now test we can use the compiler with our CFLAGS 435 cat <<EOF >_test.c 436 int main(void) { 437 return 0; 438 } 439 EOF 440 _CC=false 441 if $XCC _test.c -o _test >/dev/null 2>&3; then 442 [ -x _test ] && _CC=true 443 fi 444 rm -f _test.c _test 445 if ! $_CC; then 446 echo "$CC does not create executables" 447 exit 1 448 fi 449 [ "$CC" != cc ] && echo "CC= $CC" >>$CONFIG_MK 450 $CC --version | $SED -e '1!d' 451 452 if [ "$OS" = linux ]; then 453 printf "Testing for nl80211 ... " 454 cat <<EOF >_nl80211.c 455 #include <linux/nl80211.h> 456 int main(void) { 457 return 0; 458 } 459 EOF 460 if $XCC _nl80211.c -o _nl80211 2>&3; then 461 echo "yes" 462 echo "#define HAVE_NL80211_H" >>$CONFIG_H 463 else 464 echo "no" 465 fi 466 rm -f _nl80211.c _nl80211 467 468 # Even though we have nl80211, we only use it as a fallback 469 # because it's currently possible to configure a kernel 470 # where the SSID associated to won't be reported by nl80211 471 # but will be via WEXT. 472 echo "DHCPCD_SRCS+= if-linux-wext.c" >>$CONFIG_MK 473 fi 474 475 abort=false 476 # We require the libc to support non standard functions, like getifaddrs 477 printf "Testing for getifaddrs ... " 478 cat <<EOF >_getifaddrs.c 479 #include <sys/types.h> 480 #include <ifaddrs.h> 481 int main(void) { 482 struct ifaddrs *ifap; 483 return getifaddrs(&ifap); 484 } 485 EOF 486 if $XCC _getifaddrs.c -o _getifaddrs 2>&3; then 487 echo "yes" 488 elif $XCC _getifaddrs.c -o _getifaddrs -lsocket 2>&3; then 489 echo "yes (-lsocket)" 490 echo "LDADD+= -lsocket" >>$CONFIG_MK 491 else 492 echo "no" 493 echo "libc support for getifaddrs is required - aborting" >&2 494 abort=true 495 fi 496 rm -f _getifaddrs.c _getifaddrs 497 $abort && exit 1 498 499 printf "Testing for clock_gettime ... " 500 cat <<EOF >_clock_gettime.c 501 #include <time.h> 502 int main(void) { 503 struct timespec ts; 504 return clock_gettime(CLOCK_MONOTONIC, &ts); 505 } 506 EOF 507 if $XCC _clock_gettime.c -o _clock_gettime 2>&3; then 508 echo "yes" 509 elif $XCC _clock_gettime.c -lrt -o _clock_gettime 2>&3; then 510 echo "yes (-lrt)" 511 echo "LDADD+= -lrt" >>$CONFIG_MK 512 else 513 echo "no" 514 echo "libc support for clock_getttime is required - aborting" >&2 515 abort=true 516 fi 517 rm -f _clock_gettime.c _clock_gettime 518 $abort && exit 1 519 520 printf "Testing for inet_ntoa ... " 521 cat <<EOF >_inet_ntoa.c 522 #include <netinet/in.h> 523 #include <arpa/inet.h> 524 int main(void) { 525 struct in_addr in; 526 inet_ntoa(in); 527 return 0; 528 } 529 EOF 530 if $XCC _inet_ntoa.c -o _inet_ntoa 2>&3; then 531 echo "yes" 532 elif $XCC _inet_ntoa.c -lnsl -o _inet_ntoa 2>&3; then 533 echo "yes (-lnsl)" 534 echo "LDADD+= -lnsl" >>$CONFIG_MK 535 elif $XCC _inet_ntoa.c -lsocket -o _inet_ntoa 2>&3; then 536 echo "yes (-lsocket)" 537 echo "LDADD+= -lsocket" >>$CONFIG_MK 538 else 539 echo "no" 540 echo "libc support for inet_ntoa is required - aborting" >&2 541 abort=true 542 fi 543 rm -f _inet_ntoa.c _inet_ntoa 544 $abort && exit 1 545 546 if [ -z "$ARC4RANDOM" ]; then 547 printf "Testing for arc4random ... " 548 cat <<EOF >_arc4random.c 549 #include <stdlib.h> 550 int main(void) { 551 arc4random(); 552 return 0; 553 } 554 EOF 555 if $XCC _arc4random.c -o _arc4random 2>&3; then 556 ARC4RANDOM=yes 557 else 558 ARC4RANDOM=no 559 fi 560 echo "$ARC4RANDOM" 561 rm -f _arc4random.c _arc4random 562 fi 563 if [ "$ARC4RANDOM" = no ]; then 564 echo "COMPAT_SRCS+= compat/arc4random.c" >>$CONFIG_MK 565 echo "#include \"compat/arc4random.h\"" >>$CONFIG_H 566 fi 567 568 if [ -z "$ARC4RANDOM_UNIFORM" ]; then 569 printf "Testing for arc4random_uniform ... " 570 cat <<EOF >_arc4random_uniform.c 571 #include <stdlib.h> 572 int main(void) { 573 arc4random_uniform(100); 574 return 0; 575 } 576 EOF 577 if $XCC _arc4random_uniform.c -o _arc4random_uniform 2>&3; then 578 ARC4RANDOM_UNIFORM=yes 579 else 580 ARC4RANDOM_UNIFORM=no 581 fi 582 echo "$ARC4RANDOM" 583 rm -f _arc4random_uniform.c _arc4random_uniform 584 fi 585 if [ "$ARC4RANDOM_UNIFORM" = no ]; then 586 echo "COMPAT_SRCS+= compat/arc4random_uniform.c" >>$CONFIG_MK 587 echo "#include \"compat/arc4random_uniform.h\"" >>$CONFIG_H 588 fi 589 590 if [ -z "$CLOSEFROM" ]; then 591 printf "Testing for closefrom ... " 592 cat <<EOF >_closefrom.c 593 #include <unistd.h> 594 int main(void) { 595 closefrom(3); 596 return 0; 597 } 598 EOF 599 if $XCC _closefrom.c -o _closefrom 2>&3; then 600 CLOSEFROM=yes 601 else 602 CLOSEFROM=no 603 fi 604 echo "$CLOSEFROM" 605 rm -f _closefrom.c _closefrom 606 fi 607 if [ "$CLOSEFROM" = no ]; then 608 echo "COMPAT_SRCS+= compat/closefrom.c" >>$CONFIG_MK 609 echo "#include \"compat/closefrom.h\"" >>$CONFIG_H 610 fi 611 612 if [ -z "$GETLINE" ]; then 613 printf "Testing for getline ... " 614 cat <<EOF >_getline.c 615 #include <stdio.h> 616 int main(void) { 617 char *buf = NULL; 618 size_t n = 0; 619 getline(&buf, &n, stdin); 620 return 0; 621 } 622 EOF 623 if $XCC _getline.c -o _getline 2>&3; then 624 GETLINE=yes 625 else 626 GETLINE=no 627 fi 628 echo "$GETLINE" 629 rm -f _getline.c _getline 630 fi 631 if [ "$GETLINE" = no ]; then 632 echo "COMPAT_SRCS+= compat/getline.c" >>$CONFIG_MK 633 echo "#include \"compat/getline.h\"" >>$CONFIG_H 634 fi 635 636 if [ -z "$STRLCPY" ]; then 637 printf "Testing for strlcpy ... " 638 cat <<EOF >_strlcpy.c 639 #include <string.h> 640 int main(void) { 641 const char s1[] = "foo"; 642 char s2[10]; 643 strlcpy(s2, s1, sizeof(s2)); 644 return 0; 645 } 646 EOF 647 if $XCC _strlcpy.c -o _strlcpy 2>&3; then 648 STRLCPY=yes 649 else 650 STRLCPY=no 651 fi 652 echo "$STRLCPY" 653 rm -f _strlcpy.c _strlcpy 654 fi 655 if [ "$STRLCPY" = no ]; then 656 echo "COMPAT_SRCS+= compat/strlcpy.c" >>$CONFIG_MK 657 echo "#include \"compat/strlcpy.h\"" >>$CONFIG_H 658 fi 659 660 if [ -z "$STRTOI" ]; then 661 printf "Testing for strtoi ... " 662 cat <<EOF >_strtoi.c 663 #include <stdlib.h> 664 #include <limits.h> 665 #include <inttypes.h> 666 int main(void) { 667 int e; 668 return strtoi("1234", NULL, 0, 0, INT32_MAX, &e); 669 } 670 EOF 671 if $XCC _strtoi.c -o _strtoi 2>&3; then 672 STRTOI=yes 673 else 674 STRTOI=no 675 fi 676 echo "$STRTOI" 677 rm -f _strtoi.c _strtoi 678 fi 679 if [ "$STRTOI" = no ]; then 680 echo "COMPAT_SRCS+= compat/strtoi.c" >>$CONFIG_MK 681 echo "#include \"compat/strtoi.h\"" >>$CONFIG_H 682 fi 683 684 if [ -z "$DPRINTF" ]; then 685 printf "Testing for dprintf ... " 686 cat <<EOF >_dprintf.c 687 #include <stdio.h> 688 int main(void) { 689 return dprintf(0, "%d", 0); 690 } 691 EOF 692 if $XCC _dprintf.c -o _dprintf 2>&3; then 693 DPRINTF=yes 694 else 695 DPRINTF=no 696 fi 697 echo "$DPRINTF" 698 rm -f _dprintf.c _dprintf 699 fi 700 if [ "$DPRINTF" = no ]; then 701 echo "COMPAT_SRCS+= compat/dprintf.c" >>$CONFIG_MK 702 echo "#include \"compat/dprintf.h\"" >>$CONFIG_H 703 fi 704 705 if [ -z "$TAILQ_FOREACH_SAFE" ]; then 706 printf "Testing for TAILQ_FOREACH_SAFE ... " 707 cat <<EOF >_queue.c 708 #include <sys/queue.h> 709 int main(void) { 710 #ifndef TAILQ_FOREACH_SAFE 711 #error TAILQ_FOREACH_SAFE 712 #endif 713 return 0; 714 } 715 EOF 716 if $XCC _queue.c -o _queue 2>&3; then 717 TAILQ_FOREACH_SAFE=yes 718 TAILQ_FOREACH=yes 719 else 720 TAILQ_FOREACH_SAFE=no 721 fi 722 echo "$TAILQ_FOREACH_SAFE" 723 rm -f _queue.c _queue 724 fi 725 726 if [ -z "$TAILQ_CONCAT" ]; then 727 printf "Testing for TAILQ_CONCAT ..." 728 cat <<EOF >_queue.c 729 #include <sys/queue.h> 730 int main(void) { 731 #ifndef TAILQ_CONCAT 732 #error TAILQ_CONCAT 733 #endif 734 return 0; 735 } 736 EOF 737 if $XCC _queue.c -o _queue 2>&3; then 738 TAILQ_CONCAT=yes 739 TAILQ_FOREACH=yes 740 else 741 TAILQ_CONCAT=no 742 fi 743 echo "$TAILQ_CONCAT" 744 rm -f _queue.c _queue 745 fi 746 747 if [ -z "$TAILQ_FOREACH" ]; then 748 printf "Testing for TAILQ_FOREACH ... " 749 cat <<EOF >_queue.c 750 #include <sys/queue.h> 751 int main(void) { 752 #ifndef TAILQ_FOREACH 753 #error TAILQ_FOREACH 754 #endif 755 return 0; 756 } 757 EOF 758 if $XCC _queue.c -o _queue 2>&3; then 759 TAILQ_FOREACH=yes 760 else 761 TAILQ_FOREACH=no 762 fi 763 echo "$TAILQ_FOREACH" 764 rm -f _queue.c _queue 765 fi 766 767 if [ "$TAILQ_FOREACH_SAFE" = no -o "$TAILQ_CONCAT" = no ]; then 768 # If we don't include sys/queue.h then clang analyser finds 769 # too many false positives. 770 # See http://llvm.org/bugs/show_bug.cgi?id=18222 771 # Strictly speaking this isn't needed, but I like it to help 772 # catch any nasties. 773 if [ "$TAILQ_FOREACH" = yes ]; then 774 echo "#include <sys/queue.h>">>$CONFIG_H 775 fi 776 echo "#include \"compat/queue.h\"">>$CONFIG_H 777 else 778 echo "#include <sys/queue.h>" >>$CONFIG_H 779 fi 780 781 if [ -z "$POSIX_SPAWN" ]; then 782 printf "Testing for posix_spawn ... " 783 cat <<EOF >_posix_spawn.c 784 #include <spawn.h> 785 #include <stdlib.h> 786 787 #ifdef __OpenBSD__ 788 # include <sys/param.h> 789 # if OpenBSD<201505 790 # error posix_spawn was fixed in OpenBSD-5.7 791 # endif 792 #endif 793 794 int main(void) { 795 posix_spawn(NULL, NULL, NULL, NULL, NULL, NULL); 796 return 0; 797 } 798 EOF 799 if $XCC _posix_spawn.c -o _posix_spawn 2>&3; then 800 POSIX_SPAWN=yes 801 else 802 POSIX_SPAWN=no 803 fi 804 echo "$POSIX_SPAWN" 805 rm -f _posix_spawn.c _posix_spawn 806 fi 807 if [ "$POSIX_SPAWN" = no ]; then 808 echo "COMPAT_SRCS+= compat/posix_spawn.c" >>$CONFIG_MK 809 else 810 echo "#define HAVE_SPAWN_H" >>$CONFIG_H 811 fi 812 813 if [ -z "$POLL" ]; then 814 printf "Testing for kqueue1 ... " 815 cat <<EOF >_kqueue.c 816 #include <sys/types.h> 817 #include <sys/event.h> 818 int main(void) { 819 return kqueue1(0); 820 } 821 EOF 822 if $XCC _kqueue.c -o _kqueue 2>&3; then 823 POLL=kqueue1 824 echo "yes" 825 else 826 echo "no" 827 fi 828 rm -f _kqueue.c _kqueue 829 fi 830 if [ -z "$POLL" ]; then 831 printf "Testing for kqueue ... " 832 cat <<EOF >_kqueue.c 833 #include <sys/types.h> 834 #include <sys/event.h> 835 int main(void) { 836 return kqueue(); 837 } 838 EOF 839 if $XCC _kqueue.c -o _kqueue 2>&3; then 840 POLL=kqueue 841 echo "yes" 842 else 843 echo "no" 844 fi 845 rm -f _kqueue.c _kqueue 846 fi 847 if [ -z "$POLL" ]; then 848 printf "Testing for epoll ... " 849 cat <<EOF >_epoll.c 850 #ifdef __linux__ 851 #include <linux/version.h> 852 #if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 37) 853 #error kernel has buggy epoll_wait timeout 854 #endif 855 #endif 856 857 #include <sys/epoll.h> 858 #include <unistd.h> 859 int main(void) { 860 epoll_create1(EPOLL_CLOEXEC); 861 epoll_pwait(-1, NULL, 0, 0, NULL); 862 return 0; 863 } 864 EOF 865 if $XCC _epoll.c -o _epoll 2>&3; then 866 POLL=epoll 867 echo "#define HAVE_EPOLL" >>$CONFIG_MK 868 echo "yes" 869 else 870 echo "no" 871 fi 872 rm -f _epoll.c _epoll 873 fi 874 if [ -z "$POLL" ]; then 875 printf "Testing for ppoll ... " 876 cat <<EOF >_ppoll.c 877 #include <poll.h> 878 #include <stdlib.h> 879 int main(void) { 880 ppoll(NULL, 0, NULL, NULL); 881 return 0; 882 } 883 EOF 884 if $XCC _ppoll.c -o _ppoll 2>&3; then 885 POLL=ppoll 886 echo "yes" 887 else 888 echo "no" 889 fi 890 rm -f _ppoll.c _ppoll 891 fi 892 if [ -z "$POLL" ]; then 893 printf "Testing for pselect ... " 894 cat <<EOF >_pselect.c 895 #include <sys/select.h> 896 #include <stdlib.h> 897 int main(void) { 898 pselect(0, NULL, NULL, NULL, NULL, NULL); 899 return 0; 900 } 901 EOF 902 if $XCC _pselect.c -o _pselect 2>&3; then 903 POLL=pselect 904 echo "yes" 905 else 906 echo "no" 907 fi 908 rm -f _pselect.c _pselect 909 fi 910 case "$POLL" in 911 kqueue1) 912 echo "#define HAVE_KQUEUE" >>$CONFIG_H 913 echo "#define HAVE_KQUEUE1" >>$CONFIG_H 914 ;; 915 kqueue) 916 echo "#define HAVE_KQUEUE" >>$CONFIG_H 917 ;; 918 epoll) 919 echo "#define HAVE_EPOLL" >>$CONFIG_H 920 ;; 921 ppoll) 922 echo "#define pollts ppoll" >>$CONFIG_H 923 ;; 924 pselect) 925 echo "COMPAT_SRCS+= compat/pselect.c" >>$CONFIG_MK 926 echo "#include \"compat/pollts.h\"" >>$CONFIG_H 927 ;; 928 *) 929 echo "COMPAT_SRCS+= compat/pollts.c" >>$CONFIG_MK 930 echo "#include \"compat/pollts.h\"" >>$CONFIG_H 931 ;; 932 esac 933 934 if [ -z "$BE64ENC" ]; then 935 printf "Testing for be64enc ... " 936 cat <<EOF >_be64enc.c 937 #include <sys/endian.h> 938 #include <stdlib.h> 939 int main(void) { 940 be64enc(NULL, 0); 941 } 942 EOF 943 if $XCC _be64enc.c -o _be64enc 2>&3; then 944 BE64ENC=yes 945 else 946 BE64ENC=no 947 fi 948 echo "$BE64ENC" 949 rm -f _be64enc.c _be64enc 950 fi 951 if [ "$BE64ENC" = no ]; then 952 echo "#include \"compat/endian.h\"" >>$CONFIG_H 953 fi 954 955 if [ -z "$MD5" ]; then 956 MD5_LIB= 957 printf "Testing for MD5Init ... " 958 cat <<EOF >_md5.c 959 #include <sys/types.h> 960 #include <md5.h> 961 #include <stdlib.h> 962 int main(void) { 963 MD5_CTX context; 964 MD5Init(&context); 965 return 0; 966 } 967 EOF 968 # We only want to link to libmd if it exists in /lib 969 if $ALLOW_USR_LIBS; then 970 set -- / 971 else 972 set -- $(ls /lib/libmd.so.* 2>/dev/null) 973 fi 974 if $XCC _md5.c -o _md5 2>&3; then 975 MD5=yes 976 elif [ -e "$1" ] && $XCC _md5.c -lmd -o _md5 2>&3; then 977 MD5="yes (-lmd)" 978 MD5_LIB=-lmd 979 else 980 MD5=no 981 fi 982 echo "$MD5" 983 rm -f _md5.c _md5 984 fi 985 if [ "$MD5" = no ]; then 986 echo "MD5_SRC= crypt/md5.c" >>$CONFIG_MK 987 else 988 echo "MD5_SRC=" >>$CONFIG_MK 989 echo "#define HAVE_MD5_H" >>$CONFIG_H 990 [ -n "$MD5_LIB" ] && echo "LDADD+= $MD5_LIB" >>$CONFIG_MK 991 fi 992 993 if [ -z "$SHA2_H" -a -z "$SHA2" -o "$SHA2" != no ]; then 994 printf "Testing for sha2.h ... " 995 if [ -e /usr/include/sha2.h ]; then 996 SHA2_H=sha2.h 997 elif [ -e /usr/include/sha256.h ]; then 998 SHA2_H=sha256.h 999 fi 1000 if [ -n "$SHA2_H" ]; then 1001 echo "$SHA2_H" 1002 else 1003 echo "no" 1004 fi 1005 fi 1006 1007 if [ -z "$SHA2" ]; then 1008 SHA2_LIB= 1009 SHA2_RENAMED= 1010 printf "Testing for SHA256_Init ... " 1011 cat <<EOF >_sha256.c 1012 #include <sys/types.h> 1013 EOF 1014 [ -n "$SHA2_H" ] && echo "#include <$SHA2_H>">>_sha256.c 1015 cat <<EOF >>_sha256.c 1016 #include <stdlib.h> 1017 int main(void) { 1018 SHA256_CTX context; 1019 SHA256_Init(&context); 1020 return 0; 1021 } 1022 EOF 1023 # We only want to link to libmd if it exists in /lib 1024 if $ALLOW_USR_LIBS; then 1025 set -- / 1026 else 1027 set -- $(ls /lib/libmd.so.* 2>/dev/null) 1028 fi 1029 if $XCC _sha256.c -o _sha256 2>&3; then 1030 SHA2=yes 1031 elif [ -e "$1" ] && $XCC _sha256.c -lmd -o _sha256 2>&3; then 1032 SHA2="yes (-lmd)" 1033 SHA2_LIB=-lmd 1034 else 1035 SHA2=no 1036 fi 1037 echo "$SHA2" 1038 rm -f _sha256.c _sha256 1039 if [ "$SHA2" = no ]; then 1040 # Did OpenBSD really change this? grrrr 1041 printf "Testing for SHA256Init ... " 1042 cat <<EOF >_sha256.c 1043 #include <sys/types.h> 1044 EOF 1045 [ -n "$SHA2_H" ] && echo "#include <$SHA2_H>">>_sha256.c 1046 cat <<EOF >>_sha256.c 1047 #include <stdlib.h> 1048 int main(void) { 1049 SHA2_CTX context; 1050 SHA256Init(&context); 1051 return 0; 1052 } 1053 EOF 1054 # We only want to link to libmd if it exists in /lib 1055 if $ALLOW_USR_LIBS; then 1056 set -- / 1057 else 1058 set -- $(ls /lib/libmd.so.* 2>/dev/null) 1059 fi 1060 if $XCC _sha256.c -o _sha256 2>&3; then 1061 SHA2=yes 1062 SHA2_RENAMED=yes 1063 elif [ -e "$1" ] && $XCC _sha256.c -lmd -o _sha256 2>&3 1064 then 1065 SHA2="yes (-lmd)" 1066 SHA2_LIB=-lmd 1067 SHA2_RENAMED=yes 1068 else 1069 SHA2=no 1070 fi 1071 echo "$SHA2" 1072 rm -f _sha256.c _sha256 1073 fi 1074 fi 1075 if [ "$SHA2" = no ]; then 1076 echo "SHA256_SRC= crypt/sha256.c" >>$CONFIG_MK 1077 else 1078 echo "SHA256_SRC=" >>$CONFIG_MK 1079 echo "#define SHA2_H <$SHA2_H>" >>$CONFIG_H 1080 if [ "$SHA2_RENAMED" = yes ]; then 1081 echo "#define SHA256_CTX SHA2_CTX" >>$CONFIG_H 1082 echo "#define SHA256_Init SHA256Init" >>$CONFIG_H 1083 echo "#define SHA256_Update SHA256Update" >>$CONFIG_H 1084 echo "#define SHA256_Final SHA256Final" >>$CONFIG_H 1085 fi 1086 [ -n "$SHA2_LIB" ] && echo "LDADD+= $SHA2_LIB" >>$CONFIG_MK 1087 fi 1088 1089 if [ "$DEV" != no -a "$UDEV" != no ]; then 1090 printf "Checking for libudev ... " 1091 if type pkg-config >/dev/null 2>&1; then 1092 LIBUDEV_CFLAGS=$(pkg-config --cflags libudev 2>&3) 1093 LIBUDEV_LIBS=$(pkg-config --libs libudev 2>&3) 1094 fi 1095 fi 1096 if [ "$DEV" != no -a "$UDEV" != no -a -n "$LIBUDEV_LIBS" ]; then 1097 echo "yes" 1098 [ -z "$DEV" ] && DEV=yes 1099 echo "DEV_PLUGINS+= udev" >>$CONFIG_MK 1100 if [ -n "$LIBUDEV_CFLAGS" ]; then 1101 echo "LIBUDEV_CFLAGS= $LIBUDEV_CFLAGS" >>$CONFIG_MK 1102 fi 1103 echo "LIBUDEV_LIBS= $LIBUDEV_LIBS" >>$CONFIG_MK 1104 1105 printf "Checking udev_monitor_filter_add_match_subsystem_devtype ... " 1106 cat <<EOF >_udev.c 1107 #include <libudev.h> 1108 #include <stdlib.h> 1109 int main(void) { 1110 udev_monitor_filter_add_match_subsystem_devtype(NULL, NULL, NULL); 1111 return 0; 1112 } 1113 EOF 1114 if $XCC $LIBUDEV_CFLAGS _udev.c -o _udev $LIBUDEV_LIBS 2>&3 1115 then 1116 echo "yes" 1117 else 1118 echo "LIBUDEV_CPPFLAGS+= -DLIBUDEV_NOFILTER" >>$CONFIG_MK 1119 echo "no" 1120 fi 1121 rm -f _udev.c _udev 1122 1123 printf "Checking udev_device_get_is_initialized ... " 1124 cat <<EOF >_udev.c 1125 #include <libudev.h> 1126 #include <stdlib.h> 1127 int main(void) { 1128 udev_device_get_is_initialized(NULL); 1129 return 0; 1130 } 1131 EOF 1132 if $XCC $LIBUDEV_CFLAGS _udev.c -o _udev $LIBUDEV_LIBS 2>&3 1133 then 1134 echo "yes" 1135 else 1136 echo "LIBUDEV_CPPFLAGS+= -DLIBUDEV_NOINIT" >>$CONFIG_MK 1137 echo "no" 1138 fi 1139 rm -f _udev.c _udev 1140 elif [ "$DEV" != no -a "$UDEV" != no ]; then 1141 echo "no" 1142 fi 1143 1144 if [ "$DEV" = yes ]; then 1145 echo "DHCPCD_SRCS+= dev.c" >>$CONFIG_MK 1146 echo "CPPFLAGS+= -DPLUGIN_DEV" >>$CONFIG_MK 1147 echo "MKDIRS+= dev" >>$CONFIG_MK 1148 1149 printf "Testing for dlopen ... " 1150 cat <<EOF >_dlopen.c 1151 #include <dlfcn.h> 1152 #include <stdlib.h> 1153 int main(void) { 1154 dlopen(NULL, 0); 1155 return 0; 1156 } 1157 EOF 1158 if $XCC _dlopen.c -o _dlopen 2>&3; then 1159 echo "yes" 1160 elif $XCC _dlopen.c -ldl -o _dlopen 2>&3; then 1161 echo "yes (-ldl)" 1162 echo "LDADD+= -ldl" >>$CONFIG_MK 1163 else 1164 echo "no" 1165 echo "libc for dlopen is required - aborting" 1166 fi 1167 rm -f _dlopen.c _dlopen 1168 $abort && exit 1 1169 fi 1170 1171 # Transform for a make file 1172 SERVICEEXISTS=$(echo "$SERVICEEXISTS" | $SED \ 1173 -e 's:\\:\\\\:g' \ 1174 -e 's:\&:\\\&:g' \ 1175 -e 's:\$:\\\\\$\$:g' \ 1176 ) 1177 echo "SERVICEEXISTS= $SERVICEEXISTS" >>config.mk 1178 SERVICECMD=$(echo "$SERVICECMD" | $SED \ 1179 -e 's:\\:\\\\:g' \ 1180 -e 's:\&:\\\&:g' \ 1181 -e 's:\$:\\\\\$\$:g' \ 1182 ) 1183 echo "SERVICECMD= $SERVICECMD" >>config.mk 1184 SERVICESTATUS=$(echo "$SERVICESTATUS" | $SED \ 1185 -e 's:\\:\\\\:g' \ 1186 -e 's:\&:\\\&:g' \ 1187 -e 's:\$:\\\\\$\$:g' \ 1188 ) 1189 echo "SERVICESTATUS= $SERVICESTATUS" >>config.mk 1190 1191 HOOKS= 1192 if ! $HOOKSET; then 1193 printf "Checking for ntpd ... " 1194 NTPD=$(_which ntpd) 1195 if [ -n "$NTPD" ]; then 1196 echo "$NTPD (50-ntp.conf)" 1197 HOOKS="$HOOKS${HOOKS:+ }50-ntp.conf" 1198 else 1199 echo "not found" 1200 fi 1201 1202 printf "Checking for ypbind ... " 1203 YPBIND=$(_which ypbind) 1204 if [ -n "$YPBIND" ]; then 1205 YPHOOK="50-ypbind" 1206 if strings "$YPBIND" | $GREP -q yp\\.conf; then 1207 YPHOOK="50-yp.conf" 1208 YPOS="Linux" 1209 elif strings "$YPBIND" | $GREP -q \\.ypservers; then 1210 YPOS="NetBSD" 1211 echo "YPDOMAIN_DIR= /var/yp" >>$CONFIG_MK 1212 echo "YPDOMAIN_SUFFIX=.ypservers" >>$CONFIG_MK 1213 elif strings "$YPBIND" | $GREP -q /etc/yp; then 1214 YPOS="OpenBSD" 1215 echo "YPDOMAIN_DIR= /etc/yp" >>$CONFIG_MK 1216 echo "YPDOMAIN_SUFFIX=" >>$CONFIG_MK 1217 else 1218 YPOS="FreeBSD" 1219 echo "YPDOMAIN_DIR=" >>$CONFIG_MK 1220 echo "YPDOMAIN_SUFFIX=" >>$CONFIG_MK 1221 fi 1222 echo "$YPBIND ($YPHOOK${YPOS:+ }$YPOS)" 1223 HOOKS="$HOOKS${HOOKS:+ }$YPHOOK" 1224 else 1225 echo "not found" 1226 fi 1227 fi 1228 1229 if cd dhcpcd-hooks; then 1230 for x in $HOOKSCRIPTS; do 1231 printf "Finding hook $x ... " 1232 for h in [0-9][0-9]"-$x" \ 1233 [0-9][0-9]"-$x.sh" \ 1234 [0-9][0-9]"-$x.conf" 1235 do 1236 [ -e "$h" ] && break 1237 done 1238 if [ ! -e "$h" ]; then 1239 echo "no" 1240 else 1241 echo "$h" 1242 case " $HOOKS " in 1243 *" $h "*) ;; 1244 *) HOOKS="$HOOKS${HOOKS:+ }$h";; 1245 esac 1246 fi 1247 done 1248 cd .. 1249 fi 1250 echo "HOOKSCRIPTS= $HOOKS" >>$CONFIG_MK 1251 1252 echo 1253 echo " SYSCONFDIR = $SYSCONFDIR" 1254 echo " SBINDIR = $SBINDIR" 1255 echo " LIBDIR = $LIBDIR" 1256 echo " LIBEXECDIR = $LIBEXECDIR" 1257 echo " DBDIR = $DBDIR" 1258 echo " RUNDIR = $RUNDIR" 1259 echo " MANDIR = $MANDIR" 1260 echo " HOOKSCRIPTS = $HOOKS" 1261 echo 1262 1263 rm -f dhcpcd tests/test 1264