diff -r 6db50c6df6e3 -r dc758dcd4645 test/make/configure.vm --- a/test/make/configure.vm Mon Sep 18 22:49:54 2023 +0200 +++ b/test/make/configure.vm Mon Sep 18 23:20:29 2023 +0200 @@ -200,7 +200,7 @@ ]]# ## End of unparsed content ** -# generate config.mk +# generate vars.mk cat > "$TEMP_DIR/vars.mk" << __EOF__ PREFIX=$PREFIX EPREFIX=$EPREFIX @@ -219,22 +219,11 @@ ${var.varName}=$${var.varName} #end __EOF__ -cat > "$TEMP_DIR/config.mk" << __EOF__ -# -# config.mk generated by configure -# -__EOF__ -sort -u "$TEMP_DIR/vars.mk" >> "$TEMP_DIR/config.mk" +sort -u -o "$TEMP_DIR/vars.mk" "$TEMP_DIR/vars.mk" -# toolchain detection -# this will insert make vars to config.mk +# toolchain detection utilities . make/toolchain.sh -if [ -n "$TOOLCHAIN_ERROR" ]; then - echo "Toolchain error: $TOOLCHAIN_ERROR" - echo "Abort." - abort_configure -fi # # DEPENDENCIES @@ -247,11 +236,11 @@ { if "$PKG_CONFIG" --exists "$1" ; then : else return 1 ; fi - if [ -n "$2" ] && "$PKG_CONFIG" --atleast-version="$2" "$1" ; then : + if [ -z "$2" ] || "$PKG_CONFIG" --atleast-version="$2" "$1" ; then : else return 1 ; fi - if [ -n "$3" ] && "$PKG_CONFIG" --exact-version="$3" "$1" ; then : + if [ -z "$3" ] || "$PKG_CONFIG" --exact-version="$3" "$1" ; then : else return 1 ; fi - if [ -n "$4" ] && "$PKG_CONFIG" --max-version="$4" "$1" ; then : + if [ -z "$4" ] || "$PKG_CONFIG" --max-version="$4" "$1" ; then : else return 1 ; fi return 0 } @@ -274,6 +263,13 @@ break fi #end + #foreach( $lang in $sub.lang ) + if detect_${lang}_compiler ; then + : + else + break + fi + #end #if( $sub.pkgconfig.size() > 0 ) if [ -z "$PKG_CONFIG" ]; then break @@ -321,11 +317,15 @@ } #end +# start collecting dependency information +echo > "$TEMP_DIR/flags.mk" + DEPENDENCIES_FAILED= ERROR=0 #if( $dependencies.size() > 0 ) # unnamed dependencies TEMP_CFLAGS= +TEMP_CXXFLAGS= TEMP_LDFLAGS= #foreach( $dependency in $dependencies ) while true @@ -342,6 +342,14 @@ #end while true do + #foreach( $lang in $dependency.lang ) + if detect_${lang}_compiler ; then + : + else + ERROR=1 + break + fi + #end #if( $dependency.pkgconfig.size() > 0 ) if [ -z "$PKG_CONFIG" ]; then ERROR=1 @@ -385,13 +393,16 @@ done #end -# add unnamed dependency flags to config.mk -echo >> "$TEMP_DIR/config.mk" +# add general dependency flags to flags.mk +echo "# general flags" >> "$TEMP_DIR/flags.mk" if [ -n "${TEMP_CFLAGS}" ]; then - echo "CFLAGS += $TEMP_CFLAGS" >> "$TEMP_DIR/config.mk" + echo "CFLAGS += $TEMP_CFLAGS" >> "$TEMP_DIR/flags.mk" +fi +if [ -n "${TEMP_CXXFLAGS}" ]; then + echo "CXXFLAGS += $TEMP_CXXFLAGS" >> "$TEMP_DIR/flags.mk" fi if [ -n "${TEMP_LDFLAGS}" ]; then - echo "LDFLAGS += $TEMP_LDFLAGS" >> "$TEMP_DIR/config.mk" + echo "LDFLAGS += $TEMP_LDFLAGS" >> "$TEMP_DIR/flags.mk" fi #end @@ -413,6 +424,7 @@ fi #foreach( $def in $val.defines ) TEMP_CFLAGS="$TEMP_CFLAGS ${def.toFlags()}" + TEMP_CXXFLAGS="$TEMP_CXXFLAGS ${def.toFlags()}" #end #if( $val.hasMake() ) cat >> "$TEMP_DIR/make.mk" << __EOF__ @@ -429,12 +441,16 @@ # #foreach( $target in $targets ) +echo >> "$TEMP_DIR/flags.mk" #if ( $target.name ) # Target: $target.name +echo "# flags for target $target.name" >> "$TEMP_DIR/flags.mk" #else # Target +echo "# flags for unnamed target" >> "$TEMP_DIR/flags.mk" #end TEMP_CFLAGS= +TEMP_CXXFLAGS= TEMP_LDFLAGS= #foreach( $dependency in $target.dependencies ) @@ -506,21 +522,27 @@ fi #end -echo >> "$TEMP_DIR/config.mk" if [ -n "${TEMP_CFLAGS}" ]; then - echo "${target.getCFlags()} += $TEMP_CFLAGS" >> "$TEMP_DIR/config.mk" + echo "${target.getCFlags()} += $TEMP_CFLAGS" >> "$TEMP_DIR/flags.mk" +fi +if [ -n "${TEMP_CXXFLAGS}" ]; then + echo "${target.getCXXFlags()} += $TEMP_CXXFLAGS" >> "$TEMP_DIR/flags.mk" fi if [ "$BUILD_TYPE" = "debug" ]; then - echo '${target.getCFlags()} += ${DEBUG_FLAGS}' >> "$TEMP_DIR/config.mk" + echo '${target.getCFlags()} += ${DEBUG_CC_FLAGS}' >> "$TEMP_DIR/flags.mk" + echo '${target.getCXXFlags()} += ${DEBUG_CXX_FLAGS}' >> "$TEMP_DIR/flags.mk" fi if [ "$BUILD_TYPE" = "release" ]; then - echo '${target.getCFlags()} += ${RELEASE_FLAGS}' >> "$TEMP_DIR/config.mk" + echo '${target.getCFlags()} += ${RELEASE_CC_FLAGS}' >> "$TEMP_DIR/flags.mk" + echo '${target.getCXXFlags()} += ${RELEASE_CXX_FLAGS}' >> "$TEMP_DIR/flags.mk" fi if [ -n "${TEMP_LDFLAGS}" ]; then - echo "${target.getLDFlags()} += $TEMP_LDFLAGS" >> "$TEMP_DIR/config.mk" + echo "${target.getLDFlags()} += $TEMP_LDFLAGS" >> "$TEMP_DIR/flags.mk" fi #end + +# final result if [ $ERROR -ne 0 ]; then echo echo "Error: Unresolved dependencies" @@ -548,7 +570,16 @@ #end #end echo -cat "$TEMP_DIR/config.mk" "$TEMP_DIR/make.mk" > config.mk + +# generate the config.mk file +cat > "$TEMP_DIR/config.mk" << __EOF__ +# +# config.mk generated by configure +# + +__EOF__ +write_toolchain_defaults "$TEMP_DIR/config.mk" +cat "$TEMP_DIR/config.mk" "$TEMP_DIR/flags.mk" "$TEMP_DIR/make.mk" > config.mk rm -Rf "$TEMP_DIR"