1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/configure Fri Sep 22 23:26:23 2023 +0200 1.3 @@ -0,0 +1,314 @@ 1.4 +#!/bin/sh 1.5 + 1.6 +# create temporary directory 1.7 +TEMP_DIR=".tmp-`uname -n`" 1.8 +rm -Rf "$TEMP_DIR" 1.9 +if mkdir -p "$TEMP_DIR"; then 1.10 + : 1.11 +else 1.12 + echo "Cannot create tmp dir $TEMP_DIR" 1.13 + echo "Abort" 1.14 + exit 1 1.15 +fi 1.16 +touch "$TEMP_DIR/options" 1.17 +touch "$TEMP_DIR/features" 1.18 + 1.19 +# define standard variables 1.20 +PREFIX=/usr 1.21 +EPREFIX= 1.22 +BINDIR= 1.23 +SBINDIR= 1.24 +LIBDIR= 1.25 +LIBEXECDIR= 1.26 +DATADIR= 1.27 +SYSCONFDIR= 1.28 +SHAREDSTATEDIR= 1.29 +LOCALSTATEDIR= 1.30 +INCLUDEDIR= 1.31 +INFODIR= 1.32 +MANDIR= 1.33 + 1.34 +# custom variables 1.35 + 1.36 +# features 1.37 + 1.38 +# clean abort 1.39 +abort_configure() 1.40 +{ 1.41 + rm -Rf "$TEMP_DIR" 1.42 + exit 1 1.43 +} 1.44 + 1.45 +# help text 1.46 +printhelp() 1.47 +{ 1.48 + echo "Usage: $0 [OPTIONS]..." 1.49 + cat << __EOF__ 1.50 +Installation directories: 1.51 + --prefix=PREFIX path prefix for architecture-independent files 1.52 + [/usr] 1.53 + --exec-prefix=EPREFIX path prefix for architecture-dependent files 1.54 + [PREFIX] 1.55 + 1.56 + --bindir=DIR user executables [EPREFIX/bin] 1.57 + --sbindir=DIR system admin executables [EPREFIX/sbin] 1.58 + --libexecdir=DIR program executables [EPREFIX/libexec] 1.59 + --sysconfdir=DIR system configuration files [PREFIX/etc] 1.60 + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] 1.61 + --localstatedir=DIR modifiable single-machine data [PREFIX/var] 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 + 1.69 +__EOF__ 1.70 +} 1.71 + 1.72 +# 1.73 +# parse arguments 1.74 +# 1.75 +BUILD_TYPE="default" 1.76 +for ARG in "$@" 1.77 +do 1.78 + case "$ARG" in 1.79 + "--prefix="*) PREFIX=${ARG#--prefix=} ;; 1.80 + "--exec-prefix="*) EPREFIX=${ARG#--exec-prefix=} ;; 1.81 + "--bindir="*) BINDIR=${ARG#----bindir=} ;; 1.82 + "--sbindir="*) SBINDIR=${ARG#--sbindir=} ;; 1.83 + "--libdir="*) LIBDIR=${ARG#--libdir=} ;; 1.84 + "--libexecdir="*) LIBEXECDIR=${ARG#--libexecdir=} ;; 1.85 + "--datadir="*) DATADIR=${ARG#--datadir=} ;; 1.86 + "--sysconfdir="*) SYSCONFDIR=${ARG#--sysconfdir=} ;; 1.87 + "--sharedstatedir="*) SHAREDSTATEDIR=${ARG#--sharedstatedir=} ;; 1.88 + "--localstatedir="*) LOCALSTATEDIR=${ARG#--localstatedir=} ;; 1.89 + "--includedir="*) INCLUDEDIR=${ARG#--includedir=} ;; 1.90 + "--infodir="*) INFODIR=${ARG#--infodir=} ;; 1.91 + "--mandir"*) MANDIR=${ARG#--mandir} ;; 1.92 + "--help"*) printhelp; abort_configure ;; 1.93 + "--debug") BUILD_TYPE="debug" ;; 1.94 + "--release") BUILD_TYPE="release" ;; 1.95 + "-"*) echo "unknown option: $ARG"; abort_configure ;; 1.96 + esac 1.97 +done 1.98 + 1.99 + 1.100 +# set dir variables 1.101 +: ${EPREFIX:="$PREFIX"} 1.102 +: ${BINDIR:="$EPREFIX/bin"} 1.103 +: ${SBINDIR:="$EPREFIX/sbin"} 1.104 +: ${LIBDIR:="$EPREFIX/lib"} 1.105 +: ${LIBEXECDIR:="$EPREFIX/libexec"} 1.106 +: ${DATADIR:="$PREFIX/share"} 1.107 +: ${SYSCONFDIR:="$PREFIX/etc"} 1.108 +: ${SHAREDSTATEDIR:="$PREFIX/com"} 1.109 +: ${LOCALSTATEDIR:="$PREFIX/var"} 1.110 +: ${INCLUDEDIR:="$PREFIX/include"} 1.111 +: ${INFODIR:="$PREFIX/info"} 1.112 +: ${MANDIR:="$PREFIX/man"} 1.113 + 1.114 +# Test for availability of pkg-config 1.115 +PKG_CONFIG=`command -v pkg-config` 1.116 +: ${PKG_CONFIG:="false"} 1.117 + 1.118 +# Simple uname based platform detection 1.119 +# $PLATFORM is used for platform dependent dependency selection 1.120 +OS=`uname -s` 1.121 +OS_VERSION=`uname -r` 1.122 +printf "detect platform... " 1.123 +if [ "$OS" = "SunOS" ]; then 1.124 + PLATFORM="solaris sunos unix svr4" 1.125 +fi 1.126 +if [ "$OS" = "Linux" ]; then 1.127 + PLATFORM="linux unix" 1.128 +fi 1.129 +if [ "$OS" = "FreeBSD" ]; then 1.130 + PLATFORM="freebsd bsd unix" 1.131 +fi 1.132 +if [ "$OS" = "Darwin" ]; then 1.133 + PLATFORM="macos osx bsd unix" 1.134 +fi 1.135 +if echo "$OS" | grep -i "MINGW" > /dev/null; then 1.136 + PLATFORM="windows mingw" 1.137 +fi 1.138 +: ${PLATFORM:="unix"} 1.139 + 1.140 +PLATFORM_NAME=`echo "$PLATFORM" | cut -f1 -d' ' -` 1.141 +echo "$PLATFORM_NAME" 1.142 + 1.143 +isplatform() 1.144 +{ 1.145 + for p in $PLATFORM 1.146 + do 1.147 + if [ "$p" = "$1" ]; then 1.148 + return 0 1.149 + fi 1.150 + done 1.151 + return 1 1.152 +} 1.153 +notisplatform() 1.154 +{ 1.155 + for p in $PLATFORM 1.156 + do 1.157 + if [ "$p" = "$1" ]; then 1.158 + return 1 1.159 + fi 1.160 + done 1.161 + return 0 1.162 +} 1.163 + 1.164 + 1.165 +# generate vars.mk 1.166 +cat > "$TEMP_DIR/vars.mk" << __EOF__ 1.167 +PREFIX=$PREFIX 1.168 +EPREFIX=$EPREFIX 1.169 +BINDIR=$BINDIR 1.170 +SBINDIR=$SBINDIR 1.171 +LIBDIR=$LIBDIR 1.172 +LIBEXECDIR=$LIBEXECDIR 1.173 +DATADIR=$DATADIR 1.174 +SYSCONFDIR=$SYSCONFDIR 1.175 +SHAREDSTATEDIR=$SHAREDSTATEDIR 1.176 +LOCALSTATEDIR=$LOCALSTATEDIR 1.177 +INCLUDEDIR=$INCLUDEDIR 1.178 +INFODIR=$INFODIR 1.179 +MANDIR=$MANDIR 1.180 +__EOF__ 1.181 +sort -u -o "$TEMP_DIR/vars.mk" "$TEMP_DIR/vars.mk" 1.182 + 1.183 + 1.184 +# toolchain detection utilities 1.185 +. make/toolchain.sh 1.186 + 1.187 +# 1.188 +# DEPENDENCIES 1.189 +# 1.190 + 1.191 +# check languages 1.192 +lang_c= 1.193 +lang_cpp= 1.194 +if detect_c_compiler ; then 1.195 + lang_c=1 1.196 +fi 1.197 + 1.198 +# create buffer for make variables required by dependencies 1.199 +echo > "$TEMP_DIR/make.mk" 1.200 + 1.201 +test_pkg_config() 1.202 +{ 1.203 + if "$PKG_CONFIG" --exists "$1" ; then : 1.204 + else return 1 ; fi 1.205 + if [ -z "$2" ] || "$PKG_CONFIG" --atleast-version="$2" "$1" ; then : 1.206 + else return 1 ; fi 1.207 + if [ -z "$3" ] || "$PKG_CONFIG" --exact-version="$3" "$1" ; then : 1.208 + else return 1 ; fi 1.209 + if [ -z "$4" ] || "$PKG_CONFIG" --max-version="$4" "$1" ; then : 1.210 + else return 1 ; fi 1.211 + return 0 1.212 +} 1.213 + 1.214 + 1.215 + 1.216 + 1.217 + 1.218 +# start collecting dependency information 1.219 +echo > "$TEMP_DIR/flags.mk" 1.220 + 1.221 +DEPENDENCIES_FAILED= 1.222 +ERROR=0 1.223 +# unnamed dependencies 1.224 +TEMP_CFLAGS= 1.225 +TEMP_CXXFLAGS= 1.226 +TEMP_LDFLAGS= 1.227 +while true 1.228 +do 1.229 + while true 1.230 + do 1.231 + if [ -z "$lang_c" ] ; then 1.232 + ERROR=1 1.233 + break 1.234 + fi 1.235 + 1.236 + break 1.237 + done 1.238 + break 1.239 +done 1.240 + 1.241 +# add general dependency flags to flags.mk 1.242 +echo "# general flags" >> "$TEMP_DIR/flags.mk" 1.243 +if [ -n "${TEMP_CFLAGS}" ]; then 1.244 + echo "CFLAGS += $TEMP_CFLAGS" >> "$TEMP_DIR/flags.mk" 1.245 +fi 1.246 +if [ -n "${TEMP_CXXFLAGS}" ]; then 1.247 + echo "CXXFLAGS += $TEMP_CXXFLAGS" >> "$TEMP_DIR/flags.mk" 1.248 +fi 1.249 +if [ -n "${TEMP_LDFLAGS}" ]; then 1.250 + echo "LDFLAGS += $TEMP_LDFLAGS" >> "$TEMP_DIR/flags.mk" 1.251 +fi 1.252 + 1.253 +# 1.254 +# OPTION VALUES 1.255 +# 1.256 + 1.257 +# 1.258 +# TARGETS 1.259 +# 1.260 + 1.261 +echo >> "$TEMP_DIR/flags.mk" 1.262 +# Target: default 1.263 +echo "# flags for target default" >> "$TEMP_DIR/flags.mk" 1.264 +TEMP_CFLAGS= 1.265 +TEMP_CXXFLAGS= 1.266 +TEMP_LDFLAGS= 1.267 + 1.268 + 1.269 +# Features 1.270 + 1.271 + 1.272 +if [ -n "${TEMP_CFLAGS}" ]; then 1.273 + echo "CFLAGS += $TEMP_CFLAGS" >> "$TEMP_DIR/flags.mk" 1.274 +fi 1.275 +if [ -n "${TEMP_CXXFLAGS}" ]; then 1.276 + echo "CXXFLAGS += $TEMP_CXXFLAGS" >> "$TEMP_DIR/flags.mk" 1.277 +fi 1.278 +if [ "$BUILD_TYPE" = "debug" ]; then 1.279 + echo 'CFLAGS += ${DEBUG_CC_FLAGS}' >> "$TEMP_DIR/flags.mk" 1.280 + echo 'CXXFLAGS += ${DEBUG_CXX_FLAGS}' >> "$TEMP_DIR/flags.mk" 1.281 +fi 1.282 +if [ "$BUILD_TYPE" = "release" ]; then 1.283 + echo 'CFLAGS += ${RELEASE_CC_FLAGS}' >> "$TEMP_DIR/flags.mk" 1.284 + echo 'CXXFLAGS += ${RELEASE_CXX_FLAGS}' >> "$TEMP_DIR/flags.mk" 1.285 +fi 1.286 +if [ -n "${TEMP_LDFLAGS}" ]; then 1.287 + echo "LDFLAGS += $TEMP_LDFLAGS" >> "$TEMP_DIR/flags.mk" 1.288 +fi 1.289 + 1.290 + 1.291 +# final result 1.292 +if [ $ERROR -ne 0 ]; then 1.293 + echo 1.294 + echo "Error: Unresolved dependencies" 1.295 + echo "$DEPENDENCIES_FAILED" 1.296 + abort_configure 1.297 +fi 1.298 + 1.299 +echo "configure finished" 1.300 +echo 1.301 +echo "Build Config:" 1.302 +echo " PREFIX: $PREFIX" 1.303 +echo " TOOLCHAIN: $TOOLCHAIN_NAME" 1.304 +echo 1.305 + 1.306 +# generate the config.mk file 1.307 +cat > "$TEMP_DIR/config.mk" << __EOF__ 1.308 +# 1.309 +# config.mk generated by configure 1.310 +# 1.311 + 1.312 +__EOF__ 1.313 +write_toolchain_defaults "$TEMP_DIR/toolchain.mk" 1.314 +cat "$TEMP_DIR/vars.mk" "$TEMP_DIR/toolchain.mk" "$TEMP_DIR/flags.mk" "$TEMP_DIR/make.mk" > config.mk 1.315 +rm -Rf "$TEMP_DIR" 1.316 + 1.317 +