Files
harbour-core/harbour/config/dyn.mk
Przemyslaw Czerpak bdfb6a9e93 2009-12-21 08:21 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbgtcore.h
  * harbour/include/hbapigt.h
    * moved declaration of hb_gtSetDefault() from hbgtcore.h to hbapigt.h

  * harbour/include/hbapi.h
  * harbour/src/vm/hvm.c
    + added new function hb_vmSetDefaultGT()

  * harbour/bin/hb-func.sh
  * harbour/utils/hbmk2/hbmk2.prg
    * use hb_vmSetDefaultGT() to set default GT
    * removed extern declarations for functions defined in hbapi.h

  * harbour/src/vm/dynlibhb.c
    + added support for HB_LIBLOAD()/HB_LIBFREE() in DJGPP 2.04 builds

  * harbour/config/global.mk
    * use 8.3 names for harbour dynamic libraries in all DOS builds

  * harbour/config/dos/djgpp.mk
    + added support for dynamic libraries (DXE) in DJGPP builds.
      DXE is sth similar to DLL in Windows and can be used with
      DJGPP 2.04. I had to make some modifications in DXE header
      files to make it working so it will not work in default DJGPP
      installation. I'll document these modifications in the future.

  * harbour/config/dos/watcom.mk
    * enable creating of harbour dynamic libraries only when HB_BUILD_DLL
      is explictly set by user to 'yes'. In DOS DJGPP and OpenWatcom builds
      DLLs support is not functional yet.

  * harbour/config/dyn.mk
    * added an option to create harbour dynamic libraries from static
      ones instead of .o|.obj files. It's necessary for DXE3GEN which
      internally calls LD which has some limited on maximum size of passed
      parameters.
      TODO: make HB_DYN_LIBS definition common for dyn.mk and lib.mk
2009-12-21 07:22:14 +00:00

125 lines
2.2 KiB
Makefile

#
# $Id$
#
include $(TOP)$(ROOT)config/global.mk
ifneq ($(HB_PLATFORM),)
ifneq ($(HB_COMPILER),)
HB_LINKING_RTL :=
HB_LINKING_VMMT :=
ifneq ($(DYNNAME),)
HB_LINKING_RTL := yes
ifneq ($(findstring vmmt, $(DYNDIRLIST)),)
HB_LINKING_VMMT := yes
endif
endif
-include $(TOP)$(ROOT)config/$(HB_PLATFORM)/libs.mk
include $(TOP)$(ROOT)config/$(HB_PLATFORM)/$(HB_COMPILER).mk
include $(TOP)$(ROOT)config/c.mk
include $(TOP)$(ROOT)config/prg.mk
ifeq ($(HB_LINKING_VMMT),yes)
_HB_VM := hbvmmt
else
_HB_VM := hbvm
endif
HB_DYN_LIBS := \
hbcommon \
hbpp \
hbrtl \
hbmacro \
hblang \
hbcpage \
hbextern \
hbrdd \
rddntx \
rddnsx \
rddcdx \
rddfpt \
hbsix \
hbhsx \
hbusrrdd \
gtcgi \
gtpca \
gtstd \
gtwvt \
gtgui \
gtwin \
gtos2 \
gttrm \
gtcrs \
gtsln \
gtxwc \
$(_HB_VM) \
hbmaindllh
ifneq ($(HB_HAS_PCRE_LOCAL),)
HB_DYN_LIBS += hbpcre
endif
ifneq ($(HB_HAS_ZLIB_LOCAL),)
HB_DYN_LIBS += hbzlib
endif
# hbcplr \
# hbdebug \
ifneq ($(HB_HAS_PCRE_LOCAL),)
HB_DYN_LIBS += hbpcre
endif
ifneq ($(HB_HAS_ZLIB_LOCAL),)
HB_DYN_LIBS += hbzlib
endif
DYN_FILE :=
IMP_FILE :=
ifneq ($(HB_BUILD_DLL),no)
ifneq ($(DY_RULE),)
DYN_NAME := $(DYN_PREF)$(DYNNAME)$(DYN_EXT)
DYN_FILE := $(DYN_DIR)/$(DYN_NAME)
DYN_NAME2 := $(DYN_PREF)$(DYNNAME2)$(DYN_EXT)
DYN_FILE2 := $(DYN_DIR)/$(DYN_NAME2)
ifneq ($(IMP_DIR),)
IMP_NAME := $(LIB_PREF)$(DYNNAME)$(LIB_EXT)
IMP_FILE := $(IMP_DIR)/$(IMP_NAME)
endif
ifeq ($(HB_DYN_FROM_LIBS),yes)
ALL_OBJS := $(subst /,$(DIRSEP),$(foreach lib,$(HB_DYN_LIBS),$(wildcard $(LIB_DIR)/$(LIB_PREF)$(lib)$(LIB_EXT))))
else
ALL_OBJS := $(subst /,$(DIRSEP),$(foreach dir,$(DYNDIRLIST),$(wildcard $(TOP)$(ROOT)$(dir)/$(OBJ_DIR)/*$(OBJ_DYN_POSTFIX)$(OBJ_EXT))))
endif
first:: dirbase descend
descend:: dirbase
+@$(MK) $(MKFLAGS) -C $(OBJ_DIR) -f $(GRANDP)Makefile TOP=$(GRANDP) $(DYN_NAME)
vpath $(DYN_NAME) $(DYN_DIR)
$(DYN_NAME) : $(ALL_OBJS)
$(DY_RULE)
INSTALL_FILES := $(DYN_FILE)
INSTALL_DIR := $(HB_DYN_INSTALL)
include $(TOP)$(ROOT)config/instsh.mk
INSTALL_RULE_DYN := $(INSTALL_RULE)
ifneq ($(INSTALL_RULE_DYN),)
install:: first
$(INSTALL_RULE_DYN)
endif
endif
endif
endif
endif