--- a/configure Sun Jan 28 12:39:08 2024 +0100 +++ b/configure Sun Jan 28 13:10:18 2024 +0100 @@ -1,35 +1,48 @@ #!/bin/sh - -PREFIX=/usr -EPREFIX=$PREFIX - -BINDIR= -SBINDIR= -LIBDIR= -LIBEXECDIR= -DATADIR= -SYSCONFDIR= -SHAREDSTATEDIR= -LOCALSTATEDIR= -INCLUDEDIR= -INFODIR= -MANDIR= - -OS=`uname -s` -OS_VERSION=`uname -r` - +# create temporary directory TEMP_DIR=".tmp-`uname -n`" -mkdir -p "$TEMP_DIR" -if [ $? -ne 0 ]; then - echo "Cannot create tmp dir" +rm -Rf "$TEMP_DIR" +if mkdir -p "$TEMP_DIR"; then + : +else + echo "Cannot create tmp dir $TEMP_DIR" echo "Abort" + exit 1 fi touch "$TEMP_DIR/options" touch "$TEMP_DIR/features" +# define standard variables +# also define standard prefix (this is where we will search for config.site) +prefix=/usr +exec_prefix= +bindir= +sbindir= +libdir= +libexecdir= +datarootdir= +datadir= +sysconfdir= +sharedstatedir= +localstatedir= +runstatedir= +includedir= +infodir= +localedir= +mandir= + +# custom variables + # features +# clean abort +abort_configure() +{ + rm -Rf "$TEMP_DIR" + exit 1 +} + # help text printhelp() { @@ -47,12 +60,14 @@ --sysconfdir=DIR system configuration files [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR run-time variable data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --mandir=DIR man documentation [DATAROOTDIR/man] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] __EOF__ } @@ -60,99 +75,97 @@ # # parse arguments # +BUILD_TYPE="default" for ARG in "$@" do case "$ARG" in - "--prefix="*) PREFIX=${ARG#--prefix=} ;; - "--exec-prefix="*) EPREFIX=${ARG#--exec-prefix=} ;; - "--bindir="*) BINDIR=${ARG#----bindir=} ;; - "--sbindir="*) SBINDIR=${ARG#--sbindir=} ;; - "--libdir="*) LIBDIR=${ARG#--libdir=} ;; - "--libexecdir="*) LIBEXECDIR=${ARG#--libexecdir=} ;; - "--datadir="*) DATADIR=${ARG#--datadir=} ;; - "--sysconfdir="*) SYSCONFDIR=${ARG#--sysconfdir=} ;; - "--sharedstatedir="*) SHAREDSTATEDIR=${ARG#--sharedstatedir=} ;; - "--localstatedir="*) LOCALSTATEDIR=${ARG#--localstatedir=} ;; - "--includedir="*) INCLUDEDIR=${ARG#--includedir=} ;; - "--infodir="*) INFODIR=${ARG#--infodir=} ;; - "--mandir"*) MANDIR=${ARG#--mandir} ;; - "--help"*) printhelp; rm -Rf "$TEMP_DIR"; exit 1 ;; - "-"*) echo "unknown option: $ARG"; rm -Rf "$TEMP_DIR"; exit 1 ;; + "--prefix="*) prefix=${ARG#--prefix=} ;; + "--exec-prefix="*) exec_prefix=${ARG#--exec-prefix=} ;; + "--bindir="*) bindir=${ARG#----bindir=} ;; + "--sbindir="*) sbindir=${ARG#--sbindir=} ;; + "--libdir="*) libdir=${ARG#--libdir=} ;; + "--libexecdir="*) libexecdir=${ARG#--libexecdir=} ;; + "--datarootdir="*) datarootdir=${ARG#--datarootdir=} ;; + "--datadir="*) datadir=${ARG#--datadir=} ;; + "--sysconfdir="*) sysconfdir=${ARG#--sysconfdir=} ;; + "--sharedstatedir="*) sharedstatedir=${ARG#--sharedstatedir=} ;; + "--localstatedir="*) localstatedir=${ARG#--localstatedir=} ;; + "--includedir="*) includedir=${ARG#--includedir=} ;; + "--infodir="*) infodir=${ARG#--infodir=} ;; + "--mandir"*) mandir=${ARG#--mandir} ;; + "--localedir"*) localedir=${ARG#--localedir} ;; + "--help"*) printhelp; abort_configure ;; + "--debug") BUILD_TYPE="debug" ;; + "--release") BUILD_TYPE="release" ;; + "-"*) echo "unknown option: $ARG"; abort_configure ;; esac done -# set dir variables -if [ -z "$BINDIR" ]; then - BINDIR=$EPREFIX/bin -fi -if [ -z "$SBINDIR" ]; then - SBINDIR=$EPREFIX/sbin -fi -if [ -z "$LIBDIR" ]; then - LIBDIR=$EPREFIX/lib -fi -if [ -z "$LIBEXEC" ]; then - LIBEXECDIR=$EPREFIX/libexec -fi -if [ -z "$DATADIR" ]; then - DATADIR=$PREFIX/share -fi -if [ -z "$SYSCONFDIR" ]; then - SYSCONFDIR=$PREFIX/etc -fi -if [ -z "$SHAREDSTATEDIR" ]; then - SHAREDSTATEDIR=$PREFIX/com -fi -if [ -z "$LOCALSTATEDIR" ]; then - LOCALSTATEDIR=$PREFIX/var -fi -if [ -z "$INCLUDEDIR" ]; then - INCLUDEDIR=$PREFIX/include -fi -if [ -z "$INFODIR" ]; then - INFODIR=$PREFIX/info -fi -if [ -z "$MANDIR" ]; then - MANDIR=$PREFIX/man + + +# set defaults for dir variables +: ${exec_prefix:="$prefix"} +: ${bindir:='${exec_prefix}/bin'} +: ${sbindir:='${exec_prefix}/sbin'} +: ${libdir:='${exec_prefix}/lib'} +: ${libexecdir:='${exec_prefix}/libexec'} +: ${datarootdir:='${prefix}/share'} +: ${datadir:='${datarootdir}'} +: ${sysconfdir:='${prefix}/etc'} +: ${sharedstatedir:='${prefix}/com'} +: ${localstatedir:='${prefix}/var'} +: ${runstatedir:='${localstatedir}/run'} +: ${includedir:='${prefix}/include'} +: ${infodir:='${datarootdir}/info'} +: ${mandir:='${datarootdir}/man'} +: ${localedir:='${datarootdir}/locale'} + +# check if a config.site exists and load it +if [ -n "$CONFIG_SITE" ]; then + # CONFIG_SITE may contain space separated file names + for cs in $CONFIG_SITE; do + printf "loading defaults from $cs... " + . "$cs" + echo ok + done +elif [ -f "$prefix/share/config.site" ]; then + printf "loading site defaults... " + . "$prefix/share/config.site" + echo ok +elif [ -f "$prefix/etc/config.site" ]; then + printf "loading site defaults... " + . "$prefix/etc/config.site" + echo ok fi -which pkg-config > /dev/null -if [ $? -eq 0 ]; then - PKG_CONFIG=pkg-config -else - PKG_CONFIG=false -fi +# Test for availability of pkg-config +PKG_CONFIG=`command -v pkg-config` +: ${PKG_CONFIG:="false"} # Simple uname based platform detection # $PLATFORM is used for platform dependent dependency selection +OS=`uname -s` +OS_VERSION=`uname -r` printf "detect platform... " if [ "$OS" = "SunOS" ]; then PLATFORM="solaris sunos unix svr4" -fi -if [ "$OS" = "Linux" ]; then +elif [ "$OS" = "Linux" ]; then PLATFORM="linux unix" -fi -if [ "$OS" = "FreeBSD" ]; then +elif [ "$OS" = "FreeBSD" ]; then PLATFORM="freebsd bsd unix" -fi -if [ "$OS" = "Darwin" ]; then +elif [ "$OS" = "OpenBSD" ]; then + PLATFORM="openbsd bsd unix" +elif [ "$OS" = "NetBSD" ]; then + PLATFORM="netbsd bsd unix" +elif [ "$OS" = "Darwin" ]; then PLATFORM="macos osx bsd unix" -fi -echo "$OS" | grep -i "MINGW" > /dev/null -if [ $? -eq 0 ]; then +elif echo "$OS" | grep -i "MINGW" > /dev/null; then PLATFORM="windows mingw" fi - -if [ -z "$PLATFORM" ]; then - PLATFORM="unix" -fi +: ${PLATFORM:="unix"} -for p in $PLATFORM -do - PLATFORM_NAME=$p - break -done -echo $PLATFORM_NAME +PLATFORM_NAME=`echo "$PLATFORM" | cut -f1 -d' ' -` +echo "$PLATFORM_NAME" isplatform() { @@ -164,7 +177,7 @@ done return 1 } -isnotplatform() +notisplatform() { for p in $PLATFORM do @@ -174,93 +187,121 @@ done return 0 } - -# generate config.mk and config.h -cat > "$TEMP_DIR/config.mk" << __EOF__ -# -# config.mk generated by configure -# - -# general vars - -PREFIX=$PREFIX -EPREFIX=$EPREFIX +istoolchain() +{ + for t in $TOOLCHAIN + do + if [ "$t" = "$1" ]; then + return 0 + fi + done + return 1 +} +notistoolchain() +{ + for t in $TOOLCHAIN + do + if [ "$t" = "$1" ]; then + return 1 + fi + done + return 0 +} -BINDIR=$BINDIR -SBINDIR=$SBINDIR -LIBDIR=$LIBDIR -LIBEXECDIR=$LIBEXECDIR -DATADIR=$DATADIR -SYSCONFDIR=$SYSCONFDIR -SHAREDSTATEDIR=$SHAREDSTATEDIR -LOCALSTATEDIR=$LOCALSTATEDIR -INCLUDEDIR=$INCLUDEDIR -INFODIR=$INFODIR -MANDIR=$MANDIR +# generate vars.mk +cat > "$TEMP_DIR/vars.mk" << __EOF__ +prefix="$prefix" +exec_prefix="$exec_prefix" +bindir="$bindir" +sbindir="$sbindir" +libdir="$libdir" +libexecdir="$libexecdir" +datarootdir="$datarootdir" +datadir="$datadir" +sysconfdir="$sysconfdir" +sharedstatedir="$sharedstatedir" +localstatedir="$localstatedir" +runstatedir="$runstatedir" +includedir="$includedir" +infodir="$infodir" +mandir="$mandir" +localedir="$localedir" __EOF__ -echo > "$TEMP_DIR/make.mk" - -ENV_CFLAGS=$CFLAGS -ENV_LDFLAGS=$LDFLAGS -ENV_CXXFLAGS=$CXXFLAGS - -# Toolchain detection -# this will insert make vars to config.mk +# toolchain detection utilities . make/toolchain.sh -# add user specified flags to config.mk -echo "# project specific flags" >> "$TEMP_DIR/config.mk" -if [ -n "${ENV_CFLAGS}" ]; then - echo "CFLAGS += $ENV_CFLAGS" >> "$TEMP_DIR/config.mk" -fi -if [ -n "${ENV_CXXFLAGS}" ]; then - echo "CXXFLAGS += $ENV_CXXFLAGS" >> "$TEMP_DIR/config.mk" -fi -if [ -n "${ENV_LDFLAGS}" ]; then - echo "LDFLAGS += $ENV_LDFLAGS" >> "$TEMP_DIR/config.mk" -fi - # # DEPENDENCIES # -dependency_curl() +# check languages +lang_c= +lang_cpp= +if detect_c_compiler ; then + lang_c=1 +fi + +# create buffer for make variables required by dependencies +echo > "$TEMP_DIR/make.mk" + +test_pkg_config() { - printf "checking for curl... " + if "$PKG_CONFIG" --exists "$1" ; then : + else return 1 ; fi + if [ -z "$2" ] || "$PKG_CONFIG" --atleast-version="$2" "$1" ; then : + else return 1 ; fi + if [ -z "$3" ] || "$PKG_CONFIG" --exact-version="$3" "$1" ; then : + else return 1 ; fi + if [ -z "$4" ] || "$PKG_CONFIG" --max-version="$4" "$1" ; then : + else return 1 ; fi + return 0 +} + +print_check_msg() +{ + if [ -z "$1" ]; then + shift + printf "$@" + fi +} + +dependency_error_curl() +{ + print_check_msg "$dep_checked_curl" "checking for curl... " # dependency curl platform="windows" while true do - if isnotplatform "windows"; then + if notisplatform "windows"; then break fi TEMP_CFLAGS="$TEMP_CFLAGS -I/mingw/include" TEMP_LDFLAGS="$TEMP_LDFLAGS -lcurl" - echo yes - return 0 + print_check_msg "$dep_checked_curl" "yes\n" + dep_checked_curl=1 + return 1 done # dependency curl platform="macos" while true do - if isnotplatform "macos"; then + if notisplatform "macos"; then break fi - curl-config --cflags > /dev/null - if [ $? -eq 0 ]; then - TEMP_CFLAGS="$TEMP_CFLAGS `curl-config --cflags`" + if tmp_flags=`curl-config --cflags` ; then + TEMP_CFLAGS="$TEMP_CFLAGS $tmp_flags" else break fi - curl-config --ldflags > /dev/null - if [ $? -eq 0 ]; then - TEMP_LDFLAGS="$TEMP_LDFLAGS `curl-config --ldflags`" + if tmp_flags=`curl-config --ldflags` ; then + TEMP_LDFLAGS="$TEMP_LDFLAGS $tmp_flags" else break fi - echo yes - return 0 + print_check_msg "$dep_checked_curl" "yes\n" + dep_checked_curl=1 + return 1 done # dependency curl @@ -269,75 +310,79 @@ if [ -z "$PKG_CONFIG" ]; then break fi - $PKG_CONFIG libcurl - if [ $? -ne 0 ] ; then + if test_pkg_config "libcurl" "" "" "" ; then + TEMP_CFLAGS="$TEMP_CFLAGS `"$PKG_CONFIG" --cflags libcurl`" + TEMP_LDFLAGS="$TEMP_LDFLAGS `"$PKG_CONFIG" --libs libcurl`" + else break fi - TEMP_CFLAGS="$TEMP_CFLAGS `$PKG_CONFIG --cflags libcurl`" - TEMP_LDFLAGS="$TEMP_LDFLAGS `$PKG_CONFIG --libs libcurl`" - echo yes - return 0 + print_check_msg "$dep_checked_curl" "yes\n" + dep_checked_curl=1 + return 1 done # dependency curl while true do - curl-config --cflags > /dev/null - if [ $? -eq 0 ]; then - TEMP_CFLAGS="$TEMP_CFLAGS `curl-config --cflags`" + if tmp_flags=`curl-config --cflags` ; then + TEMP_CFLAGS="$TEMP_CFLAGS $tmp_flags" else break fi - curl-config --libs > /dev/null - if [ $? -eq 0 ]; then - TEMP_LDFLAGS="$TEMP_LDFLAGS `curl-config --libs`" + if tmp_flags=`curl-config --libs` ; then + TEMP_LDFLAGS="$TEMP_LDFLAGS $tmp_flags" else break fi - echo yes - return 0 + print_check_msg "$dep_checked_curl" "yes\n" + dep_checked_curl=1 + return 1 done - echo no - return 1 + print_check_msg "$dep_checked_curl" "no\n" + dep_checked_curl=1 + return 0 } -dependency_openssl() +dependency_error_openssl() { - printf "checking for openssl... " + print_check_msg "$dep_checked_openssl" "checking for openssl... " # dependency openssl platform="windows" while true do - if isnotplatform "windows"; then + if notisplatform "windows"; then break fi TEMP_LDFLAGS="$TEMP_LDFLAGS -lssl -lcrypto" - echo yes - return 0 + print_check_msg "$dep_checked_openssl" "yes\n" + dep_checked_openssl=1 + return 1 done # dependency openssl platform="macos" while true do - if isnotplatform "macos"; then + if notisplatform "macos"; then break fi TEMP_LDFLAGS="$TEMP_LDFLAGS -framework CoreFoundation" - echo yes - return 0 + print_check_msg "$dep_checked_openssl" "yes\n" + dep_checked_openssl=1 + return 1 done # dependency openssl platform="bsd" while true do - if isnotplatform "bsd"; then + if notisplatform "bsd"; then break fi - if isplatform "macos"; then + if isplatform "macos" || istoolchain "macos"; then break fi TEMP_LDFLAGS="$TEMP_LDFLAGS -lssl -lcrypto" - echo yes - return 0 + print_check_msg "$dep_checked_openssl" "yes\n" + dep_checked_openssl=1 + return 1 done # dependency openssl @@ -346,64 +391,64 @@ if [ -z "$PKG_CONFIG" ]; then break fi - $PKG_CONFIG openssl - if [ $? -ne 0 ] ; then + if test_pkg_config "openssl" "" "" "" ; then + TEMP_CFLAGS="$TEMP_CFLAGS `"$PKG_CONFIG" --cflags openssl`" + TEMP_LDFLAGS="$TEMP_LDFLAGS `"$PKG_CONFIG" --libs openssl`" + else break fi - TEMP_CFLAGS="$TEMP_CFLAGS `$PKG_CONFIG --cflags openssl`" - TEMP_LDFLAGS="$TEMP_LDFLAGS `$PKG_CONFIG --libs openssl`" - echo yes - return 0 + print_check_msg "$dep_checked_openssl" "yes\n" + dep_checked_openssl=1 + return 1 done - echo no - return 1 + print_check_msg "$dep_checked_openssl" "no\n" + dep_checked_openssl=1 + return 0 } -dependency_libxml2() +dependency_error_libxml2() { - printf "checking for libxml2... " + print_check_msg "$dep_checked_libxml2" "checking for libxml2... " # dependency libxml2 platform="windows" while true do - if isnotplatform "windows"; then + if notisplatform "windows"; then break fi - xml2-config --cflags > /dev/null - if [ $? -eq 0 ]; then - TEMP_CFLAGS="$TEMP_CFLAGS `xml2-config --cflags`" + if tmp_flags=`xml2-config --cflags` ; then + TEMP_CFLAGS="$TEMP_CFLAGS $tmp_flags" else break fi - xml2-config --libs > /dev/null - if [ $? -eq 0 ]; then - TEMP_LDFLAGS="$TEMP_LDFLAGS `xml2-config --libs`" + if tmp_flags=`xml2-config --libs` ; then + TEMP_LDFLAGS="$TEMP_LDFLAGS $tmp_flags" else break fi - echo yes - return 0 + print_check_msg "$dep_checked_libxml2" "yes\n" + dep_checked_libxml2=1 + return 1 done # dependency libxml2 platform="macos" while true do - if isnotplatform "macos"; then + if notisplatform "macos"; then break fi - xml2-config --cflags > /dev/null - if [ $? -eq 0 ]; then - TEMP_CFLAGS="$TEMP_CFLAGS `xml2-config --cflags`" + if tmp_flags=`xml2-config --cflags` ; then + TEMP_CFLAGS="$TEMP_CFLAGS $tmp_flags" else break fi - xml2-config --libs > /dev/null - if [ $? -eq 0 ]; then - TEMP_LDFLAGS="$TEMP_LDFLAGS `xml2-config --libs`" + if tmp_flags=`xml2-config --libs` ; then + TEMP_LDFLAGS="$TEMP_LDFLAGS $tmp_flags" else break fi - echo yes - return 0 + print_check_msg "$dep_checked_libxml2" "yes\n" + dep_checked_libxml2=1 + return 1 done # dependency libxml2 @@ -412,62 +457,69 @@ if [ -z "$PKG_CONFIG" ]; then break fi - $PKG_CONFIG libxml-2.0 - if [ $? -ne 0 ] ; then + if test_pkg_config "libxml-2.0" "" "" "" ; then + TEMP_CFLAGS="$TEMP_CFLAGS `"$PKG_CONFIG" --cflags libxml-2.0`" + TEMP_LDFLAGS="$TEMP_LDFLAGS `"$PKG_CONFIG" --libs libxml-2.0`" + else break fi - TEMP_CFLAGS="$TEMP_CFLAGS `$PKG_CONFIG --cflags libxml-2.0`" - TEMP_LDFLAGS="$TEMP_LDFLAGS `$PKG_CONFIG --libs libxml-2.0`" - echo yes - return 0 + print_check_msg "$dep_checked_libxml2" "yes\n" + dep_checked_libxml2=1 + return 1 done # dependency libxml2 while true do - xml2-config --cflags > /dev/null - if [ $? -eq 0 ]; then - TEMP_CFLAGS="$TEMP_CFLAGS `xml2-config --cflags`" + if tmp_flags=`xml2-config --cflags` ; then + TEMP_CFLAGS="$TEMP_CFLAGS $tmp_flags" else break fi - xml2-config --libs > /dev/null - if [ $? -eq 0 ]; then - TEMP_LDFLAGS="$TEMP_LDFLAGS `xml2-config --libs`" + if tmp_flags=`xml2-config --libs` ; then + TEMP_LDFLAGS="$TEMP_LDFLAGS $tmp_flags" else break fi - echo yes - return 0 + print_check_msg "$dep_checked_libxml2" "yes\n" + dep_checked_libxml2=1 + return 1 done - echo no - return 1 + print_check_msg "$dep_checked_libxml2" "no\n" + dep_checked_libxml2=1 + return 0 } +# start collecting dependency information +echo > "$TEMP_DIR/flags.mk" + DEPENDENCIES_FAILED= ERROR=0 -# general dependencies +# unnamed dependencies TEMP_CFLAGS= +TEMP_CXXFLAGS= TEMP_LDFLAGS= while true do while true do + if [ -z "$lang_c" ] ; then + ERROR=1 + break + fi TEMP_LDFLAGS="$TEMP_LDFLAGS -lm -lpthread" - break done - break done while true do - if isnotplatform "bsd"; then + if notisplatform "bsd"; then break fi - if isplatform "macos"; then + if isplatform "macos" || istoolchain "macos"; then break fi while true @@ -475,15 +527,13 @@ TEMP_CFLAGS="$TEMP_CFLAGS -I/usr/local/include" TEMP_LDFLAGS="$TEMP_LDFLAGS -L/usr/local/lib" - break done - break done while true do - if isnotplatform "macos"; then + if notisplatform "macos"; then break fi while true @@ -494,18 +544,16 @@ LIB_EXT = .a __EOF__ - break done - break done while true do - if isnotplatform "unix"; then + if notisplatform "unix"; then break fi - if isplatform "macos"; then + if isplatform "macos" || istoolchain "macos"; then break fi while true @@ -516,23 +564,21 @@ LIB_EXT = .a __EOF__ - break done - break done -# add general dependency flags to config.mk -echo >> "$TEMP_DIR/config.mk" -if [ -n "${TEMP_CFLAGS}" ]; then - echo "CFLAGS += $TEMP_CFLAGS" >> $TEMP_DIR/config.mk +# add general dependency flags to flags.mk +echo "# general flags" >> "$TEMP_DIR/flags.mk" +if [ -n "${TEMP_CFLAGS}" ] && [ -n "$lang_c" ]; then + echo "CFLAGS += $TEMP_CFLAGS" >> "$TEMP_DIR/flags.mk" fi -if [ -n "${TEMP_CXXFLAGS}" ]; then - echo "CXXFLAGS += $TEMP_CXXFLAGS" >> $TEMP_DIR/config.mk +if [ -n "${TEMP_CXXFLAGS}" ] && [ -n "$lang_cpp" ]; 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 # @@ -542,27 +588,23 @@ # # TARGETS # + +echo >> "$TEMP_DIR/flags.mk" +echo "configuring target: dav" +echo "# flags for target dav" >> "$TEMP_DIR/flags.mk" TEMP_CFLAGS= TEMP_CXXFLAGS= TEMP_LDFLAGS= -# Target: dav -TEMP_CFLAGS= -TEMP_LDFLAGS= -TEMP_CXXFLAGS= - -dependency_curl -if [ $? -ne 0 ]; then +if dependency_error_curl; then DEPENDENCIES_FAILED="$DEPENDENCIES_FAILED curl " ERROR=1 fi -dependency_libxml2 -if [ $? -ne 0 ]; then +if dependency_error_libxml2; then DEPENDENCIES_FAILED="$DEPENDENCIES_FAILED libxml2 " ERROR=1 fi -dependency_openssl -if [ $? -ne 0 ]; then +if dependency_error_openssl; then DEPENDENCIES_FAILED="$DEPENDENCIES_FAILED openssl " ERROR=1 fi @@ -570,32 +612,55 @@ # Features -echo >> "$TEMP_DIR/config.mk" -if [ -n "${TEMP_CFLAGS}" ]; then - echo "DAV_CFLAGS += $TEMP_CFLAGS" >> "$TEMP_DIR/config.mk" +if [ -n "${TEMP_CFLAGS}" ] && [ -n "$lang_c" ]; then + echo "DAV_CFLAGS += $TEMP_CFLAGS" >> "$TEMP_DIR/flags.mk" +fi +if [ -n "${TEMP_CXXFLAGS}" ] && [ -n "$lang_cpp" ]; then + echo "DAV_CXXFLAGS += $TEMP_CXXFLAGS" >> "$TEMP_DIR/flags.mk" fi -if [ -n "${TEMP_CXXFLAGS}" ]; then - echo "DAV_CXXFLAGS += $TEMP_CXXFLAGS" >> "$TEMP_DIR/config.mk" +if [ "$BUILD_TYPE" = "debug" ]; then + if [ -n "$lang_c" ]; then + echo 'DAV_CFLAGS += ${DEBUG_CC_FLAGS}' >> "$TEMP_DIR/flags.mk" + fi + if [ -n "$lang_cpp" ]; then + echo 'DAV_CXXFLAGS += ${DEBUG_CXX_FLAGS}' >> "$TEMP_DIR/flags.mk" + fi +fi +if [ "$BUILD_TYPE" = "release" ]; then + if [ -n "$lang_c" ]; then + echo 'DAV_CFLAGS += ${RELEASE_CC_FLAGS}' >> "$TEMP_DIR/flags.mk" + fi + if [ -n "$lang_cpp" ]; then + echo 'DAV_CXXFLAGS += ${RELEASE_CXX_FLAGS}' >> "$TEMP_DIR/flags.mk" + fi fi if [ -n "${TEMP_LDFLAGS}" ]; then - echo "DAV_LDFLAGS += $TEMP_LDFLAGS" >> "$TEMP_DIR/config.mk" + echo "DAV_LDFLAGS += $TEMP_LDFLAGS" >> "$TEMP_DIR/flags.mk" fi + +# final result if [ $ERROR -ne 0 ]; then echo echo "Error: Unresolved dependencies" echo "$DEPENDENCIES_FAILED" - rm -Rf "$TEMP_DIR" - exit 1 + abort_configure fi echo "configure finished" echo echo "Build Config:" -echo " PREFIX: $PREFIX" -echo " TOOLCHAIN: $TOOLCHAIN_NAME" +echo " PREFIX: $prefix" +echo " TOOLCHAIN: $TOOLCHAIN_NAME" 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/toolchain.mk" +cat "$TEMP_DIR/vars.mk" "$TEMP_DIR/toolchain.mk" "$TEMP_DIR/flags.mk" "$TEMP_DIR/make.mk" > config.mk rm -Rf "$TEMP_DIR" - -