diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 1f52448d87..6da8b407ec 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -8,6 +8,31 @@ 2009-12-31 13:59 UTC+0100 Foo Bar (foo.bar foobar.org) */ +2009-03-21 10:17 UTC+0100 Viktor Szakats (harbour.01 syenar hu) + * tests/bnchmark/bnch_win.bat + + Added option to override benchmark program name, so now + it can be used with customized speedtst versions or other + benchmark apps. + + Added HB_CMP_FLAGS envvar to define common compilation flags. + + Now echoing all benchmark settings to output. + + * config/win/icc.cf + + Added -nologo. + * Changed -W4 to -W3, as -W3 is really verbose in this compiler. + + * INSTALL + * bin/hb-mkdyn.bat + * utils/hbmk2/hbmk2.prg + + config/win/iccia64.cf + + Added Intel(R) C++ Compiler IA64 support. + All Harbour libs (including contribs) compiled successfully, + but I couldn't try linking any executables. + ; TODO: Add processor information to appropriate places into + Harbour. Currently we have only bit width and endianness, + but no actual CPU family info. CPU instruction families + Harbour can currently be built on out of the box: + x86, amd64, IA64, PPC, PPC64, ARM. + 2009-03-20 17:33 UTC+0100 Viktor Szakats (harbour.01 syenar hu) * tests/bnchmark + tests/bnchmark/bnch_win.bat diff --git a/harbour/INSTALL b/harbour/INSTALL index c7a713ddb4..59a4240c19 100644 --- a/harbour/INSTALL +++ b/harbour/INSTALL @@ -192,6 +192,7 @@ SUPPORTED C COMPILERS UNDER DIFFERENT PLATFORMS xcc - Pelles C for xhb owatcom - Open Watcom C++ icc - Intel(R) C/C++ + iccia64 - Intel(R) C/C++ IA64 bcc - Borland/CodeGear C++ 4.x and above cygwin - Cygwin GNU C diff --git a/harbour/bin/hb-mkdyn.bat b/harbour/bin/hb-mkdyn.bat index 1cf0a5a11e..48cc767684 100644 --- a/harbour/bin/hb-mkdyn.bat +++ b/harbour/bin/hb-mkdyn.bat @@ -23,6 +23,7 @@ set HB_DLL_LIBS_ST=hbvm set HB_DLL_LIBS_MT=hbvmmt if "%HB_COMPILER%" == "icc" goto DO_MSVC +if "%HB_COMPILER%" == "iccia64" goto DO_MSVC if "%HB_COMPILER%" == "msvc" goto DO_MSVC if "%HB_COMPILER%" == "msvc64" goto DO_MSVC if "%HB_COMPILER%" == "msvcia64" goto DO_MSVC @@ -40,10 +41,12 @@ echo Making .dlls for %HB_COMPILER%... md _dll cd _dll -if "%HB_COMPILER%" == "icc" set _BIN_LIB=xilib -if not "%HB_COMPILER%" == "icc" set _BIN_LIB=lib -if "%HB_COMPILER%" == "icc" set _BIN_LINK=xilink -if not "%HB_COMPILER%" == "icc" set _BIN_LINK=link +set _BIN_LIB=lib +set _BIN_LINK=link +if "%HB_COMPILER%" == "icc" set _BIN_LIB=xilib +if "%HB_COMPILER%" == "icc" set _BIN_LINK=xilink +if "%HB_COMPILER%" == "iccia64" set _BIN_LIB=xilib +if "%HB_COMPILER%" == "iccia64" set _BIN_LINK=xilink rem ; Extract neutral objects echo.> _hboneut.txt @@ -103,6 +106,8 @@ cd .. if "%HB_COMPILER%" == "icc" set _DST_NAME_ST=harbour-%HB_DLL_VERSION% if "%HB_COMPILER%" == "icc" set _DST_NAME_MT=harbourmt-%HB_DLL_VERSION% +if "%HB_COMPILER%" == "iccia64" set _DST_NAME_ST=harbour-%HB_DLL_VERSION%-ia64 +if "%HB_COMPILER%" == "iccia64" set _DST_NAME_MT=harbourmt-%HB_DLL_VERSION%-ia64 if "%HB_COMPILER%" == "msvc" set _DST_NAME_ST=harbour-%HB_DLL_VERSION% if "%HB_COMPILER%" == "msvc" set _DST_NAME_MT=harbourmt-%HB_DLL_VERSION% if "%HB_COMPILER%" == "msvc64" set _DST_NAME_ST=harbour-%HB_DLL_VERSION%-x64 diff --git a/harbour/config/win/icc.cf b/harbour/config/win/icc.cf index 5670c597b2..43b39b54e3 100644 --- a/harbour/config/win/icc.cf +++ b/harbour/config/win/icc.cf @@ -15,8 +15,8 @@ LIB_EXT = .lib CC = icl.exe CC_IN = -c CC_OUT = -Fo -CPPFLAGS = -I. -I$(HB_INC_COMPILE) -CFLAGS = -W4 -Gs +CPPFLAGS = -nologo -I. -I$(HB_INC_COMPILE) +CFLAGS = -W3 -Gs ifneq ($(HB_BUILD_OPTIM),no) # maximum optimizations diff --git a/harbour/config/win/iccia64.cf b/harbour/config/win/iccia64.cf new file mode 100644 index 0000000000..4c6b73b916 --- /dev/null +++ b/harbour/config/win/iccia64.cf @@ -0,0 +1,5 @@ +# +# $Id$ +# + +include $(TOP)$(ROOT)config/$(HB_ARCHITECTURE)/icc.cf diff --git a/harbour/tests/bnchmark/bnch_win.bat b/harbour/tests/bnchmark/bnch_win.bat index 66374c86c3..a2ddd1245d 100644 --- a/harbour/tests/bnchmark/bnch_win.bat +++ b/harbour/tests/bnchmark/bnch_win.bat @@ -13,10 +13,12 @@ @rem - Harbour binary build @rem - Harbour binary build \bin dir as current dir @rem - This batch copied into current dir -@rem - speedtst.prg copied into current dir -@rem - envvars HB_CMP_FLAGS_[1-8] set to speedtst build flags -@rem - envvars HB_RUN_FLAGS_[1-8] set to speedtst run flags (optional) -@rem - envvar HB_RUN_FLAGS set to common speedtst run flags (optional) +@rem - envvar HB_BENCH_PRG set to benchmark program (default: speedtst) +@rem - benchmark program copied into current dir +@rem - envvars HB_CMP_FLAGS_[1-8] set to benchmark program build flags +@rem - envvar HB_CMP_FLAGS set to common benchmark program build flags (optional) +@rem - envvars HB_RUN_FLAGS_[1-8] set to benchmark program run flags (optional) +@rem - envvar HB_RUN_FLAGS set to common benchmark program run flags (optional) @rem - envvar HB_BENCH_RUNS set to number of times tests are run (default: 3) @rem - C compiler configured (just like you'd do for hbmk2) @rem - Running it using this command: @@ -25,6 +27,18 @@ @if not "%OS%" == "Windows_NT" goto END +@rem ; Default settings +@if "%HB_BENCH_PRG%" == "" @set HB_BENCH_PRG=speedtst +@if "%HB_BENCH_RUNS%" == "" @set HB_BENCH_RUNS=3 +@if "%HB_CMP_FLAGS_1%" == "" @set HB_CMP_FLAGS_1=-st +@if "%HB_CMP_FLAGS_2%" == "" @set HB_CMP_FLAGS_2=-mt + +@rem ; Benchmark information +@set HB_BENCH_PRG +@set HB_BENCH_RUNS +@set HB_CMP_FLAGS +@set HB_RUN_FLAGS + @echo off echo.>_hbhwinfo.js @@ -67,30 +81,25 @@ cscript //nologo //E:javascript _hbhwinfo.js harbour /build @rem ; Pre-make cleanup -if exist speedtst_*.exe del speedtst_*.exe +if exist %HB_BENCH_PRG%_*.exe del %HB_BENCH_PRG%_*.exe -@rem ; Default test flags -if "%HB_CMP_FLAGS_1%" == "" set HB_CMP_FLAGS_1=-st -if "%HB_CMP_FLAGS_2%" == "" set HB_CMP_FLAGS_2=-mt -if "%HB_BENCH_RUNS%" == "" set HB_BENCH_RUNS=3 +@rem ; Creating benchmark executables +if not "%HB_CMP_FLAGS_1%" == "" hbmk2 %HB_BENCH_PRG%.prg -q0 -trace -o%HB_BENCH_PRG%_1.exe %HB_CMP_FLAGS% %HB_CMP_FLAGS_1% +if not "%HB_CMP_FLAGS_2%" == "" hbmk2 %HB_BENCH_PRG%.prg -q0 -trace -o%HB_BENCH_PRG%_2.exe %HB_CMP_FLAGS% %HB_CMP_FLAGS_2% +if not "%HB_CMP_FLAGS_3%" == "" hbmk2 %HB_BENCH_PRG%.prg -q0 -trace -o%HB_BENCH_PRG%_3.exe %HB_CMP_FLAGS% %HB_CMP_FLAGS_3% +if not "%HB_CMP_FLAGS_4%" == "" hbmk2 %HB_BENCH_PRG%.prg -q0 -trace -o%HB_BENCH_PRG%_4.exe %HB_CMP_FLAGS% %HB_CMP_FLAGS_4% +if not "%HB_CMP_FLAGS_5%" == "" hbmk2 %HB_BENCH_PRG%.prg -q0 -trace -o%HB_BENCH_PRG%_5.exe %HB_CMP_FLAGS% %HB_CMP_FLAGS_5% +if not "%HB_CMP_FLAGS_6%" == "" hbmk2 %HB_BENCH_PRG%.prg -q0 -trace -o%HB_BENCH_PRG%_6.exe %HB_CMP_FLAGS% %HB_CMP_FLAGS_6% +if not "%HB_CMP_FLAGS_7%" == "" hbmk2 %HB_BENCH_PRG%.prg -q0 -trace -o%HB_BENCH_PRG%_7.exe %HB_CMP_FLAGS% %HB_CMP_FLAGS_7% +if not "%HB_CMP_FLAGS_8%" == "" hbmk2 %HB_BENCH_PRG%.prg -q0 -trace -o%HB_BENCH_PRG%_8.exe %HB_CMP_FLAGS% %HB_CMP_FLAGS_8% -@rem ; Creating speedtst executables -if not "%HB_CMP_FLAGS_1%" == "" hbmk2 speedtst.prg -q0 -trace -ospeedtst_1.exe %HB_CMP_FLAGS_1% -if not "%HB_CMP_FLAGS_2%" == "" hbmk2 speedtst.prg -q0 -trace -ospeedtst_2.exe %HB_CMP_FLAGS_2% -if not "%HB_CMP_FLAGS_3%" == "" hbmk2 speedtst.prg -q0 -trace -ospeedtst_3.exe %HB_CMP_FLAGS_3% -if not "%HB_CMP_FLAGS_4%" == "" hbmk2 speedtst.prg -q0 -trace -ospeedtst_4.exe %HB_CMP_FLAGS_4% -if not "%HB_CMP_FLAGS_5%" == "" hbmk2 speedtst.prg -q0 -trace -ospeedtst_5.exe %HB_CMP_FLAGS_5% -if not "%HB_CMP_FLAGS_6%" == "" hbmk2 speedtst.prg -q0 -trace -ospeedtst_6.exe %HB_CMP_FLAGS_6% -if not "%HB_CMP_FLAGS_7%" == "" hbmk2 speedtst.prg -q0 -trace -ospeedtst_7.exe %HB_CMP_FLAGS_7% -if not "%HB_CMP_FLAGS_8%" == "" hbmk2 speedtst.prg -q0 -trace -ospeedtst_8.exe %HB_CMP_FLAGS_8% - -@rem ; speedtst executable information -dir speedtst_*.exe speedtst.prg +@rem ; benchmark executable information +dir %HB_BENCH_PRG%_*.exe %HB_BENCH_PRG%.prg @rem ; pre-OS state information tasklist -@rem ; Running speedtst executables in multiple runs +@rem ; Running benchmark executables in multiple runs @for /l %%r in (1,1,%HB_BENCH_RUNS%) do @call :RUN_ALL %%r @rem ; post-OS state information @@ -102,14 +111,14 @@ tasklist @echo. @echo Run #%1 - if exist speedtst_1.exe speedtst_1.exe %HB_RUN_FLAGS% %HB_RUN_FLAGS_1% - if exist speedtst_2.exe speedtst_2.exe %HB_RUN_FLAGS% %HB_RUN_FLAGS_2% - if exist speedtst_3.exe speedtst_3.exe %HB_RUN_FLAGS% %HB_RUN_FLAGS_3% - if exist speedtst_4.exe speedtst_4.exe %HB_RUN_FLAGS% %HB_RUN_FLAGS_4% - if exist speedtst_5.exe speedtst_5.exe %HB_RUN_FLAGS% %HB_RUN_FLAGS_5% - if exist speedtst_6.exe speedtst_6.exe %HB_RUN_FLAGS% %HB_RUN_FLAGS_6% - if exist speedtst_7.exe speedtst_7.exe %HB_RUN_FLAGS% %HB_RUN_FLAGS_7% - if exist speedtst_8.exe speedtst_8.exe %HB_RUN_FLAGS% %HB_RUN_FLAGS_8% + if exist %HB_BENCH_PRG%_1.exe %HB_BENCH_PRG%_1.exe %HB_RUN_FLAGS% %HB_RUN_FLAGS_1% + if exist %HB_BENCH_PRG%_2.exe %HB_BENCH_PRG%_2.exe %HB_RUN_FLAGS% %HB_RUN_FLAGS_2% + if exist %HB_BENCH_PRG%_3.exe %HB_BENCH_PRG%_3.exe %HB_RUN_FLAGS% %HB_RUN_FLAGS_3% + if exist %HB_BENCH_PRG%_4.exe %HB_BENCH_PRG%_4.exe %HB_RUN_FLAGS% %HB_RUN_FLAGS_4% + if exist %HB_BENCH_PRG%_5.exe %HB_BENCH_PRG%_5.exe %HB_RUN_FLAGS% %HB_RUN_FLAGS_5% + if exist %HB_BENCH_PRG%_6.exe %HB_BENCH_PRG%_6.exe %HB_RUN_FLAGS% %HB_RUN_FLAGS_6% + if exist %HB_BENCH_PRG%_7.exe %HB_BENCH_PRG%_7.exe %HB_RUN_FLAGS% %HB_RUN_FLAGS_7% + if exist %HB_BENCH_PRG%_8.exe %HB_BENCH_PRG%_8.exe %HB_RUN_FLAGS% %HB_RUN_FLAGS_8% @goto END :END diff --git a/harbour/utils/hbmk2/hbmk2.prg b/harbour/utils/hbmk2/hbmk2.prg index c0ef2803e8..cc51ffdae4 100644 --- a/harbour/utils/hbmk2/hbmk2.prg +++ b/harbour/utils/hbmk2/hbmk2.prg @@ -496,11 +496,12 @@ FUNCTION Main( ... ) { {|| FindInPath( "bcc32" ) != NIL }, "bcc" },; { {|| FindInPath( "porc64" ) != NIL }, "pocc64" },; { {|| FindInPath( "pocc" ) != NIL }, "pocc" },; + { {|| ( tmp := FindInPath( "icl" ) ) != NIL .AND. "itanium" $ Lower( tmp ) }, "iccia64" },; { {|| FindInPath( "icl" ) != NIL }, "icc" },; { {|| FindInPath( "cygstart" ) != NIL }, "cygwin" },; { {|| FindInPath( "xcc" ) != NIL }, "xcc" } } aCOMPSUP := { "mingw", "msvc", "bcc", "owatcom", "icc", "pocc", "xcc", "cygwin",; - "msvc64", "msvcia64", "pocc64",; + "msvc64", "msvcia64", "iccia64", "pocc64",; "mingwce", "msvcce", "poccce" } cBin_CompPRG := "harbour.exe" s_aLIBHBGT := { "gtwin", "gtwvt", "gtgui" } @@ -1605,7 +1606,7 @@ FUNCTION Main( ... ) AAdd( s_aLIBFM, iif( s_lMT, "hbfmmt", "hbfm" ) ) ENDIF - CASE t_cARCH == "win" .AND. t_cCOMP $ "msvc|msvc64|msvcia64|icc" + CASE t_cARCH == "win" .AND. t_cCOMP $ "msvc|msvc64|msvcia64|icc|iccia64" IF s_lDEBUG AAdd( s_aOPTC, "-MTd -Zi" ) ENDIF @@ -1618,7 +1619,7 @@ FUNCTION Main( ... ) cLibExt := ".lib" cObjExt := ".obj" cLibLibExt := cLibExt - IF t_cCOMP == "icc" + IF t_cCOMP $ "icc|iccia64" cBin_Lib := "xilib.exe" cBin_CompC := "icl.exe" cBin_Dyn := "xilink.exe" @@ -1661,14 +1662,14 @@ FUNCTION Main( ... ) "harbour-" + cDL_Version_Alter + "-x64" ),; "hbmainstd",; "hbmainwin" } - CASE t_cCOMP == "msvcia64" + CASE t_cCOMP $ "msvcia64|iccia64" s_aLIBSHARED := { iif( s_lMT, "harbourmt-" + cDL_Version_Alter + "-ia64",; "harbour-" + cDL_Version_Alter + "-ia64" ),; "hbmainstd",; "hbmainwin" } ENDCASE - IF !( t_cCOMP == "icc" ) + IF !( t_cCOMP $ "icc|iccia64" ) cBin_Res := "rc.exe" cOpt_Res := "/r {LR}" cResExt := ".res" @@ -1781,7 +1782,7 @@ FUNCTION Main( ... ) DO CASE CASE ! s_lSHARED .OR. ; !( t_cARCH == "win" ) .OR. ; - t_cCOMP $ "msvc|msvc64|msvcia64|icc" + t_cCOMP $ "msvc|msvc64|msvcia64|icc|iccia64" /* NOTE: MSVC gives the warning: "LNK4217: locally defined symbol ... imported in function ..." @@ -3227,7 +3228,7 @@ STATIC PROCEDURE ShowHelp( lLong ) " linux : gcc, gpp, owatcom, icc, mingw, mingwce" ,; " darwin : gcc" ,; " win : mingw, msvc, bcc, owatcom, icc, pocc, cygwin," ,; - " mingwce, msvc64, msvcia64, msvcce, pocc64, poccce, xcc" ,; + " mingwce, msvc64, msvcia64, msvcce, iccia64, pocc64, poccce, xcc" ,; " os2 : gcc, owatcom" ,; " dos : djgpp, owatcom" ,; " bsd, hpux, sunos: gcc" }