test/make/configure.vm

changeset 66
dc758dcd4645
parent 63
ac47c2fb2c4a
child 67
e43d30273f74
equal deleted inserted replaced
65:6db50c6df6e3 66:dc758dcd4645
198 return 0 198 return 0
199 } 199 }
200 ]]# 200 ]]#
201 ## End of unparsed content ** 201 ## End of unparsed content **
202 202
203 # generate config.mk 203 # generate vars.mk
204 cat > "$TEMP_DIR/vars.mk" << __EOF__ 204 cat > "$TEMP_DIR/vars.mk" << __EOF__
205 PREFIX=$PREFIX 205 PREFIX=$PREFIX
206 EPREFIX=$EPREFIX 206 EPREFIX=$EPREFIX
207 BINDIR=$BINDIR 207 BINDIR=$BINDIR
208 SBINDIR=$SBINDIR 208 SBINDIR=$SBINDIR
217 MANDIR=$MANDIR 217 MANDIR=$MANDIR
218 #foreach( $var in $vars ) 218 #foreach( $var in $vars )
219 ${var.varName}=$${var.varName} 219 ${var.varName}=$${var.varName}
220 #end 220 #end
221 __EOF__ 221 __EOF__
222 cat > "$TEMP_DIR/config.mk" << __EOF__ 222 sort -u -o "$TEMP_DIR/vars.mk" "$TEMP_DIR/vars.mk"
223 # 223
224 # config.mk generated by configure 224
225 # 225 # toolchain detection utilities
226 __EOF__
227 sort -u "$TEMP_DIR/vars.mk" >> "$TEMP_DIR/config.mk"
228
229
230 # toolchain detection
231 # this will insert make vars to config.mk
232 . make/toolchain.sh 226 . make/toolchain.sh
233 if [ -n "$TOOLCHAIN_ERROR" ]; then
234 echo "Toolchain error: $TOOLCHAIN_ERROR"
235 echo "Abort."
236 abort_configure
237 fi
238 227
239 # 228 #
240 # DEPENDENCIES 229 # DEPENDENCIES
241 # 230 #
242 231
245 234
246 test_pkg_config() 235 test_pkg_config()
247 { 236 {
248 if "$PKG_CONFIG" --exists "$1" ; then : 237 if "$PKG_CONFIG" --exists "$1" ; then :
249 else return 1 ; fi 238 else return 1 ; fi
250 if [ -n "$2" ] && "$PKG_CONFIG" --atleast-version="$2" "$1" ; then : 239 if [ -z "$2" ] || "$PKG_CONFIG" --atleast-version="$2" "$1" ; then :
251 else return 1 ; fi 240 else return 1 ; fi
252 if [ -n "$3" ] && "$PKG_CONFIG" --exact-version="$3" "$1" ; then : 241 if [ -z "$3" ] || "$PKG_CONFIG" --exact-version="$3" "$1" ; then :
253 else return 1 ; fi 242 else return 1 ; fi
254 if [ -n "$4" ] && "$PKG_CONFIG" --max-version="$4" "$1" ; then : 243 if [ -z "$4" ] || "$PKG_CONFIG" --max-version="$4" "$1" ; then :
255 else return 1 ; fi 244 else return 1 ; fi
256 return 0 245 return 0
257 } 246 }
258 247
259 #foreach( $dependency in $namedDependencies ) 248 #foreach( $dependency in $namedDependencies )
272 #foreach( $np in $sub.getNotList() ) 261 #foreach( $np in $sub.getNotList() )
273 if isplatform "${np}"; then 262 if isplatform "${np}"; then
274 break 263 break
275 fi 264 fi
276 #end 265 #end
266 #foreach( $lang in $sub.lang )
267 if detect_${lang}_compiler ; then
268 :
269 else
270 break
271 fi
272 #end
277 #if( $sub.pkgconfig.size() > 0 ) 273 #if( $sub.pkgconfig.size() > 0 )
278 if [ -z "$PKG_CONFIG" ]; then 274 if [ -z "$PKG_CONFIG" ]; then
279 break 275 break
280 fi 276 fi
281 #end 277 #end
319 echo no 315 echo no
320 return 0 316 return 0
321 } 317 }
322 #end 318 #end
323 319
320 # start collecting dependency information
321 echo > "$TEMP_DIR/flags.mk"
322
324 DEPENDENCIES_FAILED= 323 DEPENDENCIES_FAILED=
325 ERROR=0 324 ERROR=0
326 #if( $dependencies.size() > 0 ) 325 #if( $dependencies.size() > 0 )
327 # unnamed dependencies 326 # unnamed dependencies
328 TEMP_CFLAGS= 327 TEMP_CFLAGS=
328 TEMP_CXXFLAGS=
329 TEMP_LDFLAGS= 329 TEMP_LDFLAGS=
330 #foreach( $dependency in $dependencies ) 330 #foreach( $dependency in $dependencies )
331 while true 331 while true
332 do 332 do
333 #if( $dependency.platform ) 333 #if( $dependency.platform )
340 break 340 break
341 fi 341 fi
342 #end 342 #end
343 while true 343 while true
344 do 344 do
345 #foreach( $lang in $dependency.lang )
346 if detect_${lang}_compiler ; then
347 :
348 else
349 ERROR=1
350 break
351 fi
352 #end
345 #if( $dependency.pkgconfig.size() > 0 ) 353 #if( $dependency.pkgconfig.size() > 0 )
346 if [ -z "$PKG_CONFIG" ]; then 354 if [ -z "$PKG_CONFIG" ]; then
347 ERROR=1 355 ERROR=1
348 break 356 break
349 fi 357 fi
383 done 391 done
384 break 392 break
385 done 393 done
386 #end 394 #end
387 395
388 # add unnamed dependency flags to config.mk 396 # add general dependency flags to flags.mk
389 echo >> "$TEMP_DIR/config.mk" 397 echo "# general flags" >> "$TEMP_DIR/flags.mk"
390 if [ -n "${TEMP_CFLAGS}" ]; then 398 if [ -n "${TEMP_CFLAGS}" ]; then
391 echo "CFLAGS += $TEMP_CFLAGS" >> "$TEMP_DIR/config.mk" 399 echo "CFLAGS += $TEMP_CFLAGS" >> "$TEMP_DIR/flags.mk"
400 fi
401 if [ -n "${TEMP_CXXFLAGS}" ]; then
402 echo "CXXFLAGS += $TEMP_CXXFLAGS" >> "$TEMP_DIR/flags.mk"
392 fi 403 fi
393 if [ -n "${TEMP_LDFLAGS}" ]; then 404 if [ -n "${TEMP_LDFLAGS}" ]; then
394 echo "LDFLAGS += $TEMP_LDFLAGS" >> "$TEMP_DIR/config.mk" 405 echo "LDFLAGS += $TEMP_LDFLAGS" >> "$TEMP_DIR/flags.mk"
395 fi 406 fi
396 #end 407 #end
397 408
398 # 409 #
399 # OPTION VALUES 410 # OPTION VALUES
411 if [ $VERR -ne 0 ]; then 422 if [ $VERR -ne 0 ]; then
412 return 1 423 return 1
413 fi 424 fi
414 #foreach( $def in $val.defines ) 425 #foreach( $def in $val.defines )
415 TEMP_CFLAGS="$TEMP_CFLAGS ${def.toFlags()}" 426 TEMP_CFLAGS="$TEMP_CFLAGS ${def.toFlags()}"
427 TEMP_CXXFLAGS="$TEMP_CXXFLAGS ${def.toFlags()}"
416 #end 428 #end
417 #if( $val.hasMake() ) 429 #if( $val.hasMake() )
418 cat >> "$TEMP_DIR/make.mk" << __EOF__ 430 cat >> "$TEMP_DIR/make.mk" << __EOF__
419 $val.make 431 $val.make
420 __EOF__ 432 __EOF__
427 # 439 #
428 # TARGETS 440 # TARGETS
429 # 441 #
430 442
431 #foreach( $target in $targets ) 443 #foreach( $target in $targets )
444 echo >> "$TEMP_DIR/flags.mk"
432 #if ( $target.name ) 445 #if ( $target.name )
433 # Target: $target.name 446 # Target: $target.name
447 echo "# flags for target $target.name" >> "$TEMP_DIR/flags.mk"
434 #else 448 #else
435 # Target 449 # Target
450 echo "# flags for unnamed target" >> "$TEMP_DIR/flags.mk"
436 #end 451 #end
437 TEMP_CFLAGS= 452 TEMP_CFLAGS=
453 TEMP_CXXFLAGS=
438 TEMP_LDFLAGS= 454 TEMP_LDFLAGS=
439 455
440 #foreach( $dependency in $target.dependencies ) 456 #foreach( $dependency in $target.dependencies )
441 if dependency_error_$dependency; then 457 if dependency_error_$dependency; then
442 DEPENDENCIES_FAILED="$DEPENDENCIES_FAILED ${dependency} " 458 DEPENDENCIES_FAILED="$DEPENDENCIES_FAILED ${dependency} "
504 #end 520 #end
505 fi 521 fi
506 fi 522 fi
507 #end 523 #end
508 524
509 echo >> "$TEMP_DIR/config.mk"
510 if [ -n "${TEMP_CFLAGS}" ]; then 525 if [ -n "${TEMP_CFLAGS}" ]; then
511 echo "${target.getCFlags()} += $TEMP_CFLAGS" >> "$TEMP_DIR/config.mk" 526 echo "${target.getCFlags()} += $TEMP_CFLAGS" >> "$TEMP_DIR/flags.mk"
527 fi
528 if [ -n "${TEMP_CXXFLAGS}" ]; then
529 echo "${target.getCXXFlags()} += $TEMP_CXXFLAGS" >> "$TEMP_DIR/flags.mk"
512 fi 530 fi
513 if [ "$BUILD_TYPE" = "debug" ]; then 531 if [ "$BUILD_TYPE" = "debug" ]; then
514 echo '${target.getCFlags()} += ${DEBUG_FLAGS}' >> "$TEMP_DIR/config.mk" 532 echo '${target.getCFlags()} += ${DEBUG_CC_FLAGS}' >> "$TEMP_DIR/flags.mk"
533 echo '${target.getCXXFlags()} += ${DEBUG_CXX_FLAGS}' >> "$TEMP_DIR/flags.mk"
515 fi 534 fi
516 if [ "$BUILD_TYPE" = "release" ]; then 535 if [ "$BUILD_TYPE" = "release" ]; then
517 echo '${target.getCFlags()} += ${RELEASE_FLAGS}' >> "$TEMP_DIR/config.mk" 536 echo '${target.getCFlags()} += ${RELEASE_CC_FLAGS}' >> "$TEMP_DIR/flags.mk"
537 echo '${target.getCXXFlags()} += ${RELEASE_CXX_FLAGS}' >> "$TEMP_DIR/flags.mk"
518 fi 538 fi
519 if [ -n "${TEMP_LDFLAGS}" ]; then 539 if [ -n "${TEMP_LDFLAGS}" ]; then
520 echo "${target.getLDFlags()} += $TEMP_LDFLAGS" >> "$TEMP_DIR/config.mk" 540 echo "${target.getLDFlags()} += $TEMP_LDFLAGS" >> "$TEMP_DIR/flags.mk"
521 fi 541 fi
522 542
523 #end 543 #end
544
545 # final result
524 if [ $ERROR -ne 0 ]; then 546 if [ $ERROR -ne 0 ]; then
525 echo 547 echo
526 echo "Error: Unresolved dependencies" 548 echo "Error: Unresolved dependencies"
527 echo "$DEPENDENCIES_FAILED" 549 echo "$DEPENDENCIES_FAILED"
528 abort_configure 550 abort_configure
546 echo " $feature.name: off" 568 echo " $feature.name: off"
547 fi 569 fi
548 #end 570 #end
549 #end 571 #end
550 echo 572 echo
551 cat "$TEMP_DIR/config.mk" "$TEMP_DIR/make.mk" > config.mk 573
574 # generate the config.mk file
575 cat > "$TEMP_DIR/config.mk" << __EOF__
576 #
577 # config.mk generated by configure
578 #
579
580 __EOF__
581 write_toolchain_defaults "$TEMP_DIR/config.mk"
582 cat "$TEMP_DIR/config.mk" "$TEMP_DIR/flags.mk" "$TEMP_DIR/make.mk" > config.mk
552 rm -Rf "$TEMP_DIR" 583 rm -Rf "$TEMP_DIR"
553 584
554 585

mercurial