diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 43a1e13c5e..5cd37b73e9 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -17,6 +17,62 @@ past entries belonging to author(s): Viktor Szakats. */ +2009-08-21 19:54 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) + * source/dynlib/mt/Makefile + * source/dynlib/Makefile + + Added 'install' logic for dynamic lib implibs. + + * config/global.mk + + Added useful GNU Make link. + ! Added HB_HOST_CPU "detection" for os2 and dos to avoid + situation where cross-build is detected due to different + to HB_CPU value. (HB_CPU autodetection for os2 dos was + added yesterday). It's quite theoretical, as os2 dos + has CPU type set to constant 'x86'. + + Added IMP_DIR value. This hold where to store implibs + for dynamic libs. Empty if platform don't need implibs + (huge relief BTW). For *nix this value is set empty, for + non-*nix it's set to LIB_DIR. + + Added initialization for DYN_PREF (to empty). + + * config/dyn.mk + + Added handling of IMP_DIR, IMP_FILE. + ! Dyn lib build rule guarded with HB_BUILD_DLL and DY_RULE + checks. + + * config/globsh.mk + + Added dirbase and clean rules for implibs. + ! Fixed using OS version of dirs in $(wildcard) for nt + clean rules for OBJ_DIR and PKG_DIR. + + * config/wce/mingwarm.mk + * config/wce/poccarm.mk + * config/wce/msvcarm.mk + * config/win/xcc.mk + * config/win/mingw.mk + * config/win/pocc.mk + * config/win/bcc.mk + * config/win/watcom.mk + * config/win/icc.mk + * config/win/cygwin.mk + * config/win/msvc.mk + + Dynamic lib rules extended to generate implib in IMP_DIR. + This goes smoothly with all compiler except bcc, which requires + a copy and a delete to move the implib to lib dir. 'move' + doesn't work (says 'command not found' or equivalent and + requires '$(COMSPEC) /C' with GNU Make + nt shell), so I + didn't use it finally. Anyhow bcc implib is small. + + * config/globsh.mk + - Deleted $(MV) variable with move command. + (problematic under nt shells) + + - config/dj-mv.exe + * config/readme.txt + - Deleted DJGPP mv tool. + + ; NOTE: dynamic library handling seems to be about feature complete. + 2009-08-21 19:07 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl) * harbour/contrib/hbwin/axcore.c * do not pass event number as 1-st parameter to user handlers diff --git a/harbour/config/dj-mv.exe b/harbour/config/dj-mv.exe deleted file mode 100644 index 6ab56afdaf..0000000000 Binary files a/harbour/config/dj-mv.exe and /dev/null differ diff --git a/harbour/config/dyn.mk b/harbour/config/dyn.mk index 3295f187fd..0948955938 100644 --- a/harbour/config/dyn.mk +++ b/harbour/config/dyn.mk @@ -13,9 +13,13 @@ include $(TOP)$(ROOT)config/c.mk include $(TOP)$(ROOT)config/prg.mk DYN_NAME := $(DYN_PREF)$(DYNNAME)$(DYN_EXT) - DYN_FILE := $(DYN_DIR)/$(DYN_NAME) +ifneq ($(IMP_DIR),) + IMP_NAME := $(basename $(DYN_NAME))$(LIB_EXT) + IMP_FILE := $(IMP_DIR)/$(IMP_NAME) +endif + ALL_OBJS := $(subst /,$(DIRSEP),$(foreach dir,$(DYNDIRLIST),$(wildcard $(TOP)$(ROOT)$(dir)/$(OBJ_DIR)/*$(OBJ_DYN_POSTFIX)$(OBJ_EXT)))) first:: dirbase descend @@ -23,10 +27,16 @@ first:: dirbase descend descend:: dirbase +@$(MK) $(MKFLAGS) -C $(OBJ_DIR) -f $(GRANDP)Makefile TOP=$(GRANDP) $(DYN_NAME) +ifneq ($(HB_BUILD_DLL),no) +ifneq ($(DY_RULE),) + vpath $(DYN_NAME) $(DYN_DIR) $(DYN_NAME) : $(ALL_OBJS) $(DY_RULE) +endif +endif + INSTALL_FILES := $(DYN_FILE) INSTALL_DIR := $(HB_DYN_INSTALL) diff --git a/harbour/config/global.mk b/harbour/config/global.mk index 372931934b..f110b64d15 100644 --- a/harbour/config/global.mk +++ b/harbour/config/global.mk @@ -12,6 +12,7 @@ # http://www.gnu.org/software/make/manual/make.html # http://www.jgc.org/feeds/topic-gnumake.xml # http://lists.gnu.org/archive/html/help-make/ +# http://make.paulandlesley.org/ # Portable shell programming: # http://www.gnu.org/software/autoconf/manual/html_node/Portable-Shell.html # http://www.gnu.org/software/bash/manual/bashref.html @@ -444,12 +445,16 @@ ifeq ($(HB_HOST_ARCH),win) endif endif else - # TODO: CPU detection for rest of systems. + ifneq ($(filter $(HB_HOST_ARCH),dos os2),) + HB_CPU := x86 + else + # TODO: CPU detection for rest of systems. + endif endif ifeq ($(HB_INIT_DONE),) ifneq ($(MAKE_381),) - $(info ! HB_HOST_ARCH: $(HB_HOST_ARCH)$(if $(HB_HOST_CPU), ($(HB_HOST_CPU)),) HB_SHELL: $(HB_SHELL) $(if $(HB_SHELL_XP),,(pre-xp))) + $(info ! HB_HOST_ARCH: $(HB_HOST_ARCH)$(if $(HB_HOST_CPU), ($(HB_HOST_CPU)),) HB_SHELL: $(HB_SHELL)) endif endif @@ -725,9 +730,12 @@ BIN_DIR := $(TOP)$(ROOT)bin/$(ARCH_COMP) LIB_DIR := $(TOP)$(ROOT)lib/$(ARCH_COMP) ifeq ($(HB_OS_UNIX),no) DYN_DIR := $(BIN_DIR) + IMP_DIR := $(LIB_DIR) else DYN_DIR := $(LIB_DIR) + IMP_DIR := endif +DYN_PREF := # define PKG_DIR only if run from root Makefile ifeq ($(ROOT),./) PKG_DIR := $(TOP)$(ROOT)pkg/$(ARCH_COMP) diff --git a/harbour/config/globsh.mk b/harbour/config/globsh.mk index daf865c6a9..0ac509f971 100644 --- a/harbour/config/globsh.mk +++ b/harbour/config/globsh.mk @@ -26,6 +26,8 @@ BIN_DIR_OS = $(subst /,\,$(BIN_DIR)) BIN_FILE_OS = $(subst /,\,$(BIN_FILE)) DYN_DIR_OS = $(subst /,\,$(DYN_DIR)) DYN_FILE_OS = $(subst /,\,$(DYN_FILE)) +IMP_DIR_OS = $(subst /,\,$(IMP_DIR)) +IMP_FILE_OS = $(subst /,\,$(IMP_FILE)) endif @@ -35,7 +37,6 @@ MK := $(MAKE) RM := rm -f RDP := rm -f -r CP := cp -f -MV := mv -f LN := ln -sf MD := mkdir MDP := mkdir -p @@ -47,6 +48,7 @@ dirbase:: @[ -z "$(LIB_FILE)" ] || [ -d "$(LIB_DIR)" ] || $(MDP) $(LIB_DIR) @[ -z "$(BIN_FILE)" ] || [ -d "$(BIN_DIR)" ] || $(MDP) $(BIN_DIR) @[ -z "$(DYN_FILE)" ] || [ -d "$(DYN_DIR)" ] || $(MDP) $(DYN_DIR) + @[ -z "$(IMP_FILE)" ] || [ -d "$(IMP_DIR)" ] || $(MDP) $(IMP_DIR) clean:: -@$(RDP) $(PKG_DIR) $(OBJ_DIR) $(LIB_FILE) $(BIN_FILE) $(DYN_FILE); \ @@ -63,6 +65,10 @@ clean:: $(RM) $(basename $(DYN_FILE)).exp; \ [ "`$(ECHO) $(DYN_DIR)/*`" != "$(DYN_DIR)/*" ] || $(RDP) $(DYN_DIR); \ fi + if [ -n "$(IMP_FILE)" ]; then \ + $(RM) $(basename $(IMP_FILE)).exp; \ + [ "`$(ECHO) $(IMP_DIR)/*`" != "$(IMP_DIR)/*" ] || $(RDP) $(IMP_DIR); \ + fi endif @@ -77,7 +83,6 @@ MK := "$(subst \,/,$(MAKE))" RM := del /q /f RDP := rmdir /q /s CP := copy -MV := move /y LN := MD := mkdir MDP := mkdir @@ -89,10 +94,11 @@ dirbase:: $(if $(LIB_FILE),$(if $(wildcard $(LIB_DIR)),,-@$(MDP) "$(LIB_DIR_OS)"),) $(if $(BIN_FILE),$(if $(wildcard $(BIN_DIR)),,-@$(MDP) "$(BIN_DIR_OS)"),) $(if $(DYN_FILE),$(if $(wildcard $(DYN_DIR)),,-@$(MDP) "$(DYN_DIR_OS)"),) + $(if $(IMP_FILE),$(if $(wildcard $(IMP_DIR)),,-@$(MDP) "$(IMP_DIR_OS)"),) clean:: - $(if $(wildcard $(OBJ_DIR_OS)),-@$(RDP) "$(OBJ_DIR_OS)",) - $(if $(wildcard $(PKG_DIR_OS)),-@$(RDP) "$(PKG_DIR_OS)",) + $(if $(wildcard $(OBJ_DIR)),-@$(RDP) "$(OBJ_DIR_OS)",) + $(if $(wildcard $(PKG_DIR)),-@$(RDP) "$(PKG_DIR_OS)",) $(if $(LIB_FILE),$(if $(wildcard $(LIB_FILE)),-@$(RM) "$(LIB_FILE_OS)",),) $(if $(LIB_FILE),$(if $(wildcard $(basename $(LIB_FILE)).bak),-@$(RM) "$(basename $(LIB_FILE_OS)).bak",),) $(if $(LIB_FILE),$(if $(wildcard $(LIB_DIR)),$(if $(wildcard $(LIB_DIR)/*),,-@$(RDP) "$(LIB_DIR_OS)"),),) @@ -103,6 +109,9 @@ clean:: $(if $(DYN_FILE),$(if $(wildcard $(basename $(DYN_FILE)).def),-@$(RM) "$(basename $(DYN_FILE_OS)).def",),) $(if $(DYN_FILE),$(if $(wildcard $(basename $(DYN_FILE)).exp),-@$(RM) "$(basename $(DYN_FILE_OS)).exp",),) $(if $(DYN_FILE),$(if $(wildcard $(DYN_DIR)),$(if $(wildcard $(DYN_DIR)/*),,-@$(RDP) "$(DYN_DIR_OS)"),),) + $(if $(IMP_FILE),$(if $(wildcard $(IMP_FILE)),-@$(RM) "$(IMP_FILE_OS)",),) + $(if $(IMP_FILE),$(if $(wildcard $(basename $(IMP_FILE)).exp),-@$(RM) "$(basename $(IMP_FILE_OS)).exp",),) + $(if $(IMP_FILE),$(if $(wildcard $(IMP_DIR)),$(if $(wildcard $(IMP_DIR)/*),,-@$(RDP) "$(IMP_DIR_OS)"),),) endif @@ -117,7 +126,6 @@ MK := $(subst \,/,$(MAKE)) RM := $(TOOL_DIR)os2-rm -f RDP := $(TOOL_DIR)os2-rm -fr CP := copy -MV := move /y LN := MD := mkdir MDP := $(TOOL_DIR)os2-mkdir -p @@ -129,6 +137,7 @@ dirbase:: $(if $(LIB_FILE),-@$(MDP) $(LIB_DIR),) $(if $(BIN_FILE),-@$(MDP) $(BIN_DIR),) $(if $(DYN_FILE),-@$(MDP) $(DYN_DIR),) + $(if $(IMP_FILE),-@$(MDP) $(IMP_DIR),) clean:: -@$(RDP) $(PKG_DIR_OS) $(OBJ_DIR_OS) $(LIB_FILE_OS) $(BIN_FILE_OS) @@ -139,6 +148,8 @@ clean:: $(if $(DYN_FILE),-@$(RM) $(basename $(DYN_FILE_OS)).def,) $(if $(DYN_FILE),-@$(RM) $(basename $(DYN_FILE_OS)).exp,) $(if $(DYN_FILE),$(if $(wildcard $(DYN_DIR)/*.*),,-@$(RDP) $(DYN_DIR_OS)),) + $(if $(IMP_FILE),-@$(RM) $(basename $(IMP_FILE_OS)).exp,) + $(if $(IMP_FILE),$(if $(wildcard $(IMP_DIR)/*.*),,-@$(RDP) $(IMP_DIR_OS)),) endif @@ -148,7 +159,6 @@ MK := $(subst \,/,$(MAKE)) RM := $(TOOL_DIR)dj-rm -f RDP := $(TOOL_DIR)dj-rm -fr CP := $(TOOL_DIR)dj-cp -f -MV := $(TOOL_DIR)dj-mv -f LN := MD := $(TOOL_DIR)dj-mkdir MDP := $(TOOL_DIR)dj-mkdir -p @@ -160,6 +170,7 @@ dirbase:: $(if $(LIB_FILE),-@$(MDP) $(LIB_DIR_OS),) $(if $(BIN_FILE),-@$(MDP) $(BIN_DIR_OS),) $(if $(DYN_FILE),-@$(MDP) $(DYN_DIR_OS),) + $(if $(IMP_FILE),-@$(MDP) $(IMP_DIR_OS),) clean:: -@$(RDP) $(PKG_DIR_OS) $(OBJ_DIR_OS) $(LIB_FILE_OS) $(BIN_FILE_OS) @@ -170,5 +181,7 @@ clean:: $(if $(DYN_FILE),-@$(RM) $(basename $(DYN_FILE_OS)).def,) $(if $(DYN_FILE),-@$(RM) $(basename $(DYN_FILE_OS)).exp,) $(if $(DYN_FILE),$(if $(wildcard $(DYN_DIR)/*.*),,-@$(RDP) $(DYN_DIR_OS)),) + $(if $(IMP_FILE),-@$(RM) $(basename $(IMP_FILE_OS)).exp,) + $(if $(IMP_FILE),$(if $(wildcard $(IMP_DIR)/*.*),,-@$(RDP) $(IMP_DIR_OS)),) endif diff --git a/harbour/config/readme.txt b/harbour/config/readme.txt index c7709df60f..d3fa6fba26 100644 --- a/harbour/config/readme.txt +++ b/harbour/config/readme.txt @@ -27,7 +27,7 @@ Included utilities are: Licence: GPL 2 (see below) Links to included binaries + sources: - - DJGPP (dj-mkdir.exe, dj-rm.exe, dj-cp.exe, dj-mv.exe, dj-echo.exe) + - DJGPP (dj-mkdir.exe, dj-rm.exe, dj-cp.exe, dj-echo.exe) ftp://ftp.delorie.com/pub/djgpp/current/v2gnu/ ftp://ftp.delorie.com/pub/djgpp/current/v2gnu/fil41b.zip ftp://ftp.delorie.com/pub/djgpp/current/v2gnu/fil41s.zip diff --git a/harbour/config/wce/mingwarm.mk b/harbour/config/wce/mingwarm.mk index 781110a012..5b867270cf 100644 --- a/harbour/config/wce/mingwarm.mk +++ b/harbour/config/wce/mingwarm.mk @@ -59,7 +59,7 @@ endef define create_dynlib $(if $(wildcard __dyn__.tmp),@$(RM) __dyn__.tmp,) $(foreach file,$^,$(dyn_object)) - $(DY) $(DFLAGS) $(HB_USER_DFLAGS) $(DY_OUT)"$(DYN_DIR)/$@"$(ECHOQUOTE) __dyn__.tmp $(DLIBS) -Wl,--output-def,"$(DYN_DIR)/$(basename $@).def" + $(DY) $(DFLAGS) $(HB_USER_DFLAGS) $(DY_OUT)"$(DYN_DIR)/$@"$(ECHOQUOTE) __dyn__.tmp $(DLIBS) -Wl,--output-def,"$(DYN_DIR)/$(basename $@).def",--out-implib,"$(IMP_FILE)" endef DY_RULE = $(create_dynlib) diff --git a/harbour/config/wce/msvcarm.mk b/harbour/config/wce/msvcarm.mk index e56c172605..da89c02178 100644 --- a/harbour/config/wce/msvcarm.mk +++ b/harbour/config/wce/msvcarm.mk @@ -93,7 +93,7 @@ endef define create_dynlib $(if $(wildcard __dyn__.tmp),@$(RM) __dyn__.tmp,) $(foreach file,$^,$(dyn_object)) - $(DY) $(DFLAGS) $(HB_USER_DFLAGS) $(DY_OUT)"$(subst /,$(DIRSEP),$(DYN_DIR)/$@)"$(ECHOQUOTE) @__dyn__.tmp $(DLIBS) + $(DY) $(DFLAGS) $(HB_USER_DFLAGS) $(DY_OUT)"$(subst /,$(DIRSEP),$(DYN_DIR)/$@)"$(ECHOQUOTE) /implib:"$(IMP_FILE)" @__dyn__.tmp $(DLIBS) endef DY_RULE = $(create_dynlib) diff --git a/harbour/config/wce/poccarm.mk b/harbour/config/wce/poccarm.mk index 1154ac1f90..2970123bc3 100644 --- a/harbour/config/wce/poccarm.mk +++ b/harbour/config/wce/poccarm.mk @@ -68,7 +68,7 @@ endef define create_dynlib $(if $(wildcard __dyn__.tmp),@$(RM) __dyn__.tmp,) $(foreach file,$^,$(dyn_object)) - $(DY) $(DFLAGS) $(HB_USER_DFLAGS) $(DY_OUT)"$(subst /,$(DIRSEP),$(DYN_DIR)/$@)"$(ECHOQUOTE) @__dyn__.tmp $(DLIBS) + $(DY) $(DFLAGS) $(HB_USER_DFLAGS) $(DY_OUT)"$(subst /,$(DIRSEP),$(DYN_DIR)/$@)"$(ECHOQUOTE) /implib:"$(IMP_FILE)" @__dyn__.tmp $(DLIBS) endef DY_RULE = $(create_dynlib) diff --git a/harbour/config/win/bcc.mk b/harbour/config/win/bcc.mk index ce0c3034d1..4eab883a0a 100644 --- a/harbour/config/win/bcc.mk +++ b/harbour/config/win/bcc.mk @@ -98,6 +98,8 @@ define create_dynlib $(foreach file,$^,$(dyn_object)) @$(ECHO) $(ECHOQUOTE), "$(subst /,$(DIRSEP),$(DYN_DIR)/$@)",, cw32mt.lib import32.lib$(ECHOQUOTE) >> __dyn__.tmp $(DY) $(DFLAGS) $(HB_USER_DFLAGS) c0d32.obj @__dyn__.tmp + @$(CP) $(subst /,$(DIRSEP),$(DYN_DIR)/$(basename $@)$(LIB_EXT)) $(subst /,$(DIRSEP),$(IMP_FILE)) + @$(RM) $(subst /,$(DIRSEP),$(DYN_DIR)/$(basename $@)$(LIB_EXT)) endef DY_RULE = $(create_dynlib) diff --git a/harbour/config/win/cygwin.mk b/harbour/config/win/cygwin.mk index d4c2f3ed9b..37e81dd532 100644 --- a/harbour/config/win/cygwin.mk +++ b/harbour/config/win/cygwin.mk @@ -58,7 +58,7 @@ endef define create_dynlib $(if $(wildcard __dyn__.tmp),@$(RM) __dyn__.tmp,) $(foreach file,$^,$(dyn_object)) - $(DY) $(DFLAGS) $(DY_OUT)"$(DYN_DIR)/$@"$(ECHOQUOTE) __dyn__.tmp $(HB_USER_DFLAGS) $(DLIBS) -Wl,--output-def,"$(DYN_DIR)/$(basename $@).def" + $(DY) $(DFLAGS) $(DY_OUT)"$(DYN_DIR)/$@"$(ECHOQUOTE) __dyn__.tmp $(HB_USER_DFLAGS) $(DLIBS) -Wl,--output-def,"$(DYN_DIR)/$(basename $@).def",--out-implib,"$(IMP_FILE)" endef DY_RULE = $(create_dynlib) diff --git a/harbour/config/win/icc.mk b/harbour/config/win/icc.mk index 7fe3f532a4..39f2e0be3f 100644 --- a/harbour/config/win/icc.mk +++ b/harbour/config/win/icc.mk @@ -66,7 +66,7 @@ endef define create_dynlib $(if $(wildcard __dyn__.tmp),@$(RM) __dyn__.tmp,) $(foreach file,$^,$(dyn_object)) - $(DY) $(DFLAGS) $(HB_USER_DFLAGS) $(DY_OUT)"$(subst /,$(DIRSEP),$(DYN_DIR)/$@)"$(ECHOQUOTE) @__dyn__.tmp $(DLIBS) + $(DY) $(DFLAGS) $(HB_USER_DFLAGS) $(DY_OUT)"$(subst /,$(DIRSEP),$(DYN_DIR)/$@)"$(ECHOQUOTE) /implib:"$(IMP_FILE)" @__dyn__.tmp $(DLIBS) endef DY_RULE = $(create_dynlib) diff --git a/harbour/config/win/mingw.mk b/harbour/config/win/mingw.mk index 5b53095e40..a98e58a474 100644 --- a/harbour/config/win/mingw.mk +++ b/harbour/config/win/mingw.mk @@ -68,7 +68,7 @@ endef define create_dynlib $(if $(wildcard __dyn__.tmp),@$(RM) __dyn__.tmp,) $(foreach file,$^,$(dyn_object)) - $(DY) $(DFLAGS) $(HB_USER_DFLAGS) $(DY_OUT)"$(DYN_DIR)/$@"$(ECHOQUOTE) __dyn__.tmp $(DLIBS) -Wl,--output-def,"$(DYN_DIR)/$(basename $@).def" + $(DY) $(DFLAGS) $(HB_USER_DFLAGS) $(DY_OUT)"$(DYN_DIR)/$@"$(ECHOQUOTE) __dyn__.tmp $(DLIBS) -Wl,--output-def,"$(DYN_DIR)/$(basename $@).def",--out-implib,"$(IMP_FILE)" endef DY_RULE = $(create_dynlib) diff --git a/harbour/config/win/msvc.mk b/harbour/config/win/msvc.mk index 23453cbde6..08a650fa39 100644 --- a/harbour/config/win/msvc.mk +++ b/harbour/config/win/msvc.mk @@ -77,7 +77,7 @@ endef define create_dynlib $(if $(wildcard __dyn__.tmp),@$(RM) __dyn__.tmp,) $(foreach file,$^,$(dyn_object)) - $(DY) $(DFLAGS) $(HB_USER_DFLAGS) $(DY_OUT)"$(subst /,$(DIRSEP),$(DYN_DIR)/$@)"$(ECHOQUOTE) @__dyn__.tmp $(DLIBS) + $(DY) $(DFLAGS) $(HB_USER_DFLAGS) $(DY_OUT)"$(subst /,$(DIRSEP),$(DYN_DIR)/$@)"$(ECHOQUOTE) /implib:"$(IMP_FILE)" @__dyn__.tmp $(DLIBS) endef DY_RULE = $(create_dynlib) diff --git a/harbour/config/win/pocc.mk b/harbour/config/win/pocc.mk index c8ea9fe984..5997bc9111 100644 --- a/harbour/config/win/pocc.mk +++ b/harbour/config/win/pocc.mk @@ -63,7 +63,7 @@ endef define create_dynlib $(if $(wildcard __dyn__.tmp),@$(RM) __dyn__.tmp,) $(foreach file,$^,$(dyn_object)) - $(DY) $(DFLAGS) $(HB_USER_DFLAGS) $(DY_OUT)"$(subst /,$(DIRSEP),$(DYN_DIR)/$@)"$(ECHOQUOTE) @__dyn__.tmp $(DLIBS) + $(DY) $(DFLAGS) $(HB_USER_DFLAGS) $(DY_OUT)"$(subst /,$(DIRSEP),$(DYN_DIR)/$@)"$(ECHOQUOTE) /implib:"$(IMP_FILE)" @__dyn__.tmp $(DLIBS) endef DY_RULE = $(create_dynlib) diff --git a/harbour/config/win/watcom.mk b/harbour/config/win/watcom.mk index 10a4c11d80..23386e41bc 100644 --- a/harbour/config/win/watcom.mk +++ b/harbour/config/win/watcom.mk @@ -81,7 +81,7 @@ endef define create_dynlib $(if $(wildcard __dyn__.tmp),@$(RM) __dyn__.tmp,) $(foreach file,$^,$(dyn_object)) - $(DY) $(DFLAGS) $(HB_USER_DFLAGS) OP implib name '$(subst /,$(DIRSEP),$(DYN_DIR)/$@)' @__dyn__.tmp LIB $(DLIBS_COMMA) + $(DY) $(DFLAGS) $(HB_USER_DFLAGS) NAME '$(subst /,$(DIRSEP),$(DYN_DIR)/$@)' OP implib='$(IMP_FILE)' @__dyn__.tmp LIB $(DLIBS_COMMA) endef DY_RULE = $(create_dynlib) diff --git a/harbour/config/win/xcc.mk b/harbour/config/win/xcc.mk index a7931522be..06d07933a4 100644 --- a/harbour/config/win/xcc.mk +++ b/harbour/config/win/xcc.mk @@ -56,7 +56,7 @@ endef define create_dynlib $(if $(wildcard __dyn__.tmp),@$(RM) __dyn__.tmp,) $(foreach file,$^,$(dyn_object)) - $(DY) $(DFLAGS) $(HB_USER_DFLAGS) $(DY_OUT)"$(subst /,$(DIRSEP),$(DYN_DIR)/$@)"$(ECHOQUOTE) @__dyn__.tmp $(DLIBS) + $(DY) $(DFLAGS) $(HB_USER_DFLAGS) $(DY_OUT)"$(subst /,$(DIRSEP),$(DYN_DIR)/$@)"$(ECHOQUOTE) /implib:"$(IMP_FILE)" @__dyn__.tmp $(DLIBS) endef DY_RULE = $(create_dynlib) diff --git a/harbour/source/dynlib/Makefile b/harbour/source/dynlib/Makefile index 7e1b1f9309..3b9ec7e311 100644 --- a/harbour/source/dynlib/Makefile +++ b/harbour/source/dynlib/Makefile @@ -16,6 +16,19 @@ ifneq ($(DYNDIRLIST_BASE),) include $(TOP)$(ROOT)config/dyn.mk include $(TOP)$(ROOT)config/dir.mk + + INSTALL_RULE_LIBRARIES := $(INSTALL_RULE) + + ifneq ($(HB_LIB_INSTALL),) + INSTALL_FILES := $(IMP_FILE) + INSTALL_DIR := $(HB_LIB_INSTALL) + HB_INSTALL_DEF := yes + include $(TOP)$(ROOT)config/install.mk + endif + +install:: + $(INSTALL_RULE_LIBRARIES) + else include $(TOP)$(ROOT)config/none.mk endif diff --git a/harbour/source/dynlib/mt/Makefile b/harbour/source/dynlib/mt/Makefile index 9365e0e1b4..87a1e5c7ce 100644 --- a/harbour/source/dynlib/mt/Makefile +++ b/harbour/source/dynlib/mt/Makefile @@ -13,6 +13,19 @@ ifneq ($(DYNDIRLIST_BASE),) DYNNAME := harbourmt$(DYNNAME_POST) include $(TOP)$(ROOT)config/dyn.mk + + INSTALL_RULE_LIBRARIES := $(INSTALL_RULE) + + ifneq ($(HB_LIB_INSTALL),) + INSTALL_FILES := $(IMP_FILE) + INSTALL_DIR := $(HB_LIB_INSTALL) + HB_INSTALL_DEF := yes + include $(TOP)$(ROOT)config/install.mk + endif + +install:: + $(INSTALL_RULE_LIBRARIES) + else include $(TOP)$(ROOT)config/none.mk endif