* harbour/include/hbcomp.h
* harbour/include/hbexpra.c
* harbour/include/hbexprb.c
* harbour/include/hbexprc.c
* harbour/include/hbexprop.h
* harbour/source/common/expropt1.c
* harbour/source/common/expropt2.c
* harbour/source/compiler/Makefile
* harbour/source/compiler/cmdcheck.c
* harbour/source/compiler/harbour.c
* harbour/source/compiler/harbour.y
* harbour/source/compiler/harbour.yyc
* harbour/source/compiler/harbour.yyh
* harbour/source/compiler/hbcomp.c
* harbour/source/compiler/hbusage.c
* harbour/source/compiler/ppcomp.c
* harbour/source/macro/Makefile
* harbour/source/macro/macro.y
* harbour/source/macro/macro.yyc
* harbour/source/macro/macro.yyh
* harbour/source/vm/macro.c
* harbour/source/vm/memvars.c
* harbour/source/vm/memvclip.c
* keep prefix definition for bison public symbols in *.y files instead
of passing them as bison arguments to avoid possible mistakes during
*.yy[hc] file generation
! fixed iif() reduction when used as single function parameter
+ add -kM compiler switch - turn off macrotext substitution
* updated <string> + <string> optimization and other macrotext usage
to keep more Clipper compatible behavior
! fixed typo in expression type checking in IIF() reduction - it was
working because wrongly used macros has the same values as the valid
ones
- removed compiler switches and macros for old HB_INLINE() syntax - it
was not supported after last months modifications. Only:
HB_INLINE([params,...]) { C code }
is supported.
! fixed passing parameters by reference in IIF() statement and macro
compiler. The following valid Clipper code:
&("myfunc(<exp>, @var1, @var2)")
was not supported
! do not allow to use references or empty expressions in expression list
AFAIK it's Clipper compatible. If I'm wrong then please fix me but
Clipper allows to use references only as function arguments, 2-nd and
3-rd IIF() argument and as directly created array items ( {...@var...} )
DO ... WITH ... is a special case of function call.
! Changed grammar rules to accept only Clipper compatible parameters.
! fixed typo in macro name in hb_memvarNewParameter() function.
* use HB_FUNC_EXEC(...) instead of HB_FUNCNAME(...)()
720 lines
22 KiB
Plaintext
720 lines
22 KiB
Plaintext
#
|
|
# $Id$
|
|
#
|
|
|
|
#
|
|
# Makefile for Harbour Project for Borland C/C++ 5.x compilers
|
|
#
|
|
|
|
# ---------------------------------------------------------------
|
|
# If you need to set additional compiler/linker options use the
|
|
# environment variables below, but please DON'T MODIFY THIS FILE
|
|
# for this purpose.
|
|
# ---------------------------------------------------------------
|
|
|
|
#
|
|
# NOTE: You can use these envvars to configure the make process:
|
|
# (note that these are all optional)
|
|
#
|
|
# CFLAGS - Extra C compiler options for libraries and for
|
|
# executables
|
|
# C_USR - Extra C compiler options for libraries and for
|
|
# executables (GNU make compatible envvar)
|
|
# CLIBFLAGS - Extra C compiler options for the static libraries
|
|
# CLIBFLAGSDLL - Extra C compiler options for the shared libraries
|
|
#
|
|
# LDFLAGS - Extra linker options for the static libraries
|
|
# LDFLAGSDLL - Extra linker options for the shared libraries
|
|
#
|
|
# HARBOURFLAGS - Extra Harbour compiler options for static libs/exes
|
|
# HARBOURFLAGSDLL - Extra Harbour compiler options for shared libraries
|
|
# PRG_USR - Extra Harbour compiler options
|
|
# (GNU make compatible envvar)
|
|
# HB_GT_LIB - To override the default GT driver
|
|
# (search for HB_GT_LIBS for a list of values)
|
|
# HB_BUILD_DLL - If set to yes enables building harbour VM+RTL
|
|
# dll in addition to normal static build
|
|
# HB_BUILD_DEBUG - If set to yes causes to compile with debug info
|
|
# HB_BUILD_VERBOSE - enables echoing commands being executed
|
|
# HB_REBUILD_PARSER - If set to yes force preprocessing new rules by
|
|
# bison (you must use bison 2.3 or later)
|
|
# BCCDLL_WITH_DYNRT - If set to -tWR causes that harbour-bc.dll
|
|
# will use dynamic runtime library (recommended)
|
|
# HB_INSTALL_PREFIX - Path to instalation directory into which
|
|
# Harbour will be installed when the command
|
|
# "make_bc.bat install" is lauched. Defaults
|
|
# to current directory
|
|
#
|
|
# HB_DOC_PDF - Turns on the .PDF file support in the HBDOC utility.
|
|
# Note that this will require the pdflib contrib.
|
|
|
|
# ---------------------------------------------------------------
|
|
# "echo." intentionally used instead of "echo", to avoid conflicts
|
|
# with external commands named echo.
|
|
# using macros for ECHO and DEL to allow overiding such as:
|
|
#
|
|
# set ECHO=cmd /c echo
|
|
# set DEL=cmd /c del
|
|
#
|
|
# The above might be needed on Windows 2000 and XP.
|
|
# The macros are referenced in makefile.bc
|
|
# ---------------------------------------------------------------
|
|
|
|
.AUTODEPEND
|
|
|
|
#**********************************************************
|
|
|
|
.SUFFIXES: .exe .lib .obj .prg .c .l .y
|
|
|
|
#**********************************************************
|
|
|
|
!ifndef ECHO
|
|
ECHO = echo.
|
|
!endif
|
|
!ifndef DEL
|
|
DEL = del
|
|
!endif
|
|
|
|
#**********************************************************
|
|
|
|
CC = bcc32.exe
|
|
LINKER = ilink32.exe
|
|
MKLIB = tlib.exe
|
|
|
|
# subdir name for objs,libs,exes
|
|
# depends on chosen compiler type
|
|
# Bcc=b32, Msvc=vc
|
|
!ifndef CC_DIRNAME
|
|
CC_DIRNAME = b32
|
|
!endif
|
|
|
|
#**********************************************************
|
|
#**********************************************************
|
|
#**********************************************************
|
|
|
|
#
|
|
# C compiler definition and C flags. These should never have to change.
|
|
#
|
|
|
|
# Main "Include" directory
|
|
INCLUDE_DIR = include
|
|
|
|
# C Compiler Flags
|
|
CFLAGS = -I$(INCLUDE_DIR) $(C_USR) $(CFLAGS) -Iobj\$(CC_DIRNAME)
|
|
!ifndef BCC_NOOPTIM
|
|
CFLAGS = -O2 $(CFLAGS)
|
|
!endif
|
|
!if "$(HB_BUILD_DEBUG)" == "yes"
|
|
CFLAGS = -y -v $(CFLAGS)
|
|
!endif
|
|
!if "$(BCCDLL_WITH_DYNRT)" == "-tWR"
|
|
RTLIBSUFFIX = i
|
|
!endif
|
|
CLIBFLAGS = -c -q $(CFLAGS) $(CLIBFLAGS)
|
|
CLIBFLAGSDLL = -D__EXPORT__ -tWM $(BCCDLL_WITH_DYNRT) $(CLIBFLAGS) $(CLIBFLAGSDLL)
|
|
CEXEFLAGSDLL = -tWM $(BCCDLL_WITH_DYNRT) $(CLIBFLAGS) $(CEXEFLAGSDLL)
|
|
|
|
# Harbour Compiler Flags
|
|
HBFLAGSCMN = -i$(INCLUDE_DIR) -q0 -w -es2 -gc0 $(PRG_USR)
|
|
!ifdef HB_DOC_PDF
|
|
HBFLAGSCMN = $(HBFLAGSCMN) -dPDF
|
|
!endif
|
|
HARBOURFLAGS = -n $(HBFLAGSCMN) $(HARBOURFLAGS)
|
|
HARBOURFLAGSDLL= -D__EXPORT__ -n1 -l $(HBFLAGSCMN) $(HARBOURFLAGSDLL)
|
|
|
|
# Linker Flags
|
|
LDFLAGS = -ap -Tpe -Gn -C -L$(LIB_DIR) -L$(BIN_DIR) $(LDFLAGS)
|
|
LDFLAGSDLL = -aa -Gn -C -Tpd -Gi -L$(LIB_DIR) $(LDFLAGSDLL)
|
|
!if "$(HB_BUILD_DEBUG)" == "yes"
|
|
LDFLAGS = -v $(LDFLAGS)
|
|
LDFLAGSDLL = -v $(LDFLAGSDLL)
|
|
!endif
|
|
|
|
#**********************************************************
|
|
|
|
# This is needed, otherwise the libs may overflow
|
|
# when debug info is requested with -v -y
|
|
ARFLAGS = /P32
|
|
|
|
#**********************************************************
|
|
#**********************************************************
|
|
#**********************************************************
|
|
|
|
# Include Common Object list files
|
|
# shared between Msvc and Borland
|
|
|
|
!include common.mak
|
|
|
|
#**********************************************************
|
|
|
|
# Some definitions cannot be kept in Common.mak
|
|
# due to serious limitations of Microsoft Nmake
|
|
|
|
DLL_OBJS = $(TMP_DLL_OBJS:$(OBJ_DIR)=$(DLL_OBJ_DIR))
|
|
|
|
#**********************************************************
|
|
#**********************************************************
|
|
#**********************************************************
|
|
|
|
#
|
|
# COMPILE Rules
|
|
#
|
|
|
|
#**********************************************************
|
|
|
|
# General *.c --> *.obj COMPILE rule for STATIC Libraries
|
|
{$(ALL_SRC_DIRS)}.c{$(OBJ_DIR)}.obj:
|
|
$(CC) $(CLIBFLAGS) -o$@ $<
|
|
|
|
#**********************************************************
|
|
|
|
# General *.prg --> *.obj COMPILE rule for STATIC Libraries
|
|
{$(ALL_SRC_DIRS)}.prg{$(OBJ_DIR)}.obj:
|
|
$(HARBOUR_EXE) $(HARBOURFLAGS) -o$(OBJ_DIR)\ $**
|
|
$(CC) $(CLIBFLAGS) -o$@ $(OBJ_DIR)\$&.c
|
|
|
|
#**********************************************************
|
|
|
|
# General *.c --> *.obj COMPILE rule for SHARED Libraries
|
|
{$(ALL_LIB_SRC_DIRS)}.c{$(DLL_OBJ_DIR)}.obj:
|
|
$(CC) $(CLIBFLAGSDLL) -o$@ $<
|
|
|
|
#**********************************************************
|
|
|
|
# General *.prg --> *.obj COMPILE rule for SHARED Libraries
|
|
{$(ALL_LIB_SRC_DIRS)}.prg{$(DLL_OBJ_DIR)}.obj:
|
|
$(HARBOUR_EXE) $(HARBOURFLAGSDLL) -o$(DLL_OBJ_DIR)\ $**
|
|
$(CC) $(CLIBFLAGSDLL) -o$@ $(DLL_OBJ_DIR)\$&.c
|
|
|
|
#**********************************************************
|
|
|
|
# General *.c --> *.obj COMPILE rules for EXECUTABLES,
|
|
# which use Harbour SHARED Library compiled as DLL
|
|
{$(ALL_EXE_SRC_DIRS)}.c{$(DLL_OBJ_DIR)}.obj:
|
|
$(CC) $(CEXEFLAGSDLL) -o$@ $<
|
|
|
|
#**********************************************************
|
|
|
|
# General *.prg --> *.obj COMPILE rules for EXECUTABLES,
|
|
# which use Harbour SHARED Library compiled as DLL
|
|
{$(ALL_EXE_SRC_DIRS)}.prg{$(DLL_OBJ_DIR)}.obj:
|
|
$(HARBOUR_EXE) $(HARBOURFLAGS) -o$(DLL_OBJ_DIR)\ $**
|
|
$(CC) $(CEXEFLAGSDLL) -o$@ $(DLL_OBJ_DIR)\$&.c
|
|
|
|
#**********************************************************
|
|
#**********************************************************
|
|
#**********************************************************
|
|
|
|
# General BUILD rules (not used !)
|
|
|
|
#**********************************************************
|
|
|
|
# General Library BUILD rule
|
|
#{$(OBJ_DIR)}.obj{$(LIB_DIR)}.lib:
|
|
# IF EXIST "$@" $(DEL) "$@" > NUL
|
|
# $(MKLIB) "$@" $(ARFLAGS) @&&!
|
|
#+$(**: = &^
|
|
#+)
|
|
#!
|
|
|
|
#**********************************************************
|
|
#**********************************************************
|
|
#**********************************************************
|
|
|
|
# TARGET dependencies
|
|
|
|
#**********************************************************
|
|
|
|
all : $(HB_DEST_DIRS) $(HB_BUILD_TARGETS)
|
|
|
|
#
|
|
# Helper targets
|
|
#
|
|
|
|
BasicLibs : $(COMMON_LIB) $(PP_LIB)
|
|
BasicExes : $(HARBOUR_EXE)
|
|
StdLibs : $(STANDARD_STATIC_HBLIBS)
|
|
|
|
#**********************************************************
|
|
|
|
clean: doClean
|
|
Clean: doClean
|
|
CLEAN: doClean
|
|
|
|
doClean:
|
|
-if exist $(BIN_DIR)\*.exe $(DEL) $(BIN_DIR)\*.exe > nul
|
|
-if exist $(BIN_DIR)\*.tds $(DEL) $(BIN_DIR)\*.tds > nul
|
|
-if exist $(BIN_DIR)\*.tr? $(DEL) $(BIN_DIR)\*.tr? > nul
|
|
-if exist $(BIN_DIR)\*.map $(DEL) $(BIN_DIR)\*.map > nul
|
|
-if exist $(BIN_DIR)\*.dll $(DEL) $(BIN_DIR)\*.dll > nul
|
|
-if exist $(BIN_DIR)\*.lib $(DEL) $(BIN_DIR)\*.lib > nul
|
|
-if exist $(LIB_DIR)\*.lib $(DEL) $(LIB_DIR)\*.lib > nul
|
|
-if exist $(LIB_DIR)\*.bak $(DEL) $(LIB_DIR)\*.bak > nul
|
|
-if exist $(OBJ_DIR)\*.obj $(DEL) $(OBJ_DIR)\*.obj > nul
|
|
-if exist $(OBJ_DIR)\*.c $(DEL) $(OBJ_DIR)\*.c > nul
|
|
-if exist $(OBJ_DIR)\*.h $(DEL) $(OBJ_DIR)\*.h > nul
|
|
-if exist $(PP_DIR)\pptable.c $(DEL) $(PP_DIR)\pptable.c > nul
|
|
-if exist $(DLL_OBJ_DIR)\*.obj $(DEL) $(DLL_OBJ_DIR)\*.obj > nul
|
|
-if exist $(DLL_OBJ_DIR)\*.c $(DEL) $(DLL_OBJ_DIR)\*.c > nul
|
|
-if exist $(DLL_OBJ_DIR)\*.h $(DEL) $(DLL_OBJ_DIR)\*.h > nul
|
|
-if exist inst_$(CC_DIRNAME).log $(DEL) inst_$(CC_DIRNAME).log > nul
|
|
-if exist bin\*.exe $(DEL) bin\*.exe > nul
|
|
-if exist lib\*.lib $(DEL) lib\*.lib > nul
|
|
|
|
#**********************************************************
|
|
|
|
install : doInstall
|
|
Install : doInstall
|
|
INSTALL : doInstall
|
|
|
|
doInstall: $(HB_BIN_INSTALL) $(HB_LIB_INSTALL) $(HB_INC_INSTALL)
|
|
-if exist $(HB_BIN_INSTALL)\nul if exist $(BIN_DIR)\*.exe copy /B $(BIN_DIR)\*.exe $(HB_BIN_INSTALL) > inst_$(CC_DIRNAME).log
|
|
-if exist $(HB_BIN_INSTALL)\nul if exist $(BIN_DIR)\*.dll copy /B $(BIN_DIR)\*.dll $(HB_BIN_INSTALL) >> inst_$(CC_DIRNAME).log
|
|
-if exist $(HB_LIB_INSTALL)\nul if exist $(BIN_DIR)\*.lib copy /B $(BIN_DIR)\*.lib $(HB_LIB_INSTALL) >> inst_$(CC_DIRNAME).log
|
|
-if exist $(HB_LIB_INSTALL)\nul if exist $(LIB_DIR)\*.lib copy /B $(LIB_DIR)\*.lib $(HB_LIB_INSTALL) >> inst_$(CC_DIRNAME).log
|
|
!if "$(HB_INSTALL_PREFIX)" != "."
|
|
-if exist $(HB_INC_INSTALL)\nul copy /A include\*.api $(HB_INC_INSTALL) >> inst_$(CC_DIRNAME).log
|
|
-if exist $(HB_INC_INSTALL)\nul copy /A include\*.ch $(HB_INC_INSTALL) >> inst_$(CC_DIRNAME).log
|
|
-if exist $(HB_INC_INSTALL)\nul copy /A include\*.h $(HB_INC_INSTALL) >> inst_$(CC_DIRNAME).log
|
|
!endif
|
|
|
|
#**********************************************************
|
|
|
|
$(HB_DEST_DIRS) $(HB_BIN_INSTALL) $(HB_LIB_INSTALL) $(HB_INC_INSTALL):
|
|
!if not exist $@\nul mkdir $@
|
|
|
|
#**********************************************************
|
|
#
|
|
# LIBRARY Targets BUILD rules
|
|
#
|
|
#**********************************************************
|
|
$(COMMON_LIB) : $(COMMON_LIB_OBJS)
|
|
IF EXIST "$(COMMON_LIB)" $(DEL) "$(COMMON_LIB)" > NUL
|
|
$(MKLIB) "$(COMMON_LIB)" $(ARFLAGS) @&&!
|
|
+$(**: = &^
|
|
+)
|
|
!
|
|
#**********************************************************
|
|
$(PP_LIB) : $(PP_LIB_OBJS)
|
|
IF EXIST "$(PP_LIB)" $(DEL) "$(PP_LIB)" > NUL
|
|
$(MKLIB) "$(PP_LIB)" $(ARFLAGS) @&&!
|
|
+$(**: = &^
|
|
+)
|
|
!
|
|
#**********************************************************
|
|
$(VM_LIB) :: BasicExes
|
|
$(VM_LIB) :: $(VM_LIB_OBJS)
|
|
IF EXIST "$(VM_LIB)" $(DEL) "$(VM_LIB)" > NUL
|
|
$(MKLIB) "$(VM_LIB)" $(ARFLAGS) @&&!
|
|
+$(**: = &^
|
|
+)
|
|
!
|
|
#**********************************************************
|
|
$(RTL_LIB) :: BasicExes
|
|
$(RTL_LIB) :: $(RTL_LIB_OBJS)
|
|
IF EXIST "$(RTL_LIB)" $(DEL) "$(RTL_LIB)" > NUL
|
|
$(MKLIB) "$(RTL_LIB)" $(ARFLAGS) @&&!
|
|
+$(**: = &^
|
|
+)
|
|
!
|
|
#**********************************************************
|
|
$(MACRO_LIB) : $(MACRO_LIB_OBJS)
|
|
IF EXIST "$(MACRO_LIB)" $(DEL) "$(MACRO_LIB)" > NUL
|
|
$(MKLIB) "$(MACRO_LIB)" $(ARFLAGS) @&&!
|
|
+$(**: = &^
|
|
+)
|
|
!
|
|
#**********************************************************
|
|
$(DEBUG_LIB) :: BasicExes
|
|
$(DEBUG_LIB) :: $(DEBUG_LIB_OBJS)
|
|
IF EXIST "$(DEBUG_LIB)" $(DEL) "$(DEBUG_LIB)" > NUL
|
|
$(MKLIB) "$(DEBUG_LIB)" $(ARFLAGS) @&&!
|
|
+$(**: = &^
|
|
+)
|
|
!
|
|
#**********************************************************
|
|
$(LANG_LIB) : $(LANG_LIB_OBJS)
|
|
IF EXIST "$(LANG_LIB)" $(DEL) "$(LANG_LIB)" > NUL
|
|
$(MKLIB) "$(LANG_LIB)" $(ARFLAGS) @&&!
|
|
+$(**: = &^
|
|
+)
|
|
!
|
|
#**********************************************************
|
|
$(CODEPAGE_LIB) : $(CODEPAGE_LIB_OBJS)
|
|
IF EXIST "$(CODEPAGE_LIB)" $(DEL) "$(CODEPAGE_LIB)" > NUL
|
|
$(MKLIB) "$(CODEPAGE_LIB)" $(ARFLAGS) @&&!
|
|
+$(**: = &^
|
|
+)
|
|
!
|
|
#**********************************************************
|
|
$(RDD_LIB) :: BasicExes
|
|
$(RDD_LIB) :: $(RDD_LIB_OBJS)
|
|
IF EXIST "$(RDD_LIB)" $(DEL) "$(RDD_LIB)" > NUL
|
|
$(MKLIB) "$(RDD_LIB)" $(ARFLAGS) @&&!
|
|
+$(**: = &^
|
|
+)
|
|
!
|
|
#**********************************************************
|
|
$(NULSYS_LIB) : $(NULSYS_LIB_OBJS)
|
|
IF EXIST "$(NULSYS_LIB)" $(DEL) "$(NULSYS_LIB)" > NUL
|
|
$(MKLIB) "$(NULSYS_LIB)" $(ARFLAGS) @&&!
|
|
+$(**: = &^
|
|
+)
|
|
!
|
|
#**********************************************************
|
|
$(DBFNTX_LIB) :: BasicExes
|
|
$(DBFNTX_LIB) :: $(DBFNTX_LIB_OBJS)
|
|
IF EXIST "$(DBFNTX_LIB)" $(DEL) "$(DBFNTX_LIB)" > NUL
|
|
$(MKLIB) "$(DBFNTX_LIB)" $(ARFLAGS) @&&!
|
|
+$(**: = &^
|
|
+)
|
|
!
|
|
#**********************************************************
|
|
$(DBFCDX_LIB) : $(DBFCDX_LIB_OBJS)
|
|
IF EXIST "$(DBFCDX_LIB)" $(DEL) "$(DBFCDX_LIB)" > NUL
|
|
$(MKLIB) "$(DBFCDX_LIB)" $(ARFLAGS) @&&!
|
|
+$(**: = &^
|
|
+)
|
|
!
|
|
#**********************************************************
|
|
$(DBFFPT_LIB) : $(DBFFPT_LIB_OBJS)
|
|
IF EXIST "$(DBFFPT_LIB)" $(DEL) "$(DBFFPT_LIB)" > NUL
|
|
$(MKLIB) "$(DBFFPT_LIB)" $(ARFLAGS) @&&!
|
|
+$(**: = &^
|
|
+)
|
|
!
|
|
#**********************************************************
|
|
$(HBSIX_LIB) : $(HBSIX_LIB_OBJS)
|
|
IF EXIST "$(HBSIX_LIB)" $(DEL) "$(HBSIX_LIB)" > NUL
|
|
$(MKLIB) "$(HBSIX_LIB)" $(ARFLAGS) @&&!
|
|
+$(**: = &^
|
|
+)
|
|
!
|
|
#**********************************************************
|
|
$(HSX_LIB) : $(HSX_LIB_OBJS)
|
|
IF EXIST "$(HSX_LIB)" $(DEL) "$(HSX_LIB)" > NUL
|
|
$(MKLIB) "$(HSX_LIB)" $(ARFLAGS) @&&!
|
|
+$(**: = &^
|
|
+)
|
|
!
|
|
#**********************************************************
|
|
$(USRRDD_LIB) : $(USRRDD_LIB_OBJS)
|
|
IF EXIST "$(USRRDD_LIB)" $(DEL) "$(USRRDD_LIB)" > NUL
|
|
$(MKLIB) "$(USRRDD_LIB)" $(ARFLAGS) @&&!
|
|
+$(**: = &^
|
|
+)
|
|
!
|
|
#**********************************************************
|
|
$(GTCGI_LIB) : $(GTCGI_LIB_OBJS)
|
|
IF EXIST "$(GTCGI_LIB)" $(DEL) "$(GTCGI_LIB)" > NUL
|
|
$(MKLIB) "$(GTCGI_LIB)" $(ARFLAGS) @&&!
|
|
+$(**: = &^
|
|
+)
|
|
!
|
|
#**********************************************************
|
|
$(GTDOS_LIB) : $(GTDOS_LIB_OBJS)
|
|
IF EXIST "$(GTDOS_LIB)" $(DEL) "$(GTDOS_LIB)" > NUL
|
|
$(MKLIB) "$(GTDOS_LIB)" $(ARFLAGS) @&&!
|
|
+$(**: = &^
|
|
+)
|
|
!
|
|
#**********************************************************
|
|
$(GTPCA_LIB) : $(GTPCA_LIB_OBJS)
|
|
IF EXIST "$(GTPCA_LIB)" $(DEL) "$(GTPCA_LIB)" > NUL
|
|
$(MKLIB) "$(GTPCA_LIB)" $(ARFLAGS) @&&!
|
|
+$(**: = &^
|
|
+)
|
|
!
|
|
#**********************************************************
|
|
$(GTSTD_LIB) : $(GTSTD_LIB_OBJS)
|
|
IF EXIST "$(GTSTD_LIB)" $(DEL) "$(GTSTD_LIB)" > NUL
|
|
$(MKLIB) "$(GTSTD_LIB)" $(ARFLAGS) @&&!
|
|
+$(**: = &^
|
|
+)
|
|
!
|
|
#**********************************************************
|
|
$(GTWIN_LIB) : $(GTWIN_LIB_OBJS)
|
|
IF EXIST "$(GTWIN_LIB)" $(DEL) "$(GTWIN_LIB)" > NUL
|
|
$(MKLIB) "$(GTWIN_LIB)" $(ARFLAGS) @&&!
|
|
+$(**: = &^
|
|
+)
|
|
!
|
|
#**********************************************************
|
|
$(GTWVT_LIB) : $(GTWVT_LIB_OBJS)
|
|
IF EXIST "$(GTWVT_LIB)" $(DEL) "$(GTWVT_LIB)" > NUL
|
|
$(MKLIB) "$(GTWVT_LIB)" $(ARFLAGS) @&&!
|
|
+$(**: = &^
|
|
+)
|
|
!
|
|
#**********************************************************
|
|
$(GTGUI_LIB) : $(GTGUI_LIB_OBJS)
|
|
IF EXIST "$(GTGUI_LIB)" $(DEL) "$(GTGUI_LIB)" > NUL
|
|
$(MKLIB) "$(GTGUI_LIB)" $(ARFLAGS) @&&!
|
|
+$(**: = &^
|
|
+)
|
|
!
|
|
#**********************************************************
|
|
#
|
|
# EXECUTABLE Targets
|
|
#
|
|
#**********************************************************
|
|
#
|
|
# HARBOUR build rule
|
|
#
|
|
$(HARBOUR_EXE) :: BasicLibs
|
|
$(HARBOUR_EXE) :: $(HARBOUR_EXE_OBJS)
|
|
IF EXIST "$(HARBOUR_EXE)" $(DEL) "$(HARBOUR_EXE)" > NUL
|
|
$(CC) @&&!
|
|
$(CFLAGS)
|
|
-e$(HARBOUR_EXE)
|
|
$(**: = ^
|
|
)
|
|
$(COMMON_LIB)
|
|
$(PP_LIB)
|
|
!
|
|
#**********************************************************
|
|
#
|
|
# HBPPGEN build rule
|
|
#
|
|
$(HBPPGEN_EXE) :: $(COMMON_LIB)
|
|
$(HBPPGEN_EXE) :: $(HBPPGEN_EXE_OBJS)
|
|
IF EXIST "$(HBPPGEN_EXE)" $(DEL) "$(HBPPGEN_EXE)" > NUL
|
|
$(CC) @&&!
|
|
$(CFLAGS)
|
|
-e$(HBPPGEN_EXE)
|
|
$(**: = ^
|
|
)
|
|
$(COMMON_LIB)
|
|
!
|
|
#**********************************************************
|
|
#
|
|
# HBPP build rule
|
|
#
|
|
$(HBPP_EXE) :: BasicLibs
|
|
$(HBPP_EXE) :: $(HBPP_EXE_OBJS)
|
|
IF EXIST "$(HBPP_EXE)" $(DEL) "$(HBPP_EXE)" > NUL
|
|
$(CC) @&&!
|
|
$(CFLAGS)
|
|
-e$(HBPP_EXE)
|
|
$(**: = ^
|
|
)
|
|
$(COMMON_LIB)
|
|
!
|
|
#**********************************************************
|
|
#
|
|
# HBPPTEST build rule
|
|
#
|
|
$(HBPPTEST_EXE) :: BasicLibs BasicExes StdLibs
|
|
$(HBPPTEST_EXE) :: $(HBPPTEST_EXE_OBJS)
|
|
IF EXIST "$(HBPPTEST_EXE)" $(DEL) "$(HBPPTEST_EXE)" > NUL
|
|
$(CC) @&&!
|
|
$(CFLAGS)
|
|
-e$(HBPPTEST_EXE)
|
|
$(**: = ^
|
|
)
|
|
$(STANDARD_STATIC_HBLIBS)
|
|
$(PP_LIB)
|
|
!
|
|
#**********************************************************
|
|
#
|
|
# HBRUN build rule
|
|
#
|
|
$(HBRUN_EXE) :: BasicLibs BasicExes StdLibs
|
|
$(HBRUN_EXE) :: $(HBRUN_EXE_OBJS)
|
|
IF EXIST "$(HBRUN_EXE)" $(DEL) "$(HBRUN_EXE)" > NUL
|
|
$(CC) @&&!
|
|
$(CFLAGS)
|
|
-e$(HBRUN_EXE)
|
|
$(**: = ^
|
|
)
|
|
$(STANDARD_STATIC_HBLIBS)
|
|
!
|
|
#**********************************************************
|
|
#
|
|
# HBTEST build rule
|
|
#
|
|
$(HBTEST_EXE) :: BasicLibs BasicExes StdLibs
|
|
$(HBTEST_EXE) :: $(HBTEST_EXE_OBJS)
|
|
IF EXIST "$(HBTEST_EXE)" $(DEL) "$(HBTEST_EXE)" > NUL
|
|
$(CC) @&&!
|
|
$(CFLAGS)
|
|
-e$(HBTEST_EXE)
|
|
$(**: = ^
|
|
)
|
|
$(STANDARD_STATIC_HBLIBS)
|
|
!
|
|
#**********************************************************
|
|
#
|
|
# HBDOC build rule
|
|
#
|
|
|
|
$(HBDOC_EXE) :: BasicLibs BasicExes StdLibs
|
|
$(HBDOC_EXE) :: $(HBDOC_EXE_OBJS)
|
|
IF EXIST "$(HBDOC_EXE)" $(DEL) "$(HBDOC_EXE)" > NUL
|
|
$(CC) @&&!
|
|
$(CFLAGS)
|
|
-e$(HBDOC_EXE)
|
|
$(**: = ^
|
|
)
|
|
$(STANDARD_STATIC_HBLIBS)
|
|
!
|
|
#**********************************************************
|
|
#
|
|
# HBMAKE build rule
|
|
#
|
|
$(HBMAKE_EXE) :: BasicLibs BasicExes StdLibs
|
|
$(HBMAKE_EXE) :: $(HBMAKE_EXE_OBJS)
|
|
IF EXIST "$(HBMAKE_EXE)" $(DEL) "$(HBMAKE_EXE)" > NUL
|
|
$(CC) @&&!
|
|
$(CFLAGS)
|
|
-e$(HBMAKE_EXE)
|
|
$(**: = ^
|
|
)
|
|
$(STANDARD_STATIC_HBLIBS)
|
|
!
|
|
#**********************************************************
|
|
#
|
|
# HBVER build rule
|
|
#
|
|
$(HBVER_EXE) :: BasicLibs BasicExes StdLibs
|
|
$(HBVER_EXE) :: $(HBVER_EXE_OBJS)
|
|
IF EXIST "$(HBVER_EXE)" $(DEL) "$(HBVER_EXE)" > NUL
|
|
$(CC) @&&!
|
|
$(CFLAGS)
|
|
-e$(HBVER_EXE)
|
|
$(**: = ^
|
|
)
|
|
$(STANDARD_STATIC_HBLIBS)
|
|
!
|
|
#**********************************************************
|
|
#
|
|
# DLL Targets
|
|
#
|
|
#**********************************************************
|
|
$(HARBOUR_DLL) :: BasicLibs BasicExes
|
|
$(HARBOUR_DLL) :: $(DLL_OBJS)
|
|
$(LINKER) $(LDFLAGSDLL) @&&!
|
|
c0d32.obj $**, $@,, cw32mt$(RTLIBSUFFIX).lib import32.lib
|
|
!
|
|
#**********************************************************
|
|
#
|
|
# DLL EXECUTABLE Targets
|
|
#
|
|
#**********************************************************
|
|
$(HBTESTDLL_EXE) :: BasicLibs BasicExes
|
|
$(HBTESTDLL_EXE) :: $(DLL_OBJ_DIR)\mainstd.obj $(HBTEST_EXE_OBJS:$(OBJ_DIR)=$(DLL_OBJ_DIR))
|
|
$(LINKER) $(LDFLAGS) @&&!
|
|
c0x32.obj $**, $@,,$(HARBOUR_DLL:.dll=.lib) cw32mt$(RTLIBSUFFIX).lib import32.lib
|
|
!
|
|
#----------------------------------------------------------
|
|
#$(DLL_OBJ_DIR)\hbtest.obj : $(HBTEST_DIR)\hbtest.prg
|
|
# $(HARBOUR_EXE) $(HARBOURFLAGS) -o$(DLL_OBJ_DIR)\ $**
|
|
# $(CC) $(CLIBFLAGSDLL) -o$@ $(DLL_OBJ_DIR)\$&.c
|
|
#----------------------------------------------------------
|
|
$(DLL_OBJ_DIR)\mainstd.obj : $(VM_DIR)\mainstd.c
|
|
$(CC) $(CEXEFLAGSDLL) -o$@ $**
|
|
#**********************************************************
|
|
#**********************************************************
|
|
#**********************************************************
|
|
|
|
# EXTRA Object's DEPENDENCIES
|
|
|
|
#**********************************************************
|
|
|
|
# Generated by an intermediate utility ppgen.exe
|
|
# built at the initial phase of build process
|
|
$(OBJ_DIR)\pptable.obj : $(PP_DIR)\pptable.c
|
|
$(PP_DIR)\pptable.c : $(BIN_DIR)\ppgen.exe include\hbstdgen.ch
|
|
IF EXIST "$(PP_DIR)\pptable.c" $(DEL) "$(PP_DIR)\pptable.c" > nul
|
|
$(BIN_DIR)\ppgen.exe include/hbstdgen.ch -o$(PP_DIR)/pptable.c -q
|
|
|
|
#**********************************************************
|
|
|
|
!if "$(HB_REBUILD_PARSER)" == "yes"
|
|
|
|
$(OBJ_DIR)\macroy.c : $(MACRO_DIR)\macro.y
|
|
bison --no-line -d $** -o$@
|
|
|
|
$(OBJ_DIR)\harboury.c : $(HARBOUR_DIR)\harbour.y
|
|
bison --no-line -d $** -o$@
|
|
|
|
!else
|
|
|
|
$(OBJ_DIR)\macroy.c : $(MACRO_DIR)\macro.yyc
|
|
copy /A $** $@
|
|
copy /A $(**:.yyc=.yyh) $(@:.c=.h)
|
|
|
|
$(OBJ_DIR)\harboury.c : $(HARBOUR_DIR)\harbour.yyc
|
|
copy /A $** $@
|
|
copy /A $(**:.yyc=.yyh) $(@:.c=.h)
|
|
|
|
!endif
|
|
|
|
#**********************************************************
|
|
|
|
$(OBJ_DIR)\macrol.c : $(MACRO_DIR)\macro.l
|
|
flex -Phb_macro -i -8 -o$@ $**
|
|
|
|
$(OBJ_DIR)\harbourl.c : $(HARBOUR_DIR)\harbour.l
|
|
flex -Phb_comp -i -8 -o$@ $**
|
|
|
|
#**********************************************************
|
|
|
|
$(OBJ_DIR)\macroy.obj : $(OBJ_DIR)\macroy.c
|
|
$(OBJ_DIR)\macrol.obj : $(OBJ_DIR)\macrol.c
|
|
$(ECHO) > $(OBJ_DIR)\unistd.h
|
|
$(CC) $(CLIBFLAGS) -I$(OBJ_DIR) -o$@ $**
|
|
$(DEL) $(OBJ_DIR)\unistd.h
|
|
|
|
$(OBJ_DIR)\harboury.obj : $(OBJ_DIR)\harboury.c
|
|
$(OBJ_DIR)\harbourl.obj : $(OBJ_DIR)\harbourl.c
|
|
$(ECHO) > $(OBJ_DIR)\unistd.h
|
|
$(CC) $(CLIBFLAGS) -I$(OBJ_DIR) -o$@ $**
|
|
$(DEL) $(OBJ_DIR)\unistd.h
|
|
|
|
#**********************************************************
|
|
|
|
!if "$(HB_REBUILD_PARSER)" == "yes"
|
|
|
|
$(DLL_OBJ_DIR)\macroy.c : $(MACRO_DIR)\macro.y
|
|
bison --no-line -d $** -o$@
|
|
|
|
$(DLL_OBJ_DIR)\harboury.c : $(HARBOUR_DIR)\harbour.y
|
|
bison --no-line -d $** -o$@
|
|
|
|
!else
|
|
|
|
$(DLL_OBJ_DIR)\macroy.c : $(MACRO_DIR)\macro.yyc
|
|
copy /A $** $@
|
|
copy /A $(**:.yyc=.yyh) $(@:.c=.h)
|
|
|
|
$(DLL_OBJ_DIR)\harboury.c : $(HARBOUR_DIR)\harbour.yyc
|
|
copy /A $** $@
|
|
copy /A $(**:.yyc=.yyh) $(@:.c=.h)
|
|
|
|
!endif
|
|
|
|
#**********************************************************
|
|
|
|
$(DLL_OBJ_DIR)\macrol.c : $(MACRO_DIR)\macro.l
|
|
flex -Phb_macro -i -8 -o$@ $**
|
|
|
|
$(DLL_OBJ_DIR)\harbourl.c : $(HARBOUR_DIR)\harbour.l
|
|
flex -Phb_comp -i -8 -o$@ $**
|
|
|
|
#**********************************************************
|
|
|
|
$(DLL_OBJ_DIR)\macroy.obj : $(DLL_OBJ_DIR)\macroy.c
|
|
$(DLL_OBJ_DIR)\macrol.obj : $(DLL_OBJ_DIR)\macrol.c
|
|
$(ECHO) > $(DLL_OBJ_DIR)\unistd.h
|
|
$(CC) $(CLIBFLAGS) -I$(DLL_OBJ_DIR) -o$@ $**
|
|
$(DEL) $(DLL_OBJ_DIR)\unistd.h
|
|
|
|
$(DLL_OBJ_DIR)\harboury.obj : $(DLL_OBJ_DIR)\harboury.c
|
|
$(DLL_OBJ_DIR)\harbourl.obj : $(DLL_OBJ_DIR)\harbourl.c
|
|
$(ECHO) > $(DLL_OBJ_DIR)\unistd.h
|
|
$(CC) $(CLIBFLAGS) -I$(DLL_OBJ_DIR) -o$@ $**
|
|
$(DEL) $(DLL_OBJ_DIR)\unistd.h
|
|
|
|
#**********************************************************
|