* harbour/common.mak
* harbour/source/rtl/Makefile
- harbour/source/rtl/hbi18n.c
+ harbour/source/rtl/hbi18n1.c
* renamed hbi18n.c to hbi18n1.c to avoid conflicts with hbi18n
program - non GNU make files needs unique file names
! fixed bug in internal function __I18N_HASHTABLE()
* harbour/common.mak
* harbour/source/rtl/Makefile
+ harbour/source/rtl/hbi18n2.prg
+ added new I18N functions to manage .pot files and generate .hbl ones.
public functions:
HB_I18N_loadPot( <cFile>, [<pI18N>] [, @<cErrorMsg>] ) -> <pI18N> | NIL
Reads .pot file and returns Harbour translation set or NIL when
error appears. In such case <cErrorMsg> is contains error message
string. If second parameter [<pI18N>] is given then translation
items read from .pot file are added to this set. Otherwise new
Harbour translation set is created.
HB_I18N_savePot( <cFile>, <pI18N> [, @<cErrorMsg>] ) -> <lSuccess>
Generates .pot file from Harbour translation set. Please note
that Harbour translation set does not contain additional
information which exists in original .pot files like source
code numbers or alternative plural forms.
internal functions for Harbour developers which will work on I18N
tools:
__I18N_potArrayLoad( <cFile> [, @<cErrorMsg>] ) -> <aTrans> | NIL
Reads .pot file and returns array with translation items or
NIL when error appears. In such case <cErrorMsg> is contains
error message string.
<aTrans> is an array with translation items containing additional
informations from .pot file which are not necessary in final
translation sets used at runtime. It's designed for I18N tools
written in Harbour to manage .pot files and/or create .hbl ones.
__I18N_potArraySave( <cFile>, <aTrans> [, @<cErrorMsg>] ) -> <lSuccess>
Generates .pot file from array with translations items.
__I18N_potArrayJoin( <aTrans>, <aTrans2> ) -> <aTrans>
Join two arrays with translation items. Items from <aTrans2>
are added to <aTrans>. If given translation item already exists
in <aTrans> (the same msgctxt and msgid) then source code references
are merged and translations from <aTrans2> are added only if
<aTrans> does not have it.
__I18N_potArrayToHash( <aTrans>, [<lEmpty>] [, <hI18N>] ) -> <hI18N>
Converts array with translation items to hash table in the format
used internally by Harbour translation sets. It's the same format
as used __I18N_hashTable() function. The conversion removes data
which is not necessary for runtime translations like source code
references or alternative source plural forms.
If second parameter <hI18N> is given then translation items form
<aTrans> are added to it. Otherwise new hash table with is created.
If <lEmpty> is .T. then also items with empty translation are added
but source strings are used instead of missing destination ones.
* harbour/include/hbextern.ch
+ added new I18N functions
* harbour/harbour-win-spec
* harbour/harbour-wce-spec
* harbour/harbour.spec
* harbour/mpkg_tgz.sh
* harbour/make_b32.mak
* harbour/make_vc.mak
* harbour/make_gcc.mak
* harbour/common.mak
* harbour/utils/Makefile
+ harbour/utils/hbi18n
+ harbour/utils/hbi18n/hbi18n.prg
+ harbour/utils/hbi18n/Makefile
+ added very simple application to manage .pot/.hbl files
Syntax: hbi18n -m | -g [-o<outfile>] [-e] [-q] <files1[.pot] ...>
-m merge given .pot files
-g generate .hbl file from given .pot files
-o<outfile> output file name
default is first .pot file name with
.po_ (merge) or .hbl extension
-e do not strip empty translation rules from .hbl files
-q quiet mode
TODO: extend it and add support for interactive mode which will
allow to edit translations.
725 lines
26 KiB
Makefile
725 lines
26 KiB
Makefile
#
|
|
# $Id$
|
|
#
|
|
|
|
#**********************************************************
|
|
# Makefile for Harbour Project for Borland C/C++ 5.x compilers
|
|
#**********************************************************
|
|
|
|
# ---------------------------------------------------------------
|
|
# Copyright 2007 Marek Paliwoda (mpaliwoda "at" interia "dot" pl)
|
|
# See doc/license.txt for licensing terms.
|
|
# ---------------------------------------------------------------
|
|
|
|
# ---------------------------------------------------------------
|
|
# 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)
|
|
#
|
|
# C_USR - Extra C compiler options for libraries and for executables
|
|
# L_USR - Extra linker options for libraries
|
|
# PRG_USR - Extra Harbour compiler options
|
|
#
|
|
# 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 - Controls echoing commands being executed
|
|
# HB_BUILD_OPTIM - Setting it to 'no' disables compiler optimizations
|
|
# HB_REBUILD_PARSER - If set to yes force preprocessing new rules by
|
|
# Bison (you must use Bison 2.3 or later)
|
|
# HB_INSTALL_PREFIX - Path to installation directory into which
|
|
# Harbour will be installed when using 'install'
|
|
# mode. Defaults to current directory
|
|
#
|
|
# HB_BCCDLL_DYNRT - If set to -tWR causes that harbour-bc.dll
|
|
# will use dynamic runtime library (recommended)
|
|
|
|
#**********************************************************
|
|
|
|
#.KEEP
|
|
.AUTODEPEND
|
|
.SUFFIXES:
|
|
|
|
#**********************************************************
|
|
|
|
HB_ARCHITECTURE = w32
|
|
|
|
#**********************************************************
|
|
|
|
CC = bcc32.exe
|
|
LINKER = ilink32.exe
|
|
MKLIB = tlib.exe
|
|
|
|
#**********************************************************
|
|
|
|
# Include Common Object list files
|
|
# shared between MSVC and Borland
|
|
|
|
!include common.mak
|
|
|
|
#**********************************************************
|
|
|
|
.SUFFIXES: $(EXEEXT) $(LIBEXT) $(OBJEXT) .prg .c .l .y
|
|
|
|
#**********************************************************
|
|
|
|
# Some definitions cannot be kept in common.mak
|
|
# due to serious limitations of Microsoft Nmake
|
|
|
|
VMMTDLL_LIB_OBJS = $(VM_DLL_OBJS:$(OBJ_DIR)=$(MTDLL_OBJ_DIR))
|
|
VMMT_LIB_OBJS = $(VM_LIB_OBJS:$(OBJ_DIR)=$(MT_OBJ_DIR))
|
|
|
|
DLL_OBJS = $(TMP_DLL_OBJS:$(OBJ_DIR)=$(DLL_OBJ_DIR)) $(VM_DLL_OBJS:$(OBJ_DIR)=$(DLL_OBJ_DIR))
|
|
MTDLL_OBJS = $(TMP_DLL_OBJS:$(OBJ_DIR)=$(DLL_OBJ_DIR)) $(VMMTDLL_LIB_OBJS)
|
|
|
|
#**********************************************************
|
|
# C compiler, Harbour compiler and Linker flags.
|
|
#**********************************************************
|
|
|
|
# C Compiler Flags
|
|
CFLAGS = -I$(INCLUDE_DIR) -I$(OBJ_DIR) $(C_USR)
|
|
CFLAGSMT = -DHB_MT_VM
|
|
|
|
#-----------
|
|
!if "$(HB_BUILD_OPTIM)" != "no"
|
|
CFLAGS = -4 -O2 -OS -Ov -Oi -Oc $(CFLAGS)
|
|
!endif
|
|
#-----------
|
|
!if "$(HB_BUILD_DEBUG)" == "yes"
|
|
CFLAGS = -y -v -DHB_TR_LEVEL_DEBUG $(CFLAGS)
|
|
!endif
|
|
#-----------
|
|
!if "$(HB_BCCDLL_DYNRT)" == "-tWR"
|
|
RTLIBSUFFIX = i
|
|
!endif
|
|
#-----------
|
|
|
|
#**********************************************************
|
|
|
|
CLIBFLAGS = -c -q -d -Q -w -w-sig- -tWM $(CFLAGS)
|
|
CLIBFLAGSDLL = $(HB_BCCDLL_DYNRT) $(CLIBFLAGS) -DHB_DYNLIB
|
|
CEXEFLAGSDLL = $(HB_BCCDLL_DYNRT) $(CLIBFLAGS)
|
|
|
|
#**********************************************************
|
|
|
|
# Linker Flags
|
|
LDFLAGS = -Gn -C -ap -Tpe -L$(LIB_DIR) -L$(BIN_DIR) $(L_USR)
|
|
LDFLAGSDLL = -Gn -C -aa -Tpd -Gi -L$(LIB_DIR) $(L_USR)
|
|
!if "$(HB_BUILD_DEBUG)" == "yes"
|
|
LDFLAGS = -v $(LDFLAGS)
|
|
LDFLAGSDLL = -v $(LDFLAGSDLL)
|
|
!endif
|
|
|
|
#**********************************************************
|
|
|
|
STANDARD_STATIC_CLIBS = cw32mt$(RTLIBSUFFIX).lib
|
|
|
|
# This is needed, otherwise the libs may overflow
|
|
# when debug info is requested with -v -y
|
|
ARFLAGS = /P64 $(A_USR)
|
|
|
|
#**********************************************************
|
|
#**********************************************************
|
|
#**********************************************************
|
|
|
|
#**********************************************************
|
|
# COMPILE Rules
|
|
#**********************************************************
|
|
|
|
#**********************************************************
|
|
# General *.c --> *.obj COMPILE rule for STATIC Libraries
|
|
{$(ALL_SRC_DIRS)}.c{$(OBJ_DIR)}$(OBJEXT):
|
|
$(CC) $(CLIBFLAGS) -o$@ $<
|
|
#**********************************************************
|
|
# General *.prg --> *.obj COMPILE rule for STATIC Libraries
|
|
{$(ALL_SRC_DIRS)}.prg{$(OBJ_DIR)}$(OBJEXT):
|
|
$(HB) $(HARBOURFLAGSLIB) -o$(OBJ_DIR)\ $**
|
|
$(CC) $(CLIBFLAGS) -o$@ $(OBJ_DIR)\$&.c
|
|
#**********************************************************
|
|
# General *.prg --> *.obj COMPILE rule for STATIC exe
|
|
{$(ALL_EXE_SRC_DIRS)}.prg{$(OBJ_DIR)}$(OBJEXT):
|
|
$(HB) $(HARBOURFLAGSEXE) -o$(OBJ_DIR)\ $**
|
|
$(CC) $(CLIBFLAGS) -o$@ $(OBJ_DIR)\$&.c
|
|
#**********************************************************
|
|
|
|
#**********************************************************
|
|
# General *.c --> *.obj COMPILE rule for STATIC MT Libraries
|
|
{$(ALL_SRC_DIRS)}.c{$(MT_OBJ_DIR)}$(OBJEXT):
|
|
$(CC) $(CLIBFLAGS) $(CFLAGSMT) -o$@ $<
|
|
#**********************************************************
|
|
# General *.prg --> *.obj COMPILE rule for STATIC MT Libraries
|
|
{$(ALL_SRC_DIRS)}.prg{$(MT_OBJ_DIR)}$(OBJEXT):
|
|
$(HB) $(HARBOURFLAGSLIB) -o$(MT_OBJ_DIR)\ $**
|
|
$(CC) $(CLIBFLAGS) $(CFLAGSMT) -o$@ $(MT_OBJ_DIR)\$&.c
|
|
#**********************************************************
|
|
|
|
#**********************************************************
|
|
# General *.c --> *.obj COMPILE rule for SHARED MT Libraries
|
|
{$(ALL_SRC_DIRS)}.c{$(MTDLL_OBJ_DIR)}$(OBJEXT):
|
|
$(CC) $(CLIBFLAGSDLL) $(CFLAGSMT) -o$@ $<
|
|
#**********************************************************
|
|
# General *.prg --> *.obj COMPILE rule for SHARED MT Libraries
|
|
{$(ALL_SRC_DIRS)}.prg{$(MTDLL_OBJ_DIR)}$(OBJEXT):
|
|
$(HB) $(HARBOURFLAGSLIB) -o$(MTDLL_OBJ_DIR)\ $**
|
|
$(CC) $(CLIBFLAGSDLL) $(CFLAGSMT) -o$@ $(MTDLL_OBJ_DIR)\$&.c
|
|
#**********************************************************
|
|
|
|
#**********************************************************
|
|
# General *.c --> *.obj COMPILE rule for SHARED Libraries
|
|
{$(ALL_LIB_SRC_DIRS)}.c{$(DLL_OBJ_DIR)}$(OBJEXT):
|
|
$(CC) $(CLIBFLAGSDLL) -o$@ $<
|
|
#**********************************************************
|
|
# General *.prg --> *.obj COMPILE rule for SHARED Libraries
|
|
{$(ALL_LIB_SRC_DIRS)}.prg{$(DLL_OBJ_DIR)}$(OBJEXT):
|
|
$(HB) $(HARBOURFLAGSLIB) -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)}$(OBJEXT):
|
|
$(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)}$(OBJEXT):
|
|
$(HB) $(HARBOURFLAGSEXE) -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) $(COMPILER_LIB)
|
|
BasicExes : $(HARBOUR_EXE)
|
|
StdLibs : $(STANDARD_STATIC_HBLIBS)
|
|
|
|
#**********************************************************
|
|
|
|
$(HB_DEST_DIRS) $(HB_BIN_INSTALL) $(HB_LIB_INSTALL) $(HB_INC_INSTALL):
|
|
@if not exist $@\nul mkdir $@
|
|
|
|
#**********************************************************
|
|
# LIBRARY Targets BUILD rules
|
|
#**********************************************************
|
|
$(HBMAINSTD_LIB): $(HBMAINSTD_LIB_OBJS)
|
|
@if exist "$(HBMAINSTD_LIB)" $(DEL) "$(HBMAINSTD_LIB)" > NUL
|
|
$(MKLIB) "$(HBMAINSTD_LIB)" $(ARFLAGS) @&&!
|
|
+$(**: = &^
|
|
+)
|
|
!
|
|
#**********************************************************
|
|
$(HBMAINWIN_LIB): $(HBMAINWIN_LIB_OBJS)
|
|
@if exist "$(HBMAINWIN_LIB)" $(DEL) "$(HBMAINWIN_LIB)" > NUL
|
|
$(MKLIB) "$(HBMAINWIN_LIB)" $(ARFLAGS) @&&!
|
|
+$(**: = &^
|
|
+)
|
|
!
|
|
#**********************************************************
|
|
$(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) @&&!
|
|
+$(**: = &^
|
|
+)
|
|
!
|
|
#**********************************************************
|
|
$(COMPILER_LIB) : $(COMPILER_LIB_OBJS)
|
|
@if exist "$(COMPILER_LIB)" $(DEL) "$(COMPILER_LIB)" > NUL
|
|
$(MKLIB) "$(COMPILER_LIB)" $(ARFLAGS) @&&!
|
|
+$(**: = &^
|
|
+)
|
|
!
|
|
#**********************************************************
|
|
$(VM_LIB) :: BasicExes
|
|
$(VM_LIB) :: $(VM_LIB_OBJS)
|
|
@if exist "$(VM_LIB)" $(DEL) "$(VM_LIB)" > NUL
|
|
$(MKLIB) "$(VM_LIB)" $(ARFLAGS) @&&!
|
|
+$(**: = &^
|
|
+)
|
|
!
|
|
#**********************************************************
|
|
$(VMMT_LIB) :: BasicExes
|
|
$(VMMT_LIB) :: $(VMMT_LIB_OBJS)
|
|
@if exist "$(VMMT_LIB)" $(DEL) "$(VMMT_LIB)" > NUL
|
|
$(MKLIB) "$(VMMT_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) @&&!
|
|
+$(**: = &^
|
|
+)
|
|
!
|
|
#**********************************************************
|
|
$(PCRE_LIB) : $(PCRE_LIB_OBJS)
|
|
@if exist "$(PCRE_LIB)" $(DEL) "$(PCRE_LIB)" > NUL
|
|
$(MKLIB) "$(PCRE_LIB)" $(ARFLAGS) @&&!
|
|
+$(**: = &^
|
|
+)
|
|
!
|
|
#**********************************************************
|
|
$(HBZLIB_LIB) : $(HBZLIB_LIB_OBJS)
|
|
@if exist "$(HBZLIB_LIB)" $(DEL) "$(HBZLIB_LIB)" > NUL
|
|
$(MKLIB) "$(HBZLIB_LIB)" $(ARFLAGS) @&&!
|
|
+$(**: = &^
|
|
+)
|
|
!
|
|
#**********************************************************
|
|
$(HBEXTERN_LIB) : $(HBEXTERN_LIB_OBJS)
|
|
@if exist "$(HBEXTERN_LIB)" $(DEL) "$(HBEXTERN_LIB)" > NUL
|
|
$(MKLIB) "$(HBEXTERN_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) @&&!
|
|
+$(**: = &^
|
|
+)
|
|
!
|
|
#**********************************************************
|
|
$(DBFNSX_LIB) :: BasicExes
|
|
$(DBFNSX_LIB) :: $(DBFNSX_LIB_OBJS)
|
|
@if exist "$(DBFNSX_LIB)" $(DEL) "$(DBFNSX_LIB)" > NUL
|
|
$(MKLIB) "$(DBFNSX_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) @&&!
|
|
+$(**: = &^
|
|
+)
|
|
!
|
|
#**********************************************************
|
|
$(HBUDDALL_LIB) : $(HBUDDALL_LIB_OBJS)
|
|
@if exist "$(HBUDDALL_LIB)" $(DEL) "$(HBUDDALL_LIB)" > NUL
|
|
$(MKLIB) "$(HBUDDALL_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)
|
|
$(**: = ^
|
|
)
|
|
$(COMPILER_LIB)
|
|
$(COMMON_LIB)
|
|
$(PP_LIB)
|
|
!
|
|
#**********************************************************
|
|
# HBPP build rule
|
|
#**********************************************************
|
|
$(HBPP_EXE) :: $(COMMON_LIB)
|
|
$(HBPP_EXE) :: $(HBPP_EXE_OBJS)
|
|
@if exist "$(HBPP_EXE)" $(DEL) "$(HBPP_EXE)" > NUL
|
|
$(CC) @&&!
|
|
$(CFLAGS)
|
|
-e$(HBPP_EXE)
|
|
$(**: = ^
|
|
)
|
|
$(COMMON_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_CLIBS)
|
|
$(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_CLIBS)
|
|
$(STANDARD_STATIC_HBLIBS)
|
|
!
|
|
#**********************************************************
|
|
# HBI18N build rule
|
|
#**********************************************************
|
|
$(HBI18N_EXE) :: BasicLibs BasicExes StdLibs
|
|
$(HBI18N_EXE) :: $(HBI18N_EXE_OBJS)
|
|
@if exist "$(HBI18N_EXE)" $(DEL) "$(HBI18N_EXE)" > NUL
|
|
$(CC) @&&!
|
|
$(CFLAGS)
|
|
-e$(HBI18N_EXE)
|
|
$(**: = ^
|
|
)
|
|
$(STANDARD_STATIC_CLIBS)
|
|
$(MINIMAL_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_CLIBS)
|
|
$(MINIMAL_STATIC_HBLIBS) $(HBDOC_LIBS)
|
|
!
|
|
#**********************************************************
|
|
# 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_CLIBS)
|
|
$(MINIMAL_STATIC_HBLIBS)
|
|
!
|
|
#**********************************************************
|
|
|
|
#**********************************************************
|
|
# DLL Targets
|
|
#**********************************************************
|
|
$(HARBOUR_DLL) :: BasicLibs BasicExes
|
|
$(HARBOUR_DLL) :: $(DLL_OBJS)
|
|
$(LINKER) $(LDFLAGSDLL) @&&!
|
|
c0d32.obj $**, $@,, cw32mt$(RTLIBSUFFIX).lib import32.lib
|
|
!
|
|
#**********************************************************
|
|
$(HARBOURMT_DLL) :: BasicLibs BasicExes
|
|
$(HARBOURMT_DLL) :: $(MTDLL_OBJS)
|
|
$(LINKER) $(LDFLAGSDLL) @&&!
|
|
c0d32.obj $**, $@,, cw32mt$(RTLIBSUFFIX).lib import32.lib
|
|
!
|
|
#**********************************************************
|
|
# DLL EXECUTABLE Targets
|
|
#**********************************************************
|
|
$(HBTESTDLL_EXE) :: BasicLibs BasicExes
|
|
$(HBTESTDLL_EXE) :: $(DLL_OBJ_DIR)\mainstd$(OBJEXT) $(HBTEST_EXE_OBJS:$(OBJ_DIR)=$(DLL_OBJ_DIR))
|
|
$(LINKER) $(LDFLAGS) @&&!
|
|
c0x32.obj $**, $@,,$(HARBOUR_DLL:$(DLLEXT)=$(LIBEXT)) cw32mt$(RTLIBSUFFIX).lib import32.lib $(COMMON_LIB)
|
|
!
|
|
#**********************************************************
|
|
$(HBRUNDLL_EXE) :: BasicLibs BasicExes
|
|
$(HBRUNDLL_EXE) :: $(DLL_OBJ_DIR)\mainstd$(OBJEXT) $(HBRUN_EXE_OBJS:$(OBJ_DIR)=$(DLL_OBJ_DIR))
|
|
$(LINKER) $(LDFLAGS) @&&!
|
|
c0x32.obj $**, $@,,$(HARBOUR_DLL:$(DLLEXT)=$(LIBEXT)) cw32mt$(RTLIBSUFFIX).lib import32.lib $(COMPILER_LIB) $(PP_LIB) $(COMMON_LIB)
|
|
!
|
|
#----------------------------------------------------------
|
|
$(DLL_OBJ_DIR)\mainstd$(OBJEXT) : $(VM_DIR)\mainstd.c
|
|
$(CC) $(CEXEFLAGSDLL) -o$@ $**
|
|
#**********************************************************
|
|
|
|
#**********************************************************
|
|
# EXTRA Object's DEPENDENCIES
|
|
#**********************************************************
|
|
|
|
#**********************************************************
|
|
|
|
# Generated by an intermediate utility hbpp.exe
|
|
# built at the initial phase of build process
|
|
$(OBJ_DIR)\pptable.obj : $(OBJ_DIR)\pptable.c
|
|
$(DLL_OBJ_DIR)\pptable.obj : $(DLL_OBJ_DIR)\pptable.c
|
|
|
|
$(OBJ_DIR)\pptable.c : $(INCLUDE_DIR)\hbstdgen.ch $(INCLUDE_DIR)\std.ch ChangeLog $(PP_DIR)\ppcore.c $(PP_DIR)\hbpp.c
|
|
@if exist "$(OBJ_DIR)\pptable.c" $(DEL) "$(OBJ_DIR)\pptable.c" > nul
|
|
$(HBPP) $(INCLUDE_DIR)/hbstdgen.ch -o$(OBJ_DIR)/pptable.c -q -cChangeLog -v$(INCLUDE_DIR)/hbverbld.h
|
|
|
|
$(DLL_OBJ_DIR)\pptable.c : $(INCLUDE_DIR)\hbstdgen.ch $(INCLUDE_DIR)\std.ch ChangeLog $(PP_DIR)\ppcore.c $(PP_DIR)\hbpp.c
|
|
@if exist "$(DLL_OBJ_DIR)\pptable.c" $(DEL) "$(DLL_OBJ_DIR)\pptable.c" > nul
|
|
$(HBPP) $(INCLUDE_DIR)/hbstdgen.ch -o$(DLL_OBJ_DIR)/pptable.c -q -cChangeLog -v$(INCLUDE_DIR)/hbverbld.h
|
|
|
|
#**********************************************************
|
|
|
|
!if "$(HB_REBUILD_PARSER)" == "yes"
|
|
|
|
$(OBJ_DIR)\harboury.c : $(COMPILER_DIR)\harbour.y
|
|
bison --no-line -d $** -o$@
|
|
|
|
$(OBJ_DIR)\macroy.c : $(MACRO_DIR)\macro.y
|
|
bison --no-line -d $** -o$@
|
|
|
|
$(DLL_OBJ_DIR)\harboury.c : $(COMPILER_DIR)\harbour.y
|
|
bison --no-line -d $** -o$@
|
|
|
|
$(DLL_OBJ_DIR)\macroy.c : $(MACRO_DIR)\macro.y
|
|
bison --no-line -d $** -o$@
|
|
|
|
!else
|
|
|
|
$(OBJ_DIR)\harboury.c : $(COMPILER_DIR)\harbour.yyc
|
|
copy /A $** $@
|
|
copy /A $(**:.yyc=.yyh) $(@:.c=.h)
|
|
|
|
$(OBJ_DIR)\macroy.c : $(MACRO_DIR)\macro.yyc
|
|
copy /A $** $@
|
|
copy /A $(**:.yyc=.yyh) $(@:.c=.h)
|
|
|
|
$(DLL_OBJ_DIR)\harboury.c : $(COMPILER_DIR)\harbour.yyc
|
|
copy /A $** $@
|
|
copy /A $(**:.yyc=.yyh) $(@:.c=.h)
|
|
|
|
$(DLL_OBJ_DIR)\macroy.c : $(MACRO_DIR)\macro.yyc
|
|
copy /A $** $@
|
|
copy /A $(**:.yyc=.yyh) $(@:.c=.h)
|
|
|
|
!endif
|
|
|
|
$(OBJ_DIR)\harboury.obj : $(OBJ_DIR)\harboury.c
|
|
$(OBJ_DIR)\macroy.obj : $(OBJ_DIR)\macroy.c
|
|
|
|
$(DLL_OBJ_DIR)\harboury.obj : $(DLL_OBJ_DIR)\harboury.c
|
|
$(DLL_OBJ_DIR)\macroy.obj : $(DLL_OBJ_DIR)\macroy.c
|
|
|
|
#**********************************************************
|
|
#**********************************************************
|
|
#**********************************************************
|
|
|
|
#**********************************************************
|
|
# CLEAN rules
|
|
#**********************************************************
|
|
|
|
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 $(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 $(MT_OBJ_DIR)\*.obj $(DEL) $(MT_OBJ_DIR)\*.obj > nul
|
|
-if exist $(MT_OBJ_DIR)\*.c $(DEL) $(MT_OBJ_DIR)\*.c > nul
|
|
-if exist $(MT_OBJ_DIR)\*.h $(DEL) $(MT_OBJ_DIR)\*.h > nul
|
|
-if exist $(MTDLL_OBJ_DIR)\*.obj $(DEL) $(MTDLL_OBJ_DIR)\*.obj > nul
|
|
-if exist $(MTDLL_OBJ_DIR)\*.c $(DEL) $(MTDLL_OBJ_DIR)\*.c > nul
|
|
-if exist $(MTDLL_OBJ_DIR)\*.h $(DEL) $(MTDLL_OBJ_DIR)\*.h > nul
|
|
-if exist $(INCLUDE_DIR)\hbverbld.h $(DEL) $(INCLUDE_DIR)\hbverbld.h > nul
|
|
-if exist inst_$(HB_CC_NAME).log $(DEL) inst_$(HB_CC_NAME).log > nul
|
|
-if exist bin\*.exe $(DEL) bin\*.exe > nul
|
|
-if exist bin\*.dll $(DEL) bin\*.dll > nul
|
|
-if exist lib\*.lib $(DEL) lib\*.lib > nul
|
|
|
|
#**********************************************************
|
|
# INSTALL rules
|
|
#**********************************************************
|
|
|
|
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_$(HB_CC_NAME).log
|
|
-if exist $(HB_BIN_INSTALL)\nul if exist $(BIN_DIR)\*.dll copy /B $(BIN_DIR)\*.dll $(HB_BIN_INSTALL) >> inst_$(HB_CC_NAME).log
|
|
-if exist $(HB_LIB_INSTALL)\nul if exist $(BIN_DIR)\*.lib copy /B $(BIN_DIR)\*.lib $(HB_LIB_INSTALL) >> inst_$(HB_CC_NAME).log
|
|
-if exist $(HB_LIB_INSTALL)\nul if exist $(LIB_DIR)\*.lib copy /B $(LIB_DIR)\*.lib $(HB_LIB_INSTALL) >> inst_$(HB_CC_NAME).log
|
|
!if "$(HB_INSTALL_PREFIX)" != "."
|
|
-if exist $(HB_BIN_INSTALL)\nul copy /B bin\hbmk.bat $(HB_BIN_INSTALL) >> inst_$(HB_CC_NAME).log
|
|
-if exist $(HB_BIN_INSTALL)\nul copy /B bin\hbmk_b32.bat $(HB_BIN_INSTALL) >> inst_$(HB_CC_NAME).log
|
|
-if exist $(HB_INC_INSTALL)\nul copy /B $(INCLUDE_DIR)\*.api $(HB_INC_INSTALL) >> inst_$(HB_CC_NAME).log
|
|
-if exist $(HB_INC_INSTALL)\nul copy /B $(INCLUDE_DIR)\*.ch $(HB_INC_INSTALL) >> inst_$(HB_CC_NAME).log
|
|
-if exist $(HB_INC_INSTALL)\nul copy /B $(INCLUDE_DIR)\*.h $(HB_INC_INSTALL) >> inst_$(HB_CC_NAME).log
|
|
!endif
|
|
|
|
#**********************************************************
|