X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=configure;h=c05801b1144e74df81b0340e5557406b5a5da8f0;hb=0160be68e344e405a19c3ba3ffb52579e54e5009;hp=d62b63620927c12bd838a28882bb7d7c3b0b1df5;hpb=79b8c3973ae16328a3fdc801b68c61ac4347dc10;p=sope diff --git a/configure b/configure index d62b6362..c05801b1 100755 --- a/configure +++ b/configure @@ -14,6 +14,7 @@ CFG_ARGS="$0 $1 $2 $3 $4 $5 $6 $7 $8 $9" ARG_BEQUIET=0 ARG_NOCREATE=0 ARG_PREFIX="" +ARG_FRAMEWORK_DIR="" ARG_GSMAKE="$GNUSTEP_MAKEFILES" ARG_CFGMAKE="$PWD/config.make" ARG_WITH_GNUSTEP=0 @@ -23,7 +24,13 @@ ARG_WITH_STRIP=1 DARG_GNUSTEP_SH="$ARG_GSMAKE/GNUstep.sh" DARG_IS_FHS=1 -NGSTREAMS_DIR="./sope-core/NGStreams" +SOPE_SRCDIR="$PWD" # TODO: rather use location of configure (using basename) +NGSTREAMS_DIR="${SOPE_SRCDIR}/sope-core/NGStreams" +GSTEPMAKE_SRCDIR="${SOPE_SRCDIR}/gnustep-make" +INTERNAL_MAKEDIR="${SOPE_SRCDIR}/.gsmake" +USES_INTERNAL_MAKE=no + +# TODO: add pg_config, mysql_config etc! LINK_SYSLIBDIRS="-L/usr/local/pgsql/lib -L/usr/local/lib -L/usr/lib" # ******************** usage ******************** @@ -45,6 +52,7 @@ Configuration: Installation directories: --prefix=PREFIX install files in PREFIX [/usr/local] + --frameworks=DIR build frameworks and install in DIR --gsmake=PATH path to gnustep-make tree --configmake=PATH path to the config file being created --with-gnustep install in GNUstep tree @@ -62,7 +70,9 @@ function printParas() { echo "Configuration:" if test $ARG_BEQUIET = 1; then echo " will be quite."; fi if test $ARG_NOCREATE = 1; then echo " won't create files"; fi - if test $DARG_IS_FHS = 1; then + if test "x$ARG_FRAMEWORK_DIR" != "x"; then + echo " FHS: install in frameworks directory"; + elif test $DARG_IS_FHS = 1; then echo " FHS: install in FHS root"; else echo " FHS: install in GNUstep tree"; @@ -79,10 +89,11 @@ function printParas() { echo " strip: no"; fi - echo " prefix: $ARG_PREFIX" - echo " gstep: $ARG_GSMAKE" - echo " config: $ARG_CFGMAKE" - echo " script: $DARG_GNUSTEP_SH" + echo " prefix: $ARG_PREFIX" + echo " frameworks: $ARG_FRAMEWORK_DIR" + echo " gstep: $ARG_GSMAKE" + echo " config: $ARG_CFGMAKE" + echo " script: $DARG_GNUSTEP_SH" echo "" } @@ -103,6 +114,62 @@ environment. _ACEOFWARN } +function setupInternalGSMake() { + if test -f ${INTERNAL_MAKEDIR}/Library/Makefiles/GNUstep.sh; then + ARG_GSMAKE="${INTERNAL_MAKEDIR}/Library/Makefiles/" + ARG_IS_FHS=1 + DARG_IS_FHS=1 + ARG_WITH_GNUSTEP=0 + USES_INTERNAL_MAKE=yes + if test "x$ARG_PREFIX" = "x"; then + ARG_PREFIX="/usr/local/" + fi + elif test -d gnustep-make; then + SETUP_COMBO="gnu-fd-nil" + SETUP_LOGNAME="config-gstepmake.log" + if test -d /Developer/Applications/Xcode.app; then + # rather weird OSX test, right? ;-> + SETUP_COMBO="apple-apple-nil" + fi + pregsmdir="$PWD" + + echo -n "configuring builtin gnustep-make environment (${SETUP_LOGNAME}) .." + + cd "$GSTEPMAKE_SRCDIR" + ./configure >${pregsmdir}/${SETUP_LOGNAME} \ + --prefix="${INTERNAL_MAKEDIR}" \ + --without-system-root \ + --with-network-root="${INTERNAL_MAKEDIR}" \ + --with-local-root="${INTERNAL_MAKEDIR}" \ + --with-user-root="${INTERNAL_MAKEDIR}" \ + --with-library-combo="${SETUP_COMBO}" + + echo -n ".. install .." + make install >>${pregsmdir}/${SETUP_LOGNAME} + + ARG_GSMAKE="${INTERNAL_MAKEDIR}/Library/Makefiles/" + ARG_IS_FHS=1 + DARG_IS_FHS=1 + ARG_WITH_GNUSTEP=0 + USES_INTERNAL_MAKE=yes + if test "x$ARG_PREFIX" = "x"; then + ARG_PREFIX="/usr/local/" + fi + + cd "$pregsmdir" + if test -f $ARG_GSMAKE/GNUstep.sh; then + echo ".. done (log in ${SETUP_LOGNAME})." + else + echo "error: failed to setup embedded gnustep-make sources!" + cat ${pregsmdir}/${SETUP_LOGNAME} + exit 1 + fi + else + echo "error: did not find embedded gnustep-make sources!" + exit 1 + fi +} + function validateGNUstepArgs() { # GNUstep make if test "x$ARG_GSMAKE" = "x"; then @@ -113,8 +180,7 @@ function validateGNUstepArgs() { elif test -f /usr/GNUstep/System/Library/Makefiles/GNUstep.sh; then ARG_GSMAKE="/usr/GNUstep/System/Library/Makefiles/" else - echo "error: please specify a GNUstep make tree!" - exit 1 + setupInternalGSMake; fi DARG_GNUSTEP_SH="$ARG_GSMAKE/GNUstep.sh" elif test -d $ARG_GSMAKE; then @@ -135,14 +201,17 @@ function validateGNUstepArgs() { function setupAppleArgs() { ARG_WITH_STRIP=0 - ARG_WITH_GNUSTEP=1 - - if test "xLIBRARY_COMBO" != "apple-apple-nil"; then - if test "xLIBRARY_COMBO" != "apple-apple-apple"; then - echo "WARNING: detected unusual GNUstep setup: $LIBRARY_COMBO" - echo "" - fi + if test "x${USES_INTERNAL_MAKE}" = "no"; then + ARG_WITH_GNUSTEP=1 fi + + # no reason to print a warning? + #if test "x${xLIBRARY_COMBO}" != "xapple-apple-nil"; then + # if test "x${LIBRARY_COMBO}" != "xapple-apple-apple"; then + # echo "WARNING: detected MacOSX GNUstep setup: ${LIBRARY_COMBO}" + # echo "" + # fi + #fi } function validateArgs() { @@ -166,6 +235,11 @@ function validateArgs() { echo "Note: will install in GNUSTEP_LOCAL_ROOT: $ARG_PREFIX" echo "" fi + elif test "x$ARG_FRAMEWORK_DIR" != "x"; then + DARG_IS_FHS=0; + ARG_PREFIX="$ARG_FRAMEWORK_DIR" + echo "Note: will install in frameworks location: $ARG_PREFIX" + echo "" else DARG_IS_FHS=1; ARG_PREFIX="/usr/local/" @@ -230,17 +304,25 @@ function genConfigMake() { cfgwrite "# make debug=yes" cfgwrite "" - cfgwrite "# print on the cmdline that this file is being used" - cfgwrite "all :: " - cfgwrite " @echo Local GNUstep config.make is active" - cfgwrite "" + #cfgwrite "# print on the cmdline that this file is being used" + #cfgwrite "all :: " + #cfgwrite " @echo Local GNUstep config.make is active" + #cfgwrite "" # TODO: should be also write a GNUSTEP_INSTALLATION_DIR / BUNDLE_INSTALL_DIR? - if test $DARG_IS_FHS = 1; then + + if test "x$ARG_FRAMEWORK_DIR" != "x"; then + cfgwrite "# configured to install in Frameworks directory" + cfgwrite "FRAMEWORK_INSTALL_DIR:=${ARG_FRAMEWORK_DIR}" + cfgwrite "frameworks=yes" + cfgwrite "" + elif test $DARG_IS_FHS = 1; then cfgwrite "# configured for FHS install" cfgwrite "FHS_INSTALL_ROOT:=$ARG_PREFIX" cfgwrite "" + else + cfgwrite "# configured for GNUstep install" fi if test $ARG_WITH_DEBUG = 1; then @@ -278,6 +360,7 @@ function genConfigMake() { } function checkLinking() { + # library-name => $1, type => $2 local oldpwd=$PWD local tmpdir=".configure-test-$$" @@ -296,9 +379,10 @@ function checkLinking() { make -s messages=yes -f $tmpmake linktest >out.log 2>err.log LINK_RESULT=$? - + if test $LINK_RESULT = 0; then echo "$2 library found: $1" + cfgwrite "HAS_LIBRARY_$1=yes" else if test "x$2" = "xrequired"; then echo "failed to link $2 library: $1" @@ -306,6 +390,7 @@ function checkLinking() { exit 1 else echo "failed to link $2 library: $1" + cfgwrite "HAS_LIBRARY_$1=no" fi fi @@ -314,10 +399,14 @@ function checkLinking() { } function checkDependencies() { - checkLinking "xml2" required; - checkLinking "ldap" required; - checkLinking "ssl" required; # TODO: make optional - checkLinking "pq" required; # TODO: make optional + cfgwrite "" + cfgwrite "# library dependencies" + checkLinking "xml2" optional; + checkLinking "ldap" optional; + checkLinking "ssl" required; # TODO: make optional + checkLinking "pq" optional; + checkLinking "sqlite3" optional; + checkLinking "mysqlclient" optional; } function runIt() { @@ -363,6 +452,10 @@ function processOption() { extractFuncValue $1; ARG_PREFIX="$VALUE"; ;; + x--frameworks=*) + extractFuncValue $1; + ARG_FRAMEWORK_DIR="$VALUE"; + ;; x--gsmake=*) extractFuncValue $1; ARG_GSMAKE="$VALUE"; @@ -375,6 +468,10 @@ function processOption() { ARG_WITH_GNUSTEP=1 DARG_IS_FHS=0 ;; + "x--without-gnustep") + ARG_WITH_GNUSTEP=0 + DARG_IS_FHS=1 + ;; "x--enable-debug") ARG_WITH_DEBUG=1 ;;