* contrib/make.hbs
+ Generalized the way dynamic lib dependencies are found
to make it work on *nix systems, too.
* include/harbour.hbx
+ src/rtl/libnamec.c
* src/rtl/libname.prg
* src/rtl/Makefile
+ Added HB_LIBEXT() and HB_LIBPREFIX() functions.
* utils/hbmk2/hbmk2.prg
+ Added "platform", "compiler", "cpu", "buildname", "dynsuffix"
to --hbinfo returned data.
* INSTALL
+ Documented HB_BUILD_CONTRIB_DYN setting. The default is
'no', and if set to 'yes', the build system will create
dynamic lib versions of the contribs.
* src/Makefile
* utils/hbformat/Makefile
* utils/hbi18n/Makefile
* utils/hbtest/Makefile
* config/global.mk
* config/dos/watcom.mk
* config/dos/djgpp.mk
* config/dyn.mk
* config/rules.mk
* INSTALL
* Renamed HB_BUILD_DLL to HB_BUILD_DYN.
123 lines
3.0 KiB
Makefile
123 lines
3.0 KiB
Makefile
#
|
|
# $Id$
|
|
#
|
|
|
|
# How to run yacc.
|
|
YACC := bison
|
|
YACC_FLAGS := -d $(YACC_FLAGS)
|
|
|
|
ifeq ($(HB_BUILD_DEBUG),yes)
|
|
HB_CFLAGS := -DHB_TR_LEVEL_DEBUG $(HB_CFLAGS)
|
|
else
|
|
ifneq ($(HB_COMPILER),pcc)
|
|
HB_PRGFLAGS := -l $(HB_PRGFLAGS)
|
|
endif
|
|
endif
|
|
|
|
HB_CFLAGS := -DHB_LEGACY_TYPES_OFF $(HB_CFLAGS)
|
|
|
|
# Handle it here, so that it can be disabled for individual libs
|
|
ifeq ($(HB_PLATFORM),win)
|
|
ifneq ($(HB_BUILD_UNICODE),no)
|
|
HB_CFLAGS += -DUNICODE
|
|
endif
|
|
endif
|
|
|
|
ifeq ($(HB_DYN_COPT),)
|
|
OBJ_DYN_POSTFIX :=
|
|
else
|
|
OBJ_DYN_POSTFIX := _dyn
|
|
endif
|
|
|
|
# How to run Harbour
|
|
HB := $(HB_HOST_BIN_DIR)/harbour$(HB_HOST_BIN_EXT)
|
|
HB_FLAGS := -n1 -q0 -w3 -es2 -kmo -i- $(HB_PRGFLAGS)
|
|
HB_RULE = $(HB) $? $(HB_INC_DEPEND) -i$(HB_HOST_INC) $(HB_FLAGS) $(HB_USER_PRGFLAGS)
|
|
|
|
# Use default rules if platform/compiler specific rule is not defined
|
|
|
|
CC_FLAGS := $(HB_INC_DEPEND) $(CFLAGS) $(HB_CFLAGS)
|
|
|
|
# The rule to compile a C source file.
|
|
ifeq ($(CC_RULE),)
|
|
CC_RULE = $(CC) $(subst $(CC_DIRSEPFROM),$(CC_DIRSEPTO),$(CC_FLAGS) $(HB_USER_CFLAGS) $(CC_OUT)$(<F:.c=$(OBJ_EXT)) $(HB_CFLAGS_STA) $(CC_IN) $<)
|
|
ifneq ($(HB_BUILD_DYN),no)
|
|
ifneq ($(HB_DYN_COPT),)
|
|
ifneq ($(LIBNAME),)
|
|
ifneq ($(filter $(LIBNAME),$(HB_DYN_LIBS)),)
|
|
define cc_comp_all
|
|
$(CC) $(subst $(CC_DIRSEPFROM),$(CC_DIRSEPTO),$(CC_FLAGS) $(HB_USER_CFLAGS) $(CC_OUT)$(<F:.c=$(OBJ_EXT)) $(HB_CFLAGS_STA) $(CC_IN) $<)
|
|
$(CC) $(subst $(CC_DIRSEPFROM),$(CC_DIRSEPTO),$(CC_FLAGS) $(HB_USER_CFLAGS) $(CC_OUT)$(<F:.c=$(OBJ_DYN_POSTFIX)$(OBJ_EXT)) $(HB_DYN_COPT) $(HB_CFLAGS_DYN) $(CC_IN) $<)
|
|
endef
|
|
CC_RULE = $(cc_comp_all)
|
|
endif
|
|
endif
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
# The rule to compile a C++ source file.
|
|
ifeq ($(CPP_RULE),)
|
|
ifeq ($(CXX),)
|
|
CXX := $(CC)
|
|
endif
|
|
CPP_RULE = $(CXX) $(CC_FLAGS) $(HB_USER_CFLAGS) $(CC_OUT)$(<F:.cpp=$(OBJ_EXT)) $(CC_IN) $<
|
|
endif
|
|
|
|
# The rule to compile resources.
|
|
ifneq ($(RC),)
|
|
ifeq ($(RC_RULE),)
|
|
RC_RULE = $(RC) $(RCFLAGS) $(HB_RCFLAGS) $(HB_USER_RESFLAGS) $(RC_OUT)$(<F:.rc=$(RES_EXT)) $<
|
|
endif
|
|
endif
|
|
|
|
# The rule to link an executable.
|
|
ifeq ($(LD_RULE),)
|
|
LD_RULE = $(LD) $(LDFLAGS) $(HB_LDFLAGS) $(HB_USER_LDFLAGS) $(LD_OUT)$(subst /,$(DIRSEP),$(BIN_DIR)/$@) $(^F) $(LDLIBS) $(LDSTRIP)
|
|
endif
|
|
|
|
# Eliminate these rules.
|
|
%.c : %.y
|
|
|
|
# Rule to generate an object file from a C source file in the parent.
|
|
%$(OBJ_EXT) : $(GRANDP)%.c
|
|
$(CC_RULE)
|
|
|
|
# Rule to generate an object file from a C source file.
|
|
%$(OBJ_EXT) : %.c
|
|
$(CC_RULE)
|
|
|
|
# Rules for CPP files
|
|
%$(OBJ_EXT) : $(GRANDP)%.cpp
|
|
$(CPP_RULE)
|
|
|
|
%$(OBJ_EXT) : %.cpp
|
|
$(CPP_RULE)
|
|
|
|
# Rules for resource files
|
|
%$(RES_EXT) : $(GRANDP)%.rc
|
|
$(RC_RULE)
|
|
|
|
%$(RES_EXT) : %.rc
|
|
$(RC_RULE)
|
|
|
|
_RES := no
|
|
ifneq ($(RES_EXT),)
|
|
ifneq ($(ALL_RC_OBJS),)
|
|
_RES := yes
|
|
endif
|
|
endif
|
|
|
|
# Rule to generate an executable file from an object file.
|
|
ifeq ($(_RES),yes)
|
|
%$(BIN_EXT) : %$(OBJ_EXT) %$(RES_EXT)
|
|
$(LD_RULE)
|
|
else
|
|
%$(BIN_EXT) : %$(OBJ_EXT)
|
|
$(LD_RULE)
|
|
endif
|
|
|
|
# Rule to generate a C file from a PRG file.
|
|
%.c : $(GRANDP)%.prg
|
|
$(HB_RULE)
|