diff --git a/harbour/ChangeLog b/harbour/ChangeLog index b12c38ced3..09059c81f8 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -16,6 +16,41 @@ The license applies to all entries newer than 2009-04-28. */ +2010-06-17 19:28 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) + * config/global.mk + % Minor optimization for Windows platform + ! At the same time fix for CreateProcess( 'uname' ) error on Win9x. + + * config/wce/mingwarm.mk + * config/win/mingw.mk + * config/win/cygwin.mk + ! Fix to previous: In multi-command cmdlines, f.e.: '(cmd1 && cmd2)' + $(RM) command _must_ be used as a workaround so that GNU Make + converts it to a batch file. Unfortunately with this, an 'ar' + failure will be masked by a successful $(RM), so the make won't + stop. + + * config/globsh.mk + + Added new command macro $(FALSE) preparing for general solution + to force failure. + + * config/beos/gcc.mk + * config/qnx/gcc.mk + * config/bsd/gcc.mk + * config/bsd/clang.mk + * config/darwin/gcc.mk + * config/darwin/icc.mk + * config/darwin/clang.mk + * config/hpux/gcc.mk + * config/linux/gcc.mk + * config/linux/icc.mk + * config/linux/clang.mk + * config/linux/sunpro.mk + * config/sunos/gcc.mk + * config/sunos/sunpro.mk + * config/instsh.mk + * 'false' -> '$(FALSE)' for shell independence. + 2010-06-17 19:02 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) * config/wce/mingwarm.mk * config/wce/msvcarm.mk diff --git a/harbour/config/beos/gcc.mk b/harbour/config/beos/gcc.mk index 30ad503ce0..edc21182ce 100644 --- a/harbour/config/beos/gcc.mk +++ b/harbour/config/beos/gcc.mk @@ -43,7 +43,7 @@ LDLIBS := $(foreach lib,$(HB_USER_LIBS) $(LIBS) $(SYSLIBS),-l$(lib)) LDFLAGS += $(LIBPATHS) AR := $(HB_CCPREFIX)ar -AR_RULE = ( $(AR) $(ARFLAGS) $(HB_AFLAGS) $(HB_USER_AFLAGS) rcs $(LIB_DIR)/$@ $(^F) $(ARSTRIP) ) || ( $(RM) $(LIB_DIR)/$@ && false ) +AR_RULE = ( $(AR) $(ARFLAGS) $(HB_AFLAGS) $(HB_USER_AFLAGS) rcs $(LIB_DIR)/$@ $(^F) $(ARSTRIP) ) || ( $(RM) $(LIB_DIR)/$@ && $(FALSE) ) DY := $(CC) DFLAGS += -shared $(LIBPATHS) diff --git a/harbour/config/bsd/clang.mk b/harbour/config/bsd/clang.mk index 001e7cd35b..916070b2ff 100644 --- a/harbour/config/bsd/clang.mk +++ b/harbour/config/bsd/clang.mk @@ -51,7 +51,7 @@ LDLIBS := $(foreach lib,$(HB_USER_LIBS) $(LIBS) $(SYSLIBS),-l$(lib)) LDFLAGS += $(LIBPATHS) AR := $(HB_CCPREFIX)ar -AR_RULE = ( $(AR) $(ARFLAGS) $(HB_AFLAGS) $(HB_USER_AFLAGS) rcs $(LIB_DIR)/$@ $(^F) $(ARSTRIP) ) || ( $(RM) $(LIB_DIR)/$@ && false ) +AR_RULE = ( $(AR) $(ARFLAGS) $(HB_AFLAGS) $(HB_USER_AFLAGS) rcs $(LIB_DIR)/$@ $(^F) $(ARSTRIP) ) || ( $(RM) $(LIB_DIR)/$@ && $(FALSE) ) DY := $(CC) DFLAGS += -shared $(LIBPATHS) diff --git a/harbour/config/bsd/gcc.mk b/harbour/config/bsd/gcc.mk index 0d1cc854b9..2c087d11cc 100644 --- a/harbour/config/bsd/gcc.mk +++ b/harbour/config/bsd/gcc.mk @@ -41,7 +41,7 @@ LDLIBS := $(foreach lib,$(HB_USER_LIBS) $(LIBS) $(SYSLIBS),-l$(lib)) LDFLAGS += $(LIBPATHS) AR := $(HB_CCPREFIX)ar -AR_RULE = ( $(AR) $(ARFLAGS) $(HB_AFLAGS) $(HB_USER_AFLAGS) rcs $(LIB_DIR)/$@ $(^F) $(ARSTRIP) ) || ( $(RM) $(LIB_DIR)/$@ && false ) +AR_RULE = ( $(AR) $(ARFLAGS) $(HB_AFLAGS) $(HB_USER_AFLAGS) rcs $(LIB_DIR)/$@ $(^F) $(ARSTRIP) ) || ( $(RM) $(LIB_DIR)/$@ && $(FALSE) ) DY := $(CC) DFLAGS += -shared $(LIBPATHS) diff --git a/harbour/config/darwin/clang.mk b/harbour/config/darwin/clang.mk index b851b91fdf..d928e417b0 100644 --- a/harbour/config/darwin/clang.mk +++ b/harbour/config/darwin/clang.mk @@ -54,7 +54,7 @@ LDLIBS := $(foreach lib,$(HB_USER_LIBS) $(LIBS) $(SYSLIBS),-l$(lib)) LDFLAGS += $(LIBPATHS) AR := libtool -AR_RULE = ( $(AR) -static $(ARFLAGS) $(HB_AFLAGS) $(HB_USER_AFLAGS) -o $(LIB_DIR)/$@ $(^F) $(ARSTRIP) ) || ( $(RM) $(LIB_DIR)/$@ && false ) +AR_RULE = ( $(AR) -static $(ARFLAGS) $(HB_AFLAGS) $(HB_USER_AFLAGS) -o $(LIB_DIR)/$@ $(^F) $(ARSTRIP) ) || ( $(RM) $(LIB_DIR)/$@ && $(FALSE) ) DY := $(AR) DFLAGS += -dynamic -flat_namespace -undefined warning -multiply_defined suppress -single_module $(LIBPATHS) diff --git a/harbour/config/darwin/gcc.mk b/harbour/config/darwin/gcc.mk index 7355cb82b6..127911ba66 100644 --- a/harbour/config/darwin/gcc.mk +++ b/harbour/config/darwin/gcc.mk @@ -55,7 +55,7 @@ LDLIBS := $(foreach lib,$(HB_USER_LIBS) $(LIBS) $(SYSLIBS),-l$(lib)) LDFLAGS += $(LIBPATHS) AR := libtool -AR_RULE = ( $(AR) -static $(ARFLAGS) $(HB_AFLAGS) $(HB_USER_AFLAGS) -o $(LIB_DIR)/$@ $(^F) $(ARSTRIP) ) || ( $(RM) $(LIB_DIR)/$@ && false ) +AR_RULE = ( $(AR) -static $(ARFLAGS) $(HB_AFLAGS) $(HB_USER_AFLAGS) -o $(LIB_DIR)/$@ $(^F) $(ARSTRIP) ) || ( $(RM) $(LIB_DIR)/$@ && $(FALSE) ) DY := $(AR) DFLAGS += -dynamic -flat_namespace -undefined warning -multiply_defined suppress -single_module $(LIBPATHS) diff --git a/harbour/config/darwin/icc.mk b/harbour/config/darwin/icc.mk index 58aaf3b994..a2caa1820d 100644 --- a/harbour/config/darwin/icc.mk +++ b/harbour/config/darwin/icc.mk @@ -41,7 +41,7 @@ LDLIBS := $(foreach lib,$(HB_USER_LIBS) $(LIBS) $(SYSLIBS),-l$(lib)) LDFLAGS += $(LIBPATHS) AR := libtool -AR_RULE = ( $(AR) -static $(ARFLAGS) $(HB_AFLAGS) $(HB_USER_AFLAGS) -o $(LIB_DIR)/$@ $(^F) $(ARSTRIP) ) || ( $(RM) $(LIB_DIR)/$@ && false ) +AR_RULE = ( $(AR) -static $(ARFLAGS) $(HB_AFLAGS) $(HB_USER_AFLAGS) -o $(LIB_DIR)/$@ $(^F) $(ARSTRIP) ) || ( $(RM) $(LIB_DIR)/$@ && $(FALSE) ) DY := $(AR) DFLAGS += -dynamic -flat_namespace -undefined warning -multiply_defined suppress -single_module $(LIBPATHS) diff --git a/harbour/config/global.mk b/harbour/config/global.mk index a0d93e14b7..5b8405ad02 100644 --- a/harbour/config/global.mk +++ b/harbour/config/global.mk @@ -389,33 +389,32 @@ ifeq ($(PTHSEP),) endif ifeq ($(HB_HOST_PLAT),) - # Using "quasi-functions" instead of $(eval) solution to stay compatible - # with < 3.80 GNU Make versions - _DETPLAT_STR := $(OSTYPE) - include $(TOP)$(ROOT)config/detplat.mk - ifeq ($(HB_HOST_PLAT),) - _DETPLAT_STR := $(MACHTYPE) + ifeq ($(windir)$(WINDIR),) + # Using "quasi-functions" instead of $(eval) solution to stay compatible + # with < 3.80 GNU Make versions + _DETPLAT_STR := $(OSTYPE) include $(TOP)$(ROOT)config/detplat.mk ifeq ($(HB_HOST_PLAT),) - _DETPLAT_STR := $(OS) + _DETPLAT_STR := $(MACHTYPE) include $(TOP)$(ROOT)config/detplat.mk ifeq ($(HB_HOST_PLAT),) - _DETPLAT_STR := $(shell uname -s) + _DETPLAT_STR := $(OS) include $(TOP)$(ROOT)config/detplat.mk + ifeq ($(HB_HOST_PLAT),) + _DETPLAT_STR := $(shell uname -s) + include $(TOP)$(ROOT)config/detplat.mk + endif endif endif + _DETPLAT_STR := endif - _DETPLAT_STR := endif ifeq ($(HB_HOST_PLAT),) ifneq ($(OS2_SHELL),) HB_HOST_PLAT := os2 else - ifneq ($(windir),) - HB_HOST_PLAT := win - else - ifneq ($(WINDIR),) + ifneq ($(windir)$(WINDIR),) HB_HOST_PLAT := win else ifeq ($(HB_SHELL),dos) @@ -427,7 +426,6 @@ ifeq ($(HB_HOST_PLAT),) endif endif endif - endif endif ifneq ($(filter $(HB_HOST_PLAT),win wce dos os2),) diff --git a/harbour/config/globsh.mk b/harbour/config/globsh.mk index 306565f71f..62fec95425 100644 --- a/harbour/config/globsh.mk +++ b/harbour/config/globsh.mk @@ -43,6 +43,7 @@ MDP := mkdir -p ECHO := echo ECHOQUOTE := " TRUE := TRUE=true +FALSE := false dirbase:: @[ -d "$(OBJ_DIR)" ] || $(MDP) $(OBJ_DIR) @@ -100,6 +101,7 @@ MDP := mkdir ECHO := echo ECHOQUOTE := TRUE := $(ECHO) > nul +FALSE := dirbase:: -@if not exist "$(OBJ_DIR_OS)" $(MDP) "$(OBJ_DIR_OS)" @@ -153,6 +155,7 @@ MDP := $(TOOL_DIR)os2mkdir -p ECHO := echo ECHOQUOTE := TRUE := $(ECHO) > nul +FALSE := dirbase:: -@$(MDP) $(OBJ_DIR) @@ -202,6 +205,7 @@ MDP := $(TOOL_DIR)dosmkdir -p ECHO := $(TOOL_DIR)dosecho ECHOQUOTE := " TRUE := $(ECHO) > nul +FALSE := dirbase:: -@$(MDP) $(OBJ_DIR_OS) diff --git a/harbour/config/hpux/gcc.mk b/harbour/config/hpux/gcc.mk index 55efcc9b4e..cb2aea22cc 100644 --- a/harbour/config/hpux/gcc.mk +++ b/harbour/config/hpux/gcc.mk @@ -47,7 +47,7 @@ LDLIBS := $(foreach lib,$(HB_USER_LIBS) $(LIBS) $(SYSLIBS),-l$(lib)) LDFLAGS += $(LIBPATHS) AR := $(HB_CCPREFIX)ar -AR_RULE = ( $(AR) $(ARFLAGS) $(HB_AFLAGS) $(HB_USER_AFLAGS) rc $(LIB_DIR)/$@ $(^F) $(ARSTRIP) ) || ( $(RM) $(LIB_DIR)/$@ && false ) +AR_RULE = ( $(AR) $(ARFLAGS) $(HB_AFLAGS) $(HB_USER_AFLAGS) rc $(LIB_DIR)/$@ $(^F) $(ARSTRIP) ) || ( $(RM) $(LIB_DIR)/$@ && $(FALSE) ) DY := $(CC) DFLAGS += -shared $(LIBPATHS) diff --git a/harbour/config/instsh.mk b/harbour/config/instsh.mk index 47fe4a875e..2eceb1c738 100644 --- a/harbour/config/instsh.mk +++ b/harbour/config/instsh.mk @@ -39,7 +39,7 @@ ifeq ($(HB_SHELL),sh) if [ ! -d "$(INSTALL_DIR_OS)" ]; \ then \ $(ECHO) "! Can't install, path not found: '$(INSTALL_DIR_OS)'" 1>&2; \ - false; \ + $(FALSE); \ else \ for i in $(INSTALL_FILES); \ do \ diff --git a/harbour/config/linux/clang.mk b/harbour/config/linux/clang.mk index 385a0057ba..f510102f9c 100644 --- a/harbour/config/linux/clang.mk +++ b/harbour/config/linux/clang.mk @@ -53,7 +53,7 @@ LDLIBS := $(foreach lib,$(HB_USER_LIBS) $(LIBS) $(SYSLIBS),-l$(lib)) LDFLAGS += $(LIBPATHS) AR := $(HB_CCPREFIX)ar -AR_RULE = ( $(AR) $(ARFLAGS) $(HB_AFLAGS) $(HB_USER_AFLAGS) rcs $(LIB_DIR)/$@ $(^F) $(ARSTRIP) ) || ( $(RM) $(LIB_DIR)/$@ && false ) +AR_RULE = ( $(AR) $(ARFLAGS) $(HB_AFLAGS) $(HB_USER_AFLAGS) rcs $(LIB_DIR)/$@ $(^F) $(ARSTRIP) ) || ( $(RM) $(LIB_DIR)/$@ && $(FALSE) ) DY := $(CC) DFLAGS += -shared $(LIBPATHS) diff --git a/harbour/config/linux/gcc.mk b/harbour/config/linux/gcc.mk index d97e2a0df9..3f0bdd0d4f 100644 --- a/harbour/config/linux/gcc.mk +++ b/harbour/config/linux/gcc.mk @@ -45,7 +45,7 @@ LDLIBS := $(foreach lib,$(HB_USER_LIBS) $(LIBS) $(SYSLIBS),-l$(lib)) LDFLAGS += $(LIBPATHS) AR := $(HB_CCPREFIX)ar -AR_RULE = ( $(AR) $(ARFLAGS) $(HB_AFLAGS) $(HB_USER_AFLAGS) rcs $(LIB_DIR)/$@ $(^F) $(ARSTRIP) ) || ( $(RM) $(LIB_DIR)/$@ && false ) +AR_RULE = ( $(AR) $(ARFLAGS) $(HB_AFLAGS) $(HB_USER_AFLAGS) rcs $(LIB_DIR)/$@ $(^F) $(ARSTRIP) ) || ( $(RM) $(LIB_DIR)/$@ && $(FALSE) ) DY := $(CC) DFLAGS += -shared $(LIBPATHS) diff --git a/harbour/config/linux/icc.mk b/harbour/config/linux/icc.mk index 6a8c217668..04b4cb7bd6 100644 --- a/harbour/config/linux/icc.mk +++ b/harbour/config/linux/icc.mk @@ -46,7 +46,7 @@ LDLIBS := $(foreach lib,$(HB_USER_LIBS) $(LIBS) $(SYSLIBS),-l$(lib)) LDFLAGS += $(LIBPATHS) AR := xiar -AR_RULE = ( $(AR) $(ARFLAGS) $(HB_AFLAGS) $(HB_USER_AFLAGS) rcs $(LIB_DIR)/$@ $(^F) $(ARSTRIP) ) || ( $(RM) $(LIB_DIR)/$@ && false ) +AR_RULE = ( $(AR) $(ARFLAGS) $(HB_AFLAGS) $(HB_USER_AFLAGS) rcs $(LIB_DIR)/$@ $(^F) $(ARSTRIP) ) || ( $(RM) $(LIB_DIR)/$@ && $(FALSE) ) DY := $(CC) DFLAGS += -shared $(LIBPATHS) diff --git a/harbour/config/linux/sunpro.mk b/harbour/config/linux/sunpro.mk index 23eefd598d..cedfdb0e6b 100644 --- a/harbour/config/linux/sunpro.mk +++ b/harbour/config/linux/sunpro.mk @@ -59,7 +59,7 @@ LDLIBS := $(foreach lib,$(HB_USER_LIBS) $(LIBS) $(SYSLIBS),-l$(lib)) LDFLAGS += $(LIBPATHS) AR := ar -AR_RULE = ( $(AR) $(ARFLAGS) $(HB_AFLAGS) $(HB_USER_AFLAGS) rcs $(LIB_DIR)/$@ $(^F) $(ARSTRIP) ) || ( $(RM) $(LIB_DIR)/$@ && false ) +AR_RULE = ( $(AR) $(ARFLAGS) $(HB_AFLAGS) $(HB_USER_AFLAGS) rcs $(LIB_DIR)/$@ $(^F) $(ARSTRIP) ) || ( $(RM) $(LIB_DIR)/$@ && $(FALSE) ) DY := $(CC) DFLAGS += -G $(HB_ISAOPT) $(LIBPATHS) diff --git a/harbour/config/qnx/gcc.mk b/harbour/config/qnx/gcc.mk index d97e2a0df9..3f0bdd0d4f 100644 --- a/harbour/config/qnx/gcc.mk +++ b/harbour/config/qnx/gcc.mk @@ -45,7 +45,7 @@ LDLIBS := $(foreach lib,$(HB_USER_LIBS) $(LIBS) $(SYSLIBS),-l$(lib)) LDFLAGS += $(LIBPATHS) AR := $(HB_CCPREFIX)ar -AR_RULE = ( $(AR) $(ARFLAGS) $(HB_AFLAGS) $(HB_USER_AFLAGS) rcs $(LIB_DIR)/$@ $(^F) $(ARSTRIP) ) || ( $(RM) $(LIB_DIR)/$@ && false ) +AR_RULE = ( $(AR) $(ARFLAGS) $(HB_AFLAGS) $(HB_USER_AFLAGS) rcs $(LIB_DIR)/$@ $(^F) $(ARSTRIP) ) || ( $(RM) $(LIB_DIR)/$@ && $(FALSE) ) DY := $(CC) DFLAGS += -shared $(LIBPATHS) diff --git a/harbour/config/sunos/gcc.mk b/harbour/config/sunos/gcc.mk index bd3e143766..69c9084488 100644 --- a/harbour/config/sunos/gcc.mk +++ b/harbour/config/sunos/gcc.mk @@ -45,7 +45,7 @@ LDLIBS := $(foreach lib,$(HB_USER_LIBS) $(LIBS) $(SYSLIBS),-l$(lib)) LDFLAGS += $(LIBPATHS) AR := $(HB_CCPREFIX)ar -AR_RULE = ( $(AR) $(ARFLAGS) $(HB_AFLAGS) $(HB_USER_AFLAGS) rc $(LIB_DIR)/$@ $(^F) $(ARSTRIP) ) || ( $(RM) $(LIB_DIR)/$@ && false ) +AR_RULE = ( $(AR) $(ARFLAGS) $(HB_AFLAGS) $(HB_USER_AFLAGS) rc $(LIB_DIR)/$@ $(^F) $(ARSTRIP) ) || ( $(RM) $(LIB_DIR)/$@ && $(FALSE) ) DY := $(CC) DFLAGS += -shared $(LIBPATHS) diff --git a/harbour/config/sunos/sunpro.mk b/harbour/config/sunos/sunpro.mk index 09f9f2e346..add8890a7d 100644 --- a/harbour/config/sunos/sunpro.mk +++ b/harbour/config/sunos/sunpro.mk @@ -64,7 +64,7 @@ LDLIBS := $(foreach lib,$(HB_USER_LIBS) $(LIBS) $(SYSLIBS),-l$(lib)) LDFLAGS += $(LIBPATHS) AR := ar -AR_RULE = ( $(AR) $(ARFLAGS) $(HB_AFLAGS) $(HB_USER_AFLAGS) rc $(LIB_DIR)/$@ $(^F) $(ARSTRIP) ) || ( $(RM) $(LIB_DIR)/$@ && false ) +AR_RULE = ( $(AR) $(ARFLAGS) $(HB_AFLAGS) $(HB_USER_AFLAGS) rc $(LIB_DIR)/$@ $(^F) $(ARSTRIP) ) || ( $(RM) $(LIB_DIR)/$@ && $(FALSE) ) DY := $(CC) DFLAGS += -G $(HB_ISAOPT) $(LIBPATHS) diff --git a/harbour/config/wce/mingwarm.mk b/harbour/config/wce/mingwarm.mk index 07326cbf54..5461758810 100644 --- a/harbour/config/wce/mingwarm.mk +++ b/harbour/config/wce/mingwarm.mk @@ -66,7 +66,7 @@ endef define create_library $(if $(wildcard __lib__.tmp),@$(RM) __lib__.tmp,) $(foreach file,$^,$(library_object)) - ( $(AR) $(ARFLAGS) $(HB_AFLAGS) $(HB_USER_AFLAGS) rcs $(LIB_DIR)/$@ @__lib__.tmp $(ARSTRIP) ) + ( $(AR) $(ARFLAGS) $(HB_AFLAGS) $(HB_USER_AFLAGS) rcs $(LIB_DIR)/$@ @__lib__.tmp $(ARSTRIP) ) || $(RM) $(subst /,$(DIRSEP),$(LIB_DIR)/$@) endef AR_RULE = $(create_library) diff --git a/harbour/config/win/cygwin.mk b/harbour/config/win/cygwin.mk index dec9db3e0b..eb2f170177 100644 --- a/harbour/config/win/cygwin.mk +++ b/harbour/config/win/cygwin.mk @@ -63,7 +63,7 @@ endef define create_library $(if $(wildcard __lib__.tmp),@$(RM) __lib__.tmp,) $(foreach file,$^,$(library_object)) - ( $(AR) $(ARFLAGS) $(HB_AFLAGS) $(HB_USER_AFLAGS) rcs $(LIB_DIR)/$@ @__lib__.tmp $(ARSTRIP) ) + ( $(AR) $(ARFLAGS) $(HB_AFLAGS) $(HB_USER_AFLAGS) rcs $(LIB_DIR)/$@ @__lib__.tmp $(ARSTRIP) ) || $(RM) $(subst /,$(DIRSEP),$(LIB_DIR)/$@) endef AR_RULE = $(create_library) diff --git a/harbour/config/win/mingw.mk b/harbour/config/win/mingw.mk index 9550f992a9..a868f7fc22 100644 --- a/harbour/config/win/mingw.mk +++ b/harbour/config/win/mingw.mk @@ -107,7 +107,7 @@ endef define create_library $(if $(wildcard __lib__.tmp),@$(RM) __lib__.tmp,) $(foreach file,$^,$(library_object)) - ( $(AR) $(ARFLAGS) $(HB_AFLAGS) $(HB_USER_AFLAGS) rcs $(LIB_DIR)/$@ @__lib__.tmp $(ARSTRIP) ) + ( $(AR) $(ARFLAGS) $(HB_AFLAGS) $(HB_USER_AFLAGS) rcs $(LIB_DIR)/$@ @__lib__.tmp $(ARSTRIP) ) || $(RM) $(subst /,$(DIRSEP),$(LIB_DIR)/$@) endef AR_RULE = $(create_library)