From 00cbe99ab514fb7b3bea21287cc6507c80804161 Mon Sep 17 00:00:00 2001 From: helge Date: Fri, 25 Mar 2005 23:08:53 +0000 Subject: [PATCH] added configure script and config.make includes git-svn-id: http://svn.opengroupware.org/SOGo/trunk@646 d1b88da0-ebda-0310-925b-ed51d893ca5b --- SOGo/GNUmakefile | 1 + SOGo/Main/GNUmakefile | 1 + SOGo/OGoContentStore/GNUmakefile | 1 + SOGo/Protocols/GNUmakefile | 7 +- SOGo/Protocols/common.make | 1 + SOGo/Protocols/iCalHTTP/GNUmakefile | 2 +- SOGo/SoObjects/GNUmakefile | 3 +- SOGo/SoObjects/Mailer/SOGoMailManager.m | 2 + SOGo/SoObjects/SOGo/GNUmakefile | 1 + SOGo/SoObjects/common.make | 1 + SOGo/UI/GNUmakefile | 1 + SOGo/UI/MailerUI/UIxMailListView.m | 1 + SOGo/UI/SOGoUI/GNUmakefile | 3 + SOGo/UI/common.make | 1 + SOGo/configure | 418 ++++++++++++++++++++++++ 15 files changed, 439 insertions(+), 5 deletions(-) create mode 100755 SOGo/configure diff --git a/SOGo/GNUmakefile b/SOGo/GNUmakefile index 759d931b..78ec6851 100644 --- a/SOGo/GNUmakefile +++ b/SOGo/GNUmakefile @@ -1,5 +1,6 @@ # GNUstep makefile +-include config.make include $(GNUSTEP_MAKEFILES)/common.make SUBPROJECTS = \ diff --git a/SOGo/Main/GNUmakefile b/SOGo/Main/GNUmakefile index cf52df32..9a8d7e92 100644 --- a/SOGo/Main/GNUmakefile +++ b/SOGo/Main/GNUmakefile @@ -1,5 +1,6 @@ # GNUstep makefile +-include ../config.make include $(GNUSTEP_MAKEFILES)/common.make include ../Version include ./Version diff --git a/SOGo/OGoContentStore/GNUmakefile b/SOGo/OGoContentStore/GNUmakefile index ce0d78d2..a2641c04 100644 --- a/SOGo/OGoContentStore/GNUmakefile +++ b/SOGo/OGoContentStore/GNUmakefile @@ -1,5 +1,6 @@ # GNUstep makefile +-include ../config.make include $(GNUSTEP_MAKEFILES)/common.make include ./Version diff --git a/SOGo/Protocols/GNUmakefile b/SOGo/Protocols/GNUmakefile index 906e9fdb..25f185f5 100644 --- a/SOGo/Protocols/GNUmakefile +++ b/SOGo/Protocols/GNUmakefile @@ -1,8 +1,9 @@ -# $Id: GNUmakefile 274 2004-08-26 13:10:49Z znek $ +# GNUstep makefile +-include ../config.make include $(GNUSTEP_MAKEFILES)/common.make -SUBPROJECTS = \ - iCalHTTP \ +SUBPROJECTS += \ + iCalHTTP include $(GNUSTEP_MAKEFILES)/aggregate.make diff --git a/SOGo/Protocols/common.make b/SOGo/Protocols/common.make index ab067203..e4de57d0 100644 --- a/SOGo/Protocols/common.make +++ b/SOGo/Protocols/common.make @@ -1,5 +1,6 @@ # common make file for Protocol bundles +-include ../../config.make include $(GNUSTEP_MAKEFILES)/common.make include ../../Version include ./Version diff --git a/SOGo/Protocols/iCalHTTP/GNUmakefile b/SOGo/Protocols/iCalHTTP/GNUmakefile index 116d6c58..1467684a 100644 --- a/SOGo/Protocols/iCalHTTP/GNUmakefile +++ b/SOGo/Protocols/iCalHTTP/GNUmakefile @@ -1,4 +1,4 @@ -# $Id: GNUmakefile 365 2004-10-06 10:53:34Z znek $ +# GNUstep makefiles include ../common.make diff --git a/SOGo/SoObjects/GNUmakefile b/SOGo/SoObjects/GNUmakefile index 2f060092..e685b16b 100644 --- a/SOGo/SoObjects/GNUmakefile +++ b/SOGo/SoObjects/GNUmakefile @@ -1,5 +1,6 @@ -# $Id$ +# GNUstep makefile +-include ../config.make include $(GNUSTEP_MAKEFILES)/common.make SUBPROJECTS = \ diff --git a/SOGo/SoObjects/Mailer/SOGoMailManager.m b/SOGo/SoObjects/Mailer/SOGoMailManager.m index 3f35e7af..ba7a7578 100644 --- a/SOGo/SoObjects/Mailer/SOGoMailManager.m +++ b/SOGo/SoObjects/Mailer/SOGoMailManager.m @@ -775,6 +775,8 @@ static NSString *imap4Separator = nil; reason:@"copy operation failed"]; } + // TODO: need to flush some caches? + return nil; } diff --git a/SOGo/SoObjects/SOGo/GNUmakefile b/SOGo/SoObjects/SOGo/GNUmakefile index 5ab35535..d68deca6 100644 --- a/SOGo/SoObjects/SOGo/GNUmakefile +++ b/SOGo/SoObjects/SOGo/GNUmakefile @@ -1,5 +1,6 @@ # GNUstep makefile +-include ../../config.make include $(GNUSTEP_MAKEFILES)/common.make -include ../../Version -include ./Version diff --git a/SOGo/SoObjects/common.make b/SOGo/SoObjects/common.make index fa42fa19..6cbb8c3e 100644 --- a/SOGo/SoObjects/common.make +++ b/SOGo/SoObjects/common.make @@ -1,5 +1,6 @@ # common make file for SoObject bundles +-include ../../config.make include $(GNUSTEP_MAKEFILES)/common.make include ../../Version include ./Version diff --git a/SOGo/UI/GNUmakefile b/SOGo/UI/GNUmakefile index 0cfcf7ff..a11e1739 100644 --- a/SOGo/UI/GNUmakefile +++ b/SOGo/UI/GNUmakefile @@ -1,5 +1,6 @@ # GNUstep makefile +-include ../config.make include $(GNUSTEP_MAKEFILES)/common.make SUBPROJECTS += \ diff --git a/SOGo/UI/MailerUI/UIxMailListView.m b/SOGo/UI/MailerUI/UIxMailListView.m index 495e7dbd..5fe52e5b 100644 --- a/SOGo/UI/MailerUI/UIxMailListView.m +++ b/SOGo/UI/MailerUI/UIxMailListView.m @@ -50,6 +50,7 @@ #include "common.h" #include #include +#include @implementation UIxMailListView diff --git a/SOGo/UI/SOGoUI/GNUmakefile b/SOGo/UI/SOGoUI/GNUmakefile index bf26801f..e624bf63 100644 --- a/SOGo/UI/SOGoUI/GNUmakefile +++ b/SOGo/UI/SOGoUI/GNUmakefile @@ -1,6 +1,9 @@ # GNUstep makefile +-include ../../config.make include $(GNUSTEP_MAKEFILES)/common.make +include ../../Version +include ./Version LIBRARY_NAME = libSOGoUI diff --git a/SOGo/UI/common.make b/SOGo/UI/common.make index bdb1b862..72153ffd 100644 --- a/SOGo/UI/common.make +++ b/SOGo/UI/common.make @@ -1,5 +1,6 @@ # common make file for UI bundles +-include ../../config.make include $(GNUSTEP_MAKEFILES)/common.make include ../../Version include ./Version diff --git a/SOGo/configure b/SOGo/configure new file mode 100755 index 00000000..3126203b --- /dev/null +++ b/SOGo/configure @@ -0,0 +1,418 @@ +#!/bin/bash + +# +# Note: When adding make options to this script, ensure that the source still +# compiles without those options! (and just with GNUstep.sh being +# sourced) +# We do not want to force people to run configure. +# + +# ******************** variables **************** + +CFG_ARGS="$0 $1 $2 $3 $4 $5 $6 $7 $8 $9" + +ARG_BEQUIET=0 +ARG_NOCREATE=0 +ARG_PREFIX="" +ARG_GSMAKE="$GNUSTEP_MAKEFILES" +ARG_CFGMAKE="$PWD/config.make" +ARG_WITH_GNUSTEP=1 +ARG_WITH_DEBUG=1 +ARG_WITH_STRIP=1 + +DARG_GNUSTEP_SH="$ARG_GSMAKE/GNUstep.sh" +DARG_IS_FHS=1 + +NGSTREAMS_DIR="./sope-core/NGStreams" +LINK_SYSLIBDIRS="-L/usr/local/pgsql/lib -L/usr/local/lib -L/usr/lib" + +# ******************** usage ******************** + +function usage() { + cat <<_ACEOF +\`configure' configures a GNUstep-make based sourcetree for installation. + +Usage: $0 [OPTION]... + +Note: You do not need to configure this source tree, as another option + just ensure that the GNUstep.sh of your GNUstep make installation + is properly sourced prior running make. + +Configuration: + -h, --help display this help and exit + -q, --quiet, --silent do not print \`checking...' messages + -n, --no-create do not create output files + +Installation directories: + --prefix=PREFIX install files in PREFIX [/usr/local] + --gsmake=PATH path to gnustep-make tree + --configmake=PATH path to the config file being created + --without-gnustep install in GNUstep tree + --enable-debug turn on debugging and compile time warnings + --enable-strip turn on stripping of debug symbols + +_ACEOF + + exit 0; +} + +# ******************** running ******************** + +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 + echo " FHS: install in FHS root"; + else + echo " FHS: install in GNUstep tree"; + fi + + if test $ARG_WITH_DEBUG = 1; then + echo " debug: yes"; + else + echo " debug: no"; + fi + if test $ARG_WITH_STRIP = 1; then + echo " strip: yes"; + else + echo " strip: no"; + fi + + echo " prefix: $ARG_PREFIX" + echo " gstep: $ARG_GSMAKE" + echo " config: $ARG_CFGMAKE" + echo " script: $DARG_GNUSTEP_SH" + echo "" +} + +function warnOnFHSPrefix() { + cat <<_ACEOFWARN +Warning: you are configuring for a non standard FHS style prefix. + prefix: $ARG_PREFIX + +Some code in SOPE only looks in /usr and /usr/local for resources and is +therefore incompatible with arbitary install pathes. + +If you want to have the flexibility of installation in arbitary pathes just +configure GNUstep-make and source the GNUstep.sh script prior executing tools +to ensure a proper environment. +All SOPE based code is completely relocatable when being used in a GNUstep +environment. + +_ACEOFWARN +} + +function validateGNUstepArgs() { + # GNUstep make + if test "x$ARG_GSMAKE" = "x"; then + if test -f $HOME/OGoRoot/Library/Makefiles/GNUstep.sh; then + ARG_GSMAKE="$HOME/OGoRoot/Library/Makefiles/" + elif test -f $HOME/GNUstep/Library/Makefiles/GNUstep.sh; then + ARG_GSMAKE="$HOME/GNUstep/Library/Makefiles/" + 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 + fi + DARG_GNUSTEP_SH="$ARG_GSMAKE/GNUstep.sh" + elif test -d $ARG_GSMAKE; then + if test -f $ARG_GSMAKE/GNUstep.sh; then + DARG_GNUSTEP_SH="$ARG_GSMAKE/GNUstep.sh" + elif test -f $ARG_GSMAKE/Library/Makefiles/GNUstep.sh; then + ARG_GSMAKE="$ARG_GSMAKE/Library/Makefiles" + DARG_GNUSTEP_SH="$ARG_GSMAKE/GNUstep.sh" + else + echo "error: specified directory contains no GNUstep.sh: $ARG_GSMAKE" + exit 1 + fi + else + echo "error: specified GNUstep make tree does not exist: $ARG_GSMAKE" + exit 1 + fi +} + +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 + fi +} + +function validateArgs() { + # validate prefix (could be better?) + case "x$ARG_PREFIX" in + "x/usr/local"|"x/usr/local/") + DARG_IS_FHS=1; + ;; + "x/usr"|"x/usr/") + DARG_IS_FHS=1; + ;; + "x$GNUSTEP_USER_ROOT"|"x$GNUSTEP_LOCAL_ROOT"|"x$GNUSTEP_SYSTEM_ROOT") + DARG_IS_FHS=0; + ARG_WITH_GNUSTEP=1; + ;; + "x") + if test $ARG_WITH_GNUSTEP = 1; then + DARG_IS_FHS=0; + ARG_PREFIX="$GNUSTEP_LOCAL_ROOT" + if test $ARG_BEQUIET != 1; then + echo "Note: will install in GNUSTEP_LOCAL_ROOT: $ARG_PREFIX" + echo "" + fi + else + DARG_IS_FHS=1; + ARG_PREFIX="/usr/local/" + echo "Note: will install in default location: $ARG_PREFIX" + echo "" + fi + ;; + *) + if test $ARG_WITH_GNUSTEP = 1; then + echo "error: specified --with-gnustep, but specified prefix is not" + echo " a GNUstep root: '$ARG_PREFIX'" + exit 1 + else + if test $ARG_BEQUIET != 1; then + warnOnFHSPrefix; + fi + DARG_IS_FHS=1; + fi + ;; + esac + + if test $ARG_WITH_GNUSTEP = 1; then + if test $DARG_IS_FHS = 1; then + echo "error: configured for FHS root _and_ GNUstep tree. Choose one!" + exit 1 + fi + fi +} + +function printGNUstepSetup() { + echo "GNUstep environment:" + echo " system: ${GNUSTEP_SYSTEM_ROOT}" + echo " local: ${GNUSTEP_LOCAL_ROOT}" + echo " user: ${GNUSTEP_USER_ROOT}" + echo " path: ${GNUSTEP_PATHLIST}" + echo " flat: ${GNUSTEP_FLATTENED}" + echo " arch: ${GNUSTEP_HOST}" + echo " combo: ${LIBRARY_COMBO}" + echo "" +} + +function cfgwrite() { + echo "$1" >> $ARG_CFGMAKE +} + +function genConfigMake() { + # we ignore the following vars also patches by gstep-make: + # PATH + # DYLD_LIBRARY_PATH + # GUILE_LOAD_PATH + # CLASSPATH + + if test $ARG_BEQUIET != 1; then + echo "creating: $ARG_CFGMAKE" + fi + + echo "# GNUstep environment configuration" > $ARG_CFGMAKE + cfgwrite "# created by: '$CFG_ARGS'" + cfgwrite "" + + cfgwrite "# Note: you can override any option as a 'make' parameter, eg:" + 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 "" + + # TODO: should be also write a GNUSTEP_INSTALLATION_DIR / BUNDLE_INSTALL_DIR? + + if test $DARG_IS_FHS = 1; then + cfgwrite "# configured for FHS install" + cfgwrite "FHS_INSTALL_ROOT:=$ARG_PREFIX" + cfgwrite "" + fi + + if test $ARG_WITH_DEBUG = 1; then + cfgwrite "# configured to produce debugging code"; + cfgwrite "debug:=yes" + else + cfgwrite "# configured to produce non-debugging code"; + cfgwrite "debug:=no" + fi + cfgwrite "" + + if test $ARG_WITH_STRIP = 1; then + cfgwrite "# configured to produce stripped code"; + cfgwrite "strip:=yes" + else + cfgwrite "# configured not to strip code"; + cfgwrite "strip:=no" + fi + cfgwrite "" + + cfgwrite "# enforce shared libraries"; + cfgwrite "shared:=yes" + cfgwrite "" + + cfgwrite "# GNUstep environment variables:"; + for i in `env | grep GNUSTEP_ | sort`; do + MAKE_ASSI="`echo $i | sed s/=/:=/`" + cfgwrite "${MAKE_ASSI}"; + done + cfgwrite "LIBRARY_COMBO=$LIBRARY_COMBO" + cfgwrite "" + + cfgwrite "# avoid a gstep-make warning" + cfgwrite "PATH:=\$(GNUSTEP_SYSTEM_ROOT)/Tools:\$(PATH)" +} + +function checkLinking() { + local oldpwd=$PWD + local tmpdir=".configure-test-$$" + + mkdir $tmpdir + cd $tmpdir + cp ../maintenance/dummytool.m . + + tmpmake="GNUmakefile" + echo >$tmpmake "include ../config.make" + echo >>$tmpmake "include \$(GNUSTEP_MAKEFILES)/common.make" + echo >>$tmpmake "TOOL_NAME := linktest" + echo >>$tmpmake "linktest_OBJC_FILES := dummytool.m" + echo >>$tmpmake "linktest_TOOL_LIBS += -l$1" + echo >>$tmpmake "SYSTEM_LIB_DIR += ${LINK_SYSLIBDIRS}" + echo >>$tmpmake "include \$(GNUSTEP_MAKEFILES)/tool.make" + + 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" + else + if test "x$2" = "xrequired"; then + echo "failed to link $2 library: $1" + rm ../config.make + exit 1 + else + echo "failed to link $2 library: $1" + fi + fi + + cd $oldpwd + rm -rf $tmpdir +} + +function checkDependencies() { + checkLinking "SaxObjC" required; + checkLinking "NGLdap" required; +} + +function runIt() { + if test $ARG_BEQUIET != 1; then + printParas; + fi + + if test $ARG_NOCREATE = 1; then + if test $ARG_BEQUIET != 1; then + echo "not creating the config file ..."; + fi + else + genConfigMake; + #checkDependencies; + + if test -x $NGSTREAMS_DIR/configure; then + if test $ARG_BEQUIET != 1; then + echo -n "configuring NGStreams library .." + old="$PWD" + cd $NGSTREAMS_DIR + ./configure >$old/config-NGStreams.log + cd $old + echo ".. done (log in config-NGStreams.log)." + fi + fi + fi +} + +# ******************** options ******************** + +function extractFuncValue() { + VALUE="`echo "$1" | sed "s/[^=]*=//g"`" +} + +function processOption() { + case "x$1" in + "x--help"|"x-h") + usage; + ;; + "x--quiet"|"x--silent"|"x-q") ARG_BEQUIET=1; ;; + "x--no-create"|"x-n") ARG_NOCREATE=1; ;; + x--prefix=*) + extractFuncValue $1; + ARG_PREFIX="$VALUE"; + ;; + x--gsmake=*) + extractFuncValue $1; + ARG_GSMAKE="$VALUE"; + ;; + x--configmake=*) + extractFuncValue $1; + ARG_CFGMAKE="$VALUE"; + ;; + "x--with-gnustep") + 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 + ;; + "x--disable-debug") + ARG_WITH_DEBUG=0 + ;; + "x--enable-strip") + ARG_WITH_STRIP=1 + ;; + "x--disable-strip") + ARG_WITH_STRIP=0 + ;; + + *) echo "error: cannot process argument: $1"; exit 1; ;; + esac +} + +for i in $@; do + processOption $i; +done + +# load GNUstep environment +validateGNUstepArgs +# first we load the GNUstep.sh environment +source $DARG_GNUSTEP_SH +if test $ARG_BEQUIET != 1; then + printGNUstepSetup; +fi + +# setup some GNUstep dependend defaults +if test "x$GNUSTEP_HOST_VENDOR" = "xapple"; then + setupAppleArgs; +fi + +# ensure the parameters make sense +validateArgs + +# start it +runIt -- 2.39.5