make/configure.vm

changeset 85
6960d25eb0ba
parent 74
ed9a5ffd1f13
equal deleted inserted replaced
84:64dcf6456683 85:6960d25eb0ba
1 #!/bin/sh 1 #!/bin/sh
2
3 #set( $D = '$' )
4 #[[
5 # some utility functions
6 isplatform()
7 {
8 for p in $PLATFORM
9 do
10 if [ "$p" = "$1" ]; then
11 return 0
12 fi
13 done
14 return 1
15 }
16 notisplatform()
17 {
18 for p in $PLATFORM
19 do
20 if [ "$p" = "$1" ]; then
21 return 1
22 fi
23 done
24 return 0
25 }
26 istoolchain()
27 {
28 for t in $TOOLCHAIN
29 do
30 if [ "$t" = "$1" ]; then
31 return 0
32 fi
33 done
34 return 1
35 }
36 notistoolchain()
37 {
38 for t in $TOOLCHAIN
39 do
40 if [ "$t" = "$1" ]; then
41 return 1
42 fi
43 done
44 return 0
45 }
46
47 # clean abort
48 abort_configure()
49 {
50 rm -Rf "$TEMP_DIR"
51 exit 1
52 }
53
54 # Test for availability of pkg-config
55 PKG_CONFIG=`command -v pkg-config`
56 : ${PKG_CONFIG:="false"}
57
58 # Simple uname based platform detection
59 # $PLATFORM is used for platform dependent dependency selection
60 OS=`uname -s`
61 OS_VERSION=`uname -r`
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 cat << __EOF__
89 Installation directories:
90 --prefix=PREFIX path prefix for architecture-independent files
91 [${D}prefix]
92 --exec-prefix=EPREFIX path prefix for architecture-dependent files
93 [PREFIX]
94
95 --bindir=DIR user executables [EPREFIX/bin]
96 --sbindir=DIR system admin executables [EPREFIX/sbin]
97 --libexecdir=DIR program executables [EPREFIX/libexec]
98 --sysconfdir=DIR system configuration files [PREFIX/etc]
99 --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
100 --localstatedir=DIR modifiable single-machine data [PREFIX/var]
101 --runstatedir=DIR run-time variable data [LOCALSTATEDIR/run]
102 --libdir=DIR object code libraries [EPREFIX/lib]
103 --includedir=DIR C header files [PREFIX/include]
104 --datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
105 --datadir=DIR read-only architecture-independent data [DATAROOTDIR]
106 --infodir=DIR info documentation [DATAROOTDIR/info]
107 --mandir=DIR man documentation [DATAROOTDIR/man]
108 --localedir=DIR locale-dependent data [DATAROOTDIR/locale]
109
110 Build Types:
111 --debug add extra compile flags for debug builds
112 --release add extra compile flags for release builds
113 #if( $options.size() > 0 )
114
115 Options:
116 #foreach( $opt in $options )
117 --${opt.argument}=${opt.valuesString}
118 #end
119 #end
120 #if( $features.size() > 0 )
121
122 Optional Features:
123 #foreach( $feature in $features )
124 ${feature.helpText}
125 #end
126 #end
127
128 __EOF__
129 }
2 130
3 # create temporary directory 131 # create temporary directory
4 TEMP_DIR=".tmp-`uname -n`" 132 TEMP_DIR=".tmp-`uname -n`"
5 rm -Rf "$TEMP_DIR" 133 rm -Rf "$TEMP_DIR"
6 if mkdir -p "$TEMP_DIR"; then 134 if mkdir -p "$TEMP_DIR"; then
31 infodir= 159 infodir=
32 localedir= 160 localedir=
33 mandir= 161 mandir=
34 162
35 # custom variables 163 # custom variables
36 #foreach( $var in $vars ) 164 #foreach( $cfg in $config )
37 #if( $var.exec ) 165 if true \
38 ${var.varName}=`${var.value}` 166 #if( $cfg.platform )
39 #else 167 && isplatform "${cfg.platform}" \
40 ${var.varName}="${var.value}" 168 #end
41 #end 169 #foreach( $np in $cfg.notList )
170 && notisplatform "${np}" \
171 #end
172 ; then
173 #foreach( $var in $cfg.vars )
174 #if( $var.exec )
175 ${var.varName}=`${var.value}`
176 #else
177 ${var.varName}="${var.value}"
178 #end
179 #end
180 fi
42 #end 181 #end
43 182
44 # features 183 # features
45 #foreach( $feature in $features ) 184 #foreach( $feature in $features )
46 #if( ${feature.auto} ) 185 #if( ${feature.auto} )
47 ${feature.varName}=auto 186 ${feature.varName}=auto
48 #end 187 #end
49 #end 188 #end
50 189
51 # clean abort
52 abort_configure()
53 {
54 rm -Rf "$TEMP_DIR"
55 exit 1
56 }
57
58 # help text
59 printhelp()
60 {
61 echo "Usage: $0 [OPTIONS]..."
62 cat << __EOF__
63 Installation directories:
64 --prefix=PREFIX path prefix for architecture-independent files
65 [/usr]
66 --exec-prefix=EPREFIX path prefix for architecture-dependent files
67 [PREFIX]
68
69 --bindir=DIR user executables [EPREFIX/bin]
70 --sbindir=DIR system admin executables [EPREFIX/sbin]
71 --libexecdir=DIR program executables [EPREFIX/libexec]
72 --sysconfdir=DIR system configuration files [PREFIX/etc]
73 --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
74 --localstatedir=DIR modifiable single-machine data [PREFIX/var]
75 --runstatedir=DIR run-time variable data [LOCALSTATEDIR/run]
76 --libdir=DIR object code libraries [EPREFIX/lib]
77 --includedir=DIR C header files [PREFIX/include]
78 --datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
79 --datadir=DIR read-only architecture-independent data [DATAROOTDIR]
80 --infodir=DIR info documentation [DATAROOTDIR/info]
81 --mandir=DIR man documentation [DATAROOTDIR/man]
82 --localedir=DIR locale-dependent data [DATAROOTDIR/locale]
83
84 #if( $options.size() > 0 )
85 Options:
86 --debug add extra compile flags for debug builds
87 --release add extra compile flags for release builds
88 #foreach( $opt in $options )
89 --${opt.argument}=${opt.valuesString}
90 #end
91
92 #end
93 #if( $features.size() > 0 )
94 Optional Features:
95 #foreach( $feature in $features )
96 #if( $feature.auto )
97 --disable-${feature.arg}
98 #else
99 --enable-${feature.arg}
100 #end
101 #end
102
103 #end
104 __EOF__
105 }
106
107 # 190 #
108 # parse arguments 191 # parse arguments
109 # 192 #
110 BUILD_TYPE="default" 193 BUILD_TYPE="default"
111 #set( $D = '$' )
112 for ARG in "$@" 194 for ARG in "$@"
113 do 195 do
114 case "$ARG" in 196 case "$ARG" in
115 "--prefix="*) prefix=${D}{ARG#--prefix=} ;; 197 "--prefix="*) prefix=${D}{ARG#--prefix=} ;;
116 "--exec-prefix="*) exec_prefix=${D}{ARG#--exec-prefix=} ;; 198 "--exec-prefix="*) exec_prefix=${D}{ARG#--exec-prefix=} ;;
125 "--localstatedir="*) localstatedir=${D}{ARG#--localstatedir=} ;; 207 "--localstatedir="*) localstatedir=${D}{ARG#--localstatedir=} ;;
126 "--includedir="*) includedir=${D}{ARG#--includedir=} ;; 208 "--includedir="*) includedir=${D}{ARG#--includedir=} ;;
127 "--infodir="*) infodir=${D}{ARG#--infodir=} ;; 209 "--infodir="*) infodir=${D}{ARG#--infodir=} ;;
128 "--mandir"*) mandir=${D}{ARG#--mandir} ;; 210 "--mandir"*) mandir=${D}{ARG#--mandir} ;;
129 "--localedir"*) localedir=${D}{ARG#--localedir} ;; 211 "--localedir"*) localedir=${D}{ARG#--localedir} ;;
130 "--help"*) printhelp; abort_configure ;; 212 "--help"*) printhelp; abort_configure ;;
131 "--debug") BUILD_TYPE="debug" ;; 213 "--debug") BUILD_TYPE="debug" ;;
132 "--release") BUILD_TYPE="release" ;; 214 "--release") BUILD_TYPE="release" ;;
133 #foreach( $opt in $options ) 215 #foreach( $opt in $options )
134 "--${opt.argument}="*) ${opt.varName}=${D}{ARG#--${opt.argument}=} ;; 216 "--${opt.argument}="*) ${opt.varName}=${D}{ARG#--${opt.argument}=} ;;
217 "--${opt.argument}") echo "option '$ARG' needs a value:"; echo " $ARG=${opt.valuesString}"; abort_configure ;;
135 #end 218 #end
136 #foreach( $feature in $features ) 219 #foreach( $feature in $features )
137 "--enable-${feature.arg}") ${feature.varName}=on ;; 220 "--enable-${feature.arg}") ${feature.varName}=on ;;
138 "--disable-${feature.arg}") unset ${feature.varName} ;; 221 "--disable-${feature.arg}") unset ${feature.varName} ;;
139 #end 222 #end
159 : ${includedir:='${prefix}/include'} 242 : ${includedir:='${prefix}/include'}
160 : ${infodir:='${datarootdir}/info'} 243 : ${infodir:='${datarootdir}/info'}
161 : ${mandir:='${datarootdir}/man'} 244 : ${mandir:='${datarootdir}/man'}
162 : ${localedir:='${datarootdir}/locale'} 245 : ${localedir:='${datarootdir}/locale'}
163 246
247 # remember the above values and compare them later
248 orig_bindir="$bindir"
249 orig_sbindir="$sbindir"
250 orig_libdir="$libdir"
251 orig_libexecdir="$libexecdir"
252 orig_datarootdir="$datarootdir"
253 orig_datadir="$datadir"
254 orig_sysconfdir="$sysconfdir"
255 orig_sharedstatedir="$sharedstatedir"
256 orig_localstatedir="$localstatedir"
257 orig_runstatedir="$runstatedir"
258 orig_includedir="$includedir"
259 orig_infodir="$infodir"
260 orig_mandir="$mandir"
261 orig_localedir="$localedir"
262
164 # check if a config.site exists and load it 263 # check if a config.site exists and load it
165 if [ -n "$CONFIG_SITE" ]; then 264 if [ -n "$CONFIG_SITE" ]; then
166 # CONFIG_SITE may contain space separated file names 265 # CONFIG_SITE may contain space separated file names
167 for cs in $CONFIG_SITE; do 266 for cs in $CONFIG_SITE; do
168 printf "loading defaults from $cs... " 267 printf "loading defaults from $cs... "
176 elif [ -f "$prefix/etc/config.site" ]; then 275 elif [ -f "$prefix/etc/config.site" ]; then
177 printf "loading site defaults... " 276 printf "loading site defaults... "
178 . "$prefix/etc/config.site" 277 . "$prefix/etc/config.site"
179 echo ok 278 echo ok
180 fi 279 fi
181
182 # Test for availability of pkg-config
183 PKG_CONFIG=`command -v pkg-config`
184 : ${PKG_CONFIG:="false"}
185
186 # Simple uname based platform detection
187 # $PLATFORM is used for platform dependent dependency selection
188 OS=`uname -s`
189 OS_VERSION=`uname -r`
190 printf "detect platform... "
191 if [ "$OS" = "SunOS" ]; then
192 PLATFORM="solaris sunos unix svr4"
193 fi
194 if [ "$OS" = "Linux" ]; then
195 PLATFORM="linux unix"
196 fi
197 if [ "$OS" = "FreeBSD" ]; then
198 PLATFORM="freebsd bsd unix"
199 fi
200 if [ "$OS" = "Darwin" ]; then
201 PLATFORM="macos osx bsd unix"
202 fi
203 if echo "$OS" | grep -i "MINGW" > /dev/null; then
204 PLATFORM="windows mingw"
205 fi
206 : ${PLATFORM:="unix"}
207
208 PLATFORM_NAME=`echo "$PLATFORM" | cut -f1 -d' ' -`
209 echo "$PLATFORM_NAME"
210
211 isplatform()
212 {
213 for p in $PLATFORM
214 do
215 if [ "$p" = "$1" ]; then
216 return 0
217 fi
218 done
219 return 1
220 }
221 notisplatform()
222 {
223 for p in $PLATFORM
224 do
225 if [ "$p" = "$1" ]; then
226 return 1
227 fi
228 done
229 return 0
230 }
231 ]]# 280 ]]#
232 ## End of unparsed content ** 281 ## End of unparsed content **
233 282
234 # generate vars.mk 283 # generate vars.mk
235 cat > "$TEMP_DIR/vars.mk" << __EOF__ 284 cat > "$TEMP_DIR/vars.mk" << __EOF__
236 prefix="$prefix" 285 prefix=$prefix
237 exec_prefix="$exec_prefix" 286 exec_prefix=$exec_prefix
238 bindir="$bindir" 287 bindir=$bindir
239 sbindir="$sbindir" 288 sbindir=$sbindir
240 libdir="$libdir" 289 libdir=$libdir
241 libexecdir="$libexecdir" 290 libexecdir=$libexecdir
242 datarootdir="$datarootdir" 291 datarootdir=$datarootdir
243 datadir="$datadir" 292 datadir=$datadir
244 sysconfdir="$sysconfdir" 293 sysconfdir=$sysconfdir
245 sharedstatedir="$sharedstatedir" 294 sharedstatedir=$sharedstatedir
246 localstatedir="$localstatedir" 295 localstatedir=$localstatedir
247 runstatedir="$runstatedir" 296 runstatedir=$runstatedir
248 includedir="$includedir" 297 includedir=$includedir
249 infodir="$infodir" 298 infodir=$infodir
250 mandir="$mandir" 299 mandir=$mandir
251 localedir="$localedir" 300 localedir=$localedir
252 #foreach( $var in $vars ) 301 #foreach( $var in $vars )
253 ${var.varName}="${D}${var.varName}" 302 ${var.varName}=${D}${var.varName}
254 #end 303 #end
255 __EOF__ 304 __EOF__
256 305
257 # toolchain detection utilities 306 # toolchain detection utilities
258 . make/toolchain.sh 307 . make/toolchain.sh
284 if [ -z "$4" ] || "$PKG_CONFIG" --max-version="$4" "$1" ; then : 333 if [ -z "$4" ] || "$PKG_CONFIG" --max-version="$4" "$1" ; then :
285 else return 1 ; fi 334 else return 1 ; fi
286 return 0 335 return 0
287 } 336 }
288 337
338 print_check_msg()
339 {
340 if [ -z "$1" ]; then
341 shift
342 printf "$@"
343 fi
344 }
345
289 #foreach( $dependency in $namedDependencies ) 346 #foreach( $dependency in $namedDependencies )
290 dependency_error_${dependency.id}() 347 dependency_error_${dependency.id}()
291 { 348 {
292 printf "checking for ${dependency.name}... " 349 print_check_msg "${D}dep_checked_${dependency.id}" "checking for ${dependency.name}... "
293 #foreach( $sub in $dependency.subdependencies ) 350 #foreach( $sub in $dependency.subdependencies )
294 # dependency $sub.fullName 351 # dependency $sub.fullName
295 while true 352 while true
296 do 353 do
297 #if( $sub.platform ) 354 #if( $sub.platform )
298 if notisplatform "${sub.platform}"; then 355 if notisplatform "${sub.platform}"; then
299 break 356 break
300 fi 357 fi
301 #end 358 #end
359 #if( $sub.toolchain )
360 if notistoolchain "${sub.toolchain}"; then
361 break
362 fi
363 #end
302 #foreach( $np in $sub.notList ) 364 #foreach( $np in $sub.notList )
303 if isplatform "${np}"; then 365 if isplatform "${np}" || istoolchain "${np}"; then
304 break 366 break
305 fi 367 fi
306 #end 368 #end
307 #foreach( $lang in $sub.lang ) 369 #foreach( $lang in $sub.lang )
308 if [ -z "$lang_${lang}" ] ; then 370 if [ -z "$lang_${lang}" ] ; then
344 cat >> $TEMP_DIR/make.mk << __EOF__ 406 cat >> $TEMP_DIR/make.mk << __EOF__
345 # Dependency: $dependency.name 407 # Dependency: $dependency.name
346 $sub.make 408 $sub.make
347 __EOF__ 409 __EOF__
348 #end 410 #end
349 echo yes 411 print_check_msg "${D}dep_checked_${dependency.id}" "yes\n"
412 dep_checked_${dependency.id}=1
350 return 1 413 return 1
351 done 414 done
352 415
353 #end 416 #end
354 echo no 417 print_check_msg "${D}dep_checked_${dependency.id}" "no\n"
418 dep_checked_${dependency.id}=1
355 return 0 419 return 0
356 } 420 }
357 #end 421 #end
358
359
360
361 422
362 # start collecting dependency information 423 # start collecting dependency information
363 echo > "$TEMP_DIR/flags.mk" 424 echo > "$TEMP_DIR/flags.mk"
364 425
365 DEPENDENCIES_FAILED= 426 DEPENDENCIES_FAILED=
366 ERROR=0 427 ERROR=0
367 #if( $dependencies.size() > 0 ) 428 #if( $dependencies.size() > 0 )
368 # unnamed dependencies 429 # unnamed dependencies
369 TEMP_CFLAGS= 430 TEMP_CFLAGS="$CFLAGS"
370 TEMP_CXXFLAGS= 431 TEMP_CXXFLAGS="$CXXFLAGS"
371 TEMP_LDFLAGS= 432 TEMP_LDFLAGS="$LDFLAGS"
372 #foreach( $dependency in $dependencies ) 433 #foreach( $dependency in $dependencies )
373 while true 434 while true
374 do 435 do
375 #if( $dependency.platform ) 436 #if( $dependency.platform )
376 if notisplatform "${dependency.platform}"; then 437 if notisplatform "${dependency.platform}"; then
377 break 438 break
378 fi 439 fi
379 #end 440 #end
441 #if( $dependency.toolchain )
442 if notistoolchain "${dependency.toolchain}"; then
443 break
444 fi
445 #end
380 #foreach( $np in $dependency.notList ) 446 #foreach( $np in $dependency.notList )
381 if isplatform "${np}"; then 447 if isplatform "${np}" || istoolchain "${np}"; then
382 break 448 break
383 fi 449 fi
384 #end 450 #end
385 while true 451 while true
386 do 452 do
395 ERROR=1 461 ERROR=1
396 break 462 break
397 fi 463 fi
398 #end 464 #end
399 #foreach( $pkg in $dependency.pkgconfig ) 465 #foreach( $pkg in $dependency.pkgconfig )
400 printf "checking for pkg-config package $pkg.name... " 466 print_check_msg "${D}dep_pkgconfig_checked_${pkg.id}" "checking for pkg-config package $pkg.name... "
401 if test_pkg_config "$pkg.name" "$pkg.atleast" "$pkg.exact" "$pkg.max" ; then 467 if test_pkg_config "$pkg.name" "$pkg.atleast" "$pkg.exact" "$pkg.max" ; then
402 echo yes 468 print_check_msg "${D}dep_pkgconfig_checked_${pkg.id}" "yes\n"
469 dep_pkgconfig_checked_${pkg.id}=1
403 TEMP_CFLAGS="$TEMP_CFLAGS `"$PKG_CONFIG" --cflags $pkg.name`" 470 TEMP_CFLAGS="$TEMP_CFLAGS `"$PKG_CONFIG" --cflags $pkg.name`"
404 TEMP_LDFLAGS="$TEMP_LDFLAGS `"$PKG_CONFIG" --libs $pkg.name`" 471 TEMP_LDFLAGS="$TEMP_LDFLAGS `"$PKG_CONFIG" --libs $pkg.name`"
405 else 472 else
406 echo no 473 print_check_msg "${D}dep_pkgconfig_checked_${pkg.id}" "no\n"
474 dep_pkgconfig_checked_${pkg.id}=1
407 ERROR=1 475 ERROR=1
408 break 476 break
409 fi 477 fi
410 #end 478 #end
411 479
431 done 499 done
432 break 500 break
433 done 501 done
434 #end 502 #end
435 503
504 # build type
505 if [ "$BUILD_TYPE" = "debug" ]; then
506 TEMP_CFLAGS="\${DEBUG_CFLAGS}$TEMP_CFLAGS"
507 TEMP_CXXFLAGS="\${DEBUG_CXXFLAGS}$TEMP_CXXFLAGS"
508 fi
509 if [ "$BUILD_TYPE" = "release" ]; then
510 TEMP_CFLAGS="\${RELEASE_CFLAGS}$TEMP_CFLAGS"
511 TEMP_CXXFLAGS="\${RELEASE_CXXFLAGS}$TEMP_CXXFLAGS"
512 fi
513
436 # add general dependency flags to flags.mk 514 # add general dependency flags to flags.mk
437 echo "# general flags" >> "$TEMP_DIR/flags.mk" 515 echo "# general flags" >> "$TEMP_DIR/flags.mk"
438 if [ -n "${TEMP_CFLAGS}" -a -n "$lang_c" ]; then 516 if [ -n "${TEMP_CFLAGS}" ] && [ -n "$lang_c" ]; then
439 echo "CFLAGS += $TEMP_CFLAGS" >> "$TEMP_DIR/flags.mk" 517 echo "CFLAGS += $TEMP_CFLAGS" >> "$TEMP_DIR/flags.mk"
440 fi 518 fi
441 if [ -n "${TEMP_CXXFLAGS}" -a -n "$lang_cpp" ]; then 519 if [ -n "${TEMP_CXXFLAGS}" ] && [ -n "$lang_cpp" ]; then
442 echo "CXXFLAGS += $TEMP_CXXFLAGS" >> "$TEMP_DIR/flags.mk" 520 echo "CXXFLAGS += $TEMP_CXXFLAGS" >> "$TEMP_DIR/flags.mk"
443 fi 521 fi
444 if [ -n "${TEMP_LDFLAGS}" ]; then 522 if [ -n "${TEMP_LDFLAGS}" ]; then
445 echo "LDFLAGS += $TEMP_LDFLAGS" >> "$TEMP_DIR/flags.mk" 523 echo "LDFLAGS += $TEMP_LDFLAGS" >> "$TEMP_DIR/flags.mk"
446 fi 524 fi
516 fi 594 fi
517 #end 595 #end
518 if [ -n "$DISABLE_${feature.varName}" ]; then 596 if [ -n "$DISABLE_${feature.varName}" ]; then
519 unset ${feature.varName} 597 unset ${feature.varName}
520 fi 598 fi
599 fi
600 if [ -n "${D}${feature.varName}" ]; then
601 :
602 #foreach( $def in $feature.defines )
603 TEMP_CFLAGS="$TEMP_CFLAGS ${def.toFlags()}"
604 TEMP_CXXFLAGS="$TEMP_CXXFLAGS ${def.toFlags()}"
605 #end
606 #if( $feature.hasMake() )
607 cat >> "$TEMP_DIR/make.mk" << __EOF__
608 $feature.make
609 __EOF__
610 #end
611 else
612 :
613 #foreach( $def in $feature.disabled.defines )
614 TEMP_CFLAGS="$TEMP_CFLAGS ${def.toFlags()}"
615 TEMP_CXXFLAGS="$TEMP_CXXFLAGS ${def.toFlags()}"
616 #end
617 #if( $feature.disabled.hasMake() )
618 cat >> "$TEMP_DIR/make.mk" << __EOF__
619 $feature.disabled.make
620 __EOF__
621 #end
622 #foreach( $dependency in $feature.disabled.dependencies )
623 if dependency_error_$dependency ; then
624 DEPENDENCIES_FAILED="$DEPENDENCIES_FAILED ${dependency} "
625 ERROR=1
626 fi
627 #end
521 fi 628 fi
522 #end 629 #end
523 630
524 #foreach( $opt in $target.options ) 631 #foreach( $opt in $target.options )
525 # Option: --${opt.argument} 632 # Option: --${opt.argument}
563 else 670 else
564 ERROR=1 671 ERROR=1
565 DEPENDENCIES_FAILED="option '${opt.argument}' $DEPENDENCIES_FAILED" 672 DEPENDENCIES_FAILED="option '${opt.argument}' $DEPENDENCIES_FAILED"
566 fi 673 fi
567 #end 674 #end
568 fi 675 else
569 fi 676 echo
570 #end 677 echo "Invalid option value - usage:"
571 678 echo " --${opt.argument}=${opt.valuesString}"
572 if [ -n "${TEMP_CFLAGS}" -a -n "$lang_c" ]; then 679 abort_configure
680 fi
681 fi
682 #end
683
684 if [ -n "${TEMP_CFLAGS}" ] && [ -n "$lang_c" ]; then
573 echo "${target.cFlags} += $TEMP_CFLAGS" >> "$TEMP_DIR/flags.mk" 685 echo "${target.cFlags} += $TEMP_CFLAGS" >> "$TEMP_DIR/flags.mk"
574 fi 686 fi
575 if [ -n "${TEMP_CXXFLAGS}" -a -n "$lang_cpp" ]; then 687 if [ -n "${TEMP_CXXFLAGS}" ] && [ -n "$lang_cpp" ]; then
576 echo "${target.cxxFlags} += $TEMP_CXXFLAGS" >> "$TEMP_DIR/flags.mk" 688 echo "${target.cxxFlags} += $TEMP_CXXFLAGS" >> "$TEMP_DIR/flags.mk"
577 fi
578 if [ "$BUILD_TYPE" = "debug" ]; then
579 if [ -n "$lang_c" ]; then
580 echo '${target.cFlags} += ${DEBUG_CC_FLAGS}' >> "$TEMP_DIR/flags.mk"
581 fi
582 if [ -n "$lang_cpp" ]; then
583 echo '${target.cxxFlags} += ${DEBUG_CXX_FLAGS}' >> "$TEMP_DIR/flags.mk"
584 fi
585 fi
586 if [ "$BUILD_TYPE" = "release" ]; then
587 if [ -n "$lang_c" ]; then
588 echo '${target.cFlags} += ${RELEASE_CC_FLAGS}' >> "$TEMP_DIR/flags.mk"
589 fi
590 if [ -n "$lang_cpp" ]; then
591 echo '${target.cxxFlags} += ${RELEASE_CXX_FLAGS}' >> "$TEMP_DIR/flags.mk"
592 fi
593 fi 689 fi
594 if [ -n "${TEMP_LDFLAGS}" ]; then 690 if [ -n "${TEMP_LDFLAGS}" ]; then
595 echo "${target.ldFlags} += $TEMP_LDFLAGS" >> "$TEMP_DIR/flags.mk" 691 echo "${target.ldFlags} += $TEMP_LDFLAGS" >> "$TEMP_DIR/flags.mk"
596 fi 692 fi
597 693
605 abort_configure 701 abort_configure
606 fi 702 fi
607 703
608 echo "configure finished" 704 echo "configure finished"
609 echo 705 echo
706 echo "Toolchain"
707 echo " name: $TOOLCHAIN_NAME"
708 if [ -n "$TOOLCHAIN_CC" ]; then
709 echo " cc: $TOOLCHAIN_CC"
710 fi
711 if [ -n "$TOOLCHAIN_CXX" ]; then
712 echo " cxx: $TOOLCHAIN_CXX"
713 fi
714 if [ -n "$TOOLCHAIN_WSIZE" ]; then
715 echo " word size: $TOOLCHAIN_WSIZE bit"
716 fi
717 if [ -n "$TOOLCHAIN_CSTD" ]; then
718 echo " default C std: $TOOLCHAIN_CSTD"
719 fi
720 echo
610 echo "Build Config:" 721 echo "Build Config:"
611 echo " PREFIX: $prefix" 722 echo " prefix: $prefix"
612 echo " TOOLCHAIN: $TOOLCHAIN_NAME" 723 echo " exec_prefix: $exec_prefix"
724 if [ "$orig_bindir" != "$bindir" ]; then
725 echo " bindir: $bindir"
726 fi
727 if [ "$orig_sbindir" != "$sbindir" ]; then
728 echo " sbindir: $sbindir"
729 fi
730 if [ "$orig_libdir" != "$libdir" ]; then
731 echo " libdir: $libdir"
732 fi
733 if [ "$orig_libexecdir" != "$libexecdir" ]; then
734 echo " libexecdir: $libexecdir"
735 fi
736 if [ "$orig_datarootdir" != "$datarootdir" ]; then
737 echo " datarootdir: $datarootdir"
738 fi
739 if [ "$orig_datadir" != "$datadir" ]; then
740 echo " datadir: $datadir"
741 fi
742 if [ "$orig_sysconfdir" != "$sysconfdir" ]; then
743 echo " sysconfdir: $sysconfdir"
744 fi
745 if [ "$orig_sharedstatedir" != "$sharedstatedir" ]; then
746 echo " sharedstatedir: $sharedstatedir"
747 fi
748 if [ "$orig_localstatedir" != "$localstatedir" ]; then
749 echo " localstatedir: $localstatedir"
750 fi
751 if [ "$orig_runstatedir" != "$runstatedir" ]; then
752 echo " runstatedir: $runstatedir"
753 fi
754 if [ "$orig_includedir" != "$includedir" ]; then
755 echo " includedir: $includedir"
756 fi
757 if [ "$orig_infodir" != "$infodir" ]; then
758 echo " infodir: $infodir"
759 fi
760 if [ "$orig_mandir" != "$mandir" ]; then
761 echo " mandir: $mandir"
762 fi
763 if [ "$orig_localedir" != "$localedir" ]; then
764 echo " localedir: $localedir"
765 fi
613 #if ( $options.size() > 0 ) 766 #if ( $options.size() > 0 )
767 echo
614 echo "Options:" 768 echo "Options:"
615 cat "$TEMP_DIR/options" 769 cat "$TEMP_DIR/options"
616 #end 770 #end
617 #if ( $features.size() > 0 ) 771 #if ( $features.size() > 0 )
772 echo
618 echo "Features:" 773 echo "Features:"
619 #foreach( $feature in $features ) 774 #foreach( $feature in $features )
620 if [ -n "${D}${feature.varName}" ]; then 775 if [ -n "${D}${feature.varName}" ]; then
621 echo " $feature.name: on" 776 echo " $feature.name: on"
622 else 777 else
625 #end 780 #end
626 #end 781 #end
627 echo 782 echo
628 783
629 # generate the config.mk file 784 # generate the config.mk file
785 pwd=`pwd`
630 cat > "$TEMP_DIR/config.mk" << __EOF__ 786 cat > "$TEMP_DIR/config.mk" << __EOF__
631 # 787 #
632 # config.mk generated by configure 788 # config.mk generated by:
789 # pwd: $pwd
790 # $0 $@
633 # 791 #
634 792
635 __EOF__ 793 __EOF__
636 write_toolchain_defaults "$TEMP_DIR/toolchain.mk" 794 write_toolchain_defaults "$TEMP_DIR/toolchain.mk"
637 cat "$TEMP_DIR/vars.mk" "$TEMP_DIR/toolchain.mk" "$TEMP_DIR/flags.mk" "$TEMP_DIR/make.mk" > config.mk 795 cat "$TEMP_DIR/config.mk" "$TEMP_DIR/vars.mk" "$TEMP_DIR/toolchain.mk" "$TEMP_DIR/flags.mk" "$TEMP_DIR/make.mk" > config.mk
638 rm -Rf "$TEMP_DIR" 796 rm -Rf "$TEMP_DIR"
639
640

mercurial