UNIXworkcode

1 #!/bin/sh 2 3 4 # some utility functions 5 isplatform() 6 { 7 for p in $PLATFORM 8 do 9 if [ "$p" = "$1" ]; then 10 return 0 11 fi 12 done 13 return 1 14 } 15 notisplatform() 16 { 17 for p in $PLATFORM 18 do 19 if [ "$p" = "$1" ]; then 20 return 1 21 fi 22 done 23 return 0 24 } 25 istoolchain() 26 { 27 for t in $TOOLCHAIN 28 do 29 if [ "$t" = "$1" ]; then 30 return 0 31 fi 32 done 33 return 1 34 } 35 notistoolchain() 36 { 37 for t in $TOOLCHAIN 38 do 39 if [ "$t" = "$1" ]; then 40 return 1 41 fi 42 done 43 return 0 44 } 45 46 # clean abort 47 abort_configure() 48 { 49 rm -Rf "$TEMP_DIR" 50 exit 1 51 } 52 53 # Test for availability of pkg-config 54 PKG_CONFIG=`command -v pkg-config` 55 : ${PKG_CONFIG:="false"} 56 57 # Simple uname based platform detection 58 # $PLATFORM is used for platform dependent dependency selection 59 OS=`uname -s` 60 OS_VERSION=`uname -r` 61 ARCH=`uname -m` 62 printf "detect platform... " 63 if [ "$OS" = "SunOS" ]; then 64 PLATFORM="solaris sunos unix svr4" 65 elif [ "$OS" = "Linux" ]; then 66 PLATFORM="linux unix" 67 elif [ "$OS" = "FreeBSD" ]; then 68 PLATFORM="freebsd bsd unix" 69 elif [ "$OS" = "OpenBSD" ]; then 70 PLATFORM="openbsd bsd unix" 71 elif [ "$OS" = "NetBSD" ]; then 72 PLATFORM="netbsd bsd unix" 73 elif [ "$OS" = "Darwin" ]; then 74 PLATFORM="macos osx bsd unix" 75 elif echo "$OS" | grep -i "MINGW" > /dev/null; then 76 PLATFORM="windows mingw" 77 fi 78 : ${PLATFORM:="unix"} 79 80 PLATFORM_NAME=`echo "$PLATFORM" | cut -f1 -d' ' -` 81 echo "$PLATFORM_NAME" 82 83 84 # help text 85 printhelp() 86 { 87 echo "Usage: $0 [OPTIONS]..." 88 echo 'Configuration:' 89 if true \ 90 ; then 91 : 92 if test -z "$prefix__described__"; then 93 prefix__described__=1 94 cat << '__EOF__' 95 --prefix path prefix for architecture-independent files 96 [`pwd`/work] 97 __EOF__ 98 fi 99 fi 100 cat << '__EOF__' 101 102 Build Types: 103 --debug add extra compile flags for debug builds 104 --release add extra compile flags for release builds 105 106 Optional Features: 107 --disable-defaultplugins 108 --enable-postgresql 109 110 __EOF__ 111 abort_configure 112 } 113 114 # create temporary directory 115 TEMP_DIR=".tmp-`uname -n`" 116 rm -Rf "$TEMP_DIR" 117 if mkdir -p "$TEMP_DIR"; then 118 : 119 else 120 echo "Cannot create tmp dir $TEMP_DIR" 121 echo "Abort" 122 exit 1 123 fi 124 touch "$TEMP_DIR/options" 125 touch "$TEMP_DIR/features" 126 127 # config variables 128 if true \ 129 ; then 130 : 131 if test -z "$prefix__initialized__"; then 132 prefix__initialized__=1 133 prefix=`pwd`/work 134 fi 135 if test -z "$host__initialized__"; then 136 host__initialized__=1 137 host=`uname -n` 138 fi 139 fi 140 141 # features 142 FEATURE_DEFAULTPLUGINS=auto 143 144 # 145 # parse arguments 146 # 147 BUILD_TYPE="default" 148 for ARG in "$@" 149 do 150 case "$ARG" in 151 "--prefix="*) prefix=${ARG#--prefix=} ;; 152 "--help"*) printhelp ;; 153 "--debug") BUILD_TYPE="debug" ;; 154 "--release") BUILD_TYPE="release" ;; 155 "--enable-defaultplugins") FEATURE_DEFAULTPLUGINS=on ;; 156 "--disable-defaultplugins") unset FEATURE_DEFAULTPLUGINS ;; 157 "--enable-postgresql") FEATURE_POSTGRESQL=on ;; 158 "--disable-postgresql") unset FEATURE_POSTGRESQL ;; 159 "-"*) echo "unknown option: $ARG"; abort_configure ;; 160 esac 161 done 162 163 # toolchain detection utilities 164 . make/toolchain.sh 165 166 # check languages 167 lang_c= 168 lang_cpp= 169 if detect_c_compiler ; then 170 lang_c=1 171 fi 172 173 174 175 # set defaults for dir variables 176 : ${exec_prefix:="$prefix"} 177 : ${bindir:='${exec_prefix}/bin'} 178 : ${sbindir:='${exec_prefix}/sbin'} 179 : ${libdir:='${exec_prefix}/lib'} 180 : ${libexecdir:='${exec_prefix}/libexec'} 181 : ${datarootdir:='${prefix}/share'} 182 : ${datadir:='${datarootdir}'} 183 : ${sharedstatedir:='${prefix}/com'} 184 if [ -z "$sysconfdir" ]; then 185 if [ "$prefix" = '/usr' ]; then 186 sysconfdir='/etc' 187 else 188 sysconfdir='${prefix}/etc' 189 fi 190 fi 191 if [ -z "$localstatedir" ]; then 192 if [ "$prefix" = '/usr' ]; then 193 localstatedir='/var' 194 else 195 localstatedir='${prefix}/var' 196 fi 197 fi 198 if [ -z "$runstatedir" ]; then 199 if [ "$prefix" = '/usr' ]; then 200 runstatedir='/var/run' 201 else 202 runstatedir='${prefix}/var' 203 fi 204 fi 205 : ${includedir:='${prefix}/include'} 206 : ${infodir:='${datarootdir}/info'} 207 : ${mandir:='${datarootdir}/man'} 208 : ${localedir:='${datarootdir}/locale'} 209 210 211 # check if a config.site exists and load it 212 CONFIG_SITE_OK=0 213 if [ -n "$CONFIG_SITE" ]; then 214 # CONFIG_SITE may contain space separated file names 215 for cs in $CONFIG_SITE; do 216 printf "loading defaults from $cs... " 217 if [ -f "$cs" ]; then 218 . "$cs" 219 echo ok 220 CONFIG_SITE_OK=1 221 break 222 else 223 echo "not found" 224 fi 225 done 226 elif [ -f "$prefix/share/config.site" ]; then 227 printf "loading site defaults... " 228 . "$prefix/share/config.site" 229 echo ok 230 CONFIG_SITE_OK=1 231 elif [ -f "$prefix/etc/config.site" ]; then 232 printf "loading site defaults... " 233 . "$prefix/etc/config.site" 234 echo ok 235 CONFIG_SITE_OK=1 236 fi 237 238 if [ $CONFIG_SITE_OK -eq 0 ]; then 239 # try to detect the correct libdir on our own, except it was changed by the user 240 if [ "$libdir" = '${exec_prefix}/lib' ] ; then 241 if [ "$TOOLCHAIN_WSIZE" = "64" ] ; then 242 if [ "$OS" = "SunOS" ]; then 243 [ -d "${exec_prefix}/lib/64" ] && libdir='${exec_prefix}/lib/64' 244 else 245 [ -d "${exec_prefix}/lib64" ] && libdir='${exec_prefix}/lib64' 246 fi 247 elif [ "$TOOLCHAIN_WSIZE" = "32" ] ; then 248 if [ "$OS" = "SunOS" ]; then 249 [ -d "${exec_prefix}/lib/32" ] && libdir='${exec_prefix}/lib/32' 250 else 251 [ -d "${exec_prefix}/lib32" ] && libdir='${exec_prefix}/lib32' 252 fi 253 fi 254 fi 255 fi 256 257 258 # generate vars.mk 259 cat > "$TEMP_DIR/vars.mk" << __EOF__ 260 prefix=$prefix 261 host=$host 262 __EOF__ 263 264 265 # 266 # DEPENDENCIES 267 # 268 269 270 271 # create buffer for make variables required by dependencies 272 echo > "$TEMP_DIR/make.mk" 273 274 test_pkg_config() 275 { 276 if "$PKG_CONFIG" --exists "$1" ; then : 277 else return 1 ; fi 278 if [ -z "$2" ] || "$PKG_CONFIG" --atleast-version="$2" "$1" ; then : 279 else return 1 ; fi 280 if [ -z "$3" ] || "$PKG_CONFIG" --exact-version="$3" "$1" ; then : 281 else return 1 ; fi 282 if [ -z "$4" ] || "$PKG_CONFIG" --max-version="$4" "$1" ; then : 283 else return 1 ; fi 284 return 0 285 } 286 287 print_check_msg() 288 { 289 if [ -z "$1" ]; then 290 shift 291 printf "$@" 292 fi 293 } 294 295 dependency_error_libpq() 296 { 297 print_check_msg "$dep_checked_libpq" "checking for libpq... " 298 # dependency libpq 299 while true 300 do 301 if [ -z "$PKG_CONFIG" ]; then 302 break 303 fi 304 if test_pkg_config "libpq" "" "" "" ; then 305 TEMP_CFLAGS="$TEMP_CFLAGS `"$PKG_CONFIG" --cflags libpq`" 306 TEMP_LDFLAGS="$TEMP_LDFLAGS `"$PKG_CONFIG" --libs libpq`" 307 else 308 break 309 fi 310 cat >> $TEMP_DIR/make.mk << __EOF__ 311 # Dependency: libpq 312 CFLAGS += -DENABLE_POSTGRESQL 313 PLUGINS += postgresql 314 TEST_PLUGIN_LDFLAGS += -lwspgtest 315 __EOF__ 316 print_check_msg "$dep_checked_libpq" "yes\n" 317 dep_checked_libpq=1 318 return 1 319 done 320 321 print_check_msg "$dep_checked_libpq" "no\n" 322 dep_checked_libpq=1 323 return 0 324 } 325 dependency_error_openssl() 326 { 327 print_check_msg "$dep_checked_openssl" "checking for openssl... " 328 # dependency openssl 329 while true 330 do 331 if [ -z "$PKG_CONFIG" ]; then 332 break 333 fi 334 if test_pkg_config "openssl" "" "" "" ; then 335 TEMP_CFLAGS="$TEMP_CFLAGS `"$PKG_CONFIG" --cflags openssl`" 336 TEMP_LDFLAGS="$TEMP_LDFLAGS `"$PKG_CONFIG" --libs openssl`" 337 else 338 break 339 fi 340 print_check_msg "$dep_checked_openssl" "yes\n" 341 dep_checked_openssl=1 342 return 1 343 done 344 345 # dependency openssl 346 while true 347 do 348 TEMP_LDFLAGS="$TEMP_LDFLAGS -lssl -lcrypto" 349 print_check_msg "$dep_checked_openssl" "yes\n" 350 dep_checked_openssl=1 351 return 1 352 done 353 354 print_check_msg "$dep_checked_openssl" "no\n" 355 dep_checked_openssl=1 356 return 0 357 } 358 dependency_error_libxml2() 359 { 360 print_check_msg "$dep_checked_libxml2" "checking for libxml2... " 361 # dependency libxml2 362 while true 363 do 364 if [ -z "$PKG_CONFIG" ]; then 365 break 366 fi 367 if test_pkg_config "libxml-2.0" "" "" "" ; then 368 TEMP_CFLAGS="$TEMP_CFLAGS `"$PKG_CONFIG" --cflags libxml-2.0`" 369 TEMP_LDFLAGS="$TEMP_LDFLAGS `"$PKG_CONFIG" --libs libxml-2.0`" 370 else 371 break 372 fi 373 print_check_msg "$dep_checked_libxml2" "yes\n" 374 dep_checked_libxml2=1 375 return 1 376 done 377 378 # dependency libxml2 379 while true 380 do 381 if tmp_flags=`xml2-config --cflags` ; then 382 TEMP_CFLAGS="$TEMP_CFLAGS $tmp_flags" 383 else 384 break 385 fi 386 if tmp_flags=`xml2-config --libs` ; then 387 TEMP_LDFLAGS="$TEMP_LDFLAGS $tmp_flags" 388 else 389 break 390 fi 391 print_check_msg "$dep_checked_libxml2" "yes\n" 392 dep_checked_libxml2=1 393 return 1 394 done 395 396 print_check_msg "$dep_checked_libxml2" "no\n" 397 dep_checked_libxml2=1 398 return 0 399 } 400 dependency_error_defaultplugins() 401 { 402 print_check_msg "$dep_checked_defaultplugins" "checking for defaultplugins... " 403 # dependency defaultplugins 404 while true 405 do 406 cat >> $TEMP_DIR/make.mk << __EOF__ 407 # Dependency: defaultplugins 408 PLUGINS += simple-anti-bot 409 TEST_PLUGIN_LDFLAGS += -lsabtest 410 __EOF__ 411 print_check_msg "$dep_checked_defaultplugins" "yes\n" 412 dep_checked_defaultplugins=1 413 return 1 414 done 415 416 print_check_msg "$dep_checked_defaultplugins" "no\n" 417 dep_checked_defaultplugins=1 418 return 0 419 } 420 421 # start collecting dependency information 422 echo > "$TEMP_DIR/flags.mk" 423 424 DEPENDENCIES_FAILED= 425 ERROR=0 426 # unnamed dependencies 427 TEMP_CFLAGS="$CFLAGS" 428 TEMP_CXXFLAGS="$CXXFLAGS" 429 TEMP_LDFLAGS="$LDFLAGS" 430 while true 431 do 432 while true 433 do 434 if [ -z "$lang_c" ] ; then 435 ERROR=1 436 break 437 fi 438 439 break 440 done 441 break 442 done 443 while true 444 do 445 if notisplatform "linux"; then 446 break 447 fi 448 while true 449 do 450 451 TEMP_CFLAGS="$TEMP_CFLAGS -DLINUX" 452 TEMP_LDFLAGS="$TEMP_LDFLAGS -lpthread -ldl -lm -lldap -llber" 453 cat >> "$TEMP_DIR/make.mk" << __EOF__ 454 # platform dependend source files 455 PLATFORM_DAEMONOBJ = event_linux.o 456 457 # platform dependend vars 458 OBJ_EXT = .o 459 LIB_EXT = .so 460 APP_EXT = 461 462 # ld flags 463 UCX_SO_NAME = 464 RPATH_WS_LIB_FLAG = -Wl,-rpath,'\$\$ORIGIN/../lib' 465 __EOF__ 466 break 467 done 468 break 469 done 470 while true 471 do 472 if notisplatform "bsd"; then 473 break 474 fi 475 if isplatform "macos" || istoolchain "macos"; then 476 break 477 fi 478 while true 479 do 480 481 TEMP_CFLAGS="$TEMP_CFLAGS -DBSD -I/usr/local/include" 482 TEMP_LDFLAGS="$TEMP_LDFLAGS -lpthread -lm -lldap -llber" 483 cat >> "$TEMP_DIR/make.mk" << __EOF__ 484 # platform dependend source files 485 PLATFORM_DAEMONOBJ = event_bsd.o 486 487 # platform dependend vars 488 OBJ_EXT = .o 489 LIB_EXT = .so 490 APP_EXT = 491 492 # ld flags 493 UCX_SO_NAME = 494 RPATH_WS_LIB_FLAG = -Wl,-rpath,'\$\$ORIGIN/../lib' 495 __EOF__ 496 break 497 done 498 break 499 done 500 while true 501 do 502 if notisplatform "macos"; then 503 break 504 fi 505 while true 506 do 507 508 TEMP_CFLAGS="$TEMP_CFLAGS -DBSD -DOSX" 509 TEMP_LDFLAGS="$TEMP_LDFLAGS -lpthread -ldl -lm -lldap -llber" 510 cat >> "$TEMP_DIR/make.mk" << __EOF__ 511 # platform dependend source files 512 PLATFORM_DAEMONOBJ = event_bsd.o 513 514 # platform dependend vars 515 OBJ_EXT = .o 516 LIB_EXT = .dylib 517 APP_EXT = 518 519 # ld flags 520 SHLIB_LDFLAGS = -dynamiclib 521 UCX_SO_NAME = -install_name @rpath/libucx.dylib 522 RPATH_WS_LIB_FLAG = -rpath @loader_path/../lib 523 __EOF__ 524 break 525 done 526 break 527 done 528 while true 529 do 530 if notisplatform "solaris"; then 531 break 532 fi 533 while true 534 do 535 536 TEMP_CFLAGS="$TEMP_CFLAGS -DSOLARIS -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS" 537 TEMP_LDFLAGS="$TEMP_LDFLAGS -lsocket -lnsl -lsendfile -lposix4 -lpthread -ldl -lm -lmd -lldap" 538 cat >> "$TEMP_DIR/make.mk" << __EOF__ 539 # platform dependend source files 540 PLATFORM_DAEMONOBJ = event_solaris.o 541 542 # platform dependend vars 543 OBJ_EXT = .o 544 LIB_EXT = .so 545 APP_EXT = 546 __EOF__ 547 break 548 done 549 break 550 done 551 while true 552 do 553 while true 554 do 555 556 cat >> "$TEMP_DIR/make.mk" << __EOF__ 557 HOST = $host 558 INSTALL_DIR = $prefix 559 __EOF__ 560 break 561 done 562 break 563 done 564 565 # build type 566 if [ "$BUILD_TYPE" = "debug" ]; then 567 TEMP_CFLAGS="\${DEBUG_CFLAGS} $TEMP_CFLAGS" 568 TEMP_CXXFLAGS="\${DEBUG_CXXFLAGS} $TEMP_CXXFLAGS" 569 fi 570 if [ "$BUILD_TYPE" = "release" ]; then 571 TEMP_CFLAGS="\${RELEASE_CFLAGS} $TEMP_CFLAGS" 572 TEMP_CXXFLAGS="\${RELEASE_CXXFLAGS} $TEMP_CXXFLAGS" 573 fi 574 575 # add general dependency flags to flags.mk 576 echo "# general flags" >> "$TEMP_DIR/flags.mk" 577 if [ -n "${TEMP_CFLAGS}" ] && [ -n "$lang_c" ]; then 578 echo "CFLAGS += $TEMP_CFLAGS" >> "$TEMP_DIR/flags.mk" 579 fi 580 if [ -n "${TEMP_CXXFLAGS}" ] && [ -n "$lang_cpp" ]; then 581 echo "CXXFLAGS += $TEMP_CXXFLAGS" >> "$TEMP_DIR/flags.mk" 582 fi 583 if [ -n "${TEMP_LDFLAGS}" ]; then 584 echo "LDFLAGS += $TEMP_LDFLAGS" >> "$TEMP_DIR/flags.mk" 585 fi 586 587 # 588 # OPTION VALUES 589 # 590 591 # 592 # TARGETS 593 # 594 595 echo >> "$TEMP_DIR/flags.mk" 596 echo "configuring global target" 597 echo "# flags for unnamed target" >> "$TEMP_DIR/flags.mk" 598 TEMP_CFLAGS= 599 TEMP_CXXFLAGS= 600 TEMP_LDFLAGS= 601 602 if dependency_error_libxml2; then 603 DEPENDENCIES_FAILED="$DEPENDENCIES_FAILED libxml2 " 604 ERROR=1 605 fi 606 if dependency_error_openssl; then 607 DEPENDENCIES_FAILED="$DEPENDENCIES_FAILED openssl " 608 ERROR=1 609 fi 610 611 # Features 612 if [ -n "$FEATURE_DEFAULTPLUGINS" ]; then 613 # check dependency 614 if dependency_error_defaultplugins ; then 615 # "auto" features can fail and are just disabled in this case 616 if [ "$FEATURE_DEFAULTPLUGINS" = "auto" ]; then 617 DISABLE_FEATURE_DEFAULTPLUGINS=1 618 else 619 DEPENDENCIES_FAILED="$DEPENDENCIES_FAILED defaultplugins " 620 ERROR=1 621 fi 622 fi 623 if [ -n "$DISABLE_FEATURE_DEFAULTPLUGINS" ]; then 624 unset FEATURE_DEFAULTPLUGINS 625 fi 626 fi 627 if [ -n "$FEATURE_DEFAULTPLUGINS" ]; then 628 : 629 else 630 : 631 fi 632 633 634 if [ -n "${TEMP_CFLAGS}" ] && [ -n "$lang_c" ]; then 635 echo "CFLAGS += $TEMP_CFLAGS" >> "$TEMP_DIR/flags.mk" 636 fi 637 if [ -n "${TEMP_CXXFLAGS}" ] && [ -n "$lang_cpp" ]; then 638 echo "CXXFLAGS += $TEMP_CXXFLAGS" >> "$TEMP_DIR/flags.mk" 639 fi 640 if [ -n "${TEMP_LDFLAGS}" ]; then 641 echo "LDFLAGS += $TEMP_LDFLAGS" >> "$TEMP_DIR/flags.mk" 642 fi 643 644 echo >> "$TEMP_DIR/flags.mk" 645 echo "configuring target: postgresql" 646 echo "# flags for target postgresql" >> "$TEMP_DIR/flags.mk" 647 TEMP_CFLAGS= 648 TEMP_CXXFLAGS= 649 TEMP_LDFLAGS= 650 651 652 # Features 653 if [ -n "$FEATURE_POSTGRESQL" ]; then 654 # check dependency 655 if dependency_error_libpq ; then 656 # "auto" features can fail and are just disabled in this case 657 if [ "$FEATURE_POSTGRESQL" = "auto" ]; then 658 DISABLE_FEATURE_POSTGRESQL=1 659 else 660 DEPENDENCIES_FAILED="$DEPENDENCIES_FAILED libpq " 661 ERROR=1 662 fi 663 fi 664 if [ -n "$DISABLE_FEATURE_POSTGRESQL" ]; then 665 unset FEATURE_POSTGRESQL 666 fi 667 fi 668 if [ -n "$FEATURE_POSTGRESQL" ]; then 669 : 670 else 671 : 672 fi 673 674 675 if [ -n "${TEMP_CFLAGS}" ] && [ -n "$lang_c" ]; then 676 echo "POSTGRESQL_CFLAGS += $TEMP_CFLAGS" >> "$TEMP_DIR/flags.mk" 677 fi 678 if [ -n "${TEMP_CXXFLAGS}" ] && [ -n "$lang_cpp" ]; then 679 echo "POSTGRESQL_CXXFLAGS += $TEMP_CXXFLAGS" >> "$TEMP_DIR/flags.mk" 680 fi 681 if [ -n "${TEMP_LDFLAGS}" ]; then 682 echo "POSTGRESQL_LDFLAGS += $TEMP_LDFLAGS" >> "$TEMP_DIR/flags.mk" 683 fi 684 685 686 # final result 687 if [ $ERROR -ne 0 ]; then 688 echo 689 echo "Error: Unresolved dependencies" 690 echo "$DEPENDENCIES_FAILED" 691 abort_configure 692 fi 693 694 echo "configure finished" 695 echo 696 echo "Toolchain:" 697 echo " name: $TOOLCHAIN_NAME" 698 if [ -n "$TOOLCHAIN_CC" ]; then 699 echo " cc: $TOOLCHAIN_CC" 700 fi 701 if [ -n "$TOOLCHAIN_CXX" ]; then 702 echo " cxx: $TOOLCHAIN_CXX" 703 fi 704 if [ -n "$TOOLCHAIN_WSIZE" ]; then 705 echo " word size: $TOOLCHAIN_WSIZE bit" 706 fi 707 if [ -n "$TOOLCHAIN_CSTD" ]; then 708 echo " default C std: $TOOLCHAIN_CSTD" 709 fi 710 echo 711 echo "Config:" 712 printf ' %-16s' 'prefix:' 713 echo "$prefix" 714 echo 715 echo "Features:" 716 printf ' %-16s' 'defaultplugins:' 717 if [ -n "$FEATURE_DEFAULTPLUGINS" ]; then 718 echo 'on' 719 else 720 echo 'off' 721 fi 722 printf ' %-16s' 'postgresql:' 723 if [ -n "$FEATURE_POSTGRESQL" ]; then 724 echo 'on' 725 else 726 echo 'off' 727 fi 728 echo 729 730 # generate the config.mk file 731 pwd=`pwd` 732 cat > "$TEMP_DIR/config.mk" << __EOF__ 733 # 734 # config.mk generated by: 735 # pwd: $pwd 736 # $0 $@ 737 # 738 739 __EOF__ 740 write_toolchain_defaults "$TEMP_DIR/toolchain.mk" 741 cat "$TEMP_DIR/config.mk" "$TEMP_DIR/vars.mk" "$TEMP_DIR/toolchain.mk" "$TEMP_DIR/flags.mk" "$TEMP_DIR/make.mk" > config.mk 742 rm -Rf "$TEMP_DIR" 743