diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 1777bb5f13..8a490c876f 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -17,6 +17,26 @@ past entries belonging to author(s): Viktor Szakats. */ +2009-08-12 14:36 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl) + * harbour/bin/hb-func.sh + * updated list of system libraries used in to create harbour*.dll + in MinGW builds + + * harbour/bin/postinst.sh + - removed not longer used code for build library in postinst phase + * use 'suncc' instead of 'cc' to create harbour shared library without + any platform dependent non default settings + * synced flags used in build process with flags used to create + harbour shared library in sunpro builds + + * harbour/config/linux/sunpro.cf + * harbour/config/sunos/sunpro.cf + * removed options which explicitly force platform + * added -xbuiltin=%none as workaround for problems in x86 PIC builds + exploited by hbpcre library code + * changed the order of C/LD flags settings so they can be easy + overwritten by HB_ISAOPT + 2009-08-12 13:29 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) * config/global.cf * config/instsh.cf diff --git a/harbour/bin/hb-func.sh b/harbour/bin/hb-func.sh index a020a3f8ab..68d9860673 100755 --- a/harbour/bin/hb-func.sh +++ b/harbour/bin/hb-func.sh @@ -794,7 +794,7 @@ mk_hblibso() hb_libs="${hb_libs//hbzlib/}" fi if [ "${HB_COMPILER}" = "mingw" ] || [ "${HB_COMPILER}" = "mingw64" ]; then - linker_options="${linker_options} -luser32 -lwinspool -lgdi32 -lcomctl32 -lcomdlg32 -lole32 -loleaut32 -luuid -lws2_32" + linker_options="${linker_options} -luser32 -lwinspool -lgdi32 -lcomctl32 -ladvapi32 -lcomdlg32 -lole32 -loleaut32 -luuid -lws2_32" elif [ "${HB_COMPILER}" = "mingwarm" ]; then linker_options="${linker_options} -lwininet -lws2 -lcommdlg -lcommctrl -luuid -lole32" elif [ "${HB_COMPILER}" = "djgpp" ]; then diff --git a/harbour/bin/postinst.sh b/harbour/bin/postinst.sh index 45647b2f8e..d63cc23b7d 100755 --- a/harbour/bin/postinst.sh +++ b/harbour/bin/postinst.sh @@ -50,22 +50,6 @@ if [ "$HB_COMPILER" = "gcc" ] || \ [ "$HB_COMPILER" = "sunpro" ] || \ [ "$HB_COMPILER" = "sunpro64" ] then - RANLIB="" - MAKE=make - AR="${HB_CCPREFIX}ar -cr" - AR_OPT="" - if [ "${HB_ARCHITECTURE}" = "bsd" ] || \ - [ "${HB_ARCHITECTURE}" = "hpux" ] || \ - [ "${HB_ARCHITECTURE}" = "sunos" ] || \ - [ `uname` = "FreeBSD" ]; then - MAKE=gmake - elif [ "${HB_ARCHITECTURE}" = "darwin" ]; then - # We must build an archive index on Darwin - #AR="${HB_CCPREFIX}ar -crs" - AR="libtool" - AR_OPT="-static ${HB_USER_AFLAGS} -o " - fi - if [ -n "${HB_TOOLS_PREF}" ]; then hb_mkdyn="${HB_BIN_INSTALL}/${HB_TOOLS_PREF}-mkdyn" rm -f "${hb_mkdyn}" @@ -82,13 +66,16 @@ then [ "$HB_COMPILER" = "sunpro64" ]; then hb_mkdyn="${HB_BIN_INSTALL}/hb-mkdyn" rm -f "${hb_mkdyn}" - if [ "$HB_ARCHITECTURE" = "sunos" ]; then - sed -e "s/gcc -shared -fPIC/cc -G -xcode=pic32 ${HB_ISAOPT}/g" "${hb_root}/bin/hb-mkdyn.sh" > "${hb_mkdyn}" && \ - chmod 755 "${hb_mkdyn}" + if [ "$HB_ARCHITECTURE" = "sunos" ] && \ + (isalist|grep sparc) &>/dev/null; then + lnopt="-xcode=pic32" else - sed -e "s/gcc -shared -fPIC/cc -G -KPIC ${HB_ISAOPT}/g" "${hb_root}/bin/hb-mkdyn.sh" > "${hb_mkdyn}" && \ - chmod 755 "${hb_mkdyn}" + lnopt="-KPIC" fi + [ "$HB_BUILD_OPTIM" = "no" ] || lnopt="-fast -xnolibmopt $lnopt" + sed -e "s/gcc -shared -fPIC/suncc -G ${lnopt} ${HB_ISAOPT}/g" \ + "${hb_root}/bin/hb-mkdyn.sh" > "${hb_mkdyn}" && \ + chmod 755 "${hb_mkdyn}" elif [ "${HB_ARCHITECTURE}" = "sunos" ] || \ [ "${HB_ARCHITECTURE}" = "hpux" ] || \ ! which install &>/dev/null; then @@ -110,13 +97,8 @@ then fi mk_hbtools "${HB_BIN_INSTALL}" "$@" - if [ "$HB_COMPILER" = "gcc" ] || \ - [ "$HB_COMPILER" = "mingw" ] || \ - [ "$HB_COMPILER" = "mingw64" ] || \ - [ "$HB_COMPILER" = "mingwarm" ] || \ - [ "$HB_COMPILER" = "sunpro" ] || \ - [ "$HB_COMPILER" = "sunpro64" ] || \ - [ "$HB_COMPILER" = "icc" ]; then + + if [ "${HB_ARCHITECTURE}" != "dos" ]; then mk_hblibso "${hb_root}" fi fi diff --git a/harbour/config/linux/sunpro.cf b/harbour/config/linux/sunpro.cf index bb7c42f7e6..348f32eec2 100644 --- a/harbour/config/linux/sunpro.cf +++ b/harbour/config/linux/sunpro.cf @@ -26,22 +26,31 @@ LDFLAGS := # flags may override values set by `-fast', and this way # no warnings are generated. -# may inherit -m64 from sunpro64.cf, which supersedes -xarch=386 -HB_ISAOPT ?= -xarch=386 -LDFLAGS += $(HB_ISAOPT) - -export HB_ISAOPT - ifneq ($(HB_BUILD_OPTIM),no) # Together with $(HB_ISAOPT) above, these are supposed to (somewhat) # conform to the Blastwave build standards, see # http://wiki.blastwave.org/mediawiki/index.php/Build_Standards # Try to keep them this way. - CFLAGS += -fast $(HB_ISAOPT) + CFLAGS += -fast + CFLAGS += -xnolibmopt + # workaround for problems in x86 PIC builds exploited by hbpcre library code + ifeq ($(LIBNAME),hbpcre) + CFLAGS += -xbuiltin=%none + endif endif +# force position independent code for harbour shared library +# it's not optimal but without support for compilation in two passes +# we have to use this option also for static libraries and binaries CFLAGS += -KPIC +# in HB_ISAOPT we may have platform dependent settings set in different +# sunpro*.cf files +export HB_ISAOPT + +CFLAGS += $(HB_ISAOPT) +LDFLAGS += $(HB_ISAOPT) + ifneq ($(HB_BUILD_WARN),no) CFLAGS += -erroff=%none else diff --git a/harbour/config/sunos/sunpro.cf b/harbour/config/sunos/sunpro.cf index 9b90d070b7..44f57d279b 100644 --- a/harbour/config/sunos/sunpro.cf +++ b/harbour/config/sunos/sunpro.cf @@ -26,32 +26,37 @@ LDFLAGS := # flags may override values set by `-fast', and this way # no warnings are generated. -# may inherit -m64 from sunpro64.cf, which supersedes -xarch=v8 -HB_ISAOPT ?= -xarch=v8 -LDFLAGS += $(HB_ISAOPT) - -# might not be needed for sunos, but helps keeping -# {linux,sunos}/sunpro.cf easily vimdiff'able for now -export HB_ISAOPT - ifneq ($(HB_BUILD_OPTIM),no) # Together with $(HB_ISAOPT) above, these are supposed to (somewhat) # conform to the Blastwave build standards, see # http://wiki.blastwave.org/mediawiki/index.php/Build_Standards # Try to keep them this way. - CFLAGS += -fast $(HB_ISAOPT) - ifneq ($(HB_BUILD_MODE),cpp) - CFLAGS += -xstrconst - endif + CFLAGS += -fast CFLAGS += -xnolibmopt + # workaround for problems in x86 PIC builds exploited by hbpcre library code + ifeq ($(LIBNAME),hbpcre) + ifneq ($(findstring sparc,$(shell isalist)),sparc) + CFLAGS += -xbuiltin=%none + endif + endif endif +# force position independent code for harbour shared library +# it's not optimal but without support for compilation in two passes +# we have to use this option also for static libraries and binaries ifeq ($(findstring sparc,$(shell isalist)),sparc) CFLAGS += -xcode=pic32 else CFLAGS += -KPIC endif +# in HB_ISAOPT we may have platform dependent settings set in different +# sunpro*.cf files +export HB_ISAOPT + +CFLAGS += $(HB_ISAOPT) +LDFLAGS += $(HB_ISAOPT) + ifneq ($(HB_BUILD_WARN),no) CFLAGS += -erroff=%none else