test/make/configure.vm

changeset 34
4486849e6a6c
parent 33
b77d51b3c9bb
child 37
ef09f80e911e
equal deleted inserted replaced
33:b77d51b3c9bb 34:4486849e6a6c
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
112 #end 112 #end
113 __EOF__ 113 __EOF__
114 } 114 }
115 115
116 # 116 #
117 # parse arguments 117 # parse arguments
118 # 118 #
119 #set( $D = '$' ) 119 #set( $D = '$' )
120 for ARG in $@ 120 for ARG in "$@"
121 do 121 do
122 case "$ARG" in 122 case "$ARG" in
123 "--prefix="*) PREFIX=${D}{ARG#--prefix=} ;; 123 "--prefix="*) PREFIX=${D}{ARG#--prefix=} ;;
124 "--exec-prefix="*) EPREFIX=${D}{ARG#--exec-prefix=} ;; 124 "--exec-prefix="*) EPREFIX=${D}{ARG#--exec-prefix=} ;;
125 "--bindir="*) BINDIR=${D}{ARG#----bindir=} ;; 125 "--bindir="*) BINDIR=${D}{ARG#----bindir=} ;;
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
220 220
221 isplatform() 221 isplatform()
222 { 222 {
223 for p in $PLATFORM 223 for p in $PLATFORM
224 do 224 do
225 if [ $p = $1 ]; then 225 if [ "$p" = "$1" ]; then
226 return 0 226 return 0
227 fi 227 fi
228 done 228 done
229 return 1 229 return 1
230 } 230 }
231 isnotplatform() 231 isnotplatform()
232 { 232 {
233 for p in $PLATFORM 233 for p in $PLATFORM
234 do 234 do
235 if [ $p = $1 ]; then 235 if [ "$p" = "$1" ]; then
236 return 1 236 return 1
237 fi 237 fi
238 done 238 done
239 return 0 239 return 0
240 } 240 }
241 241
242 # generate config.mk and config.h 242 # generate config.mk and config.h
243 cat > $TEMP_DIR/config.mk << __EOF__ 243 cat > "$TEMP_DIR/config.mk" << __EOF__
244 # 244 #
245 # config.mk generated by configure 245 # config.mk generated by configure
246 # 246 #
247 247
248 # general vars 248 # general vars
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 #
341 if [ -z "$PKG_CONFIG" ]; then 341 if [ -z "$PKG_CONFIG" ]; then
342 break 342 break
343 fi 343 fi
344 #end 344 #end
345 #foreach( $test in $sub.tests ) 345 #foreach( $test in $sub.tests )
346 $test > /dev/null 346 $test > /dev/null
347 if [ $? -ne 0 ]; then 347 if [ $? -ne 0 ]; then
348 break 348 break
349 fi 349 fi
350 #end 350 #end
351 #foreach( $pkg in $sub.pkgconfig ) 351 #foreach( $pkg in $sub.pkgconfig )
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 #
482 fi 482 fi
483 #foreach( $def in $val.defines ) 483 #foreach( $def in $val.defines )
484 TEMP_CFLAGS="$TEMP_CFLAGS ${def.toFlags()}" 484 TEMP_CFLAGS="$TEMP_CFLAGS ${def.toFlags()}"
485 #end 485 #end
486 #if( $val.hasMake() ) 486 #if( $val.hasMake() )
487 cat >> $TEMP_DIR/make.mk << __EOF__ 487 cat >> "$TEMP_DIR/make.mk" << __EOF__
488 $val.make 488 $val.make
489 __EOF__ 489 __EOF__
490 #end 490 #end
491 return 0 491 return 0
492 } 492 }
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

mercurial