51 |
51 |
52 OS=`uname -s` |
52 OS=`uname -s` |
53 OS_VERSION=`uname -r` |
53 OS_VERSION=`uname -r` |
54 |
54 |
55 TEMP_DIR=".tmp-`uname -n`" |
55 TEMP_DIR=".tmp-`uname -n`" |
56 mkdir -p $TEMP_DIR |
56 mkdir -p "$TEMP_DIR" |
57 if [ $? -ne 0 ]; then |
57 if [ $? -ne 0 ]; then |
58 echo "Cannot create tmp dir" |
58 echo "Cannot create tmp dir" |
59 echo "Abort" |
59 echo "Abort" |
60 fi |
60 fi |
61 touch $TEMP_DIR/options |
61 touch "$TEMP_DIR/options" |
62 touch $TEMP_DIR/features |
62 touch "$TEMP_DIR/features" |
63 |
63 |
64 # features |
64 # features |
65 #foreach( $feature in $features ) |
65 #foreach( $feature in $features ) |
66 #if( ${feature.isDefault()} ) |
66 #if( ${feature.isDefault()} ) |
67 ${feature.getVarName()}=on |
67 ${feature.getVarName()}=on |
131 "--sharedstatedir="*) SHAREDSTATEDIR=${D}{ARG#--sharedstatedir=} ;; |
131 "--sharedstatedir="*) SHAREDSTATEDIR=${D}{ARG#--sharedstatedir=} ;; |
132 "--localstatedir="*) LOCALSTATEDIR=${D}{ARG#--localstatedir=} ;; |
132 "--localstatedir="*) LOCALSTATEDIR=${D}{ARG#--localstatedir=} ;; |
133 "--includedir="*) INCLUDEDIR=${D}{ARG#--includedir=} ;; |
133 "--includedir="*) INCLUDEDIR=${D}{ARG#--includedir=} ;; |
134 "--infodir="*) INFODIR=${D}{ARG#--infodir=} ;; |
134 "--infodir="*) INFODIR=${D}{ARG#--infodir=} ;; |
135 "--mandir"*) MANDIR=${D}{ARG#--mandir} ;; |
135 "--mandir"*) MANDIR=${D}{ARG#--mandir} ;; |
136 "--help"*) printhelp; rm -Rf $TEMP_DIR; exit 1 ;; |
136 "--help"*) printhelp; rm -Rf "$TEMP_DIR"; exit 1 ;; |
137 #foreach( $opt in $options ) |
137 #foreach( $opt in $options ) |
138 "--${opt.getArgument()}="*) ${opt.getVarName()}=${D}{ARG#--${opt.getArgument()}=} ;; |
138 "--${opt.getArgument()}="*) ${opt.getVarName()}=${D}{ARG#--${opt.getArgument()}=} ;; |
139 #end |
139 #end |
140 #foreach( $feature in $features ) |
140 #foreach( $feature in $features ) |
141 "--enable-${feature.arg}") ${feature.getVarName()}=on ;; |
141 "--enable-${feature.arg}") ${feature.getVarName()}=on ;; |
142 "--disable-${feature.arg}") unset ${feature.getVarName()} ;; |
142 "--disable-${feature.arg}") unset ${feature.getVarName()} ;; |
143 #end |
143 #end |
144 "-"*) echo "unknown option: $ARG"; rm -Rf $TEMP_DIR; exit 1 ;; |
144 "-"*) echo "unknown option: $ARG"; rm -Rf "$TEMP_DIR"; exit 1 ;; |
145 esac |
145 esac |
146 done |
146 done |
147 |
147 |
148 # set dir variables |
148 # set dir variables |
149 if [ -z "$BINDIR" ]; then |
149 if [ -z "$BINDIR" ]; then |
188 fi |
188 fi |
189 |
189 |
190 # Simple uname based platform detection |
190 # Simple uname based platform detection |
191 # $PLATFORM is used for platform dependent dependency selection |
191 # $PLATFORM is used for platform dependent dependency selection |
192 printf "detect platform... " |
192 printf "detect platform... " |
193 if [ $OS = SunOS ]; then |
193 if [ "$OS" = "SunOS" ]; then |
194 PLATFORM="solaris sunos unix svr4" |
194 PLATFORM="solaris sunos unix svr4" |
195 fi |
195 fi |
196 if [ $OS = Linux ]; then |
196 if [ "$OS" = "Linux" ]; then |
197 PLATFORM="linux unix" |
197 PLATFORM="linux unix" |
198 fi |
198 fi |
199 if [ $OS = FreeBSD ]; then |
199 if [ "$OS" = "FreeBSD" ]; then |
200 PLATFORM="freebsd bsd unix" |
200 PLATFORM="freebsd bsd unix" |
201 fi |
201 fi |
202 if [ $OS = Darwin ]; then |
202 if [ "$OS" = "Darwin" ]; then |
203 PLATFORM="macos osx bsd unix" |
203 PLATFORM="macos osx bsd unix" |
204 fi |
204 fi |
205 echo $OS | grep "MINGW" > /dev/null |
205 echo "$OS" | grep -i "MINGW" > /dev/null |
206 if [ $? -eq 0 ]; then |
206 if [ $? -eq 0 ]; then |
207 PLATFORM="windows mingw" |
207 PLATFORM="windows mingw" |
208 fi |
208 fi |
209 |
209 |
210 if [ -z "$PLATFORM" ]; then |
210 if [ -z "$PLATFORM" ]; then |
291 MANDIR=$MANDIR |
291 MANDIR=$MANDIR |
292 #end |
292 #end |
293 |
293 |
294 __EOF__ |
294 __EOF__ |
295 |
295 |
296 echo > $TEMP_DIR/make.mk |
296 echo > "$TEMP_DIR/make.mk" |
297 |
297 |
298 ENV_CFLAGS=$CFLAGS |
298 ENV_CFLAGS=$CFLAGS |
299 ENV_LDFLAGS=$LDFLAGS |
299 ENV_LDFLAGS=$LDFLAGS |
300 ENV_CXXFLAGS=$CXXFLAGS |
300 ENV_CXXFLAGS=$CXXFLAGS |
301 |
301 |
302 # Toolchain detection |
302 # Toolchain detection |
303 # this will insert make vars to config.mk |
303 # this will insert make vars to config.mk |
304 . make/toolchain.sh |
304 . make/toolchain.sh |
305 |
305 |
306 # add user specified flags to config.mk |
306 # add user specified flags to config.mk |
307 echo >> $TEMP_DIR/config.mk |
307 echo >> "$TEMP_DIR/config.mk" |
308 if [ ! -z "${ENV_CFLAGS}" ]; then |
308 if [ -n "${ENV_CFLAGS}" ]; then |
309 echo "CFLAGS += $ENV_CFLAGS" >> $TEMP_DIR/config.mk |
309 echo "CFLAGS += $ENV_CFLAGS" >> "$TEMP_DIR/config.mk" |
310 fi |
310 fi |
311 if [ ! -z "${ENV_CXXFLAGS}" ]; then |
311 if [ -n "${ENV_CXXFLAGS}" ]; then |
312 echo "CXXFLAGS += $ENV_CXXFLAGS" >> $TEMP_DIR/config.mk |
312 echo "CXXFLAGS += $ENV_CXXFLAGS" >> "$TEMP_DIR/config.mk" |
313 fi |
313 fi |
314 if [ ! -z "${ENV_LDFLAGS}" ]; then |
314 if [ -n "${ENV_LDFLAGS}" ]; then |
315 echo "LDFLAGS += $ENV_LDFLAGS" >> $TEMP_DIR/config.mk |
315 echo "LDFLAGS += $ENV_LDFLAGS" >> "$TEMP_DIR/config.mk" |
316 fi |
316 fi |
317 |
317 |
318 # |
318 # |
319 # DEPENDENCIES |
319 # DEPENDENCIES |
320 # |
320 # |
363 TEMP_$flags.varName="$TEMP_$flags.varName `$flags.value`" |
363 TEMP_$flags.varName="$TEMP_$flags.varName `$flags.value`" |
364 else |
364 else |
365 break |
365 break |
366 fi |
366 fi |
367 #else |
367 #else |
368 TEMP_$flags.varName="$TEMP_$flags.varName $flags.value" |
368 TEMP_$flags.varName="$TEMP_$flags.varName $flags.value" |
369 #end |
369 #end |
370 #end |
370 #end |
371 #if ( $sub.make.length() > 0 ) |
371 #if ( $sub.make.length() > 0 ) |
372 cat >> $TEMP_DIR/make.mk << __EOF__ |
372 cat >> $TEMP_DIR/make.mk << __EOF__ |
373 # Dependency: $dependency.name |
373 # Dependency: $dependency.name |
374 $sub.make |
374 $sub.make |
375 __EOF__ |
375 __EOF__ |
376 #end |
376 #end |
377 echo yes |
377 echo yes |
378 return 0 |
378 return 0 |
379 done |
379 done |
380 |
380 |
381 #end |
381 #end |
382 echo no |
382 echo no |
383 return 1 |
383 return 1 |
384 } |
384 } |
385 #end |
385 #end |
421 fi |
421 fi |
422 echo yes |
422 echo yes |
423 TEMP_CFLAGS="$TEMP_CFLAGS `$PKG_CONFIG --cflags $pkg.getPkgConfigParam()`" |
423 TEMP_CFLAGS="$TEMP_CFLAGS `$PKG_CONFIG --cflags $pkg.getPkgConfigParam()`" |
424 TEMP_LDFLAGS="$TEMP_LDFLAGS `$PKG_CONFIG --libs $pkg.getPkgConfigParam()`" |
424 TEMP_LDFLAGS="$TEMP_LDFLAGS `$PKG_CONFIG --libs $pkg.getPkgConfigParam()`" |
425 #end |
425 #end |
426 |
426 |
427 #foreach( $flags in $dependency.flags ) |
427 #foreach( $flags in $dependency.flags ) |
428 #if( $flags.exec ) |
428 #if( $flags.exec ) |
429 $flags.value > /dev/null |
429 $flags.value > /dev/null |
430 if [ $? -ne 0 ]; then |
430 if [ $? -ne 0 ]; then |
431 TEMP_$flags.varName="$TEMP_$flags.varName `$flags.value`" |
431 TEMP_$flags.varName="$TEMP_$flags.varName `$flags.value`" |
432 else |
432 else |
433 ERROR=1 |
433 ERROR=1 |
434 break |
434 break |
435 fi |
435 fi |
436 #else |
436 #else |
437 TEMP_$flags.varName="$TEMP_$flags.varName $flags.value" |
437 TEMP_$flags.varName="$TEMP_$flags.varName $flags.value" |
438 #end |
438 #end |
439 #end |
439 #end |
440 #if ( $dependency.make.length() > 0 ) |
440 #if ( $dependency.make.length() > 0 ) |
441 cat >> $TEMP_DIR/make.mk << __EOF__ |
441 cat >> "$TEMP_DIR/make.mk" << __EOF__ |
442 $dependency.make |
442 $dependency.make |
443 __EOF__ |
443 __EOF__ |
444 #end |
444 #end |
445 |
445 |
446 break |
446 break |
447 done |
447 done |
448 |
448 |
449 break |
449 break |
450 done |
450 done |
451 #end |
451 #end |
452 |
452 |
453 # add general dependency flags to config.mk |
453 # add general dependency flags to config.mk |
454 echo >> $TEMP_DIR/config.mk |
454 echo >> "$TEMP_DIR/config.mk" |
455 if [ ! -z "${TEMP_CFLAGS}" ]; then |
455 if [ -n "${TEMP_CFLAGS}" ]; then |
456 echo "CFLAGS += $TEMP_CFLAGS" >> $TEMP_DIR/config.mk |
456 echo "CFLAGS += $TEMP_CFLAGS" >> $TEMP_DIR/config.mk |
457 fi |
457 fi |
458 if [ ! -z "${TEMP_CXXFLAGS}" ]; then |
458 if [ -n "${TEMP_CXXFLAGS}" ]; then |
459 echo "CXXFLAGS += $TEMP_CXXFLAGS" >> $TEMP_DIR/config.mk |
459 echo "CXXFLAGS += $TEMP_CXXFLAGS" >> $TEMP_DIR/config.mk |
460 fi |
460 fi |
461 if [ ! -z "${TEMP_LDFLAGS}" ]; then |
461 if [ -n "${TEMP_LDFLAGS}" ]; then |
462 echo "LDFLAGS += $TEMP_LDFLAGS" >> $TEMP_DIR/config.mk |
462 echo "LDFLAGS += $TEMP_LDFLAGS" >> $TEMP_DIR/config.mk |
463 fi |
463 fi |
464 #end |
464 #end |
465 |
465 |
466 # |
466 # |
518 fi |
518 fi |
519 #end |
519 #end |
520 |
520 |
521 # Features |
521 # Features |
522 #foreach( $feature in $target.features ) |
522 #foreach( $feature in $target.features ) |
523 if [ ! -z "$${feature.getVarName()}" ]; then |
523 if [ -n "$${feature.getVarName()}" ]; then |
524 #foreach( $dependency in $feature.dependencies ) |
524 #foreach( $dependency in $feature.dependencies ) |
525 # check dependency |
525 # check dependency |
526 dependency_$dependency |
526 dependency_$dependency |
527 if [ $? -ne 0 ]; then |
527 if [ $? -ne 0 ]; then |
528 # "auto" features can fail and are just disabled in this case |
528 # "auto" features can fail and are just disabled in this case |
529 if [ $${feature.getVarName()} != "auto" ]; then |
529 if [ "$${feature.getVarName()}" != "auto" ]; then |
530 DEPENDENCIES_FAILED="$DEPENDENCIES_FAILED ${dependency} " |
530 DEPENDENCIES_FAILED="$DEPENDENCIES_FAILED ${dependency} " |
531 ERROR=1 |
531 ERROR=1 |
532 fi |
532 fi |
533 fi |
533 fi |
534 #end |
534 #end |
536 #end |
536 #end |
537 |
537 |
538 #foreach( $opt in $target.options ) |
538 #foreach( $opt in $target.options ) |
539 # Option: --${opt.argument} |
539 # Option: --${opt.argument} |
540 if [ -z ${D}${opt.getVarName()} ]; then |
540 if [ -z ${D}${opt.getVarName()} ]; then |
541 SAVED_ERROR=$ERROR |
541 SAVED_ERROR="$ERROR" |
542 SAVED_DEPENDENCIES_FAILED=$DEPENDENCIES_FAILED |
542 SAVED_DEPENDENCIES_FAILED="$DEPENDENCIES_FAILED" |
543 ERROR=0 |
543 ERROR=0 |
544 while true |
544 while true |
545 do |
545 do |
546 #foreach( $optdef in $opt.defaults ) |
546 #foreach( $optdef in $opt.defaults ) |
547 #if( $optdef.platform ) |
547 #if( $optdef.platform ) |
548 if isplatform "$optdef.platform"; then |
548 if isplatform "$optdef.platform"; then |
549 #end |
549 #end |
550 $optdef.func |
550 $optdef.func |
551 if [ $? -eq 0 ]; then |
551 if [ $? -eq 0 ]; then |
552 echo " ${opt.argument}: ${optdef.valueName}" >> $TEMP_DIR/options |
552 echo " ${opt.argument}: ${optdef.valueName}" >> "$TEMP_DIR/options" |
553 ERROR=0 |
553 ERROR=0 |
554 break |
554 break |
555 fi |
555 fi |
556 #if( $optdef.platform ) |
556 #if( $optdef.platform ) |
557 fi |
557 fi |
560 break |
560 break |
561 done |
561 done |
562 if [ $ERROR -ne 0 ]; then |
562 if [ $ERROR -ne 0 ]; then |
563 SAVED_ERROR=1 |
563 SAVED_ERROR=1 |
564 fi |
564 fi |
565 ERROR=$SAVED_ERROR |
565 ERROR="$SAVED_ERROR" |
566 DEPENDENCIES_FAILED=$SAVED_DEPENDENCIES_FAILED= |
566 DEPENDENCIES_FAILED="$SAVED_DEPENDENCIES_FAILED" |
567 else |
567 else |
568 if false; then |
568 if false; then |
569 false |
569 false |
570 #foreach( $optval in $opt.values ) |
570 #foreach( $optval in $opt.values ) |
571 elif [ ${D}${opt.getVarName()} = "${optval.value}" ]; then |
571 elif [ "${D}${opt.getVarName()}" = "${optval.value}" ]; then |
572 echo " ${opt.argument}: ${D}${opt.getVarName()}" >> $TEMP_DIR/options |
572 echo " ${opt.argument}: ${D}${opt.getVarName()}" >> $TEMP_DIR/options |
573 $optval.func |
573 $optval.func |
574 if [ $? -ne 0 ]; then |
574 if [ $? -ne 0 ]; then |
575 ERROR=1 |
575 ERROR=1 |
576 fi |
576 fi |
577 #end |
577 #end |
578 fi |
578 fi |
579 fi |
579 fi |
580 #end |
580 #end |
581 |
581 |
582 echo >> $TEMP_DIR/config.mk |
582 echo >> "$TEMP_DIR/config.mk" |
583 if [ ! -z "${TEMP_CFLAGS}" ]; then |
583 if [ -n "${TEMP_CFLAGS}" ]; then |
584 echo "${target.getCFlags()} += $TEMP_CFLAGS" >> $TEMP_DIR/config.mk |
584 echo "${target.getCFlags()} += $TEMP_CFLAGS" >> "$TEMP_DIR/config.mk" |
585 fi |
585 fi |
586 if [ ! -z "${TEMP_CXXFLAGS}" ]; then |
586 if [ -n "${TEMP_CXXFLAGS}" ]; then |
587 echo "${target.getCXXFlags()} += $TEMP_CXXFLAGS" >> $TEMP_DIR/config.mk |
587 echo "${target.getCXXFlags()} += $TEMP_CXXFLAGS" >> "$TEMP_DIR/config.mk" |
588 fi |
588 fi |
589 if [ ! -z "${TEMP_LDFLAGS}" ]; then |
589 if [ -n "${TEMP_LDFLAGS}" ]; then |
590 echo "${target.getLDFlags()} += $TEMP_LDFLAGS" >> $TEMP_DIR/config.mk |
590 echo "${target.getLDFlags()} += $TEMP_LDFLAGS" >> "$TEMP_DIR/config.mk" |
591 fi |
591 fi |
592 |
592 |
593 #end |
593 #end |
594 if [ $ERROR -ne 0 ]; then |
594 if [ $ERROR -ne 0 ]; then |
595 echo |
595 echo |
596 echo "Error: Unresolved dependencies" |
596 echo "Error: Unresolved dependencies" |
597 echo $DEPENDENCIES_FAILED |
597 echo "$DEPENDENCIES_FAILED" |
598 rm -Rf $TEMP_DIR |
598 rm -Rf "$TEMP_DIR" |
599 exit 1 |
599 exit 1 |
600 fi |
600 fi |
601 |
601 |
602 echo "configure finished" |
602 echo "configure finished" |
603 echo |
603 echo |
604 echo "Build Config:" |
604 echo "Build Config:" |
605 echo " PREFIX: $PREFIX" |
605 echo " PREFIX: $PREFIX" |
606 echo " TOOLCHAIN: $TOOLCHAIN_NAME" |
606 echo " TOOLCHAIN: $TOOLCHAIN_NAME" |
607 #if ( $options.size() > 0 ) |
607 #if ( $options.size() > 0 ) |
608 echo "Options:" |
608 echo "Options:" |
609 cat $TEMP_DIR/options |
609 cat "$TEMP_DIR/options" |
610 #end |
610 #end |
611 echo |
611 echo |
612 cat $TEMP_DIR/config.mk $TEMP_DIR/make.mk > config.mk |
612 cat "$TEMP_DIR/config.mk" "$TEMP_DIR/make.mk" > config.mk |
613 rm -Rf $TEMP_DIR |
613 rm -Rf "$TEMP_DIR" |
614 |
614 |
615 |
615 |