From b8451d6e7cd5e909bdc5ddaaf6e440e54a7082f8 Mon Sep 17 00:00:00 2001 From: Viktor Szakats Date: Sat, 21 Mar 2009 09:23:32 +0000 Subject: [PATCH] 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. --- harbour/ChangeLog | 25 +++++++++++ harbour/INSTALL | 1 + harbour/bin/hb-mkdyn.bat | 13 ++++-- harbour/config/win/icc.cf | 4 +- harbour/config/win/iccia64.cf | 5 +++ harbour/tests/bnchmark/bnch_win.bat | 69 ++++++++++++++++------------- harbour/utils/hbmk2/hbmk2.prg | 15 ++++--- 7 files changed, 89 insertions(+), 43 deletions(-) create mode 100644 harbour/config/win/iccia64.cf 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" }