diff --git a/harbour/ChangeLog b/harbour/ChangeLog index e68d56a4d4..8b56cb29b9 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -8,23 +8,37 @@ 2002-12-01 13:30 UTC+0100 Foo Bar */ + + * harbour/source/rtl/gtpca/gtpca.c + * harbour/source/rtl/gtstd/gtstd.c + ! redirect STDOUT() to console only when stdout is a tty device. + +2006-07-20 22:00 UTC+0100 Marek Paliwoda (mpaliwoda at interia pl) + * harbour/source/rtl/math.c + ! Fixed GPF when compiled under Bcc with -tWR switch + + * harbour/makefile.bc + * harbour/make_b32.bat + ! Fixed compilation of Harbour DLL with dynamic RTL + * Added INSTALL rule. + * harbour/makefile.vc * harbour/make_vc.bat ! Fixed header description of makefile * Added INSTALL rule. - + Added batch file to compare PP results between Harbour and + 2006-07-20 12:36 UTC+0100 Viktor Szakats (viktor.szakats syenar.hu) + harbour/utils/hbpptest/compare.bat + harbour/utils/hbpptest/.cvsignore * harbour/utils/hbpptest/pp_test.prg + Added batch file to compare PP results between Harbour and - + CA-Cl*pper. 2006-07-20 11:40 UTC+0100 Ryszard Glab - + * source/pp/ppcore.c * fixed bugs which I introduced - and harbour and next use diff utility to compare outputs - + * utils/hbpptest/pretest.prg * added more test cases + utils/hbpptest/pp_test.prg @@ -35,7 +49,7 @@ 2006-07-18 21:26 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl) * harbour/source/vm/hvm.c - + ! fixed executing EXIT procedures after external to BEGIN SEQUENCE / END BREAK - now by default we are taking the same action as after QUIT what seems to be intention of Clipper authors. When HVM is compiled with HB_C52_STRICT macro then we will try to emulate real Clipper @@ -63,7 +77,7 @@ + Note added about __dbfList() to debugger source. * harbour/source/rtl/dbedit.prg - + ! Comment typos. 2006-07-18 12:20 UTC+0100 Ryszard Glab * source/pp/ppcore.c @@ -78,7 +92,7 @@ ! fixed problems reported by Marek with EXIT procedures after my last commit - + Updates/fixes and more translated texts for Czech +2006-07-18 10:21 UTC+0100 Viktor Szakats (viktor.szakats syenar.hu) * harbour/source/lang/msgcs852.c * harbour/source/lang/msgcsiso.c * harbour/source/lang/msgcskam.c diff --git a/harbour/make_b32.bat b/harbour/make_b32.bat index 9a192fe5d4..1b909cd7ea 100644 --- a/harbour/make_b32.bat +++ b/harbour/make_b32.bat @@ -26,19 +26,15 @@ rem --------------------------------------------------------------- if "%1" == "clean" goto CLEAN if "%1" == "CLEAN" goto CLEAN +if "%1" == "install" goto INSTALL +if "%1" == "INSTALL" goto INSTALL + rem --------------------------------------------------------------- :BUILD %HB_MAKE_PROGRAM% %HB_MAKE_FLAGS% -r -fmakefile.bc %1 %2 %3 > make_b32.log if errorlevel 1 goto BUILD_ERR - -rem --------------------------------------------------------------- - -:BUILD_OK - - copy bin\b32\*.exe bin\*.* > nul - copy lib\b32\*.lib lib\*.* > nul goto EXIT rem --------------------------------------------------------------- @@ -52,7 +48,7 @@ rem --------------------------------------------------------------- :CLEAN - %HB_MAKE_PROGRAM% %HB_MAKE_FLAGS% /f makefile.bc CLEAN > make_b32.log + %HB_MAKE_PROGRAM% %HB_MAKE_FLAGS% -f makefile.bc CLEAN > make_b32.log rem In this case, the makefile handles most cleanup. @@ -61,4 +57,23 @@ rem --------------------------------------------------------------- rem --------------------------------------------------------------- +:INSTALL + + if "%HB_INSTALL_PREFIX%" == "" set HB_INSTALL_PREFIX=. + + if "%HB_BIN_INSTALL%" == "" set HB_BIN_INSTALL=%HB_INSTALL_PREFIX%\bin + if "%HB_INC_INSTALL%" == "" set HB_INC_INSTALL=%HB_INSTALL_PREFIX%\include + if "%HB_LIB_INSTALL%" == "" set HB_LIB_INSTALL=%HB_INSTALL_PREFIX%\lib + + %HB_MAKE_PROGRAM% %HB_MAKE_FLAGS% -f makefile.bc INSTALL > make_b32.log + goto EXIT + +rem --------------------------------------------------------------- + :EXIT + +rem set HB_MAKE_PROGRAM= +rem set HB_INSTALL_PREFIX= +rem set HB_BIN_INSTALL= +rem set HB_LIB_INSTALL= +rem set HB_INC_INSTALL= diff --git a/harbour/make_vc.bat b/harbour/make_vc.bat index ffd33e9a59..adfae2f438 100644 --- a/harbour/make_vc.bat +++ b/harbour/make_vc.bat @@ -26,19 +26,15 @@ rem --------------------------------------------------------------- if "%1" == "clean" goto CLEAN if "%1" == "CLEAN" goto CLEAN +if "%1" == "install" goto INSTALL +if "%1" == "INSTALL" goto INSTALL + rem --------------------------------------------------------------- :BUILD %HB_MAKE_PROGRAM% %HB_MAKE_FLAGS% /f makefile.vc %1 %2 %3 > make_vc.log if errorlevel 1 goto BUILD_ERR - -rem --------------------------------------------------------------- - -:BUILD_OK - - copy bin\vc\*.exe bin\*.* > nul - copy lib\vc\*.lib lib\*.* > nul goto EXIT rem --------------------------------------------------------------- @@ -61,4 +57,17 @@ rem --------------------------------------------------------------- rem --------------------------------------------------------------- +:INSTALL + + if "%HB_INSTALL_PREFIX%" == "" set HB_INSTALL_PREFIX=. + + if "%HB_BIN_INSTALL%" == "" set HB_BIN_INSTALL=%HB_INSTALL_PREFIX%\bin + if "%HB_INC_INSTALL%" == "" set HB_INC_INSTALL=%HB_INSTALL_PREFIX%\include + if "%HB_LIB_INSTALL%" == "" set HB_LIB_INSTALL=%HB_INSTALL_PREFIX%\lib + + %HB_MAKE_PROGRAM% %HB_MAKE_FLAGS% /f makefile.vc INSTALL > make_vc.log + goto EXIT + +rem --------------------------------------------------------------- + :EXIT diff --git a/harbour/makefile.bc b/harbour/makefile.bc index 6791c4cbc9..c532b6c417 100644 --- a/harbour/makefile.bc +++ b/harbour/makefile.bc @@ -18,26 +18,28 @@ # # 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) +# 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_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 +# BCCDLL_WITH_DYNRT - If set to -tWR causes that 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. @@ -97,6 +99,9 @@ CFLAGS = -I$(INCLUDE_DIR) $(C_USR) $(CFLAGS) !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) @@ -107,7 +112,7 @@ HBFLAGSCMN = -i$(INCLUDE_DIR) -q0 -w -es2 -gc0 $(PRG_USR) HBFLAGSCMN = $(HBFLAGSCMN) -dPDF !endif HARBOURFLAGS = -n $(HBFLAGSCMN) $(HARBOURFLAGS) -HARBOURFLAGSDLL= -D__EXPORT__ -n1 $(HBFLAGSCMN) $(HARBOURFLAGSDLL) +HARBOURFLAGSDLL= -D__EXPORT__ -n1 -l $(HBFLAGSCMN) $(HARBOURFLAGSDLL) # Linker Flags LDFLAGS = -ap -Tpe -Gn -C -L$(LIB_DIR) -L$(BIN_DIR) $(LDFLAGS) @@ -130,7 +135,7 @@ ARFLAGS = /P32 # Include Common Object list files # shared between Msvc and Borland -!include Common.mak +!include common.mak #********************************************************** @@ -197,7 +202,7 @@ DLL_OBJS = $(TMP_DLL_OBJS:$(OBJ_DIR)=$(DLL_OBJ_DIR)) #********************************************************** # General Library BUILD rule -.obj.lib: +{$(OBJ_DIR)}.obj{$(LIB_DIR)}.lib: IF EXIST "$@" $(DEL) "$@" > NUL $(MKLIB) "$@" $(ARFLAGS) @&&! +$(**: = &^ @@ -248,6 +253,21 @@ doClean: #********************************************************** +install : doInstall +INSTALL : doInstall + +doInstall: + -if exist $(HB_BIN_INSTALL)\nul if exist $(BIN_DIR)\*.dll copy /B /Y $(BIN_DIR)\*.dll $(HB_BIN_INSTALL) > nul + -if exist $(HB_LIB_INSTALL)\nul if exist $(BIN_DIR)\*.lib copy /B /Y $(BIN_DIR)\*.lib $(HB_LIB_INSTALL) > nul + -if exist $(HB_LIB_INSTALL)\nul if exist $(LIB_DIR)\*.lib copy /B /Y $(LIB_DIR)\*.lib $(HB_LIB_INSTALL) > nul +!if "$(HB_INSTALL_PREFIX)" != "." + -if exist $(HB_INC_INSTALL)\nul copy /A /Y include\*.api $(HB_INC_INSTALL) > nul + -if exist $(HB_INC_INSTALL)\nul copy /A /Y include\*.ch $(HB_INC_INSTALL) > nul + -if exist $(HB_INC_INSTALL)\nul copy /A /Y include\*.h $(HB_INC_INSTALL) > nul +!endif + +#********************************************************** + $(HB_DEST_DIRS): !if not exist $@\nul mkdir $@ @@ -549,7 +569,7 @@ $(STANDARD_STATIC_HBLIBS) $(HARBOUR_DLL) :: BasicLibs BasicExes $(HARBOUR_DLL) :: $(DLL_OBJS) $(LINKER) $(LDFLAGSDLL) @&&! -c0d32.obj $**, $@,, cw32.lib import32.lib +c0d32.obj $**, $@,, cw32mt$(RTLIBSUFFIX).lib import32.lib ! #********************************************************** # @@ -559,7 +579,7 @@ c0d32.obj $**, $@,, cw32.lib import32.lib $(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) cw32.lib import32.lib +c0x32.obj $**, $@,,$(HARBOUR_DLL:.dll=.lib) cw32mt$(RTLIBSUFFIX).lib import32.lib ! #---------------------------------------------------------- #$(DLL_OBJ_DIR)\hbtest.obj : $(HBTEST_DIR)\hbtest.prg diff --git a/harbour/makefile.vc b/harbour/makefile.vc index 22286b6482..a2c925f479 100644 --- a/harbour/makefile.vc +++ b/harbour/makefile.vc @@ -3,7 +3,7 @@ # # -# Makefile for Harbour Project for Borland C/C++ 5.x compilers +# Makefile for Harbour Project for Msvc 6.0/7.1 compilers # # --------------------------------------------------------------- @@ -16,16 +16,22 @@ # 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) +# 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_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 @@ -33,10 +39,6 @@ # 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. @@ -124,7 +126,7 @@ LDFLAGSDLL = /DEBUG $(LDFLAGSDLL) # Include Common Object list files # shared between Msvc and Borland -!include Common.mak +!include common.mak #********************************************************** @@ -641,6 +643,7 @@ CLEAN: doClean doClean: -if exist *.idb $(DEL) *.idb > nul -if exist *.pch $(DEL) *.pch > nul + -if exist *.pdb $(DEL) *.pdb > 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 @@ -661,6 +664,21 @@ doClean: #********************************************************** +install : doInstall +INSTALL : doInstall + +doInstall: + -if exist $(HB_BIN_INSTALL)\nul if exist $(BIN_DIR)\*.dll copy /B /Y $(BIN_DIR)\*.dll $(HB_BIN_INSTALL) > nul + -if exist $(HB_LIB_INSTALL)\nul if exist $(BIN_DIR)\*.lib copy /B /Y $(BIN_DIR)\*.lib $(HB_LIB_INSTALL) > nul + -if exist $(HB_LIB_INSTALL)\nul if exist $(LIB_DIR)\*.lib copy /B /Y $(LIB_DIR)\*.lib $(HB_LIB_INSTALL) > nul +!if "$(HB_INSTALL_PREFIX)" != "." + -if exist $(HB_INC_INSTALL)\nul copy /A /Y include\*.api $(HB_INC_INSTALL) > nul + -if exist $(HB_INC_INSTALL)\nul copy /A /Y include\*.ch $(HB_INC_INSTALL) > nul + -if exist $(HB_INC_INSTALL)\nul copy /A /Y include\*.h $(HB_INC_INSTALL) > nul +!endif + +#********************************************************** + $(HB_DEST_DIRS): !if not exist $@\nul mkdir $@ diff --git a/harbour/source/rtl/math.c b/harbour/source/rtl/math.c index 43bf55ea5f..006f299603 100644 --- a/harbour/source/rtl/math.c +++ b/harbour/source/rtl/math.c @@ -134,7 +134,11 @@ int hb_mathIsMathErr (void) /* route C math lib errors to Harbour error handling */ #if defined(HB_MATH_HANDLER) -int matherr (struct exception * err) +int +#ifdef __BORLANDC__ +HB_EXPORT +#endif +matherr (struct exception * err) { int retval; HB_MATH_HANDLERPROC mathHandler; @@ -259,7 +263,7 @@ int hb_mathErrSet( double dResult, double arg1, double arg2, char * szFunc, int s_hb_exc.type = HB_MATH_ERR_OVERFLOW; s_hb_exc.error = "Calculation result too large to represent"; break; -#endif +#endif default: s_hb_exc.type = HB_MATH_ERR_UNKNOWN; s_hb_exc.error = "Unknown math error";