From 2f918763a250f51f855975cc4e159ebfdec8fca2 Mon Sep 17 00:00:00 2001 From: Viktor Szakats Date: Fri, 21 Aug 2009 19:33:31 +0000 Subject: [PATCH] 2009-08-21 21:32 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) * config/darwin/gcc.mk + Added experimental dynamic lib creation. ; TODO: Parameterize internal versioning and name. ; TODO: Add links (although this may better be done in postinst state most probably). Opinions? * source/Makefile + Adjusted dynamic lib name for *nix systems. * 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/icc.mk * config/win/cygwin.mk * config/win/msvc.mk ! Deleted $(ECHOQUOTE) var (typo). --- harbour/ChangeLog | 21 +++++++++++++++++++++ harbour/config/darwin/gcc.mk | 18 ++++++++++++++++++ harbour/config/wce/mingwarm.mk | 2 +- harbour/config/wce/msvcarm.mk | 2 +- harbour/config/wce/poccarm.mk | 2 +- harbour/config/win/cygwin.mk | 2 +- harbour/config/win/icc.mk | 2 +- harbour/config/win/mingw.mk | 2 +- harbour/config/win/msvc.mk | 2 +- harbour/config/win/pocc.mk | 2 +- harbour/config/win/xcc.mk | 2 +- harbour/source/Makefile | 6 +++++- 12 files changed, 53 insertions(+), 10 deletions(-) diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 200acd94ec..6e78989e1a 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -17,6 +17,27 @@ past entries belonging to author(s): Viktor Szakats. */ +2009-08-21 21:32 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) + * config/darwin/gcc.mk + + Added experimental dynamic lib creation. + ; TODO: Parameterize internal versioning and name. + ; TODO: Add links (although this may better be done in + postinst state most probably). Opinions? + + * source/Makefile + + Adjusted dynamic lib name for *nix systems. + + * 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/icc.mk + * config/win/cygwin.mk + * config/win/msvc.mk + ! Deleted $(ECHOQUOTE) var (typo). + 2009-08-21 21:00 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) * source/vm/maindllh.c * source/vm/Makefile diff --git a/harbour/config/darwin/gcc.mk b/harbour/config/darwin/gcc.mk index 807e82f07d..e00159636b 100644 --- a/harbour/config/darwin/gcc.mk +++ b/harbour/config/darwin/gcc.mk @@ -89,4 +89,22 @@ AR := libtool ARFLAGS := AR_RULE = $(AR) -static $(ARFLAGS) $(HB_USER_AFLAGS) -o $(LIB_DIR)/$@ $(^F) || ( $(RM) $(LIB_DIR)/$@ && false ) +DY := $(AR) +DFLAGS := -dynamic -flat_namespace -undefined warning -multiply_defined suppress -single_module +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) -install_name "harbour$(DYN_EXT)" -compatibility_version 2.0 -current_version 2.0.0 $(HB_USER_DFLAGS) $(DY_OUT)$(DYN_DIR)/$@ -filelist __dyn__.tmp +endef + +DY_RULE = $(create_dynlib) + include $(TOP)$(ROOT)config/rules.mk diff --git a/harbour/config/wce/mingwarm.mk b/harbour/config/wce/mingwarm.mk index 5b867270cf..5a16d51f1d 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",--out-implib,"$(IMP_FILE)" + $(DY) $(DFLAGS) $(HB_USER_DFLAGS) $(DY_OUT)"$(DYN_DIR)/$@" __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 da89c02178..edb5b634fa 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) /implib:"$(IMP_FILE)" @__dyn__.tmp $(DLIBS) + $(DY) $(DFLAGS) $(HB_USER_DFLAGS) $(DY_OUT)"$(subst /,$(DIRSEP),$(DYN_DIR)/$@)" /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 2970123bc3..c977109112 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) /implib:"$(IMP_FILE)" @__dyn__.tmp $(DLIBS) + $(DY) $(DFLAGS) $(HB_USER_DFLAGS) $(DY_OUT)"$(subst /,$(DIRSEP),$(DYN_DIR)/$@)" /implib:"$(IMP_FILE)" @__dyn__.tmp $(DLIBS) endef DY_RULE = $(create_dynlib) diff --git a/harbour/config/win/cygwin.mk b/harbour/config/win/cygwin.mk index 37e81dd532..b5c000e030 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",--out-implib,"$(IMP_FILE)" + $(DY) $(DFLAGS) $(DY_OUT)"$(DYN_DIR)/$@" __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 39f2e0be3f..eac1396bdd 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) /implib:"$(IMP_FILE)" @__dyn__.tmp $(DLIBS) + $(DY) $(DFLAGS) $(HB_USER_DFLAGS) $(DY_OUT)"$(subst /,$(DIRSEP),$(DYN_DIR)/$@)" /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 a98e58a474..8fe7777e0d 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",--out-implib,"$(IMP_FILE)" + $(DY) $(DFLAGS) $(HB_USER_DFLAGS) $(DY_OUT)"$(DYN_DIR)/$@" __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 08a650fa39..dc2904fd91 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) /implib:"$(IMP_FILE)" @__dyn__.tmp $(DLIBS) + $(DY) $(DFLAGS) $(HB_USER_DFLAGS) $(DY_OUT)"$(subst /,$(DIRSEP),$(DYN_DIR)/$@)" /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 5997bc9111..e3b0429cc3 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) /implib:"$(IMP_FILE)" @__dyn__.tmp $(DLIBS) + $(DY) $(DFLAGS) $(HB_USER_DFLAGS) $(DY_OUT)"$(subst /,$(DIRSEP),$(DYN_DIR)/$@)" /implib:"$(IMP_FILE)" @__dyn__.tmp $(DLIBS) endef DY_RULE = $(create_dynlib) diff --git a/harbour/config/win/xcc.mk b/harbour/config/win/xcc.mk index 06d07933a4..a3dd9a47d1 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) /implib:"$(IMP_FILE)" @__dyn__.tmp $(DLIBS) + $(DY) $(DFLAGS) $(HB_USER_DFLAGS) $(DY_OUT)"$(subst /,$(DIRSEP),$(DYN_DIR)/$@)" /implib:"$(IMP_FILE)" @__dyn__.tmp $(DLIBS) endef DY_RULE = $(create_dynlib) diff --git a/harbour/source/Makefile b/harbour/source/Makefile index 82c2c5b6f6..e1cc48cde9 100644 --- a/harbour/source/Makefile +++ b/harbour/source/Makefile @@ -20,7 +20,11 @@ else ifneq ($(HB_BUILD_DLL),no) ifneq ($(HB_ARCHITECTURE),dos) - DYNNAME_POST := -$(HB_DYN_VER) + ifeq ($(HB_OS_UNIX),yes) + DYNNAME_POST := .$(HB_DYN_VER) + else + DYNNAME_POST := -$(HB_DYN_VER) + endif ifeq ($(HB_ARCHITECTURE),win) ifeq ($(HB_COMPILER),bcc)