make/configure.vm

Fri, 06 Oct 2023 21:21:10 +0200

author
Mike Becker <universe@uap-core.de>
date
Fri, 06 Oct 2023 21:21:10 +0200
changeset 0
593b60458157
child 1
e3113d4e2fc0
permissions
-rw-r--r--

initial commit

universe@0 1 #!/bin/sh
universe@0 2
universe@0 3 # create temporary directory
universe@0 4 TEMP_DIR=".tmp-`uname -n`"
universe@0 5 rm -Rf "$TEMP_DIR"
universe@0 6 if mkdir -p "$TEMP_DIR"; then
universe@0 7 :
universe@0 8 else
universe@0 9 echo "Cannot create tmp dir $TEMP_DIR"
universe@0 10 echo "Abort"
universe@0 11 exit 1
universe@0 12 fi
universe@0 13 touch "$TEMP_DIR/options"
universe@0 14 touch "$TEMP_DIR/features"
universe@0 15
universe@0 16 # define standard variables
universe@0 17 PREFIX=/usr
universe@0 18 EPREFIX=
universe@0 19 BINDIR=
universe@0 20 SBINDIR=
universe@0 21 LIBDIR=
universe@0 22 LIBEXECDIR=
universe@0 23 DATADIR=
universe@0 24 SYSCONFDIR=
universe@0 25 SHAREDSTATEDIR=
universe@0 26 LOCALSTATEDIR=
universe@0 27 INCLUDEDIR=
universe@0 28 INFODIR=
universe@0 29 MANDIR=
universe@0 30
universe@0 31 # custom variables
universe@0 32 #foreach( $var in $vars )
universe@0 33 #if( $var.exec )
universe@0 34 ${var.varName}=`${var.value}`
universe@0 35 #else
universe@0 36 ${var.varName}="${var.value}"
universe@0 37 #end
universe@0 38 #end
universe@0 39
universe@0 40 # features
universe@0 41 #foreach( $feature in $features )
universe@0 42 #if( ${feature.auto} )
universe@0 43 ${feature.varName}=auto
universe@0 44 #end
universe@0 45 #end
universe@0 46
universe@0 47 # clean abort
universe@0 48 abort_configure()
universe@0 49 {
universe@0 50 rm -Rf "$TEMP_DIR"
universe@0 51 exit 1
universe@0 52 }
universe@0 53
universe@0 54 # help text
universe@0 55 printhelp()
universe@0 56 {
universe@0 57 echo "Usage: $0 [OPTIONS]..."
universe@0 58 cat << __EOF__
universe@0 59 Installation directories:
universe@0 60 --prefix=PREFIX path prefix for architecture-independent files
universe@0 61 [/usr]
universe@0 62 --exec-prefix=EPREFIX path prefix for architecture-dependent files
universe@0 63 [PREFIX]
universe@0 64
universe@0 65 --bindir=DIR user executables [EPREFIX/bin]
universe@0 66 --sbindir=DIR system admin executables [EPREFIX/sbin]
universe@0 67 --libexecdir=DIR program executables [EPREFIX/libexec]
universe@0 68 --sysconfdir=DIR system configuration files [PREFIX/etc]
universe@0 69 --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
universe@0 70 --localstatedir=DIR modifiable single-machine data [PREFIX/var]
universe@0 71 --libdir=DIR object code libraries [EPREFIX/lib]
universe@0 72 --includedir=DIR C header files [PREFIX/include]
universe@0 73 --datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
universe@0 74 --datadir=DIR read-only architecture-independent data [DATAROOTDIR]
universe@0 75 --infodir=DIR info documentation [DATAROOTDIR/info]
universe@0 76 --mandir=DIR man documentation [DATAROOTDIR/man]
universe@0 77
universe@0 78 #if( $options.size() > 0 )
universe@0 79 Options:
universe@0 80 --debug add extra compile flags for debug builds
universe@0 81 --release add extra compile flags for release builds
universe@0 82 #foreach( $opt in $options )
universe@0 83 --${opt.argument}=${opt.valuesString}
universe@0 84 #end
universe@0 85
universe@0 86 #end
universe@0 87 #if( $features.size() > 0 )
universe@0 88 Optional Features:
universe@0 89 #foreach( $feature in $features )
universe@0 90 #if( $feature.auto )
universe@0 91 --disable-${feature.arg}
universe@0 92 #else
universe@0 93 --enable-${feature.arg}
universe@0 94 #end
universe@0 95 #end
universe@0 96
universe@0 97 #end
universe@0 98 __EOF__
universe@0 99 }
universe@0 100
universe@0 101 #
universe@0 102 # parse arguments
universe@0 103 #
universe@0 104 BUILD_TYPE="default"
universe@0 105 #set( $D = '$' )
universe@0 106 for ARG in "$@"
universe@0 107 do
universe@0 108 case "$ARG" in
universe@0 109 "--prefix="*) PREFIX=${D}{ARG#--prefix=} ;;
universe@0 110 "--exec-prefix="*) EPREFIX=${D}{ARG#--exec-prefix=} ;;
universe@0 111 "--bindir="*) BINDIR=${D}{ARG#----bindir=} ;;
universe@0 112 "--sbindir="*) SBINDIR=${D}{ARG#--sbindir=} ;;
universe@0 113 "--libdir="*) LIBDIR=${D}{ARG#--libdir=} ;;
universe@0 114 "--libexecdir="*) LIBEXECDIR=${D}{ARG#--libexecdir=} ;;
universe@0 115 "--datadir="*) DATADIR=${D}{ARG#--datadir=} ;;
universe@0 116 "--sysconfdir="*) SYSCONFDIR=${D}{ARG#--sysconfdir=} ;;
universe@0 117 "--sharedstatedir="*) SHAREDSTATEDIR=${D}{ARG#--sharedstatedir=} ;;
universe@0 118 "--localstatedir="*) LOCALSTATEDIR=${D}{ARG#--localstatedir=} ;;
universe@0 119 "--includedir="*) INCLUDEDIR=${D}{ARG#--includedir=} ;;
universe@0 120 "--infodir="*) INFODIR=${D}{ARG#--infodir=} ;;
universe@0 121 "--mandir"*) MANDIR=${D}{ARG#--mandir} ;;
universe@0 122 "--help"*) printhelp; abort_configure ;;
universe@0 123 "--debug") BUILD_TYPE="debug" ;;
universe@0 124 "--release") BUILD_TYPE="release" ;;
universe@0 125 #foreach( $opt in $options )
universe@0 126 "--${opt.argument}="*) ${opt.varName}=${D}{ARG#--${opt.argument}=} ;;
universe@0 127 #end
universe@0 128 #foreach( $feature in $features )
universe@0 129 "--enable-${feature.arg}") ${feature.varName}=on ;;
universe@0 130 "--disable-${feature.arg}") unset ${feature.varName} ;;
universe@0 131 #end
universe@0 132 "-"*) echo "unknown option: $ARG"; abort_configure ;;
universe@0 133 esac
universe@0 134 done
universe@0 135
universe@0 136 ## Begin unparsed content. **
universe@0 137 #[[
universe@0 138 # set dir variables
universe@0 139 : ${EPREFIX:="$PREFIX"}
universe@0 140 : ${BINDIR:="$EPREFIX/bin"}
universe@0 141 : ${SBINDIR:="$EPREFIX/sbin"}
universe@0 142 : ${LIBDIR:="$EPREFIX/lib"}
universe@0 143 : ${LIBEXECDIR:="$EPREFIX/libexec"}
universe@0 144 : ${DATADIR:="$PREFIX/share"}
universe@0 145 : ${SYSCONFDIR:="$PREFIX/etc"}
universe@0 146 : ${SHAREDSTATEDIR:="$PREFIX/com"}
universe@0 147 : ${LOCALSTATEDIR:="$PREFIX/var"}
universe@0 148 : ${INCLUDEDIR:="$PREFIX/include"}
universe@0 149 : ${INFODIR:="$PREFIX/info"}
universe@0 150 : ${MANDIR:="$PREFIX/man"}
universe@0 151
universe@0 152 # Test for availability of pkg-config
universe@0 153 PKG_CONFIG=`command -v pkg-config`
universe@0 154 : ${PKG_CONFIG:="false"}
universe@0 155
universe@0 156 # Simple uname based platform detection
universe@0 157 # $PLATFORM is used for platform dependent dependency selection
universe@0 158 OS=`uname -s`
universe@0 159 OS_VERSION=`uname -r`
universe@0 160 printf "detect platform... "
universe@0 161 if [ "$OS" = "SunOS" ]; then
universe@0 162 PLATFORM="solaris sunos unix svr4"
universe@0 163 fi
universe@0 164 if [ "$OS" = "Linux" ]; then
universe@0 165 PLATFORM="linux unix"
universe@0 166 fi
universe@0 167 if [ "$OS" = "FreeBSD" ]; then
universe@0 168 PLATFORM="freebsd bsd unix"
universe@0 169 fi
universe@0 170 if [ "$OS" = "Darwin" ]; then
universe@0 171 PLATFORM="macos osx bsd unix"
universe@0 172 fi
universe@0 173 if echo "$OS" | grep -i "MINGW" > /dev/null; then
universe@0 174 PLATFORM="windows mingw"
universe@0 175 fi
universe@0 176 : ${PLATFORM:="unix"}
universe@0 177
universe@0 178 PLATFORM_NAME=`echo "$PLATFORM" | cut -f1 -d' ' -`
universe@0 179 echo "$PLATFORM_NAME"
universe@0 180
universe@0 181 isplatform()
universe@0 182 {
universe@0 183 for p in $PLATFORM
universe@0 184 do
universe@0 185 if [ "$p" = "$1" ]; then
universe@0 186 return 0
universe@0 187 fi
universe@0 188 done
universe@0 189 return 1
universe@0 190 }
universe@0 191 notisplatform()
universe@0 192 {
universe@0 193 for p in $PLATFORM
universe@0 194 do
universe@0 195 if [ "$p" = "$1" ]; then
universe@0 196 return 1
universe@0 197 fi
universe@0 198 done
universe@0 199 return 0
universe@0 200 }
universe@0 201 ]]#
universe@0 202 ## End of unparsed content **
universe@0 203
universe@0 204 # generate vars.mk
universe@0 205 cat > "$TEMP_DIR/vars.mk" << __EOF__
universe@0 206 PREFIX="$PREFIX"
universe@0 207 EPREFIX="$EPREFIX"
universe@0 208 BINDIR="$BINDIR"
universe@0 209 SBINDIR="$SBINDIR"
universe@0 210 LIBDIR="$LIBDIR"
universe@0 211 LIBEXECDIR="$LIBEXECDIR"
universe@0 212 DATADIR="$DATADIR"
universe@0 213 SYSCONFDIR="$SYSCONFDIR"
universe@0 214 SHAREDSTATEDIR="$SHAREDSTATEDIR"
universe@0 215 LOCALSTATEDIR="$LOCALSTATEDIR"
universe@0 216 INCLUDEDIR="$INCLUDEDIR"
universe@0 217 INFODIR="$INFODIR"
universe@0 218 MANDIR="$MANDIR"
universe@0 219 #foreach( $var in $vars )
universe@0 220 ${var.varName}="${D}${var.varName}"
universe@0 221 #end
universe@0 222 __EOF__
universe@0 223 sort -u -o "$TEMP_DIR/vars.mk" "$TEMP_DIR/vars.mk"
universe@0 224
universe@0 225
universe@0 226 # toolchain detection utilities
universe@0 227 . make/toolchain.sh
universe@0 228
universe@0 229 #
universe@0 230 # DEPENDENCIES
universe@0 231 #
universe@0 232
universe@0 233 # check languages
universe@0 234 lang_c=
universe@0 235 lang_cpp=
universe@0 236 #foreach( $lang in $languages )
universe@0 237 if detect_${lang}_compiler ; then
universe@0 238 lang_${lang}=1
universe@0 239 fi
universe@0 240 #end
universe@0 241
universe@0 242 # create buffer for make variables required by dependencies
universe@0 243 echo > "$TEMP_DIR/make.mk"
universe@0 244
universe@0 245 test_pkg_config()
universe@0 246 {
universe@0 247 if "$PKG_CONFIG" --exists "$1" ; then :
universe@0 248 else return 1 ; fi
universe@0 249 if [ -z "$2" ] || "$PKG_CONFIG" --atleast-version="$2" "$1" ; then :
universe@0 250 else return 1 ; fi
universe@0 251 if [ -z "$3" ] || "$PKG_CONFIG" --exact-version="$3" "$1" ; then :
universe@0 252 else return 1 ; fi
universe@0 253 if [ -z "$4" ] || "$PKG_CONFIG" --max-version="$4" "$1" ; then :
universe@0 254 else return 1 ; fi
universe@0 255 return 0
universe@0 256 }
universe@0 257
universe@0 258 #foreach( $dependency in $namedDependencies )
universe@0 259 dependency_error_${dependency.id}()
universe@0 260 {
universe@0 261 printf "checking for ${dependency.name}... "
universe@0 262 #foreach( $sub in $dependency.subdependencies )
universe@0 263 # dependency $sub.fullName
universe@0 264 while true
universe@0 265 do
universe@0 266 #if( $sub.platform )
universe@0 267 if notisplatform "${sub.platform}"; then
universe@0 268 break
universe@0 269 fi
universe@0 270 #end
universe@0 271 #foreach( $np in $sub.notList )
universe@0 272 if isplatform "${np}"; then
universe@0 273 break
universe@0 274 fi
universe@0 275 #end
universe@0 276 #foreach( $lang in $sub.lang )
universe@0 277 if [ -z "$lang_${lang}" ] ; then
universe@0 278 break
universe@0 279 fi
universe@0 280 #end
universe@0 281 #if( $sub.pkgconfig.size() > 0 )
universe@0 282 if [ -z "$PKG_CONFIG" ]; then
universe@0 283 break
universe@0 284 fi
universe@0 285 #end
universe@0 286 #foreach( $test in $sub.tests )
universe@0 287 if $test > /dev/null ; then
universe@0 288 :
universe@0 289 else
universe@0 290 break
universe@0 291 fi
universe@0 292 #end
universe@0 293 #foreach( $pkg in $sub.pkgconfig )
universe@0 294 if test_pkg_config "$pkg.name" "$pkg.atleast" "$pkg.exact" "$pkg.max" ; then
universe@0 295 TEMP_CFLAGS="$TEMP_CFLAGS `"$PKG_CONFIG" --cflags $pkg.name`"
universe@0 296 TEMP_LDFLAGS="$TEMP_LDFLAGS `"$PKG_CONFIG" --libs $pkg.name`"
universe@0 297 else
universe@0 298 break
universe@0 299 fi
universe@0 300 #end
universe@0 301 #foreach( $flags in $sub.flags )
universe@0 302 #if( $flags.exec )
universe@0 303 if tmp_flags=`$flags.value` ; then
universe@0 304 TEMP_$flags.varName="$TEMP_$flags.varName $tmp_flags"
universe@0 305 else
universe@0 306 break
universe@0 307 fi
universe@0 308 #else
universe@0 309 TEMP_$flags.varName="$TEMP_$flags.varName $flags.value"
universe@0 310 #end
universe@0 311 #end
universe@0 312 #if ( $sub.make.length() > 0 )
universe@0 313 cat >> $TEMP_DIR/make.mk << __EOF__
universe@0 314 # Dependency: $dependency.name
universe@0 315 $sub.make
universe@0 316 __EOF__
universe@0 317 #end
universe@0 318 echo yes
universe@0 319 return 1
universe@0 320 done
universe@0 321
universe@0 322 #end
universe@0 323 echo no
universe@0 324 return 0
universe@0 325 }
universe@0 326 #end
universe@0 327
universe@0 328
universe@0 329
universe@0 330
universe@0 331 # start collecting dependency information
universe@0 332 echo > "$TEMP_DIR/flags.mk"
universe@0 333
universe@0 334 DEPENDENCIES_FAILED=
universe@0 335 ERROR=0
universe@0 336 #if( $dependencies.size() > 0 )
universe@0 337 # unnamed dependencies
universe@0 338 TEMP_CFLAGS=
universe@0 339 TEMP_CXXFLAGS=
universe@0 340 TEMP_LDFLAGS=
universe@0 341 #foreach( $dependency in $dependencies )
universe@0 342 while true
universe@0 343 do
universe@0 344 #if( $dependency.platform )
universe@0 345 if notisplatform "${dependency.platform}"; then
universe@0 346 break
universe@0 347 fi
universe@0 348 #end
universe@0 349 #foreach( $np in $dependency.notList )
universe@0 350 if isplatform "${np}"; then
universe@0 351 break
universe@0 352 fi
universe@0 353 #end
universe@0 354 while true
universe@0 355 do
universe@0 356 #foreach( $lang in $dependency.lang )
universe@0 357 if [ -z "$lang_${lang}" ] ; then
universe@0 358 ERROR=1
universe@0 359 break
universe@0 360 fi
universe@0 361 #end
universe@0 362 #if( $dependency.pkgconfig.size() > 0 )
universe@0 363 if [ -z "$PKG_CONFIG" ]; then
universe@0 364 ERROR=1
universe@0 365 break
universe@0 366 fi
universe@0 367 #end
universe@0 368 #foreach( $pkg in $dependency.pkgconfig )
universe@0 369 printf "checking for pkg-config package $pkg.name... "
universe@0 370 if test_pkg_config "$pkg.name" "$pkg.atleast" "$pkg.exact" "$pkg.max" ; then
universe@0 371 echo yes
universe@0 372 TEMP_CFLAGS="$TEMP_CFLAGS `"$PKG_CONFIG" --cflags $pkg.name`"
universe@0 373 TEMP_LDFLAGS="$TEMP_LDFLAGS `"$PKG_CONFIG" --libs $pkg.name`"
universe@0 374 else
universe@0 375 echo no
universe@0 376 ERROR=1
universe@0 377 break
universe@0 378 fi
universe@0 379 #end
universe@0 380
universe@0 381 #foreach( $flags in $dependency.flags )
universe@0 382 #if( $flags.exec )
universe@0 383 $flags.value > /dev/null
universe@0 384 if tmp_flags=`$flags.value` ; then
universe@0 385 TEMP_$flags.varName="$TEMP_$flags.varName $tmp_flags"
universe@0 386 else
universe@0 387 ERROR=1
universe@0 388 break
universe@0 389 fi
universe@0 390 #else
universe@0 391 TEMP_$flags.varName="$TEMP_$flags.varName $flags.value"
universe@0 392 #end
universe@0 393 #end
universe@0 394 #if ( $dependency.make.length() > 0 )
universe@0 395 cat >> "$TEMP_DIR/make.mk" << __EOF__
universe@0 396 $dependency.make
universe@0 397 __EOF__
universe@0 398 #end
universe@0 399 break
universe@0 400 done
universe@0 401 break
universe@0 402 done
universe@0 403 #end
universe@0 404
universe@0 405 # add general dependency flags to flags.mk
universe@0 406 echo "# general flags" >> "$TEMP_DIR/flags.mk"
universe@0 407 if [ -n "${TEMP_CFLAGS}" -a -n "$lang_c" ]; then
universe@0 408 echo "CFLAGS += $TEMP_CFLAGS" >> "$TEMP_DIR/flags.mk"
universe@0 409 fi
universe@0 410 if [ -n "${TEMP_CXXFLAGS}" -a -n "$lang_cpp" ]; then
universe@0 411 echo "CXXFLAGS += $TEMP_CXXFLAGS" >> "$TEMP_DIR/flags.mk"
universe@0 412 fi
universe@0 413 if [ -n "${TEMP_LDFLAGS}" ]; then
universe@0 414 echo "LDFLAGS += $TEMP_LDFLAGS" >> "$TEMP_DIR/flags.mk"
universe@0 415 fi
universe@0 416 #end
universe@0 417
universe@0 418 #
universe@0 419 # OPTION VALUES
universe@0 420 #
universe@0 421 #foreach( $opt in $options )
universe@0 422 #foreach( $val in $opt.values )
universe@0 423 ${val.func}()
universe@0 424 {
universe@0 425 VERR=0
universe@0 426 #foreach( $dep in $val.dependencies )
universe@0 427 if dependency_error_$dep ; then
universe@0 428 VERR=1
universe@0 429 fi
universe@0 430 #end
universe@0 431 if [ $VERR -ne 0 ]; then
universe@0 432 return 1
universe@0 433 fi
universe@0 434 #foreach( $def in $val.defines )
universe@0 435 TEMP_CFLAGS="$TEMP_CFLAGS ${def.toFlags()}"
universe@0 436 TEMP_CXXFLAGS="$TEMP_CXXFLAGS ${def.toFlags()}"
universe@0 437 #end
universe@0 438 #if( $val.hasMake() )
universe@0 439 cat >> "$TEMP_DIR/make.mk" << __EOF__
universe@0 440 $val.make
universe@0 441 __EOF__
universe@0 442 #end
universe@0 443 return 0
universe@0 444 }
universe@0 445 #end
universe@0 446 #end
universe@0 447
universe@0 448 #
universe@0 449 # TARGETS
universe@0 450 #
universe@0 451
universe@0 452 #foreach( $target in $targets )
universe@0 453 echo >> "$TEMP_DIR/flags.mk"
universe@0 454 #if ( $target.name )
universe@0 455 echo "configuring target: $target.name"
universe@0 456 echo "# flags for target $target.name" >> "$TEMP_DIR/flags.mk"
universe@0 457 #else
universe@0 458 echo "configuring global target"
universe@0 459 echo "# flags for unnamed target" >> "$TEMP_DIR/flags.mk"
universe@0 460 #end
universe@0 461 TEMP_CFLAGS=
universe@0 462 TEMP_CXXFLAGS=
universe@0 463 TEMP_LDFLAGS=
universe@0 464
universe@0 465 #foreach( $dependency in $target.dependencies )
universe@0 466 if dependency_error_$dependency; then
universe@0 467 DEPENDENCIES_FAILED="$DEPENDENCIES_FAILED ${dependency} "
universe@0 468 ERROR=1
universe@0 469 fi
universe@0 470 #end
universe@0 471
universe@0 472 # Features
universe@0 473 #foreach( $feature in $target.features )
universe@0 474 if [ -n "${D}${feature.varName}" ]; then
universe@0 475 #foreach( $dependency in $feature.dependencies )
universe@0 476 # check dependency
universe@0 477 if dependency_error_$dependency ; then
universe@0 478 # "auto" features can fail and are just disabled in this case
universe@0 479 if [ "${D}${feature.varName}" = "auto" ]; then
universe@0 480 DISABLE_${feature.varName}=1
universe@0 481 else
universe@0 482 DEPENDENCIES_FAILED="$DEPENDENCIES_FAILED ${dependency} "
universe@0 483 ERROR=1
universe@0 484 fi
universe@0 485 fi
universe@0 486 #end
universe@0 487 if [ -n "$DISABLE_${feature.varName}" ]; then
universe@0 488 unset ${feature.varName}
universe@0 489 fi
universe@0 490 fi
universe@0 491 #end
universe@0 492
universe@0 493 #foreach( $opt in $target.options )
universe@0 494 # Option: --${opt.argument}
universe@0 495 if [ -z "${D}${opt.varName}" ]; then
universe@0 496 echo "auto-detecting option '${opt.argument}'"
universe@0 497 SAVED_ERROR="$ERROR"
universe@0 498 SAVED_DEPENDENCIES_FAILED="$DEPENDENCIES_FAILED"
universe@0 499 ERROR=1
universe@0 500 while true
universe@0 501 do
universe@0 502 #foreach( $optdef in $opt.defaults )
universe@0 503 #if( $optdef.platform )
universe@0 504 if isplatform "$optdef.platform"; then
universe@0 505 #end
universe@0 506 if $optdef.func ; then
universe@0 507 echo " ${opt.argument}: ${optdef.valueName}" >> "$TEMP_DIR/options"
universe@0 508 ERROR=0
universe@0 509 break
universe@0 510 fi
universe@0 511 #if( $optdef.platform )
universe@0 512 fi
universe@0 513 #end
universe@0 514 #end
universe@0 515 break
universe@0 516 done
universe@0 517 if [ $ERROR -ne 0 ]; then
universe@0 518 SAVED_ERROR=1
universe@0 519 SAVED_DEPENDENCIES_FAILED="option '${opt.argument}' $SAVED_DEPENDENCIES_FAILED"
universe@0 520 fi
universe@0 521 ERROR="$SAVED_ERROR"
universe@0 522 DEPENDENCIES_FAILED="$SAVED_DEPENDENCIES_FAILED"
universe@0 523 else
universe@0 524 echo "checking option ${opt.argument} = ${D}${opt.varName}"
universe@0 525 if false; then
universe@0 526 false
universe@0 527 #foreach( $optval in $opt.values )
universe@0 528 elif [ "${D}${opt.varName}" = "${optval.value}" ]; then
universe@0 529 echo " ${opt.argument}: ${D}${opt.varName}" >> $TEMP_DIR/options
universe@0 530 if $optval.func ; then
universe@0 531 :
universe@0 532 else
universe@0 533 ERROR=1
universe@0 534 DEPENDENCIES_FAILED="option '${opt.argument}' $DEPENDENCIES_FAILED"
universe@0 535 fi
universe@0 536 #end
universe@0 537 fi
universe@0 538 fi
universe@0 539 #end
universe@0 540
universe@0 541 if [ -n "${TEMP_CFLAGS}" -a -n "$lang_c" ]; then
universe@0 542 echo "${target.cFlags} += $TEMP_CFLAGS" >> "$TEMP_DIR/flags.mk"
universe@0 543 fi
universe@0 544 if [ -n "${TEMP_CXXFLAGS}" -a -n "$lang_cpp" ]; then
universe@0 545 echo "${target.cxxFlags} += $TEMP_CXXFLAGS" >> "$TEMP_DIR/flags.mk"
universe@0 546 fi
universe@0 547 if [ "$BUILD_TYPE" = "debug" ]; then
universe@0 548 if [ -n "$lang_c" ]; then
universe@0 549 echo '${target.cFlags} += ${DEBUG_CC_FLAGS}' >> "$TEMP_DIR/flags.mk"
universe@0 550 fi
universe@0 551 if [ -n "$lang_cpp" ]; then
universe@0 552 echo '${target.cxxFlags} += ${DEBUG_CXX_FLAGS}' >> "$TEMP_DIR/flags.mk"
universe@0 553 fi
universe@0 554 fi
universe@0 555 if [ "$BUILD_TYPE" = "release" ]; then
universe@0 556 if [ -n "$lang_c" ]; then
universe@0 557 echo '${target.cFlags} += ${RELEASE_CC_FLAGS}' >> "$TEMP_DIR/flags.mk"
universe@0 558 fi
universe@0 559 if [ -n "$lang_cpp" ]; then
universe@0 560 echo '${target.cxxFlags} += ${RELEASE_CXX_FLAGS}' >> "$TEMP_DIR/flags.mk"
universe@0 561 fi
universe@0 562 fi
universe@0 563 if [ -n "${TEMP_LDFLAGS}" ]; then
universe@0 564 echo "${target.ldFlags} += $TEMP_LDFLAGS" >> "$TEMP_DIR/flags.mk"
universe@0 565 fi
universe@0 566
universe@0 567 #end
universe@0 568
universe@0 569 # final result
universe@0 570 if [ $ERROR -ne 0 ]; then
universe@0 571 echo
universe@0 572 echo "Error: Unresolved dependencies"
universe@0 573 echo "$DEPENDENCIES_FAILED"
universe@0 574 abort_configure
universe@0 575 fi
universe@0 576
universe@0 577 echo "configure finished"
universe@0 578 echo
universe@0 579 echo "Build Config:"
universe@0 580 echo " PREFIX: $PREFIX"
universe@0 581 echo " TOOLCHAIN: $TOOLCHAIN_NAME"
universe@0 582 #if ( $options.size() > 0 )
universe@0 583 echo "Options:"
universe@0 584 cat "$TEMP_DIR/options"
universe@0 585 #end
universe@0 586 #if ( $features.size() > 0 )
universe@0 587 echo "Features:"
universe@0 588 #foreach( $feature in $features )
universe@0 589 if [ -n "${D}${feature.varName}" ]; then
universe@0 590 echo " $feature.name: on"
universe@0 591 else
universe@0 592 echo " $feature.name: off"
universe@0 593 fi
universe@0 594 #end
universe@0 595 #end
universe@0 596 echo
universe@0 597
universe@0 598 # generate the config.mk file
universe@0 599 cat > "$TEMP_DIR/config.mk" << __EOF__
universe@0 600 #
universe@0 601 # config.mk generated by configure
universe@0 602 #
universe@0 603
universe@0 604 __EOF__
universe@0 605 write_toolchain_defaults "$TEMP_DIR/toolchain.mk"
universe@0 606 cat "$TEMP_DIR/vars.mk" "$TEMP_DIR/toolchain.mk" "$TEMP_DIR/flags.mk" "$TEMP_DIR/make.mk" > config.mk
universe@0 607 rm -Rf "$TEMP_DIR"
universe@0 608
universe@0 609

mercurial