From fe19e51d6352ce4c2acd87083ccfe7a071c1f1e3 Mon Sep 17 00:00:00 2001 From: Viktor Szakats Date: Tue, 25 Aug 2009 15:34:21 +0000 Subject: [PATCH] 2009-08-25 17:32 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) * config/global.mk + Added dos/djgpp autodetection for *nix platforms. * contrib/hbfbird/Makefile + Extended autodetection and feedback. Experimenting. * config/globsh.mk + Added web links to DJGPP FAQ instead of binary FAQ package. * contrib/hbqt/Makefile * contrib/hbfbird/Makefile * contrib/gtqtc/Makefile * source/Makefile * config/global.mk * HB_OS_UNIX GNU Make var renamed to HB_PLATFORM_UNIX. Content is now non-empty or empty (was yes or no). * config/sunos/sunpro.mk + Changes made to config/linux/sunpro.mk applied here also. --- harbour/ChangeLog | 21 ++++++++++++ harbour/config/global.mk | 59 ++++++++++++++++++++++++++------ harbour/config/globsh.mk | 5 +-- harbour/config/sunos/sunpro.mk | 11 +----- harbour/contrib/gtqtc/Makefile | 2 +- harbour/contrib/hbfbird/Makefile | 31 ++++++++++++----- harbour/contrib/hbqt/Makefile | 2 +- harbour/source/Makefile | 4 +-- 8 files changed, 101 insertions(+), 34 deletions(-) diff --git a/harbour/ChangeLog b/harbour/ChangeLog index cd12bf4242..72b1494269 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -17,6 +17,27 @@ past entries belonging to author(s): Viktor Szakats. */ +2009-08-25 17:32 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) + * config/global.mk + + Added dos/djgpp autodetection for *nix platforms. + + * contrib/hbfbird/Makefile + + Extended autodetection and feedback. Experimenting. + + * config/globsh.mk + + Added web links to DJGPP FAQ instead of binary FAQ package. + + * contrib/hbqt/Makefile + * contrib/hbfbird/Makefile + * contrib/gtqtc/Makefile + * source/Makefile + * config/global.mk + * HB_OS_UNIX GNU Make var renamed to HB_PLATFORM_UNIX. + Content is now non-empty or empty (was yes or no). + + * config/sunos/sunpro.mk + + Changes made to config/linux/sunpro.mk applied here also. + 2009-08-25 16:49 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl) * harbour/config/linux/sunpro.mk ! fixed dynamic library creation - @ is not supported by diff --git a/harbour/config/global.mk b/harbour/config/global.mk index 25c68360d8..5e34dfdfc2 100644 --- a/harbour/config/global.mk +++ b/harbour/config/global.mk @@ -676,6 +676,45 @@ ifeq ($(HB_COMPILER),) else $(error ! Harbour build couldn't find cegcc cross-compiler. Please install it to /opt/mingw32ce, or point HB_CCPATH/HB_CCPREFIX environment variables to it) endif + else + ifeq ($(HB_PLATFORM),dos) + # Look for djgpp compiler on HB_CCPATH if it's set + ifneq ($(HB_CCPATH),) + ifneq ($(call find_in_path_par,i586-pc-msdosdjgpp,$(HB_CCPATH)),) + HB_COMPILER := djgpp + HB_CCPREFIX := i586-pc-msdosdjgpp- + HB_CCPATH := $(HB_CCPATH)/ + else + HB_CCPATH := + HB_CCPREFIX := + endif + endif + + # If HB_CCPATH not set, or couldn't be found on the provided PATH, + # try to detect them in default locations + ifeq ($(HB_CCPATH),) + HB_CCPATH := /usr/local/i586-pc-msdosdjgpp + ifneq ($(call find_in_path_par,i586-pc-msdosdjgpp,$(HB_CCPATH)),) + HB_COMPILER := djgpp + HB_CCPREFIX := i586-pc-msdosdjgpp- + else + HB_CCPATH := + HB_CCPREFIX := + endif + endif + + ifneq ($(HB_CCPATH)$(HB_CCPREFIX),) + HB_COMP_PATH := $(dir $(HB_CCPATH)) + HB_PLATFORM := dos + export HB_TOOLS_PREF := hbce + export HB_XBUILD := dos + ifneq ($(HB_HOST_BUILD),all) + HB_HOST_BUILD := lib + endif + else + $(error ! Harbour build couldn't find djgpp cross-compiler. Please install it to /usr/local/i586-pc-msdosdjgpp, or point HB_CCPATH/HB_CCPREFIX environment variables to it) + endif + endif endif endif endif @@ -872,9 +911,9 @@ export HB_COMPILER export HB_SHELL ifneq ($(filter $(HB_PLATFORM),win wce dos os2),) - HB_OS_UNIX := no + HB_PLATFORM_UNIX := else - HB_OS_UNIX := yes + HB_PLATFORM_UNIX := yes endif PLAT_COMP := $(HB_PLATFORM)/$(HB_COMPILER)$(subst \,/,$(HB_BUILD_NAME)) @@ -882,7 +921,7 @@ PLAT_COMP := $(HB_PLATFORM)/$(HB_COMPILER)$(subst \,/,$(HB_BUILD_NAME)) OBJ_DIR := obj/$(PLAT_COMP) BIN_DIR := $(TOP)$(ROOT)bin/$(PLAT_COMP) LIB_DIR := $(TOP)$(ROOT)lib/$(PLAT_COMP) -ifeq ($(HB_OS_UNIX),no) +ifeq ($(HB_PLATFORM_UNIX),) DYN_DIR := $(BIN_DIR) IMP_DIR := $(LIB_DIR) else @@ -1106,10 +1145,10 @@ ifneq ($(HB_DB_DRVEXT),) HB_RDD_DIRS += $(HB_DB_DRVEXT) endif -ifeq ($(HB_OS_UNIX),yes) - HB_DYN_VER := $(HB_VER_MAJOR).$(HB_VER_MINOR).$(HB_VER_RELEASE) -else +ifeq ($(HB_PLATFORM_UNIX),) HB_DYN_VER := $(HB_VER_MAJOR)$(HB_VER_MINOR) +else + HB_DYN_VER := $(HB_VER_MAJOR).$(HB_VER_MINOR).$(HB_VER_RELEASE) endif ifneq ($(HB_PLATFORM),dos) @@ -1152,7 +1191,7 @@ else # Fill it automatically if not specified ifeq ($(HB_INSTALL_PREFIX),) - ifeq ($(HB_OS_UNIX),no) + ifeq ($(HB_PLATFORM_UNIX),) HB_INSTALL_PREFIX := $(realpath $(TOP)$(ROOT)) else ifneq ($(PREFIX),) @@ -1195,7 +1234,7 @@ endif ifneq ($(HB_INSTALL_PREFIX),) - ifeq ($(HB_OS_UNIX),no) + ifeq ($(HB_PLATFORM_UNIX),) LIBPOSTFIX := $(DIRSEP)$(subst /,$(DIRSEP),$(PLAT_COMP)) else # Not perfect, please enhance it. @@ -1221,7 +1260,7 @@ ifneq ($(HB_INSTALL_PREFIX),) export HB_LIB_INSTALL := $(HB_INSTALL_PREFIX)$(DIRSEP)lib$(LIBPOSTFIX) endif ifeq ($(HB_DYN_INSTALL),) - ifeq ($(HB_OS_UNIX),no) + ifeq ($(HB_PLATFORM_UNIX),) export HB_DYN_INSTALL := $(HB_BIN_INSTALL) else export HB_DYN_INSTALL := $(HB_LIB_INSTALL) @@ -1236,7 +1275,7 @@ ifneq ($(HB_INSTALL_PREFIX),) # Standard name: DOCDIR ifeq ($(HB_DOC_INSTALL),) # Don't set doc dir for *nix targets - ifeq ($(HB_OS_UNIX),no) + ifeq ($(HB_PLATFORM_UNIX),) ifneq ($(HB_INSTALL_PREFIX),$(HB_INSTALL_PREFIX_TOP)) export HB_DOC_INSTALL := $(HB_INSTALL_PREFIX)$(DIRSEP)doc endif diff --git a/harbour/config/globsh.mk b/harbour/config/globsh.mk index dd184f3e41..3e581930aa 100644 --- a/harbour/config/globsh.mk +++ b/harbour/config/globsh.mk @@ -163,8 +163,9 @@ ifeq ($(HB_SHELL),dos) # NOTE: DOS command line length has a limit of 126 characters. # When using DJGPP GNU Make to invoke other DJGPP tools this limit # is about 13KB, as they do special trick to overcome it. -# See DJGPP (djgppfaq) FAQ 16.4 and 16.5: -# ftp://ftp.delorie.com/pub/djgpp/v2faq/frfaq.zip +# See these DJGPP FAQs: +# http://www.delorie.com/djgpp/v2faq/faq16_4.html +# http://www.delorie.com/djgpp/v2faq/faq16_5.html # [vszakats] MK := $(subst \,/,$(MAKE)) diff --git a/harbour/config/sunos/sunpro.mk b/harbour/config/sunos/sunpro.mk index c32025f398..09997ae40e 100644 --- a/harbour/config/sunos/sunpro.mk +++ b/harbour/config/sunos/sunpro.mk @@ -114,15 +114,6 @@ endif DY_OUT := -o$(subst x,x, ) DLIBS := -# NOTE: The empty line directly before 'endef' HAVE TO exist! -define dyn_object - @$(ECHO) $(ECHOQUOTE)$(subst \,/,$(file))$(ECHOQUOTE) >> __dyn__.tmp - -endef -define create_dynlib - $(if $(wildcard __dyn__.tmp),@$(RM) __dyn__.tmp,) - $(foreach file,$^,$(dyn_object)) - $(DY) $(DFLAGS) $(HB_USER_DFLAGS) $(DY_OUT)$(DYN_DIR)/$@ @__dyn__.tmp -endef +DY_RULE = $(DY) $(DFLAGS) $(HB_USER_DFLAGS) $(DY_OUT)$(DYN_DIR)/$@ $^ include $(TOP)$(ROOT)config/rules.mk diff --git a/harbour/contrib/gtqtc/Makefile b/harbour/contrib/gtqtc/Makefile index 5007bdbcb5..04a9296347 100644 --- a/harbour/contrib/gtqtc/Makefile +++ b/harbour/contrib/gtqtc/Makefile @@ -22,7 +22,7 @@ ifeq ($(PREREQ_MISS),) ifeq ($(HB_INC_QT),) ifeq ($(HB_XBUILD),) - ifeq ($(HB_OS_UNIX),yes) + ifneq ($(HB_PLATFORM_UNIX),) HB_INC_QT := /usr/include/qt4 /usr/lib/qt4/include /usr/include /Developer/qt/include endif endif diff --git a/harbour/contrib/hbfbird/Makefile b/harbour/contrib/hbfbird/Makefile index 42c3e31649..9583d5fde0 100644 --- a/harbour/contrib/hbfbird/Makefile +++ b/harbour/contrib/hbfbird/Makefile @@ -16,22 +16,37 @@ PRG_SOURCES := \ ifeq ($(filter $(HB_COMPILER),pocc64 poccarm),) - ifeq ($(HB_INC_FIREBIRD),) - ifeq ($(HB_XBUILD),) - HB_INC_FIREBIRD := /usr/include /opt/firebird/include + ifneq ($(HB_INC_FIREBIRD),no) + + ifeq ($(HB_INC_FIREBIRD),) + ifeq ($(HB_XBUILD),) + ifneq ($(HB_PLATFORM_UNIX),) + HB_INC_FIREBIRD := /usr/include /opt/firebird/include + endif + endif endif - endif - HB_INC_FIREBIRD_OK := $(foreach d, $(HB_INC_FIREBIRD), $(if $(wildcard $(d)/ibase.h),$(d),)) + ifneq ($(HB_INC_FIREBIRD),) + HB_INC_FIREBIRD_OK := $(strip $(foreach d, $(HB_INC_FIREBIRD), $(if $(wildcard $(d)/ibase.h),$(d),))) - ifneq ($(strip $(HB_INC_FIREBIRD_OK)),) + ifneq ($(HB_INC_FIREBIRD_OK),) - HB_CFLAGS += $(foreach d,$(HB_INC_FIREBIRD_OK),-I$(d)) + HB_CFLAGS += $(foreach d,$(HB_INC_FIREBIRD_OK),-I$(d)) - include $(TOP)$(ROOT)config/lib.mk + include $(TOP)$(ROOT)config/lib.mk + else + HB_SKIP_REASON := component not found + include $(TOP)$(ROOT)config/none.mk + endif + else + HB_SKIP_REASON := component location not set + include $(TOP)$(ROOT)config/none.mk + endif else + HB_SKIP_REASON := deselected include $(TOP)$(ROOT)config/none.mk endif else + HB_SKIP_REASON := compiler not supported include $(TOP)$(ROOT)config/none.mk endif diff --git a/harbour/contrib/hbqt/Makefile b/harbour/contrib/hbqt/Makefile index f47f2feafe..b915da79d9 100644 --- a/harbour/contrib/hbqt/Makefile +++ b/harbour/contrib/hbqt/Makefile @@ -22,7 +22,7 @@ ifeq ($(PREREQ_MISS),) ifeq ($(HB_INC_QT),) ifeq ($(HB_XBUILD),) - ifeq ($(HB_OS_UNIX),yes) + ifneq ($(HB_PLATFORM_UNIX),) HB_INC_QT := /usr/include/qt4 /usr/lib/qt4/include /usr/include /Developer/qt/include endif endif diff --git a/harbour/source/Makefile b/harbour/source/Makefile index 90616a5609..58bba7facd 100644 --- a/harbour/source/Makefile +++ b/harbour/source/Makefile @@ -19,7 +19,7 @@ else ifneq ($(HB_BUILD_DLL),no) - ifeq ($(HB_OS_UNIX),yes) + ifneq ($(HB_PLATFORM_UNIX),) DYNNAME_POST := .$(HB_DYN_VER) else DYNNAME_POST := -$(HB_DYN_VER) @@ -93,7 +93,7 @@ else ifeq ($(HB_PLATFORM),win) DYNDIRLIST_BASE += source/rtl/gtwvt source/rtl/gtgui source/rtl/gtwin endif - ifeq ($(HB_OS_UNIX),yes) + ifneq ($(HB_PLATFORM_UNIX),) DYNDIRLIST_BASE += source/rtl/gttrm DYNDIRLIST_BASE += source/rtl/gtcrs DYNDIRLIST_BASE += source/rtl/gtsln