2009-08-21 12:46 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)

* source/Makefile
    ! Fixed typo in prev commit.

  * config/global.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/msvc.mk
  * config/dyn.mk
  * config/rules.mk
    + Added OBJ_DYN_POSTFIX variable instead of hardcoded '_dyn'.

  * config/global.mk
  * config/dyn.mk
    + Added DYN_DIR. Set to LIB_DIR for *nix, BIN_DIR for non-*nix.

  * config/globsh.mk
    + Added dynamic lib dir/file related dir creation and cleanup rules.

  * config/win/mingw.mk
  * config/wce/mingwarm.mk
    + Added space between -o and output filename.
      (this should probably be made default)

  * config/win/mingw.mk
    + Added .dll build rules.

  * config/win/bcc.mk
    % Using $(wildcard) instead of echo trick to delete __lib__.tmp.
This commit is contained in:
Viktor Szakats
2009-08-21 10:46:11 +00:00
parent bd8d9d6158
commit 0bd133a771
16 changed files with 132 additions and 48 deletions

View File

@@ -17,6 +17,42 @@
past entries belonging to author(s): Viktor Szakats.
*/
2009-08-21 12:46 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
* source/Makefile
! Fixed typo in prev commit.
* config/global.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/msvc.mk
* config/dyn.mk
* config/rules.mk
+ Added OBJ_DYN_POSTFIX variable instead of hardcoded '_dyn'.
* config/global.mk
* config/dyn.mk
+ Added DYN_DIR. Set to LIB_DIR for *nix, BIN_DIR for non-*nix.
* config/globsh.mk
+ Added dynamic lib dir/file related dir creation and cleanup rules.
* config/win/mingw.mk
* config/wce/mingwarm.mk
+ Added space between -o and output filename.
(this should probably be made default)
* config/win/mingw.mk
+ Added .dll build rules.
* config/win/bcc.mk
% Using $(wildcard) instead of echo trick to delete __lib__.tmp.
2009-08-21 11:29 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
* source/dynlib/Makefile
* source/Makefile

View File

@@ -14,16 +14,16 @@ include $(TOP)$(ROOT)config/prg.mk
DYN_NAME := $(DYN_PREF)$(DYNNAME)$(DYN_EXT)
DYN_FILE := $(BIN_DIR)/$(DYN_NAME)
DYN_FILE := $(DYN_DIR)/$(DYN_NAME)
ALL_OBJS := $(subst /,$(DIRSEP),$(foreach dir,$(DYNDIRLIST),$(wildcard $(TOP)$(ROOT)$(dir)/$(OBJ_DIR)/*_dyn$(OBJ_EXT))))
ALL_OBJS := $(subst /,$(DIRSEP),$(foreach dir,$(DYNDIRLIST),$(wildcard $(TOP)$(ROOT)$(dir)/$(OBJ_DIR)/*$(OBJ_DYN_POSTFIX)$(OBJ_EXT))))
first:: dirbase descend
descend:: dirbase
+@$(MK) $(MKFLAGS) -C $(OBJ_DIR) -f $(GRANDP)Makefile TOP=$(GRANDP) $(DYN_NAME)
vpath $(DYN_NAME) $(BIN_DIR)
vpath $(DYN_NAME) $(DYN_DIR)
$(DYN_NAME) : $(ALL_OBJS)
$(DY_RULE)

View File

@@ -705,17 +705,29 @@ endif
export HB_ARCHITECTURE
export HB_COMPILER
ifneq ($(filter $(HB_ARCHITECTURE),win wce dos os2),)
HB_OS_UNIX := no
else
HB_OS_UNIX := yes
endif
ARCH_COMP := $(HB_ARCHITECTURE)/$(HB_COMPILER)$(subst \,/,$(HB_BUILD_NAME))
OBJ_DIR := obj/$(ARCH_COMP)
BIN_DIR := $(TOP)$(ROOT)bin/$(ARCH_COMP)
LIB_DIR := $(TOP)$(ROOT)lib/$(ARCH_COMP)
ifeq ($(HB_OS_UNIX),yes)
DYN_DIR := $(LIB_DIR)
else
DYN_DIR := $(BIN_DIR)
endif
# define PKG_DIR only if run from root Makefile
ifeq ($(ROOT),./)
PKG_DIR := $(TOP)$(ROOT)pkg/$(ARCH_COMP)
else
PKG_DIR :=
endif
OBJ_DYN_POSTFIX :=
# Assemble relative path from OBJ_DIR to source.
GRANDP := $(subst $(subst x,x, ),,$(foreach item, $(subst /, ,$(OBJ_DIR)), ../))
@@ -761,12 +773,6 @@ ifeq ($(HB_INIT_DONE),)
endif
endif
ifneq ($(filter $(HB_ARCHITECTURE),win wce dos os2),)
HB_OS_UNIX := no
else
HB_OS_UNIX := yes
endif
# Reserve variables for local compiler flags. Makefiles
# should only modify these instead of HB_USER_* variables
# as these can have bad side effects (doubly added values)

View File

@@ -24,6 +24,8 @@ LIB_DIR_OS = $(subst /,\,$(LIB_DIR))
LIB_FILE_OS = $(subst /,\,$(LIB_FILE))
BIN_DIR_OS = $(subst /,\,$(BIN_DIR))
BIN_FILE_OS = $(subst /,\,$(BIN_FILE))
DYN_DIR_OS = $(subst /,\,$(DYN_DIR))
DYN_FILE_OS = $(subst /,\,$(DYN_FILE))
endif
@@ -42,9 +44,10 @@ dirbase::
@[ -d "$(OBJ_DIR)" ] || $(MDP) $(OBJ_DIR)
@[ -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)
clean::
-@$(RDP) $(PKG_DIR) $(OBJ_DIR) $(LIB_FILE) $(BIN_FILE); \
-@$(RDP) $(PKG_DIR) $(OBJ_DIR) $(LIB_FILE) $(BIN_FILE) $(DYN_FILE); \
if [ -n "$(LIB_FILE)" ]; then \
$(RM) $(basename $(LIB_FILE)).bak; \
[ "`$(ECHO) $(LIB_DIR)/*`" != "$(LIB_DIR)/*" ] || $(RDP) $(LIB_DIR); \
@@ -52,6 +55,10 @@ clean::
if [ -n "$(BIN_FILE)" ]; then \
$(RM) $(basename $(BIN_FILE)).tds; \
[ "`$(ECHO) $(BIN_DIR)/*`" != "$(BIN_DIR)/*" ] || $(RDP) $(BIN_DIR); \
fi ; \
if [ -n "$(DYN_FILE)" ]; then \
$(RM) $(basename $(DYN_FILE)).exp; \
[ "`$(ECHO) $(DYN_DIR)/*`" != "$(DYN_DIR)/*" ] || $(RDP) $(DYN_DIR); \
fi
endif
@@ -76,6 +83,7 @@ dirbase::
-@if not exist "$(OBJ_DIR_OS)" $(MDP) "$(OBJ_DIR_OS)"
$(if $(LIB_FILE),-@if not exist "$(LIB_DIR_OS)" $(MDP) "$(LIB_DIR_OS)",)
$(if $(BIN_FILE),-@if not exist "$(BIN_DIR_OS)" $(MDP) "$(BIN_DIR_OS)",)
$(if $(DYN_FILE),-@if not exist "$(DYN_DIR_OS)" $(MDP) "$(DYN_DIR_OS)",)
clean::
-@if exist "$(OBJ_DIR_OS)" $(RDP) "$(OBJ_DIR_OS)"
@@ -86,6 +94,9 @@ clean::
$(if $(BIN_FILE),-@if exist "$(BIN_FILE_OS)" $(RM) "$(BIN_FILE_OS)",)
$(if $(BIN_FILE),-@if exist "$(basename $(BIN_FILE_OS)).tds" $(RM) "$(basename $(BIN_FILE_OS)).tds",)
$(if $(BIN_FILE),-@if exist "$(BIN_DIR_OS)" if not exist "$(BIN_DIR_OS)\*" $(RDP) "$(BIN_DIR_OS)",)
$(if $(DYN_FILE),-@if exist "$(DYN_FILE_OS)" $(RM) "$(DYN_FILE_OS)",)
$(if $(DYN_FILE),-@if exist "$(basename $(DYN_FILE_OS)).exp" $(RM) "$(basename $(DYN_FILE_OS)).exp",)
$(if $(DYN_FILE),-@if exist "$(DYN_DIR_OS)" if not exist "$(DYN_DIR_OS)\*" $(RDP) "$(DYN_DIR_OS)",)
endif
@@ -104,11 +115,13 @@ dirbase::
-@if not exist $(OBJ_DIR_OS) $(MDP) $(OBJ_DIR)
$(if $(LIB_FILE),-@if not exist $(LIB_DIR_OS) $(MDP) $(LIB_DIR),)
$(if $(BIN_FILE),-@if not exist $(BIN_DIR_OS) $(MDP) $(BIN_DIR),)
$(if $(DYN_FILE),-@if not exist $(DYN_DIR_OS) $(MDP) $(DYN_DIR),)
clean::
@$(RDP) $(PKG_DIR_OS) $(OBJ_DIR_OS) $(LIB_FILE_OS) $(BIN_FILE_OS)
$(if $(LIB_FILE),-@if exist $(LIB_DIR_OS) $(RDP) $(LIB_DIR_OS),)
$(if $(BIN_FILE),-@if exist $(BIN_DIR_OS) $(RDP) $(BIN_DIR_OS),)
$(if $(DYN_FILE),-@if exist $(DYN_DIR_OS) $(RDP) $(DYN_DIR_OS),)
endif
@@ -127,6 +140,7 @@ dirbase::
-@$(MDP) $(OBJ_DIR_OS)
$(if $(LIB_FILE),-@$(MDP) $(LIB_DIR_OS),)
$(if $(BIN_FILE),-@$(MDP) $(BIN_DIR_OS),)
$(if $(DYN_FILE),-@$(MDP) $(DYN_DIR_OS),)
clean::
-@$(RDP) $(PKG_DIR_OS) $(OBJ_DIR_OS) $(LIB_FILE_OS) $(BIN_FILE_OS)
@@ -134,5 +148,7 @@ clean::
$(if $(LIB_FILE),$(if $(wildcard $(LIB_DIR_OS)/*.*),,-@$(RDP) $(LIB_DIR_OS)),)
$(if $(BIN_FILE),-@$(RM) $(basename $(BIN_FILE_OS)).tds,)
$(if $(BIN_FILE),$(if $(wildcard $(BIN_DIR_OS)/*.*),,-@$(RDP) $(BIN_DIR_OS)),)
$(if $(DYN_FILE),-@$(RM) $(basename $(DYN_FILE_OS)).exp,)
$(if $(DYN_FILE),$(if $(wildcard $(DYN_DIR_OS)/*.*),,-@$(RDP) $(DYN_DIR_OS)),)
endif

View File

@@ -38,7 +38,7 @@ ifeq ($(CC_RULE),)
ifneq ($(filter $(LIBNAME),$(HB_DYN_LIBS)),)
define cc_comp_all
$(CC) $(CC_FLAGS) $(HB_USER_CFLAGS) $(CC_OUT)$(<F:.c=$(OBJ_EXT)) $(CC_IN) $<
$(CC) $(CC_FLAGS) $(HB_USER_CFLAGS) $(CC_OUT)$(<F:.c=_dyn$(OBJ_EXT)) $(HB_DYN_COPT) $(CC_IN) $<
$(CC) $(CC_FLAGS) $(HB_USER_CFLAGS) $(CC_OUT)$(<F:.c=$(OBJ_DYN_POSTFIX)$(OBJ_EXT)) $(HB_DYN_COPT) $(CC_IN) $<
endef
CC_RULE = $(cc_comp_all)
endif
@@ -94,7 +94,7 @@ ifneq ($(HB_BUILD_DLL),no)
ifneq ($(DY_RULE),)
# Rule to generate an dynamic library from an object file.
%$(DYN_EXT) : %_dyn$(OBJ_EXT)
%$(DYN_EXT) : %$(OBJ_DYN_POSTFIX)$(OBJ_EXT)
$(DY_RULE)
endif

View File

@@ -35,7 +35,7 @@ ifeq ($(HB_BUILD_DEBUG),yes)
endif
LD := $(HB_CCPATH)$(HB_CCPREFIX)$(HB_CMP)
LD_OUT := -o
LD_OUT := -o$(subst x,x, )
LIBPATHS := -L$(LIB_DIR)
LDLIBS := $(foreach lib,$(LIBS) $(SYSLIBS),-l$(lib))

View File

@@ -7,6 +7,7 @@ LIB_PREF :=
LIB_EXT := .lib
HB_DYN_COPT := -DHB_DYNLIB
OBJ_DYN_POSTFIX := _dyn
CC := cl.exe
ifeq ($(HB_COMPILER),msvcarm)

View File

@@ -9,6 +9,7 @@ LIB_PREF :=
LIB_EXT := .lib
HB_DYN_COPT := -DHB_DYNLIB
OBJ_DYN_POSTFIX := _dyn
CC := pocc.exe
CC_IN := -c

View File

@@ -9,6 +9,7 @@ LIB_PREF :=
LIB_EXT := .lib
HB_DYN_COPT := -DHB_DYNLIB
OBJ_DYN_POSTFIX := _dyn
CC := bcc32.exe
CC_IN := -c
@@ -71,7 +72,7 @@ ifneq ($(HB_SHELL),sh)
endef
define create_library
@$(ECHO) $(ECHOQUOTE)-+ $(LINECONT)$(ECHOQUOTE) > __lib__.tmp
$(if $(wildcard __lib__.tmp),@$(RM) __lib__.tmp,)
$(foreach file,$(^F),$(lib_object))
@$(ECHO) -+>> __lib__.tmp
$(AR) $(ARFLAGS) $(HB_USER_AFLAGS) "$(subst /,\,$(LIB_DIR)/$@)" @__lib__.tmp

View File

@@ -10,6 +10,7 @@ LIB_PREF :=
LIB_EXT := .lib
HB_DYN_COPT := -DHB_DYNLIB
OBJ_DYN_POSTFIX := _dyn
CC := icl.exe
CC_IN := -c

View File

@@ -37,7 +37,7 @@ ifeq ($(HB_BUILD_DEBUG),yes)
endif
LD := $(HB_CCPATH)$(HB_CCPREFIX)$(HB_CMP)
LD_OUT := -o
LD_OUT := -o$(subst x,x, )
LIBPATHS := -L$(LIB_DIR)
LDLIBS := $(foreach lib,$(LIBS) $(SYSLIBS),-l$(lib))
@@ -55,4 +55,22 @@ AR := $(HB_CCPATH)$(HB_CCPREFIX)ar
ARFLAGS :=
AR_RULE = $(AR) $(ARFLAGS) $(HB_USER_AFLAGS) crs $(LIB_DIR)/$@ $(^F) || $(RM) $(subst /,$(DIRSEP),$(LIB_DIR)/$@)
DY := $(CC)
DFLAGS := -shared
DY_OUT := $(LD_OUT)
DLIBS := $(foreach lib,$(SYSLIBS),-l$(lib))
# NOTE: The empty line directly before 'endef' HAVE TO exist!
define dyn_object
@$(ECHO) $(ECHOQUOTE)INPUT($(subst \,/,$(file)))$(ECHOQUOTE) >> __dyn__.tmp
endef
define create_dynlib
$(if $(wildcard __dyn__.tmp),@$(RM) __dyn__.tmp,)
$(foreach file,$^,$(dyn_object))
$(DY) $(DFLAGS) $(DY_OUT)"$(BIN_DIR)/$@"$(ECHOQUOTE) __dyn__.tmp $(HB_USER_DFLAGS) $(DLIBS) -Wl,--output-def,"$(BIN_DIR)/$(basename $@).def"
endef
DY_RULE = $(create_dynlib)
include $(TOP)$(ROOT)config/rules.mk

View File

@@ -7,6 +7,7 @@ LIB_PREF :=
LIB_EXT := .lib
HB_DYN_COPT := -DHB_DYNLIB
OBJ_DYN_POSTFIX := _dyn
CC := cl.exe
CC_IN := -c

View File

@@ -9,6 +9,7 @@ LIB_PREF :=
LIB_EXT := .lib
HB_DYN_COPT := -DHB_DYNLIB
OBJ_DYN_POSTFIX := _dyn
CC := pocc.exe
CC_IN := -c

View File

@@ -9,6 +9,7 @@ LIB_PREF :=
LIB_EXT := .lib
HB_DYN_COPT := -DHB_DYNLIB
OBJ_DYN_POSTFIX := _dyn
ifeq ($(HB_BUILD_MODE),c)
CC := wcc386

View File

@@ -9,6 +9,7 @@ LIB_PREF :=
LIB_EXT := .lib
HB_DYN_COPT := -DHB_DYNLIB
OBJ_DYN_POSTFIX := _dyn
CC := xcc.exe
CC_IN := -c

View File

@@ -6,44 +6,44 @@ ROOT := ../
ifeq ($(HB_HOST_BUILD),yes)
DIRS := \
common \
nortl \
pp{common,nortl} \
compiler{pp} \
main{compiler} \
DIRS := \
common \
nortl \
pp{common,nortl} \
compiler{pp} \
main{compiler} \
else
ifeq ($(HB_HOST_BUILD),lib)
HB_COMP_DIR :=
HB_COMP_REF :=
else
HB_COMP_DIR := main{compiler}
HB_COMP_REF := {main}
endif
DIRS := \
common \
nortl \
pp{common,nortl} \
compiler{pp} \
$(HB_COMP_DIR) \
rtl$(HB_COMP_REF) \
vm$(HB_COMP_REF) \
macro \
codepage \
lang \
rdd$(HB_COMP_REF) \
hbextern$(HB_COMP_REF) \
hbpcre \
hbzlib \
debug$(HB_COMP_REF)
ifneq ($(HB_BUILD_DLL),no)
DIRS += dynlib{codepage,common,hbextern,hbpcre,hbzlib,lang,macro,pp,rdd,rtl,vm} \
ifeq ($(HB_HOST_BUILD),lib)
HB_COMP_DIR :=
HB_COMP_REF :=
else
HB_COMP_DIR := main{compiler}
HB_COMP_REF := {main}
endif
DIRS := \
common \
nortl \
pp{common,nortl} \
compiler{pp} \
$(HB_COMP_DIR) \
rtl$(HB_COMP_REF) \
vm$(HB_COMP_REF) \
macro \
codepage \
lang \
rdd$(HB_COMP_REF) \
hbextern$(HB_COMP_REF) \
hbpcre \
hbzlib \
debug$(HB_COMP_REF)
ifneq ($(HB_BUILD_DLL),no)
DIRS += dynlib{codepage,common,hbextern,hbpcre,hbzlib,lang,macro,pp,rdd,rtl,vm}
endif
endif
include $(ROOT)config/dir.mk