From df6b77cf35c0f196c5033bddb11f3de41d081afa Mon Sep 17 00:00:00 2001 From: Przemyslaw Czerpak Date: Sun, 12 Dec 2004 21:05:56 +0000 Subject: [PATCH] 2004-12-12 22:00 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl) * harbour/make_gnu.sh + added platform autodetection if HB_ARCHITECTURE not set and choosing the preferred compiler if HB_COMPILER not set + added new platforms (Darwin, SunOS, BSD, HPUX) for info descriptions - I do not want to decide if this should be also added for make_gnu.bat, make_gnu.cmd because these files cannot be used for this platforms. Now make_bsd.sh and make_drw.sh are redundant - we should decide if they should be kept in CVS or removed * harbour/make_tgz.sh + added platform autodetection if HB_ARCHITECTURE not set and choosing the preferred compiler if HB_COMPILER not set * harbour/contrib/Makefile * changed the list of compiled contrib libs - now there is a list of some default libs which can be compiled for all platforms and only the chosen ones are added for some platforms - it will be easier to manage because the number of supported platforms is growing up. Please check if it will work for other platforms/compilers. --- harbour/ChangeLog | 23 +++++++ harbour/contrib/Makefile | 98 ++++++------------------------ harbour/make_gnu.sh | 42 ++++++++++--- harbour/make_tgz.sh | 126 ++++++++++++++++++++++++++++++--------- 4 files changed, 174 insertions(+), 115 deletions(-) diff --git a/harbour/ChangeLog b/harbour/ChangeLog index d196eb2a2f..dd1e8b159b 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -8,6 +8,29 @@ 2002-12-01 23:12 UTC+0100 Foo Bar */ +2004-12-12 22:00 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl) + * harbour/make_gnu.sh + + added platform autodetection if HB_ARCHITECTURE not set + and choosing the preferred compiler if HB_COMPILER not set + + added new platforms (Darwin, SunOS, BSD, HPUX) for info + descriptions - I do not want to decide if this should be + also added for make_gnu.bat, make_gnu.cmd because these + files cannot be used for this platforms. + Now make_bsd.sh and make_drw.sh are redundant - we should + decide if they should be kept in CVS or removed + + * harbour/make_tgz.sh + + added platform autodetection if HB_ARCHITECTURE not set + and choosing the preferred compiler if HB_COMPILER not set + + * harbour/contrib/Makefile + * changed the list of compiled contrib libs - now there is a + list of some default libs which can be compiled for all + platforms and only the chosen ones are added for some + platforms - it will be easier to manage because the number + of supported platforms is growing up. + Please check if it will work for other platforms/compilers. + 2004-12-12 02:55 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl) + harbour/config/hpux/dir.cf + harbour/config/hpux/gcc.cf diff --git a/harbour/contrib/Makefile b/harbour/contrib/Makefile index 3c882e5426..816ca424ac 100644 --- a/harbour/contrib/Makefile +++ b/harbour/contrib/Makefile @@ -4,45 +4,34 @@ ROOT = ../ -ifeq ($(HB_ARCHITECTURE),w32) - -ifeq ($(HB_COMPILER),msvc) - DIRS=\ + btree \ htmllib \ libct \ libgt \ libmisc \ - rdd_ads \ - odbc \ + libnf \ samples \ + +ifeq ($(HB_ARCHITECTURE),w32) + +DIRS +=\ + rdd_ads \ + +ifeq ($(HB_COMPILER),msvc) + +DIRS +=\ + odbc \ + else ifeq ($(HB_COMPILER),rsxnt) -DIRS=\ - btree \ - htmllib \ - libct \ - libgt \ - libmisc \ - libnf \ - rdd_ads \ - samples \ - else -DIRS=\ - btree \ - htmllib \ - libct \ - libgt \ - libmisc \ - libnf \ - rdd_ads \ +DIRS +=\ ole \ odbc \ - samples \ endif endif @@ -50,70 +39,21 @@ endif else ifeq ($(HB_COMPILER),icc) -DIRS=\ +DIRS +=\ hgf/os2pm \ - htmllib \ - libct \ - libgt \ - libmisc \ - libnf \ - samples \ else ifeq ($(HB_ARCHITECTURE),os2) -DIRS=\ - btree \ +DIRS +=\ hgf/os2pm \ - htmllib \ - libct \ - libgt \ - libmisc \ - libnf \ - samples \ else -ifeq ($(HB_ARCHITECTURE),bsd) +ifeq ($(HB_ARCHITECTURE),linux) -DIRS=\ - htmllib \ - libct \ - libgt \ - libmisc \ - samples \ - -else -ifeq ($(HB_ARCHITECTURE),darwin) - -DIRS=\ - htmllib \ - libct \ - libgt \ - libmisc \ - samples \ - -else -ifeq ($(HB_ARCHITECTURE),dos) - -DIRS=\ - htmllib \ - libct \ - libgt \ - libmisc \ - samples \ - -else - -DIRS=\ - htmllib \ - libct \ - libgt \ - libmisc \ +DIRS +=\ rdd_ads \ - samples \ - -endif -endif + endif endif endif diff --git a/harbour/make_gnu.sh b/harbour/make_gnu.sh index 1572522799..221fb95191 100644 --- a/harbour/make_gnu.sh +++ b/harbour/make_gnu.sh @@ -14,8 +14,24 @@ # See doc/license.txt for licensing terms. # --------------------------------------------------------------- -if [ -z "$HB_ARCHITECTURE" ]; then export HB_ARCHITECTURE=linux; fi -if [ -z "$HB_COMPILER" ]; then export HB_COMPILER=gcc; fi +if [ -z "$HB_ARCHITECTURE" ]; then + hb_arch=`uname -s | tr "[A-Z]" "[a-z]" 2>/dev/null` + case "$hb_arch" in + *windows*) hb_arch="w32" ;; + *dos) hb_arch="dos" ;; + *bsd) hb_arch="bsd" ;; + esac + export HB_ARCHITECTURE="$hb_arch" +fi + +if [ -z "$HB_COMPILER" ]; then + case "$HB_ARCHITECTURE" in + w32) hb_comp="mingw32" ;; + dos) hb_comp="djgpp" ;; + *) hb_comp="gcc" ;; + esac + export HB_COMPILER="$hb_comp" +fi if [ -z "$HB_GT_LIB" ]; then export HB_GT_LIB=; fi # export PRG_USR= @@ -24,8 +40,8 @@ if [ -z "$HB_GT_LIB" ]; then export HB_GT_LIB=; fi # Set to constant value to be consistent with the non-GNU make files. -if [ -z "$HB_BIN_INSTALL" ]; then export HB_BIN_INSTALL=bin/; fi -if [ -z "$HB_LIB_INSTALL" ]; then export HB_LIB_INSTALL=lib/; fi +if [ -z "$HB_BIN_INSTALL" ]; then export HB_BIN_INSTALL=bin/; fi +if [ -z "$HB_LIB_INSTALL" ]; then export HB_LIB_INSTALL=lib/; fi if [ -z "$HB_INC_INSTALL" ]; then export HB_INC_INSTALL=include/; fi if [ -z "$HB_ARCHITECTURE" ]; then @@ -51,10 +67,14 @@ if [ -z "$HB_ARCHITECTURE" ] || [ -z "$HB_COMPILER" ]; then echo " The following values are currently supported:" echo echo " HB_ARCHITECTURE:" - echo " - dos (HB_GT_LIB=gtdos by default)" - echo " - w32 (HB_GT_LIB=gtw32 by default)" - echo " - linux (HB_GT_LIB=gtstd by default)" - echo " - os2 (HB_GT_LIB=gtos2 by default)" + echo " - dos (HB_GT_LIB=gtdos by default)" + echo " - w32 (HB_GT_LIB=gtw32 by default)" + echo " - os2 (HB_GT_LIB=gtos2 by default)" + echo " - linux (HB_GT_LIB=gtstd by default)" + echo " - bsd (HB_GT_LIB=gtstd by default)" + echo " - darwin (HB_GT_LIB=gtstd by default)" + echo " - sunos (HB_GT_LIB=gtstd by default)" + echo " - hpux (HB_GT_LIB=gtstd by default)" echo read echo " HB_COMPILER:" @@ -99,7 +119,11 @@ else # --------------------------------------------------------------- # Start the GNU make system - make $* + if [ "$HB_ARCHITECTURE" = "bsd" ]; then + gmake $* + else + make $* + fi if [ "$*" = "clean" ]; then find . -type d -name "$HB_ARCHITECTURE" | xargs rmdir 2> /dev/null diff --git a/harbour/make_tgz.sh b/harbour/make_tgz.sh index fe50971b68..70a4742721 100644 --- a/harbour/make_tgz.sh +++ b/harbour/make_tgz.sh @@ -21,35 +21,95 @@ hb_archfile="${name}-${hb_ver}${hb_platform}.bin.tar.gz" hb_instfile="${name}-${hb_ver}${hb_platform}.inst.sh" hb_lnkso="yes" hb_pref="hb" -hb_contrib="libct rdd_ads" +hb_contrib="" export C_USR="-DHB_FM_STATISTICS_OFF -O2" -if [ -z "$HB_ARCHITECTURE" ]; then export HB_ARCHITECTURE=linux; fi -if [ -z "$HB_COMPILER" ]; then export HB_COMPILER=gcc; fi -if [ -z "$HB_GPM_MOUSE" ]; then export HB_GPM_MOUSE=yes; fi + +if [ -z "$HB_ARCHITECTURE" ]; then + hb_arch=`uname -s | tr "[A-Z]" "[a-z]" 2>/dev/null` + case "$hb_arch" in + *windows*) hb_arch="w32" ;; + *dos) hb_arch="dos" ;; + *bsd) hb_arch="bsd" ;; + esac + export HB_ARCHITECTURE="$hb_arch" +fi + +if [ -z "$HB_COMPILER" ]; then + case "$HB_ARCHITECTURE" in + w32) hb_comp="mingw32" ;; + dos) hb_comp="djgpp" ;; + *) hb_comp="gcc" ;; + esac + export HB_COMPILER="$hb_comp" +fi + if [ -z "$HB_GT_LIB" ]; then export HB_GT_LIB=gtcrs; fi if [ -z "$HB_MULTI_GT" ]; then export HB_MULTI_GT=no; fi if [ -z "$HB_MT" ]; then export HB_MT=no; fi if [ -z "$HB_COMMERCE" ]; then export HB_COMMERCE=no; fi +# default lib dir name +HB_LIBDIRNAME="lib" + +# Select the platform-specific installation prefix and ownership +HB_INSTALL_OWNER=root +case "$HB_ARCHITECTURE" in + linux) + [ -z "$HB_INSTALL_PREFIX" ] && HB_INSTALL_PREFIX="/usr" + [ -d "$HB_INSTALL_PREFIX/lib64" ] && HB_LIBDIRNAME="lib64" + HB_INSTALL_GROUP=root + ;; + *) + [ -z "$HB_INSTALL_PREFIX" ] && HB_INSTALL_PREFIX="/usr/local" + HB_INSTALL_GROUP=wheel + ;; +esac + +# Select the platform-specific command names +INSTALL=install +MAKE=make +TAR=tar +case "$HB_ARCHITECTURE" in + darwin) TAR=gtar; INSTALL="install -c" ;; + bsd) MAKE=gmake ;; +esac + +# Set other platform-specific build options +case "$HB_ARCHITECTURE" in + linux) + export HB_GPM_MOUSE=yes + ;; + darwin) + # Autodetect old Darwin versions and set appropriate build options + if [ `uname -r | sed "s/\..*//g"` -lt 6 ]; then + export HB_NCURSES_FINK=yes + fi + [ -z "$HB_WITHOUT_X11" ] && export HB_WITHOUT_X11=yes + ;; + *) + [ -z "$HB_WITHOUT_X11" ] && export HB_WITHOUT_X11=yes + ;; +esac + if [ "$HB_COMMERCE" = yes ] then export HB_GPM_MOUSE=no export HB_WITHOUT_GTSLN=yes fi -export HB_BIN_INSTALL="/usr/bin" -export HB_INC_INSTALL="/usr/include/${name}" -export HB_LIB_INSTALL="/usr/lib/${name}" +export HB_BIN_INSTALL="$HB_INSTALL_PREFIX/bin" +export HB_INC_INSTALL="$HB_INSTALL_PREFIX/include/${name}" +export HB_LIB_INSTALL="$HB_INSTALL_PREFIX/$HB_LIBDIRNAME/${name}" -# buid +# build umask 022 -make -r clean -make -r +$MAKE -r clean +$MAKE -r for l in ${hb_contrib} do (cd "contrib/$l" - make -r clean - make -r) + $MAKE -r clean + $MAKE -r) done # install @@ -67,22 +127,21 @@ export HB_LIB_INSTALL="$HB_INST_PREF/$HB_LIB_INSTALL" mkdir -p $HB_BIN_INSTALL mkdir -p $HB_INC_INSTALL mkdir -p $HB_LIB_INSTALL -make -r -i install +$MAKE -r -i install for l in ${hb_contrib} do (cd "contrib/$l" - make -r -i install) + $MAKE -r -i install) done # Keep the size of the binaries to a minimim. strip $HB_BIN_INSTALL/harbour -# Keep the size of the libraries to a minimim. -strip --strip-debug $HB_LIB_INSTALL/* - -install -m755 bin/hb-mkslib.sh $HB_BIN_INSTALL/hb-mkslib +# Keep the size of the libraries to a minimim, but don't try to strip symlinks. +strip -S `find $HB_LIB_INSTALL -type f` mkdir -p $HB_INST_PREF/etc/harbour -install -m644 source/rtl/gtcrs/hb-charmap.def $HB_INST_PREF/etc/harbour/hb-charmap.def +#$INSTALL -m644 source/rtl/gtcrs/hb-charmap.def $HB_INST_PREF/etc/harbour/hb-charmap.def + cat > $HB_INST_PREF/etc/harbour.cfg < "${hb_instfile}" <