From 27f7edb625ecf70a3f27fc892728525d4f4ecef7 Mon Sep 17 00:00:00 2001 From: Viktor Szakats Date: Tue, 31 Mar 2009 09:58:43 +0000 Subject: [PATCH] 2009-03-31 11:46 UTC+0200 Viktor Szakats (harbour.01 syenar hu) * INSTALL * Moved Windows CE compilers into a separate section. * bin/hb-mkdyn.bat * Changes made to allow wce arch. (provision for wce arch) * mpkg_win.bat * Allows to override HB_ARCHITECTURE. (provision for wce arch) + Include arch in target directory. (provision for wce arch) * include/hbatomic.h - Turned off inline asm for _MSC_VER compilers in 64-bit mode. (pocc64, msvc64) These target don't support inline asm. This fixes previously reported regressions with these targets. * utils/hbmk2/hbmk2.prg % win/owatcom: Pentium Pro scheduling. * win/owatcom: Temply set back stack calling convention. * external/libhpdf/Makefile - Disabled for pocc64 due to errors, even internal compiler error: --- can't spill register variable: rcx (3) image ../../hpdf_image.c(480): fatal error: Internal error: best_spillee. --- * config/win/bcc.cf + Added comment about -4, -5, -6. * ChangeLog ! Minor fix to prev entry. --- harbour/ChangeLog | 59 ++++++++++++++++++----- harbour/INSTALL | 11 +++-- harbour/bin/hb-mkdyn.bat | 79 +++++++++++++++---------------- harbour/config/win/bcc.cf | 3 ++ harbour/external/libhpdf/Makefile | 3 ++ harbour/include/hbatomic.h | 3 +- harbour/mpkg_win.bat | 4 +- harbour/utils/hbmk2/hbmk2.prg | 8 ++-- 8 files changed, 105 insertions(+), 65 deletions(-) diff --git a/harbour/ChangeLog b/harbour/ChangeLog index a6ee10dbbc..af428dacb3 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -8,6 +8,39 @@ 2009-12-31 13:59 UTC+0100 Foo Bar (foo.bar foobar.org) */ +2009-03-31 11:46 UTC+0200 Viktor Szakats (harbour.01 syenar hu) + * INSTALL + * Moved Windows CE compilers into a separate section. + + * bin/hb-mkdyn.bat + * Changes made to allow wce arch. (provision for wce arch) + + * mpkg_win.bat + * Allows to override HB_ARCHITECTURE. (provision for wce arch) + + Include arch in target directory. (provision for wce arch) + + * include/hbatomic.h + - Turned off inline asm for _MSC_VER compilers in 64-bit mode. (pocc64, msvc64) + These target don't support inline asm. + This fixes previously reported regressions with these targets. + + * utils/hbmk2/hbmk2.prg + % win/owatcom: Pentium Pro scheduling. + * win/owatcom: Temply set back stack calling convention. + + * external/libhpdf/Makefile + - Disabled for pocc64 due to errors, even internal compiler error: + --- + can't spill register variable: rcx (3) image + ../../hpdf_image.c(480): fatal error: Internal error: best_spillee. + --- + + * config/win/bcc.cf + + Added comment about -4, -5, -6. + + * ChangeLog + ! Minor fix to prev entry. + 2009-03-31 01:50 UTC-0800 Pritpal Bedi (pritpal@vouchcac.com) * harbour/contrib/hbqt/Makefile % Makefile is auto generated by and is placed @@ -99,11 +132,11 @@ * harbour/contrib/hbqt/hbqt.h + harbour/contrib/hbqt/hbqt_slots.h - harbour/contrib/hbqt/slots.h - +- Added | Changed | Deleted Sources. + +- Added | Changed | Deleted Sources. Now these sources are auto generated by the HB-QT generator. Please never try to modify these. Instead look at /qth folder - and .qth source definition files. I will write a detailed - description once it becomes fully operational as I have + and .qth source definition files. I will write a detailed + description once it becomes fully operational as I have drawn on the drawing board. The above code is fully functional to the extent it is generated but still about 30% functions have not been translated. A work in progress... @@ -181,13 +214,13 @@ + harbour/contrib/hbqt/TQWidget.prg + harbour/contrib/hbqt/TQWizard.prg + Added auto generated classes with exact same class hierarchy - which QT has outlined with inheritance. QT implements + which QT has outlined with inheritance. QT implements constructors with dynamic parameters which on prg level - are difficult to manage. So I have adopted a simple + are difficult to manage. So I have adopted a simple approach. :New() accepts only one argument i.e., pointer to the parent object, if any, and which is universal - in QT implementation. This class implementation implies - that PRG code will pass to a method and will + in QT implementation. This class implementation implies + that PRG code will pass to a method and will receive | . We can build higher level classes inheriting from above and implement whatever way we wish to pass and receive objects. I would like those higher @@ -277,15 +310,15 @@ ! Added new .qth source definitions. * harbour/contrib/hbqt/tests/demoqt.prg - ! Auto generated demo program. Just play with it and - you will be surprised how simple it is to use QT; all + ! Auto generated demo program. Just play with it and + you will be surprised how simple it is to use QT; all gadgets provided. SUMUP: Auto Generated Files: - hbqt/gensource/hbqt_q*.cpp source files - hbqt/doc/Q*.txt documentation on function calls - hbqt/tests/demoqt.prg demonstration program - - hbqt/gensource/hbqt.h + - hbqt/gensource/hbqt.h - hbqt/gensource/hbqt_slots.h - hbqt/gensource/hbqt_slots.cpp - hbqt/gensource/hbqt_base.cpp @@ -324,7 +357,7 @@ ! Added -D_M_ARM. * config/win/owatcom.cf - * Pentium Pro scheduling. + % Pentium Pro scheduling. * Changed back to __cdecl calling convention from register based until we find a way to tweak HB_EXPORT to force __cdecl for .dll exported functions. @@ -335,7 +368,7 @@ We should try to avoid that. * config/win/bcc.cf - * -4 -> -6 for Pentium Pro instructions. Looking at the generated + % -4 -> -6 for Pentium Pro instructions. Looking at the generated code this looks like rescheduling, if someone now can test Harbour or plain Pentium, it would be good to know if it still works. @@ -2860,7 +2893,7 @@ + Added support for mingw64. MinGW 64-bit mode. Harbour doesn't build yet due to some compiling errors (plus some internal MinGW ones to be investigated). - ; TODO: Add support in postinst.sh. + ; TODO: Add support in postinst.sh. [DONE] * source/vm/extrap.c * win32 -> win. diff --git a/harbour/INSTALL b/harbour/INSTALL index 54ff2ab2f8..3b596808f5 100644 --- a/harbour/INSTALL +++ b/harbour/INSTALL @@ -183,17 +183,14 @@ SUPPORTED C COMPILERS UNDER DIFFERENT PLATFORMS ------- mingw - MinGW GNU C mingw64 - MinGW GNU C x64 - mingwce - MinGW GNU C ARM (Windows CE) msvc - Microsoft Visual C++ msvc64 - Microsoft Visual C++ x64 msvcia64 - Microsoft Visual C++ IA64 - msvcce - Microsoft Visual C++ ARM (Windows CE) - Windows (supported, but not recommended, certain features may be missing) + Windows (supported, but not recommended, features may be missing) ------- pocc - Pelles C 4.5 and above pocc64 - Pelles C 5.0 x64 - poccce - Pelles C 5.0 ARM (Windows CE) xcc - Pelles C for xhb owatcom - Open Watcom C++ icc - Intel(R) C/C++ @@ -201,6 +198,12 @@ SUPPORTED C COMPILERS UNDER DIFFERENT PLATFORMS bcc - Borland/CodeGear C++ 4.x and above cygwin - Cygwin GNU C + Windows CE + ---------- + mingwce - MinGW GNU C ARM + msvcce - Microsoft Visual C++ ARM + poccce - Pelles C 5.0 ARM + DOS (32-bit) --- djgpp - Delorie GNU C diff --git a/harbour/bin/hb-mkdyn.bat b/harbour/bin/hb-mkdyn.bat index ef2a2858ba..1840506c77 100644 --- a/harbour/bin/hb-mkdyn.bat +++ b/harbour/bin/hb-mkdyn.bat @@ -15,40 +15,39 @@ rem NOTE: .c files have to be compiled with -DHB_DYNLIB if not "%OS%" == "Windows_NT" ( echo This script needs Windows NT or newer. && goto END ) if "%HB_ARCHITECTURE%" == "" ( echo HB_ARCHITECTURE needs to be set. && goto END ) if "%HB_COMPILER%" == "" ( echo HB_COMPILER needs to be set. && goto END ) -if not "%HB_ARCHITECTURE%" == "win" goto END set HB_DLL_VERSION=11 set HB_DLL_LIBS=hbcommon hbpp hbrtl hbmacro hblang hbcpage hbpcre hbzlib hbextern hbrdd rddntx rddnsx rddcdx rddfpt hbsix hbhsx hbusrrdd gtcgi gtpca gtstd gtwin gtwvt gtgui hbmaindllh 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 -if "%HB_COMPILER%" == "msvcce" goto DO_MSVC -if "%HB_COMPILER%" == "bcc" goto DO_BCC -if "%HB_COMPILER%" == "owatcom" goto DO_OWATCOM -if "%HB_COMPILER%" == "pocc" goto DO_POCC -if "%HB_COMPILER%" == "poccce" goto DO_POCC +if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_icc" goto DO_MSVC +if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_iccia64" goto DO_MSVC +if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_msvc" goto DO_MSVC +if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_msvc64" goto DO_MSVC +if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_msvcia64" goto DO_MSVC +if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_msvcce" goto DO_MSVC +if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_bcc" goto DO_BCC +if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_owatcom" goto DO_OWATCOM +if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_pocc" goto DO_POCC +if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_poccce" goto DO_POCC -echo HB_COMPILER %HB_COMPILER% isn't supported. +echo Platform %HB_ARCHITECTURE% / %HB_COMPILER% isn't supported. goto END :DO_MSVC -echo Making .dlls for %HB_COMPILER%... +echo Making .dlls for %HB_ARCHITECTURE% / %HB_COMPILER%... md _dll cd _dll 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 +if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_icc" set _BIN_LIB=xilib +if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_icc" set _BIN_LINK=xilink +if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_iccia64" set _BIN_LIB=xilib +if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_iccia64" set _BIN_LINK=xilink rem ; Extract neutral objects echo.> _hboneut.txt @@ -106,21 +105,21 @@ for %%f in (%HB_DLL_LIBS_MT%) do ( ) 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%" == "msvcce" set _DST_NAME_ST=harbour-%HB_DLL_VERSION%-arm -if "%HB_COMPILER%" == "msvcce" set _DST_NAME_MT=harbourmt-%HB_DLL_VERSION%-arm -if "%HB_COMPILER%" == "msvc64" set _DST_NAME_ST=harbour-%HB_DLL_VERSION%-x64 -if "%HB_COMPILER%" == "msvc64" set _DST_NAME_MT=harbourmt-%HB_DLL_VERSION%-x64 -if "%HB_COMPILER%" == "msvcia64" set _DST_NAME_ST=harbour-%HB_DLL_VERSION%-ia64 -if "%HB_COMPILER%" == "msvcia64" set _DST_NAME_MT=harbourmt-%HB_DLL_VERSION%-ia64 +if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_icc" set _DST_NAME_ST=harbour-%HB_DLL_VERSION% +if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_icc" set _DST_NAME_MT=harbourmt-%HB_DLL_VERSION% +if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_iccia64" set _DST_NAME_ST=harbour-%HB_DLL_VERSION%-ia64 +if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_iccia64" set _DST_NAME_MT=harbourmt-%HB_DLL_VERSION%-ia64 +if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_msvc" set _DST_NAME_ST=harbour-%HB_DLL_VERSION% +if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_msvc" set _DST_NAME_MT=harbourmt-%HB_DLL_VERSION% +if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_msvcce" set _DST_NAME_ST=harbour-%HB_DLL_VERSION%-arm +if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_msvcce" set _DST_NAME_MT=harbourmt-%HB_DLL_VERSION%-arm +if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_msvc64" set _DST_NAME_ST=harbour-%HB_DLL_VERSION%-x64 +if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_msvc64" set _DST_NAME_MT=harbourmt-%HB_DLL_VERSION%-x64 +if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_msvcia64" set _DST_NAME_ST=harbour-%HB_DLL_VERSION%-ia64 +if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_msvcia64" set _DST_NAME_MT=harbourmt-%HB_DLL_VERSION%-ia64 -if not "%HB_COMPILER%" == "msvcce" set _SYSLIBS=user32.lib ws2_32.lib advapi32.lib gdi32.lib -if "%HB_COMPILER%" == "msvcce" set _SYSLIBS=wininet.lib ws2.lib +if not "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_msvcce" set _SYSLIBS=user32.lib ws2_32.lib advapi32.lib gdi32.lib +if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_msvcce" set _SYSLIBS=wininet.lib ws2.lib echo Making %_DST_NAME_ST%.dll... && %_BIN_LINK% /nologo /dll /out:"%HB_BIN_INSTALL%\%_DST_NAME_ST%.dll" @_hboneut.txt @_hbost.txt %_SYSLIBS% echo Making %_DST_NAME_MT%.dll... && %_BIN_LINK% /nologo /dll /out:"%HB_BIN_INSTALL%\%_DST_NAME_MT%.dll" @_hboneut.txt @_hbomt.txt %_SYSLIBS% @@ -148,7 +147,7 @@ goto END :DO_BCC -echo Making .dlls for %HB_COMPILER%... +echo Making .dlls for %HB_ARCHITECTURE% / %HB_COMPILER%... md _dll cd _dll @@ -270,7 +269,7 @@ goto END :DO_OWATCOM -echo Making .dlls for %HB_COMPILER%... +echo Making .dlls for %HB_ARCHITECTURE% / %HB_COMPILER%... md _dll cd _dll @@ -309,7 +308,7 @@ goto END :DO_POCC -echo Making .dlls for %HB_COMPILER%... +echo Making .dlls for %HB_ARCHITECTURE% / %HB_COMPILER%... md _dll cd _dll @@ -363,13 +362,13 @@ for %%f in (%HB_DLL_LIBS_MT%) do ( ) cd .. -if "%HB_COMPILER%" == "pocc" set _DST_NAME_ST=harbour-%HB_DLL_VERSION% -if "%HB_COMPILER%" == "pocc" set _DST_NAME_MT=harbourmt-%HB_DLL_VERSION% -if "%HB_COMPILER%" == "poccce" set _DST_NAME_ST=harbour-%HB_DLL_VERSION%-arm -if "%HB_COMPILER%" == "poccce" set _DST_NAME_MT=harbourmt-%HB_DLL_VERSION%-arm +if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_pocc" set _DST_NAME_ST=harbour-%HB_DLL_VERSION% +if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_pocc" set _DST_NAME_MT=harbourmt-%HB_DLL_VERSION% +if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_poccce" set _DST_NAME_ST=harbour-%HB_DLL_VERSION%-arm +if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_poccce" set _DST_NAME_MT=harbourmt-%HB_DLL_VERSION%-arm -if "%HB_COMPILER%" == "pocc" set _SYSLIBS=user32.lib ws2_32.lib advapi32.lib gdi32.lib -if "%HB_COMPILER%" == "poccce" set _SYSLIBS=wininet.lib ws2.lib +if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_pocc" set _SYSLIBS=user32.lib ws2_32.lib advapi32.lib gdi32.lib +if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_poccce" set _SYSLIBS=wininet.lib ws2.lib echo Making %_DST_NAME_ST%.dll... && polink /nologo /dll /out:"%HB_BIN_INSTALL%\%_DST_NAME_ST%.dll" @_hboneut.txt @_hbost.txt %_SYSLIBS% echo Making %_DST_NAME_MT%.dll... && polink /nologo /dll /out:"%HB_BIN_INSTALL%\%_DST_NAME_MT%.dll" @_hboneut.txt @_hbomt.txt %_SYSLIBS% diff --git a/harbour/config/win/bcc.cf b/harbour/config/win/bcc.cf index f8c468b0bc..b5322aa632 100644 --- a/harbour/config/win/bcc.cf +++ b/harbour/config/win/bcc.cf @@ -23,6 +23,9 @@ CFLAGS += -w -w-sig- -Q endif ifneq ($(HB_BUILD_OPTIM),no) +# for some reason -6 generates the exact same code as -4 +# with both 5.5 and 5.8. -5 seems to be significantly slower +# than both. CFLAGS += -d -6 -O2 -OS -Ov -Oi -Oc endif diff --git a/harbour/external/libhpdf/Makefile b/harbour/external/libhpdf/Makefile index 5746ee4c0a..0007324145 100644 --- a/harbour/external/libhpdf/Makefile +++ b/harbour/external/libhpdf/Makefile @@ -18,6 +18,9 @@ endif ifeq ($(HB_COMPILER),poccce) HB_WITH_LIBHPDF=no endif +ifeq ($(HB_COMPILER),pocc64) +HB_WITH_LIBHPDF=no +endif endif ifeq ($(HB_WITH_LIBHPDF),yes) diff --git a/harbour/include/hbatomic.h b/harbour/include/hbatomic.h index 3bf926e932..5f347ef88a 100644 --- a/harbour/include/hbatomic.h +++ b/harbour/include/hbatomic.h @@ -260,8 +260,7 @@ HB_EXTERN_BEGIN #elif defined( _MSC_VER ) -# if defined( i386 ) || defined( __i386__ ) || defined( __x86_64__ ) || \ - defined( _M_IX86 ) || defined( _M_AMD64 ) +# if defined( i386 ) || defined( __i386__ ) || defined( _M_IX86 ) # if HB_COUNTER_SIZE == 4 diff --git a/harbour/mpkg_win.bat b/harbour/mpkg_win.bat index dca8327fef..27ccc04f76 100644 --- a/harbour/mpkg_win.bat +++ b/harbour/mpkg_win.bat @@ -27,9 +27,9 @@ setlocal rem ; Basic setup set HB_VERSION=1.1.0dev -set HB_ARCHITECTURE=win +if "%HB_ARCHITECTURE%" == "" set HB_ARCHITECTURE=win set HB_PKGNAME=harbour-%HB_VERSION%-%HB_ARCHITECTURE%-%HB_COMPILER% -set HB_DIRNAME=harbour-%HB_COMPILER% +set HB_DIRNAME=harbour-%HB_ARCHITECTURE%-%HB_COMPILER% rem ; Dir setup set HB_INSTALL_BASE=%~dp0_hb_install_temp diff --git a/harbour/utils/hbmk2/hbmk2.prg b/harbour/utils/hbmk2/hbmk2.prg index c43a0502bb..6def7a674c 100644 --- a/harbour/utils/hbmk2/hbmk2.prg +++ b/harbour/utils/hbmk2/hbmk2.prg @@ -1498,7 +1498,7 @@ FUNCTION Main( ... ) cLibPathPrefix := "LIBPATH " cLibPathSep := " " cBin_CompC := "wpp386.exe" - cOpt_CompC := "-zq -w3 -5r -fp5 -onaehtri+ -s -ei -zp4 -zt0 -bt=NT {FC} -i{DI} {LC}" + cOpt_CompC := "-zq -w3 -6s -fp6 -onaehtri+ -s -ei -zp4 -zt0 -bt=NT {FC} -i{DI} {LC}" cBin_Link := "wlink.exe" cOpt_Link := "{FL} NAME {OE} {LO} {DL} {LL} {LS}{SCRIPT}" cBin_Lib := "wlib.exe" @@ -1799,10 +1799,10 @@ FUNCTION Main( ... ) /* TODO */ CASE t_cARCH == "linux" .AND. t_cCOMP == "icc" - CASE t_cARCH == "win" .AND. t_cCOMP == "msvcce" /* NOTE: Cross-platform: wince/ARM on win/x86 */ + CASE t_cARCH == "win" .AND. t_cCOMP == "msvcce" /* NOTE: Cross-platform: wce/ARM on win/x86 */ CASE t_cARCH == "win" .AND. t_cCOMP == "pocc64" /* NOTE: Cross-platform: win/amd64 on win/x86 */ - CASE t_cARCH == "win" .AND. t_cCOMP == "poccce" /* NOTE: Cross-platform: wince/ARM on win/x86 */ - CASE t_cARCH == "linux" .AND. t_cCOMP == "mingwce" /* NOTE: Cross-platform: wince/ARM on win/x86 */ + CASE t_cARCH == "win" .AND. t_cCOMP == "poccce" /* NOTE: Cross-platform: wce/ARM on win/x86 */ + CASE t_cARCH == "linux" .AND. t_cCOMP == "mingwce" /* NOTE: Cross-platform: wce/ARM on win/x86 */ IF ! s_lSHARED s_aLIBSYS := ArrayJoin( s_aLIBSYS, { "wininet", "ws2", "commdlg", "commctrl" } ) s_aLIBSYS := ArrayJoin( s_aLIBSYS, { "uuid", "ole32" } )