1.1 --- a/make/configure.vm Sun Oct 01 14:25:26 2023 +0200 1.2 +++ b/make/configure.vm Tue Oct 10 20:34:51 2023 +0200 1.3 @@ -14,33 +14,37 @@ 1.4 touch "$TEMP_DIR/features" 1.5 1.6 # define standard variables 1.7 -PREFIX=/usr 1.8 -EPREFIX= 1.9 -BINDIR= 1.10 -SBINDIR= 1.11 -LIBDIR= 1.12 -LIBEXECDIR= 1.13 -DATADIR= 1.14 -SYSCONFDIR= 1.15 -SHAREDSTATEDIR= 1.16 -LOCALSTATEDIR= 1.17 -INCLUDEDIR= 1.18 -INFODIR= 1.19 -MANDIR= 1.20 +# also define standard prefix (this is where we will search for config.site) 1.21 +prefix=/usr 1.22 +exec_prefix= 1.23 +bindir= 1.24 +sbindir= 1.25 +libdir= 1.26 +libexecdir= 1.27 +datarootdir= 1.28 +datadir= 1.29 +sysconfdir= 1.30 +sharedstatedir= 1.31 +localstatedir= 1.32 +runstatedir= 1.33 +includedir= 1.34 +infodir= 1.35 +localedir= 1.36 +mandir= 1.37 1.38 # custom variables 1.39 #foreach( $var in $vars ) 1.40 #if( $var.exec ) 1.41 ${var.varName}=`${var.value}` 1.42 #else 1.43 -${var.varName}=${var.value} 1.44 +${var.varName}="${var.value}" 1.45 #end 1.46 #end 1.47 1.48 # features 1.49 #foreach( $feature in $features ) 1.50 -#if( ${feature.isDefault()} ) 1.51 -${feature.getVarName()}=auto 1.52 +#if( ${feature.auto} ) 1.53 +${feature.varName}=auto 1.54 #end 1.55 #end 1.56 1.57 @@ -68,26 +72,28 @@ 1.58 --sysconfdir=DIR system configuration files [PREFIX/etc] 1.59 --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] 1.60 --localstatedir=DIR modifiable single-machine data [PREFIX/var] 1.61 + --runstatedir=DIR run-time variable data [LOCALSTATEDIR/run] 1.62 --libdir=DIR object code libraries [EPREFIX/lib] 1.63 --includedir=DIR C header files [PREFIX/include] 1.64 --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] 1.65 --datadir=DIR read-only architecture-independent data [DATAROOTDIR] 1.66 --infodir=DIR info documentation [DATAROOTDIR/info] 1.67 --mandir=DIR man documentation [DATAROOTDIR/man] 1.68 + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] 1.69 1.70 #if( $options.size() > 0 ) 1.71 Options: 1.72 --debug add extra compile flags for debug builds 1.73 --release add extra compile flags for release builds 1.74 #foreach( $opt in $options ) 1.75 - --${opt.getArgument()}=${opt.getValuesString()} 1.76 + --${opt.argument}=${opt.valuesString} 1.77 #end 1.78 1.79 #end 1.80 #if( $features.size() > 0 ) 1.81 Optional Features: 1.82 #foreach( $feature in $features ) 1.83 -#if( $feature.default ) 1.84 +#if( $feature.auto ) 1.85 --disable-${feature.arg} 1.86 #else 1.87 --enable-${feature.arg} 1.88 @@ -106,28 +112,30 @@ 1.89 for ARG in "$@" 1.90 do 1.91 case "$ARG" in 1.92 - "--prefix="*) PREFIX=${D}{ARG#--prefix=} ;; 1.93 - "--exec-prefix="*) EPREFIX=${D}{ARG#--exec-prefix=} ;; 1.94 - "--bindir="*) BINDIR=${D}{ARG#----bindir=} ;; 1.95 - "--sbindir="*) SBINDIR=${D}{ARG#--sbindir=} ;; 1.96 - "--libdir="*) LIBDIR=${D}{ARG#--libdir=} ;; 1.97 - "--libexecdir="*) LIBEXECDIR=${D}{ARG#--libexecdir=} ;; 1.98 - "--datadir="*) DATADIR=${D}{ARG#--datadir=} ;; 1.99 - "--sysconfdir="*) SYSCONFDIR=${D}{ARG#--sysconfdir=} ;; 1.100 - "--sharedstatedir="*) SHAREDSTATEDIR=${D}{ARG#--sharedstatedir=} ;; 1.101 - "--localstatedir="*) LOCALSTATEDIR=${D}{ARG#--localstatedir=} ;; 1.102 - "--includedir="*) INCLUDEDIR=${D}{ARG#--includedir=} ;; 1.103 - "--infodir="*) INFODIR=${D}{ARG#--infodir=} ;; 1.104 - "--mandir"*) MANDIR=${D}{ARG#--mandir} ;; 1.105 + "--prefix="*) prefix=${D}{ARG#--prefix=} ;; 1.106 + "--exec-prefix="*) exec_prefix=${D}{ARG#--exec-prefix=} ;; 1.107 + "--bindir="*) bindir=${D}{ARG#----bindir=} ;; 1.108 + "--sbindir="*) sbindir=${D}{ARG#--sbindir=} ;; 1.109 + "--libdir="*) libdir=${D}{ARG#--libdir=} ;; 1.110 + "--libexecdir="*) libexecdir=${D}{ARG#--libexecdir=} ;; 1.111 + "--datarootdir="*) datarootdir=${D}{ARG#--datarootdir=} ;; 1.112 + "--datadir="*) datadir=${D}{ARG#--datadir=} ;; 1.113 + "--sysconfdir="*) sysconfdir=${D}{ARG#--sysconfdir=} ;; 1.114 + "--sharedstatedir="*) sharedstatedir=${D}{ARG#--sharedstatedir=} ;; 1.115 + "--localstatedir="*) localstatedir=${D}{ARG#--localstatedir=} ;; 1.116 + "--includedir="*) includedir=${D}{ARG#--includedir=} ;; 1.117 + "--infodir="*) infodir=${D}{ARG#--infodir=} ;; 1.118 + "--mandir"*) mandir=${D}{ARG#--mandir} ;; 1.119 + "--localedir"*) localedir=${D}{ARG#--localedir} ;; 1.120 "--help"*) printhelp; abort_configure ;; 1.121 "--debug") BUILD_TYPE="debug" ;; 1.122 "--release") BUILD_TYPE="release" ;; 1.123 #foreach( $opt in $options ) 1.124 - "--${opt.getArgument()}="*) ${opt.getVarName()}=${D}{ARG#--${opt.getArgument()}=} ;; 1.125 + "--${opt.argument}="*) ${opt.varName}=${D}{ARG#--${opt.argument}=} ;; 1.126 #end 1.127 #foreach( $feature in $features ) 1.128 - "--enable-${feature.arg}") ${feature.getVarName()}=on ;; 1.129 - "--disable-${feature.arg}") unset ${feature.getVarName()} ;; 1.130 + "--enable-${feature.arg}") ${feature.varName}=on ;; 1.131 + "--disable-${feature.arg}") unset ${feature.varName} ;; 1.132 #end 1.133 "-"*) echo "unknown option: $ARG"; abort_configure ;; 1.134 esac 1.135 @@ -135,19 +143,41 @@ 1.136 1.137 ## Begin unparsed content. ** 1.138 #[[ 1.139 -# set dir variables 1.140 -: ${EPREFIX:="$PREFIX"} 1.141 -: ${BINDIR:="$EPREFIX/bin"} 1.142 -: ${SBINDIR:="$EPREFIX/sbin"} 1.143 -: ${LIBDIR:="$EPREFIX/lib"} 1.144 -: ${LIBEXECDIR:="$EPREFIX/libexec"} 1.145 -: ${DATADIR:="$PREFIX/share"} 1.146 -: ${SYSCONFDIR:="$PREFIX/etc"} 1.147 -: ${SHAREDSTATEDIR:="$PREFIX/com"} 1.148 -: ${LOCALSTATEDIR:="$PREFIX/var"} 1.149 -: ${INCLUDEDIR:="$PREFIX/include"} 1.150 -: ${INFODIR:="$PREFIX/info"} 1.151 -: ${MANDIR:="$PREFIX/man"} 1.152 + 1.153 +# set defaults for dir variables 1.154 +: ${exec_prefix:="$prefix"} 1.155 +: ${bindir:='${exec_prefix}/bin'} 1.156 +: ${sbindir:='${exec_prefix}/sbin'} 1.157 +: ${libdir:='${exec_prefix}/lib'} 1.158 +: ${libexecdir:='${exec_prefix}/libexec'} 1.159 +: ${datarootdir:='${prefix}/share'} 1.160 +: ${datadir:='${datarootdir}'} 1.161 +: ${sysconfdir:='${prefix}/etc'} 1.162 +: ${sharedstatedir:='${prefix}/com'} 1.163 +: ${localstatedir:='${prefix}/var'} 1.164 +: ${runstatedir:='${localstatedir}/run'} 1.165 +: ${includedir:='${prefix}/include'} 1.166 +: ${infodir:='${datarootdir}/info'} 1.167 +: ${mandir:='${datarootdir}/man'} 1.168 +: ${localedir:='${datarootdir}/locale'} 1.169 + 1.170 +# check if a config.site exists and load it 1.171 +if [ -n "$CONFIG_SITE" ]; then 1.172 + # CONFIG_SITE may contain space separated file names 1.173 + for cs in $CONFIG_SITE; do 1.174 + printf "loading defaults from $cs... " 1.175 + . "$cs" 1.176 + echo ok 1.177 + done 1.178 +elif [ -f "$prefix/share/config.site" ]; then 1.179 + printf "loading site defaults... " 1.180 + . "$prefix/share/config.site" 1.181 + echo ok 1.182 +elif [ -f "$prefix/etc/config.site" ]; then 1.183 + printf "loading site defaults... " 1.184 + . "$prefix/etc/config.site" 1.185 + echo ok 1.186 +fi 1.187 1.188 # Test for availability of pkg-config 1.189 PKG_CONFIG=`command -v pkg-config` 1.190 @@ -203,25 +233,26 @@ 1.191 1.192 # generate vars.mk 1.193 cat > "$TEMP_DIR/vars.mk" << __EOF__ 1.194 -PREFIX=$PREFIX 1.195 -EPREFIX=$EPREFIX 1.196 -BINDIR=$BINDIR 1.197 -SBINDIR=$SBINDIR 1.198 -LIBDIR=$LIBDIR 1.199 -LIBEXECDIR=$LIBEXECDIR 1.200 -DATADIR=$DATADIR 1.201 -SYSCONFDIR=$SYSCONFDIR 1.202 -SHAREDSTATEDIR=$SHAREDSTATEDIR 1.203 -LOCALSTATEDIR=$LOCALSTATEDIR 1.204 -INCLUDEDIR=$INCLUDEDIR 1.205 -INFODIR=$INFODIR 1.206 -MANDIR=$MANDIR 1.207 +prefix="$prefix" 1.208 +exec_prefix="$exec_prefix" 1.209 +bindir="$bindir" 1.210 +sbindir="$sbindir" 1.211 +libdir="$libdir" 1.212 +libexecdir="$libexecdir" 1.213 +datarootdir="$datarootdir" 1.214 +datadir="$datadir" 1.215 +sysconfdir="$sysconfdir" 1.216 +sharedstatedir="$sharedstatedir" 1.217 +localstatedir="$localstatedir" 1.218 +runstatedir="$runstatedir" 1.219 +includedir="$includedir" 1.220 +infodir="$infodir" 1.221 +mandir="$mandir" 1.222 +localedir="$localedir" 1.223 #foreach( $var in $vars ) 1.224 -${var.varName}=$${var.varName} 1.225 +${var.varName}="${D}${var.varName}" 1.226 #end 1.227 __EOF__ 1.228 -sort -u -o "$TEMP_DIR/vars.mk" "$TEMP_DIR/vars.mk" 1.229 - 1.230 1.231 # toolchain detection utilities 1.232 . make/toolchain.sh 1.233 @@ -256,11 +287,11 @@ 1.234 } 1.235 1.236 #foreach( $dependency in $namedDependencies ) 1.237 -dependency_error_${dependency.name}() 1.238 +dependency_error_${dependency.id}() 1.239 { 1.240 printf "checking for ${dependency.name}... " 1.241 - #foreach( $sub in $dependency.getSubdependencies() ) 1.242 - # dependency $sub.getFullName() 1.243 + #foreach( $sub in $dependency.subdependencies ) 1.244 + # dependency $sub.fullName 1.245 while true 1.246 do 1.247 #if( $sub.platform ) 1.248 @@ -268,7 +299,7 @@ 1.249 break 1.250 fi 1.251 #end 1.252 - #foreach( $np in $sub.getNotList() ) 1.253 + #foreach( $np in $sub.notList ) 1.254 if isplatform "${np}"; then 1.255 break 1.256 fi 1.257 @@ -346,7 +377,7 @@ 1.258 break 1.259 fi 1.260 #end 1.261 - #foreach( $np in $dependency.getNotList() ) 1.262 + #foreach( $np in $dependency.notList ) 1.263 if isplatform "${np}"; then 1.264 break 1.265 fi 1.266 @@ -404,10 +435,10 @@ 1.267 1.268 # add general dependency flags to flags.mk 1.269 echo "# general flags" >> "$TEMP_DIR/flags.mk" 1.270 -if [ -n "${TEMP_CFLAGS}" ]; then 1.271 +if [ -n "${TEMP_CFLAGS}" -a -n "$lang_c" ]; then 1.272 echo "CFLAGS += $TEMP_CFLAGS" >> "$TEMP_DIR/flags.mk" 1.273 fi 1.274 -if [ -n "${TEMP_CXXFLAGS}" ]; then 1.275 +if [ -n "${TEMP_CXXFLAGS}" -a -n "$lang_cpp" ]; then 1.276 echo "CXXFLAGS += $TEMP_CXXFLAGS" >> "$TEMP_DIR/flags.mk" 1.277 fi 1.278 if [ -n "${TEMP_LDFLAGS}" ]; then 1.279 @@ -452,10 +483,10 @@ 1.280 #foreach( $target in $targets ) 1.281 echo >> "$TEMP_DIR/flags.mk" 1.282 #if ( $target.name ) 1.283 -# Target: $target.name 1.284 +echo "configuring target: $target.name" 1.285 echo "# flags for target $target.name" >> "$TEMP_DIR/flags.mk" 1.286 #else 1.287 -# Target 1.288 +echo "configuring global target" 1.289 echo "# flags for unnamed target" >> "$TEMP_DIR/flags.mk" 1.290 #end 1.291 TEMP_CFLAGS= 1.292 @@ -471,28 +502,29 @@ 1.293 1.294 # Features 1.295 #foreach( $feature in $target.features ) 1.296 -if [ -n "$${feature.getVarName()}" ]; then 1.297 +if [ -n "${D}${feature.varName}" ]; then 1.298 #foreach( $dependency in $feature.dependencies ) 1.299 # check dependency 1.300 if dependency_error_$dependency ; then 1.301 # "auto" features can fail and are just disabled in this case 1.302 - if [ "$${feature.getVarName()}" = "auto" ]; then 1.303 - DISABLE_${feature.getVarName()}=1 1.304 + if [ "${D}${feature.varName}" = "auto" ]; then 1.305 + DISABLE_${feature.varName}=1 1.306 else 1.307 DEPENDENCIES_FAILED="$DEPENDENCIES_FAILED ${dependency} " 1.308 ERROR=1 1.309 fi 1.310 fi 1.311 #end 1.312 - if [ -n "$DISABLE_${feature.getVarName()}" ]; then 1.313 - unset ${feature.getVarName()} 1.314 + if [ -n "$DISABLE_${feature.varName}" ]; then 1.315 + unset ${feature.varName} 1.316 fi 1.317 fi 1.318 #end 1.319 1.320 #foreach( $opt in $target.options ) 1.321 # Option: --${opt.argument} 1.322 -if [ -z ${D}${opt.getVarName()} ]; then 1.323 +if [ -z "${D}${opt.varName}" ]; then 1.324 + echo "auto-detecting option '${opt.argument}'" 1.325 SAVED_ERROR="$ERROR" 1.326 SAVED_DEPENDENCIES_FAILED="$DEPENDENCIES_FAILED" 1.327 ERROR=1 1.328 @@ -515,41 +547,52 @@ 1.329 done 1.330 if [ $ERROR -ne 0 ]; then 1.331 SAVED_ERROR=1 1.332 + SAVED_DEPENDENCIES_FAILED="option '${opt.argument}' $SAVED_DEPENDENCIES_FAILED" 1.333 fi 1.334 ERROR="$SAVED_ERROR" 1.335 DEPENDENCIES_FAILED="$SAVED_DEPENDENCIES_FAILED" 1.336 else 1.337 + echo "checking option ${opt.argument} = ${D}${opt.varName}" 1.338 if false; then 1.339 false 1.340 #foreach( $optval in $opt.values ) 1.341 - elif [ "${D}${opt.getVarName()}" = "${optval.value}" ]; then 1.342 - echo " ${opt.argument}: ${D}${opt.getVarName()}" >> $TEMP_DIR/options 1.343 + elif [ "${D}${opt.varName}" = "${optval.value}" ]; then 1.344 + echo " ${opt.argument}: ${D}${opt.varName}" >> $TEMP_DIR/options 1.345 if $optval.func ; then 1.346 : 1.347 else 1.348 ERROR=1 1.349 + DEPENDENCIES_FAILED="option '${opt.argument}' $DEPENDENCIES_FAILED" 1.350 fi 1.351 #end 1.352 fi 1.353 fi 1.354 #end 1.355 1.356 -if [ -n "${TEMP_CFLAGS}" ]; then 1.357 - echo "${target.getCFlags()} += $TEMP_CFLAGS" >> "$TEMP_DIR/flags.mk" 1.358 +if [ -n "${TEMP_CFLAGS}" -a -n "$lang_c" ]; then 1.359 + echo "${target.cFlags} += $TEMP_CFLAGS" >> "$TEMP_DIR/flags.mk" 1.360 fi 1.361 -if [ -n "${TEMP_CXXFLAGS}" ]; then 1.362 - echo "${target.getCXXFlags()} += $TEMP_CXXFLAGS" >> "$TEMP_DIR/flags.mk" 1.363 +if [ -n "${TEMP_CXXFLAGS}" -a -n "$lang_cpp" ]; then 1.364 + echo "${target.cxxFlags} += $TEMP_CXXFLAGS" >> "$TEMP_DIR/flags.mk" 1.365 fi 1.366 if [ "$BUILD_TYPE" = "debug" ]; then 1.367 - echo '${target.getCFlags()} += ${DEBUG_CC_FLAGS}' >> "$TEMP_DIR/flags.mk" 1.368 - echo '${target.getCXXFlags()} += ${DEBUG_CXX_FLAGS}' >> "$TEMP_DIR/flags.mk" 1.369 + if [ -n "$lang_c" ]; then 1.370 + echo '${target.cFlags} += ${DEBUG_CC_FLAGS}' >> "$TEMP_DIR/flags.mk" 1.371 + fi 1.372 + if [ -n "$lang_cpp" ]; then 1.373 + echo '${target.cxxFlags} += ${DEBUG_CXX_FLAGS}' >> "$TEMP_DIR/flags.mk" 1.374 + fi 1.375 fi 1.376 if [ "$BUILD_TYPE" = "release" ]; then 1.377 - echo '${target.getCFlags()} += ${RELEASE_CC_FLAGS}' >> "$TEMP_DIR/flags.mk" 1.378 - echo '${target.getCXXFlags()} += ${RELEASE_CXX_FLAGS}' >> "$TEMP_DIR/flags.mk" 1.379 + if [ -n "$lang_c" ]; then 1.380 + echo '${target.cFlags} += ${RELEASE_CC_FLAGS}' >> "$TEMP_DIR/flags.mk" 1.381 + fi 1.382 + if [ -n "$lang_cpp" ]; then 1.383 + echo '${target.cxxFlags} += ${RELEASE_CXX_FLAGS}' >> "$TEMP_DIR/flags.mk" 1.384 + fi 1.385 fi 1.386 if [ -n "${TEMP_LDFLAGS}" ]; then 1.387 - echo "${target.getLDFlags()} += $TEMP_LDFLAGS" >> "$TEMP_DIR/flags.mk" 1.388 + echo "${target.ldFlags} += $TEMP_LDFLAGS" >> "$TEMP_DIR/flags.mk" 1.389 fi 1.390 1.391 #end 1.392 @@ -565,8 +608,8 @@ 1.393 echo "configure finished" 1.394 echo 1.395 echo "Build Config:" 1.396 -echo " PREFIX: $PREFIX" 1.397 -echo " TOOLCHAIN: $TOOLCHAIN_NAME" 1.398 +echo " PREFIX: $prefix" 1.399 +echo " TOOLCHAIN: $TOOLCHAIN_NAME" 1.400 #if ( $options.size() > 0 ) 1.401 echo "Options:" 1.402 cat "$TEMP_DIR/options" 1.403 @@ -574,7 +617,7 @@ 1.404 #if ( $features.size() > 0 ) 1.405 echo "Features:" 1.406 #foreach( $feature in $features ) 1.407 -if [ -n "$${feature.getVarName()}" ]; then 1.408 +if [ -n "${D}${feature.varName}" ]; then 1.409 echo " $feature.name: on" 1.410 else 1.411 echo " $feature.name: off"