Files
harbour-core/harbour/makefile.bc
Viktor Szakats 37a9f88c29 2006-07-05 20:30 UTC+0100 Viktor Szakats (viktor.szakats syenar.hu)
- harbour/Common.mak
   + harbour/common.mak
   * harbour/make_b32.bat
   * harbour/make_vc.bat
   * harbour/makefile.bc
   * harbour/makefile.vc
     ! Filename casing correction. (fixed in two previous commits)
     ! Missing CVS ID added. (fixed in previous commit)
     ! Few minor formatting, typos fixed.
     + Few build envvars prefixed with HB_ (some renamed)
     * Few minor cleanups not related the actual make process.
     ; Thanks Marek for the great work.
2006-07-05 18:31:07 +00:00

575 lines
17 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
# CLIBFLAGS - Extra C compiler options for the libraries
# C_USR - Extra C compiler options for libraries and for
# executables (GNU make compatible envvar)
# HARBOURFLAGS - Extra Harbour compiler options
# HB_GT_LIB - To override the default GT driver
# (search for HB_GT_LIBS for a list of values)
# PRG_USR - Extra Harbour compiler options
# (GNU make compatible envvar)
# HB_BUILD_DEBUG - If set to yes causes to compile with debug info
# HB_BUILD_VERBOSE - enables echoing commands being executed
# BCCDLL_WITH_DYNRT - If set to -tWR causes taht harbour-bc.dll
# will use dynamic runtime library (recommended)
#
# HB_DOC_PDF - Turns on the .PDF file support in the HBDOC utility.
# Note that this will require the pdflib contrib.
#
# NOTE: BCC_NOSTARTUP must be defined for Borland C++ 5.3 to make it work.
#
# ---------------------------------------------------------------
# "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
CFLAGS = -I$(INCLUDE_DIR) $(C_USR) $(CFLAGS)
!ifndef BCC_NOOPTIM
CFLAGS = -O2 $(CFLAGS)
!endif
CLIBFLAGS = -c -q $(CFLAGS) $(CLIBFLAGS)
!ifdef HB_BUILD_DEBUG
CLIBFLAGS = -y -v $(CLIBFLAGS)
!endif
CLIBFLAGSDLL = -D__EXPORT__ -DHB_FM_STATISTICS_OFF -tWM $(BCCDLL_WITH_DYNRT) $(CLIBFLAGS)
HARBOURFLAGS = -i$(INCLUDE_DIR) -n -q0 -w -es2 -gc0 $(PRG_USR) $(HARBOURFLAGS)
LDFLAGS = $(LDFLAGS)
!ifdef HB_BUILD_DEBUG
LDFLAGS = -v $(LDFLAGS)
!endif
LDFLAGSDLL = -aa -Gn -C -Tpd -Gi $(LDFLAGSDLL)
!ifdef HB_DOC_PDF
HARBOURFLAGS = $(HARBOURFLAGS) -dPDF
!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:
$(HIDE)$(CC) $(CLIBFLAGS) -o$@ $<
#**********************************************************
# General *.prg --> *.obj COMPILE rule for STATIC Libraries
{$(ALL_SRC_DIRS)}.prg{$(OBJ_DIR)}.obj:
$(HIDE)$(HARBOUR_EXE) $(HARBOURFLAGS) $** -o$(OBJ_DIR)\\
$(HIDE)$(CC) $(CLIBFLAGS) -o$@ $(OBJ_DIR)\$&.c
#**********************************************************
# General *.c --> *.obj COMPILE rule for SHARED Libraries
{$(ALL_SRC_DIRS)}.c{$(DLL_OBJ_DIR)}.obj:
$(HIDE)$(CC) $(CLIBFLAGSDLL) -o$@ $<
#**********************************************************
# General *.prg --> *.obj COMPILE rule for SHARED Libraries
{$(ALL_SRC_DIRS)}.prg{$(DLL_OBJ_DIR)}.obj:
$(HIDE)$(HARBOUR_EXE) -D__EXPORT__ $(HARBOURFLAGS) $** -o$(DLL_OBJ_DIR)\\
$(HIDE)$(CC) $(CLIBFLAGSDLL) -o$@ $(DLL_OBJ_DIR)\$&.c
#**********************************************************
#**********************************************************
#**********************************************************
# General BUILD rules (not used !)
#**********************************************************
# General Library BUILD rule
.obj.lib:
$(HIDE)IF EXIST "$@" $(DEL) "$@" > NUL
$(HIDE)$(MKLIB) "$@" $(ARFLAGS) @&&!
+$(**: = &^
+)
!
#**********************************************************
#**********************************************************
#**********************************************************
# TARGET dependencies
#**********************************************************
all : $(HB_BUILD_TARGETS)
#
# Helper targets
#
BasicLibs : $(COMMON_LIB) $(PP_LIB)
BasicExes : $(HARBOUR_EXE)
StdLibs : $(STANDARD_STATIC_HBLIBS)
#**********************************************************
clean:
-@if exist $(BIN_DIR)\*.exe $(DEL) $(BIN_DIR)\*.exe > nul
-@if exist $(BIN_DIR)\*.tds $(DEL) $(BIN_DIR)\*.tds > 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 $(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 make_b32.log $(DEL) make_b32.log
#**********************************************************
#
# LIBRARY Targets BUILD rules
#
#**********************************************************
$(COMMON_LIB) : $(COMMON_LIB_OBJS)
$(HIDE)IF EXIST "$(COMMON_LIB)" $(DEL) "$(COMMON_LIB)" > NUL
$(HIDE)$(MKLIB) "$(COMMON_LIB)" $(ARFLAGS) @&&!
+$(**: = &^
+)
!
#**********************************************************
$(PP_LIB) : $(PP_LIB_OBJS)
$(HIDE)IF EXIST "$(PP_LIB)" $(DEL) "$(PP_LIB)" > NUL
$(HIDE)$(MKLIB) "$(PP_LIB)" $(ARFLAGS) @&&!
+$(**: = &^
+)
!
#**********************************************************
$(VM_LIB) :: BasicExes
$(VM_LIB) :: $(VM_LIB_OBJS)
$(HIDE)IF EXIST "$(VM_LIB)" $(DEL) "$(VM_LIB)" > NUL
$(HIDE)$(MKLIB) "$(VM_LIB)" $(ARFLAGS) @&&!
+$(**: = &^
+)
!
#**********************************************************
$(RTL_LIB) :: BasicExes
$(RTL_LIB) :: $(RTL_LIB_OBJS)
$(HIDE)IF EXIST "$(RTL_LIB)" $(DEL) "$(RTL_LIB)" > NUL
$(HIDE)$(MKLIB) "$(RTL_LIB)" $(ARFLAGS) @&&!
+$(**: = &^
+)
!
#**********************************************************
$(MACRO_LIB) : $(MACRO_LIB_OBJS)
$(HIDE)IF EXIST "$(MACRO_LIB)" $(DEL) "$(MACRO_LIB)" > NUL
$(HIDE)$(MKLIB) "$(MACRO_LIB)" $(ARFLAGS) @&&!
+$(**: = &^
+)
!
#**********************************************************
$(DEBUG_LIB) :: BasicExes
$(DEBUG_LIB) :: $(DEBUG_LIB_OBJS)
$(HIDE)IF EXIST "$(DEBUG_LIB)" $(DEL) "$(DEBUG_LIB)" > NUL
$(HIDE)$(MKLIB) "$(DEBUG_LIB)" $(ARFLAGS) @&&!
+$(**: = &^
+)
!
#**********************************************************
$(LANG_LIB) : $(LANG_LIB_OBJS)
$(HIDE)IF EXIST "$(LANG_LIB)" $(DEL) "$(LANG_LIB)" > NUL
$(HIDE)$(MKLIB) "$(LANG_LIB)" $(ARFLAGS) @&&!
+$(**: = &^
+)
!
#**********************************************************
$(CODEPAGE_LIB) : $(CODEPAGE_LIB_OBJS)
$(HIDE)IF EXIST "$(CODEPAGE_LIB)" $(DEL) "$(CODEPAGE_LIB)" > NUL
$(HIDE)$(MKLIB) "$(CODEPAGE_LIB)" $(ARFLAGS) @&&!
+$(**: = &^
+)
!
#**********************************************************
$(RDD_LIB) :: BasicExes
$(RDD_LIB) :: $(RDD_LIB_OBJS)
$(HIDE)IF EXIST "$(RDD_LIB)" $(DEL) "$(RDD_LIB)" > NUL
$(HIDE)$(MKLIB) "$(RDD_LIB)" $(ARFLAGS) @&&!
+$(**: = &^
+)
!
#**********************************************************
$(NULSYS_LIB) : $(NULSYS_LIB_OBJS)
$(HIDE)IF EXIST "$(NULSYS_LIB)" $(DEL) "$(NULSYS_LIB)" > NUL
$(HIDE)$(MKLIB) "$(NULSYS_LIB)" $(ARFLAGS) @&&!
+$(**: = &^
+)
!
#**********************************************************
$(DBFNTX_LIB) :: BasicExes
$(DBFNTX_LIB) :: $(DBFNTX_LIB_OBJS)
$(HIDE)IF EXIST "$(DBFNTX_LIB)" $(DEL) "$(DBFNTX_LIB)" > NUL
$(HIDE)$(MKLIB) "$(DBFNTX_LIB)" $(ARFLAGS) @&&!
+$(**: = &^
+)
!
#**********************************************************
$(DBFCDX_LIB) : $(DBFCDX_LIB_OBJS)
$(HIDE)IF EXIST "$(DBFCDX_LIB)" $(DEL) "$(DBFCDX_LIB)" > NUL
$(HIDE)$(MKLIB) "$(DBFCDX_LIB)" $(ARFLAGS) @&&!
+$(**: = &^
+)
!
#**********************************************************
$(DBFFPT_LIB) : $(DBFFPT_LIB_OBJS)
$(HIDE)IF EXIST "$(DBFFPT_LIB)" $(DEL) "$(DBFFPT_LIB)" > NUL
$(HIDE)$(MKLIB) "$(DBFFPT_LIB)" $(ARFLAGS) @&&!
+$(**: = &^
+)
!
#**********************************************************
$(HBSIX_LIB) : $(HBSIX_LIB_OBJS)
$(HIDE)IF EXIST "$(HBSIX_LIB)" $(DEL) "$(HBSIX_LIB)" > NUL
$(HIDE)$(MKLIB) "$(HBSIX_LIB)" $(ARFLAGS) @&&!
+$(**: = &^
+)
!
#**********************************************************
$(HSX_LIB) : $(HSX_LIB_OBJS)
$(HIDE)IF EXIST "$(HSX_LIB)" $(DEL) "$(HSX_LIB)" > NUL
$(HIDE)$(MKLIB) "$(HSX_LIB)" $(ARFLAGS) @&&!
+$(**: = &^
+)
!
#**********************************************************
$(USRRDD_LIB) : $(USRRDD_LIB_OBJS)
$(HIDE)IF EXIST "$(USRRDD_LIB)" $(DEL) "$(USRRDD_LIB)" > NUL
$(HIDE)$(MKLIB) "$(USRRDD_LIB)" $(ARFLAGS) @&&!
+$(**: = &^
+)
!
#**********************************************************
$(GTCGI_LIB) : $(GTCGI_LIB_OBJS)
$(HIDE)IF EXIST "$(GTCGI_LIB)" $(DEL) "$(GTCGI_LIB)" > NUL
$(HIDE)$(MKLIB) "$(GTCGI_LIB)" $(ARFLAGS) @&&!
+$(**: = &^
+)
!
#**********************************************************
$(GTDOS_LIB) : $(GTDOS_LIB_OBJS)
$(HIDE)IF EXIST "$(GTDOS_LIB)" $(DEL) "$(GTDOS_LIB)" > NUL
$(HIDE)$(MKLIB) "$(GTDOS_LIB)" $(ARFLAGS) @&&!
+$(**: = &^
+)
!
#**********************************************************
$(GTPCA_LIB) : $(GTPCA_LIB_OBJS)
$(HIDE)IF EXIST "$(GTPCA_LIB)" $(DEL) "$(GTPCA_LIB)" > NUL
$(HIDE)$(MKLIB) "$(GTPCA_LIB)" $(ARFLAGS) @&&!
+$(**: = &^
+)
!
#**********************************************************
$(GTSTD_LIB) : $(GTSTD_LIB_OBJS)
$(HIDE)IF EXIST "$(GTSTD_LIB)" $(DEL) "$(GTSTD_LIB)" > NUL
$(HIDE)$(MKLIB) "$(GTSTD_LIB)" $(ARFLAGS) @&&!
+$(**: = &^
+)
!
#**********************************************************
$(GTWIN_LIB) : $(GTWIN_LIB_OBJS)
$(HIDE)IF EXIST "$(GTWIN_LIB)" $(DEL) "$(GTWIN_LIB)" > NUL
$(HIDE)$(MKLIB) "$(GTWIN_LIB)" $(ARFLAGS) @&&!
+$(**: = &^
+)
!
#**********************************************************
$(GTWVT_LIB) : $(GTWVT_LIB_OBJS)
$(HIDE)IF EXIST "$(GTWVT_LIB)" $(DEL) "$(GTWVT_LIB)" > NUL
$(HIDE)$(MKLIB) "$(GTWVT_LIB)" $(ARFLAGS) @&&!
+$(**: = &^
+)
!
#**********************************************************
$(GTGUI_LIB) : $(GTGUI_LIB_OBJS)
$(HIDE)IF EXIST "$(GTGUI_LIB)" $(DEL) "$(GTGUI_LIB)" > NUL
$(HIDE)$(MKLIB) "$(GTGUI_LIB)" $(ARFLAGS) @&&!
+$(**: = &^
+)
!
#**********************************************************
#
# EXECUTABLE Targets
#
#**********************************************************
#
# HARBOUR build rule
#
$(HARBOUR_EXE) :: BasicLibs
$(HARBOUR_EXE) :: $(HARBOUR_EXE_OBJS)
$(HIDE)IF EXIST "$(HARBOUR_EXE)" $(DEL) "$(HARBOUR_EXE)" > NUL
$(HIDE)$(CC) @&&!
$(CFLAGS)
-e$(HARBOUR_EXE)
$(**: = ^
)
$(COMMON_LIB)
$(PP_LIB)
!
#**********************************************************
#
# HBPP build rule
#
$(HBPP_EXE) :: BasicLibs
$(HBPP_EXE) :: $(HBPP_EXE_OBJS)
$(HIDE)IF EXIST "$(HBPP_EXE)" $(DEL) "$(HBPP_EXE)" > NUL
$(HIDE)$(CC) @&&!
$(CFLAGS)
-e$(HBPP_EXE)
$(**: = ^
)
$(COMMON_LIB)
$(PP_LIB)
!
#**********************************************************
#
# HBRUN build rule
#
$(HBRUN_EXE) :: BasicLibs BasicExes StdLibs
$(HBRUN_EXE) :: $(HBRUN_EXE_OBJS)
$(HIDE)IF EXIST "$(HBRUN_EXE)" $(DEL) "$(HBRUN_EXE)" > NUL
$(HIDE)$(CC) @&&!
$(CFLAGS)
-e$(HBRUN_EXE)
$(**: = ^
)
$(STANDARD_STATIC_HBLIBS)
!
#**********************************************************
#
# HBTEST build rule
#
$(HBTEST_EXE) :: BasicLibs BasicExes StdLibs
$(HBTEST_EXE) :: $(HBTEST_EXE_OBJS)
$(HIDE)IF EXIST "$(HBTEST_EXE)" $(DEL) "$(HBTEST_EXE)" > NUL
$(HIDE)$(CC) @&&!
$(CFLAGS)
-e$(HBTEST_EXE)
$(**: = ^
)
$(STANDARD_STATIC_HBLIBS)
!
#**********************************************************
#
# HBDOC build rule
#
$(HBDOC_EXE) :: BasicLibs BasicExes StdLibs
$(HBDOC_EXE) :: $(HBDOC_EXE_OBJS)
$(HIDE)IF EXIST "$(HBDOC_EXE)" $(DEL) "$(HBDOC_EXE)" > NUL
$(HIDE)$(CC) @&&!
$(CFLAGS)
-e$(HBDOC_EXE)
$(**: = ^
)
$(STANDARD_STATIC_HBLIBS)
!
#**********************************************************
#
# HBMAKE build rule
#
$(HBMAKE_EXE) :: BasicLibs BasicExes StdLibs
$(HBMAKE_EXE) :: $(HBMAKE_EXE_OBJS)
$(HIDE)IF EXIST "$(HBMAKE_EXE)" $(DEL) "$(HBMAKE_EXE)" > NUL
$(HIDE)$(CC) @&&!
$(CFLAGS)
-e$(HBMAKE_EXE)
$(**: = ^
)
$(STANDARD_STATIC_HBLIBS)
!
#**********************************************************
#
# HBVER build rule
#
$(HBVER_EXE) :: BasicLibs BasicExes StdLibs
$(HBVER_EXE) :: $(HBVER_EXE_OBJS)
$(HIDE)IF EXIST "$(HBVER_EXE)" $(DEL) "$(HBVER_EXE)" > NUL
$(HIDE)$(CC) @&&!
$(CFLAGS)
-e$(HBVER_EXE)
$(**: = ^
)
$(STANDARD_STATIC_HBLIBS)
!
#**********************************************************
#
# DLL Targets
#
#**********************************************************
$(HARBOUR_DLL) :: BasicLibs BasicExes
$(HARBOUR_DLL) :: $(DLL_OBJS)
$(HIDE)$(LINKER) $(LDFLAGSDLL) @&&!
$** c0d32.obj, $@,, cw32.lib import32.lib
!
#**********************************************************
#**********************************************************
#**********************************************************
# EXTRA Object's DEPENDENCIES
#**********************************************************
$(OBJ_DIR)\macroy.c : $(MACRO_DIR)\macro.y
$(HIDE)bison --no-line -p hb_comp -d $** -o$@
$(OBJ_DIR)\macrol.c : $(MACRO_DIR)\macro.l
$(HIDE)flex -Phb_comp -i -8 -o$@ $**
$(OBJ_DIR)\macroy.obj : $(OBJ_DIR)\macroy.c
$(OBJ_DIR)\macrol.obj : $(OBJ_DIR)\macrol.c
$(HIDE)$(ECHO) > $(OBJ_DIR)\unistd.h
$(HIDE)$(CC) $(CLIBFLAGS) -I$(OBJ_DIR) -o$@ $**
$(HIDE)$(DEL) $(OBJ_DIR)\unistd.h
#**********************************************************
$(OBJ_DIR)\harboury.c : $(HARBOUR_DIR)\harbour.y
$(HIDE)bison --no-line -d $** -o$@
$(OBJ_DIR)\harbourl.c : $(HARBOUR_DIR)\harbour.l
$(HIDE)flex -i -8 -o$@ $**
$(OBJ_DIR)\harboury.obj : $(OBJ_DIR)\harboury.c
$(OBJ_DIR)\harbourl.obj : $(OBJ_DIR)\harbourl.c
$(HIDE)$(ECHO) > $(OBJ_DIR)\unistd.h
$(HIDE)$(CC) $(CLIBFLAGS) -I$(OBJ_DIR) -o$@ $**
$(HIDE)$(DEL) $(OBJ_DIR)\unistd.h
#**********************************************************
$(DLL_OBJ_DIR)\macroy.c : $(MACRO_DIR)\macro.y
$(HIDE)bison --no-line -p hb_comp -d $** -o$@
$(DLL_OBJ_DIR)\macrol.c : $(MACRO_DIR)\macro.l
$(HIDE)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
$(HIDE)$(ECHO) > $(DLL_OBJ_DIR)\unistd.h
$(HIDE)$(CC) $(CLIBFLAGS) -I$(DLL_OBJ_DIR) -o$@ $**
$(HIDE)$(DEL) $(DLL_OBJ_DIR)\unistd.h
#**********************************************************
$(DLL_OBJ_DIR)\harboury.c : $(HARBOUR_DIR)\harbour.y
$(HIDE)bison --no-line -d $** -o$@
$(DLL_OBJ_DIR)\harbourl.c : $(HARBOUR_DIR)\harbour.l
$(HIDE)flex -i -8 -o$@ $**
$(DLL_OBJ_DIR)\harboury.obj : $(DLL_OBJ_DIR)\harboury.c
$(DLL_OBJ_DIR)\harbourl.obj : $(DLL_OBJ_DIR)\harbourl.c
$(HIDE)$(ECHO) > $(DLL_OBJ_DIR)\unistd.h
$(HIDE)$(CC) $(CLIBFLAGS) -I$(DLL_OBJ_DIR) -o$@ $**
$(HIDE)$(DEL) $(DLL_OBJ_DIR)\unistd.h
#**********************************************************