diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 5aa80b6aa3..2c0da936c7 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -8,6 +8,32 @@ 2002-12-01 13:30 UTC+0100 Foo Bar */ +2008-02-22 22:28 UTC+0100 Marek Paliwoda (mpaliwoda at interia pl) + * harbour/make_b32.mak + * Synchronized with make_vc.mak regarding HB_BUILD_ST and HB_BUILD_MODE + environment usage. There is still a difference between make_b32.mak + and make_vc.mak, because under BCC - ST mode is default, while under + MSVC - MT mode is default. To use MT mode under BCC one needs to + set HB_BUILD_ST to something different than a word "yes". For example: + set HB_BUILD_ST=no. The difference comes from the fact that so far + BCC build has always been done in ST mode. It will be changed after + a 1.0 release. Please note that harbour.dll is *always* built in MT + mode under BCC and MSVC. + + * harbour/make_vc.mak + ! Forced MT mode for harbour.dll + * Minor formating + + * harbour/contrib/mtpl_vc.mak + ! Fixed compilation using ST mode + + * harbour/contrib/mtpl_b32.mak + ! Fixed compilation of CPP files + + Added ST/MT handling logic + + * harbour/contrib/hbziparch/make_b32.bat + ! Fixed compilation on some BCC instalations + 2008-02-22 03:42 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl) * harbour/bin/hb-func.sh * added -xhgtk switch for linking with xHGtk library @@ -30,7 +56,7 @@ * harbour/contrib/hbct/ctwin.h * harbour/contrib/hbct/ctwfunc.c * overload ReadKey() method for future window moving when scroll lock - is set and for KEYREAD() implementation. + is set and for KEYREAD() implementation. * store real last key value in CTWIN GT. 2008-02-21 22:17 UTC+0100 Marek Paliwoda (mpaliwoda at interia pl) diff --git a/harbour/contrib/hbziparch/make_b32.bat b/harbour/contrib/hbziparch/make_b32.bat index bd12dc99a4..2b2a473d2a 100644 --- a/harbour/contrib/hbziparch/make_b32.bat +++ b/harbour/contrib/hbziparch/make_b32.bat @@ -3,7 +3,7 @@ rem rem $Id$ rem -set CFLAGS=-Iinclude +set CFLAGS=-Iinclude -D_RWSTD_NO_NEW_HEADER call ..\mtpl_b32.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 diff --git a/harbour/contrib/mtpl_b32.mak b/harbour/contrib/mtpl_b32.mak index 9d4c58739d..b2942fd6e4 100644 --- a/harbour/contrib/mtpl_b32.mak +++ b/harbour/contrib/mtpl_b32.mak @@ -23,6 +23,10 @@ #********************************************************** +HB_ARCHITECTURE = w32 + +#********************************************************** + !ifndef HB_ROOT HB_ROOT = ..\.. !endif @@ -99,15 +103,45 @@ MKLIB = tlib.exe #********************************************************** -!if !$d(BCC_NOOPTIM) -CFLAGS = -O2 $(CFLAGS) +# BORLAND has ST mode as default +!if "$(HB_BUILD_ST)" == "" + HB_BUILD_ST = yes !endif -CFLAGS = -I$(INCLUDE_DIR) -d $(C_USR) $(CFLAGS) +#********************************************************** + +# In which mode compile Harbour C or CPP +!if "$(HB_BUILD_MODE)" == "cpp" +HB_BUILD_MODE = -P +!else +HB_BUILD_MODE = +!endif + +#********************************************************** + +CFLAGS = -I$(INCLUDE_DIR) -d $(C_USR) $(CFLAGS) $(HB_BUILD_MODE) + +#----------- +!if "$(HB_BUILD_DEBUG)" == "yes" + CFLAGS = -y -v $(CFLAGS) +!endif +#----------- +!if !$d(BCC_NOOPTIM) + CFLAGS = -O2 $(CFLAGS) +!endif +#----------- +!if "$(HB_BUILD_ST)" != "yes" + CFLAGS = -tWM $(CFLAGS) +!endif +#----------- + +#********************************************************** + CLIBFLAGS = -c -q $(CFLAGS) $(CLIBFLAGS) -CLIBFLAGSDEBUG = -v $(CLIBFLAGS) HARBOURFLAGS = -i$(INCLUDE_DIR) -n -q0 -w2 -es2 -gc0 $(PRG_USR) $(HARBOURFLAGS) -LDFLAGS = $(LDFLAGS) +LDFLAGS = $(LDFLAGS) + +#********************************************************** # This is needed, otherwise the libs may overflow when # debug info is requested with -v -y @@ -128,12 +162,12 @@ $(OBJ_DIR);\ #********************************************************** # General *.cpp --> *.obj COMPILE rule for STATIC Libraries {$(ALL_LIB_SRC_DIRS)}.cpp{$(OBJ_DIR)}$(OBJEXT): - $(CC) $(CLIBFLAGS) -o$@ $< + $(CC) $(CLIBFLAGS: -P= ) -P -o$@ $< #********************************************************** # General *.prg --> *.obj COMPILE rule for STATIC Libraries {$(ALL_LIB_SRC_DIRS)}.prg{$(OBJ_DIR)}$(OBJEXT): $(HARBOUR_EXE) $(HARBOURFLAGS) -o$(OBJ_DIR)\ $** - $(CC) $(CLIBFLAGS) -o$@ $(OBJ_DIR)\$&.c + $(CC) $(CLIBFLAGS) -P -o$@ $(OBJ_DIR)\$&.c #********************************************************** !include common.mak diff --git a/harbour/contrib/mtpl_vc.mak b/harbour/contrib/mtpl_vc.mak index df327c4bf3..413a0c8249 100644 --- a/harbour/contrib/mtpl_vc.mak +++ b/harbour/contrib/mtpl_vc.mak @@ -107,6 +107,8 @@ HB_BUILD_MODE = P HB_BUILD_MODE = C !endif +#********************************************************** + # C Compiler Flags !if $(HB_VISUALC_VER) >= 80 CFLAGS_VER = -Ot2b1 -FD -Gs -D_CRT_SECURE_NO_DEPRECATE @@ -124,10 +126,14 @@ CFLAGS = -Zi $(CFLAGS) DBGMARKER = d !endif #----------- +!if "$(HB_BUILD_ST)" != "yes" CFLAGS = -MT$(DBGMARKER) $(CFLAGS) +!endif +#----------- + +#********************************************************** CLIBFLAGS = -c $(CFLAGS) $(CLIBFLAGS) -CLIBFLAGSDEBUG = -Zi $(CLIBFLAGS) HARBOURFLAGS = -i$(INCLUDE_DIR) -n -q0 -w2 -es2 -gc0 $(PRG_USR) $(HARBOURFLAGS) LDFLAGS = $(LDFLAGS) diff --git a/harbour/make_b32.mak b/harbour/make_b32.mak index ab2d5be74d..7144e76a06 100644 --- a/harbour/make_b32.mak +++ b/harbour/make_b32.mak @@ -37,8 +37,10 @@ # gtstd (default),gtcgi,gtwin,gtwvt # HB_GT_LIB - To override the default GT driver # (search for HB_GT_LIBS for a list of values) +# HB_BUILD_ST - If set to yes builds harbour in SingleThread mode # HB_BUILD_DLL - If set to yes enables building harbour VM+RTL # dll in addition to normal static build +# HB_BUILD_MODE - If set to cpp causes to compile in C++ mode # 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 @@ -68,6 +70,11 @@ HB_ARCHITECTURE = w32 HB_GT_LIB = gtwin !endif +# BORLAND has ST mode as default +!if "$(HB_BUILD_ST)" == "" + HB_BUILD_ST = yes +!endif + #********************************************************** CC = bcc32.exe @@ -99,8 +106,11 @@ DLL_OBJS = $(TMP_DLL_OBJS:$(OBJ_DIR)=$(DLL_OBJ_DIR)) # Main "Include" directory INCLUDE_DIR = include +#********************************************************** + # C Compiler Flags -CFLAGS = -I$(INCLUDE_DIR) $(C_USR) $(CFLAGS) -I$(OBJ_DIR) +CFLAGS = -I$(INCLUDE_DIR) $(C_USR) $(CFLAGS) -I$(OBJ_DIR) + #----------- !ifndef BCC_NOOPTIM CFLAGS = -O2 $(CFLAGS) @@ -115,6 +125,10 @@ CFLAGS = -I$(INCLUDE_DIR) $(C_USR) $(CFLAGS) -I$(OBJ_DIR) RTLIBSUFFIX = i !endif #----------- +!if "$(HB_BUILD_ST)" != "yes" + CFLAGS = -tWM $(CFLAGS) +!endif +#----------- !if "$(HB_GT_DEFAULT)" != "" CFLAGS = -DHB_GT_DEFAULT=$(HB_GT_DEFAULT:gt=) $(CFLAGS) !endif @@ -123,9 +137,15 @@ CFLAGS = -I$(INCLUDE_DIR) $(C_USR) $(CFLAGS) -I$(OBJ_DIR) CFLAGS = -DHB_GT_LIB=$(HB_GT_LIB:gt=) $(CFLAGS) !endif #----------- + +#********************************************************** + CLIBFLAGS = -c -q $(CFLAGS) $(CLIBFLAGS) -CLIBFLAGSDLL = -D__EXPORT__ -tWM $(BCCDLL_WITH_DYNRT) $(CLIBFLAGS) $(CLIBFLAGSDLL) -CEXEFLAGSDLL = -tWM $(BCCDLL_WITH_DYNRT) $(CLIBFLAGS) $(CEXEFLAGSDLL) +CLIBFLAGSxxx = $(BCCDLL_WITH_DYNRT) $(CLIBFLAGS: -tWM= ) +CLIBFLAGSDLL = -D__EXPORT__ -tWM $(CLIBFLAGSxxx) $(CLIBFLAGSDLL) +CEXEFLAGSDLL = -tWM $(CLIBFLAGSxxx) $(CEXEFLAGSDLL) + +#********************************************************** # Harbour Compiler Flags HBFLAGSCMN = -i$(INCLUDE_DIR) -q0 -w2 -es2 -gc0 -kM $(PRG_USR) @@ -135,6 +155,8 @@ HBFLAGSCMN = -i$(INCLUDE_DIR) -q0 -w2 -es2 -gc0 -kM $(PRG_USR) HARBOURFLAGS = -n $(HBFLAGSCMN) $(HARBOURFLAGS) HARBOURFLAGSDLL= -D__EXPORT__ -n1 $(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) diff --git a/harbour/make_vc.mak b/harbour/make_vc.mak index 547505202e..fd28a7943a 100644 --- a/harbour/make_vc.mak +++ b/harbour/make_vc.mak @@ -108,6 +108,8 @@ DLL_OBJS = $(TMP_DLL_OBJS:obj\vc=obj\dll\vc) # Main "Include" directory INCLUDE_DIR = include +#********************************************************** + # In which mode compile Harbour C or CPP !if "$(HB_BUILD_MODE)" == "cpp" HB_BUILD_MODE = P @@ -115,6 +117,8 @@ HB_BUILD_MODE = P HB_BUILD_MODE = C !endif +#********************************************************** + # C Compiler Flags !if $(HB_VISUALC_VER) >= 80 CFLAGS_VER = -Ot2b1 -EHs-c- -FD -Gs -D_CRT_SECURE_NO_DEPRECATE @@ -131,6 +135,10 @@ CFLAGS = -Zi $(CFLAGS) DBGMARKER = d !endif #----------- +if "$(HB_BUILD_ST)" != "yes" +CFLAGS = -MT$(DBGMARKER) $(CFLAGS) +!endif +#----------- !if "$(HB_GT_DEFAULT)" != "" CFLAGS = -D"HB_GT_DEFAULT=$(HB_GT_DEFAULT:gt=)" $(CFLAGS) !endif @@ -139,14 +147,16 @@ CFLAGS = -D"HB_GT_DEFAULT=$(HB_GT_DEFAULT:gt=)" $(CFLAGS) CFLAGS = -D"HB_GT_LIB=$(HB_GT_LIB:gt=)" $(CFLAGS) !endif #----------- -if "$(HB_BUILD_ST)" != "yes" -CFLAGS = -MT$(DBGMARKER) $(CFLAGS) -!endif -#----------- + +#********************************************************** CLIBFLAGS = -c $(CFLAGS) $(CLIBFLAGS) -CLIBFLAGSDLL = -D__EXPORT__ $(CLIBFLAGS) $(CLIBFLAGSDLL) -CEXEFLAGSDLL = $(CLIBFLAGS) $(CEXEFLAGSDLL) +CLIBFLAGSxxx = $(CLIBFLAGS: -MT= ) +CLIBFLAGSxxx = $(CLIBFLAGSxxx: -MTd= ) +CLIBFLAGSDLL = -D__EXPORT__ -MT$(DBGMARKER) $(CLIBFLAGS) $(CLIBFLAGSDLL) +CEXEFLAGSDLL = -MT$(DBGMARKER) $(CLIBFLAGS) $(CEXEFLAGSDLL) + +#********************************************************** # Harbour Compiler Flags HBFLAGSCMN = -i$(INCLUDE_DIR) -q0 -w2 -es2 -gc0 -kM $(PRG_USR) @@ -156,6 +166,8 @@ HBFLAGSCMN = $(HBFLAGSCMN) -dPDF HARBOURFLAGS = -n $(HBFLAGSCMN) $(HARBOURFLAGS) HARBOURFLAGSDLL= -D__EXPORT__ -n1 $(HBFLAGSCMN) $(HARBOURFLAGSDLL) +#********************************************************** + # Linker Flags LDFLAGS = /NOLOGO /SUBSYSTEM:console /OPT:WIN98 /LIBPATH:$(LIB_DIR) $(LDFLAGS) LDFLAGSDLL = /NOLOGO /DLL /OPT:WIN98 /LIBPATH:$(LIB_DIR) $(LDFLAGSDLL)