2009-03-04 08:00 UTC+0100 Viktor Szakats (harbour.01 syenar hu)

* INSTALL
    * HB_INC_OPENSSL sample corrected to point to real-life header dir.
    + Added cygwin compiler. gcc temply removed from doc list.
    % Removed unnecessary -n hbmk2 switches.
    + Added cygwin section.

  * utils/hbmk2/hbmk2.prg
    + Don't add gtnul as a real library.
      Please test, I've never used GTNUL.
    + Added support for cygwin compiler value.
      (works the same as current 'win/gcc' combination)
    ! Typo in rare error messages.
    ! Removed -no-cygwin option from cygwin gcc command line.

  * source/common/hbprintf.c
  * contrib/hbssl/sslrand.c
    ! Fixed to compile with cygwin.
    ; TOFIX:
      when running hbtest.exe:
      Error DBFNTX/1011  Write error: _hbtmp_.dbf
      Called from DBCREATE(0)
      Called from TEST_BEGIN(0)
      Called from MAIN(0)

  * make_gnu.sh
    + Added cygwin detection.

  * config/win/gcc.cf
  + config/win/cygwin.cf
    + Added separate cygwin make config.
      gcc is now just a map to cygwin.
This commit is contained in:
Viktor Szakats
2009-03-04 07:00:29 +00:00
parent ab44eb5858
commit e4d64e698b
8 changed files with 178 additions and 118 deletions

View File

@@ -8,6 +8,39 @@
2009-12-31 13:59 UTC+0100 Foo Bar (foo.bar foobar.org)
*/
2009-03-04 08:00 UTC+0100 Viktor Szakats (harbour.01 syenar hu)
* INSTALL
* HB_INC_OPENSSL sample corrected to point to real-life header dir.
+ Added cygwin compiler. gcc temply removed from doc list.
% Removed unnecessary -n hbmk2 switches.
+ Added cygwin section.
* utils/hbmk2/hbmk2.prg
+ Don't add gtnul as a real library.
Please test, I've never used GTNUL.
+ Added support for cygwin compiler value.
(works the same as current 'win/gcc' combination)
! Typo in rare error messages.
! Removed -no-cygwin option from cygwin gcc command line.
* source/common/hbprintf.c
* contrib/hbssl/sslrand.c
! Fixed to compile with cygwin.
; TOFIX:
when running hbtest.exe:
Error DBFNTX/1011 Write error: _hbtmp_.dbf
Called from DBCREATE(0)
Called from TEST_BEGIN(0)
Called from MAIN(0)
* make_gnu.sh
+ Added cygwin detection.
* config/win/gcc.cf
+ config/win/cygwin.cf
+ Added separate cygwin make config.
gcc is now just a map to cygwin.
2009-03-04 02:16 UTC+0100 Viktor Szakats (harbour.01 syenar hu)
* mpkg_win.bat
! Fixed dirs inside the .zip file.

View File

@@ -29,7 +29,7 @@ HOW TO BUILD AND INSTALL HARBOUR
$ sudo ./make_gnu.sh install
To test it, go to <DIR>/bin directory and type:
$ ./hbmk2 -n ../tests/hello.prg
$ ./hbmk2 ../tests/hello.prg
$ ./hello
You should see 'Hello world!' on screen.
@@ -37,17 +37,33 @@ HOW TO BUILD AND INSTALL HARBOUR
-------------------------
This is the recommended way to build with MinGW.
Make sure to have msys and MinGW properly installed
and setup. msys should be put in PATH _before_ MinGW.
Make sure to have msys and MinGW properly configured.
msys should be put in PATH _before_ MinGW.
> set HB_INSTALL_PREFIX=<DIR>
> sh make_gnu.sh install
To test it, go to <DIR>/bin directory and type:
> hbmk2 -n ../tests/hello.prg
> hbmk2 ../tests/hello.prg
> hello
You should see 'Hello world!' on screen.
Windows with Cygwin
-------------------
Make sure to have Cygwin properly properly configured.
Make sure to use Harbour sources with LF line termination,
if you see a bash error, try 'dos2unix make_gnu.sh'.
> set HB_INSTALL_PREFIX=<DIR>
> sh make_gnu.sh install
To test it, go to <DIR>/bin directory and type:
> hbmk2 ../tests/hello.prg
> hello
You should see 'Hello world!' on screen.
NOTE: <DIR> should use Cygwin drive notation: /cygdrive/c/
Windows with other compilers
----------------------------
Platform specific prerequisites:
@@ -75,7 +91,7 @@ HOW TO BUILD AND INSTALL HARBOUR
> make_gnu.bat install
To test it, go to <DIR>\bin directory and type:
> hbmk2 -n ..\tests\hello.prg
> hbmk2 ..\tests\hello.prg
> hello
You should see 'Hello world!' on screen.
@@ -131,7 +147,7 @@ HOW TO ENABLE OPTIONAL COMPONENTS BEFORE BUILD
HB_INC_GD=C:\gd\include
HB_INC_LIBHARU=C:\libharu\include
HB_INC_MYSQL=C:\mysql\include
HB_INC_OPENSSL=C:\openssl
HB_INC_OPENSSL=C:\openssl\inc32
HB_INC_PGSQL=C:\pgsql\include
@@ -157,7 +173,7 @@ SUPPORTED C COMPILERS UNDER DIFFERENT PLATFORMS
msvc - Microsoft Visual C++
owatcom - Open Watcom C++
bcc - Borland/CodeGear C++ 4.x and above
gcc - Cygwin GNU C
cygwin - Cygwin GNU C
rxsnt - EMX/RSXNT/Windows GNU C
icc - IBM Visual Age C++
dmc - Digital Mars C

View File

@@ -0,0 +1,77 @@
#
# $Id$
#
include $(TOP)$(ROOT)config/$(HB_ARCHITECTURE)/global.cf
OBJ_EXT = .o
EXE_EXT = .exe
LIB_PREF = lib
LIB_EXT = .a
CC = gcc
CC_IN = -c
CC_OUT = -o
CPPFLAGS = -I. -I$(HB_INC_COMPILE)
CFLAGS = -Wall -W -O3 -march=i586 -mtune=pentiumpro
LD = gcc
LD_OUT = -o
# Add all libraries specified in CONTRIBS and LIBS.
ifeq ($(HB_LIB_COMPILE),)
LINKPATHS += -L$(LIB_DIR)
else
LINKPATHS += -L$(HB_LIB_COMPILE)
endif
# The -( option could be appropriate to link against libraries with
# cyclic dependencies, but I think it is not really necessary if the
# libraries are kept in proper order.
# LINKLIBS += -Wl,-(
LINKLIBS += $(foreach lib, $(CONTRIBS), -l$(subst lib,,$(lib)))
LINKLIBS += $(foreach lib, $(LIBS), -l$(lib))
# This library is needed for CharToOemBuff() and OemToCharBuff() support.
LINKLIBS += -luser32 -lgdi32 -lwsock32
# If LIBS specifies the rdd library, add all DB drivers.
ifeq ($(findstring rdd,$(LIBS)),rdd)
LINKLIBS += $(foreach drv, $(HB_DB_DRIVERS), -l$(drv))
endif
# Add the specified GT driver library
ifeq ($(findstring rtl,$(LIBS)),rtl)
LINKLIBS += $(foreach gt, $(HB_GT_LIBS), -l$(gt)) -lhbrtl
endif
# HB_SCREEN_LIB: empty, or one of ncurses, slang
# HB_SCREEN_LIB=ncurses
# HB_SCREEN_LIB=slang
ifneq ($(HB_SCREEN_LIB),)
LINKLIBS += -l$(HB_SCREEN_LIB)
endif
# Add the optional user path(s)
ifneq ($(LNK_USR_PATH),)
LINKPATHS += $(foreach path, $(LNK_USR_PATH), -L$(path))
endif
# Add the optional user libarary (or libraries)
ifneq ($(LNK_USR_LIB),)
LINKLIBS += $(foreach lib, $(LNK_USR_LIB), -l$(lib))
endif
# The -) option could be appropriate to link against libraries with
# cyclic dependencies, but I think it is not really necessary if the
# libraries are kept in proper order.
# LINKLIBS += -Wl,-)
LDFLAGS = $(LINKPATHS)
AR = ar
ARFLAGS = $(HB_USER_AFLAGS)
AR_RULE = $(AR) $(ARFLAGS) r $(LIB_DIR)/$@ $(^F) || $(RM) $(LIB_DIR)/$@
include $(TOP)$(ROOT)config/rules.cf

View File

@@ -2,76 +2,4 @@
# $Id$
#
include $(TOP)$(ROOT)config/$(HB_ARCHITECTURE)/global.cf
OBJ_EXT = .o
EXE_EXT = .exe
LIB_PREF = lib
LIB_EXT = .a
CC = gcc
CC_IN = -c
CC_OUT = -o
CPPFLAGS = -I. -I$(HB_INC_COMPILE)
CFLAGS = -Wall -W -O3 -march=i586 -mtune=pentiumpro
LD = gcc
LD_OUT = -o
# Add all libraries specified in CONTRIBS and LIBS.
ifeq ($(HB_LIB_COMPILE),)
LINKPATHS += -L$(LIB_DIR)
else
LINKPATHS += -L$(HB_LIB_COMPILE)
endif
# The -( option could be appropriate to link against libraries with
# cyclic dependencies, but I think it is not really necessary if the
# libraries are kept in proper order.
# LINKLIBS += -Wl,-(
LINKLIBS += $(foreach lib, $(CONTRIBS), -l$(subst lib,,$(lib)))
LINKLIBS += $(foreach lib, $(LIBS), -l$(lib))
# This library is needed for CharToOemBuff() and OemToCharBuff() support.
LINKLIBS += -luser32 -lgdi32 -lwsock32
# If LIBS specifies the rdd library, add all DB drivers.
ifeq ($(findstring rdd,$(LIBS)),rdd)
LINKLIBS += $(foreach drv, $(HB_DB_DRIVERS), -l$(drv))
endif
# Add the specified GT driver library
ifeq ($(findstring rtl,$(LIBS)),rtl)
LINKLIBS += $(foreach gt, $(HB_GT_LIBS), -l$(gt)) -lhbrtl
endif
# HB_SCREEN_LIB: empty, or one of ncurses, slang
# HB_SCREEN_LIB=ncurses
# HB_SCREEN_LIB=slang
ifneq ($(HB_SCREEN_LIB),)
LINKLIBS += -l$(HB_SCREEN_LIB)
endif
# Add the optional user path(s)
ifneq ($(LNK_USR_PATH),)
LINKPATHS += $(foreach path, $(LNK_USR_PATH), -L$(path))
endif
# Add the optional user libarary (or libraries)
ifneq ($(LNK_USR_LIB),)
LINKLIBS += $(foreach lib, $(LNK_USR_LIB), -l$(lib))
endif
# The -) option could be appropriate to link against libraries with
# cyclic dependencies, but I think it is not really necessary if the
# libraries are kept in proper order.
# LINKLIBS += -Wl,-)
LDFLAGS = $(LINKPATHS)
AR = ar
ARFLAGS = $(HB_USER_AFLAGS)
AR_RULE = $(AR) $(ARFLAGS) r $(LIB_DIR)/$@ $(^F) || $(RM) $(LIB_DIR)/$@
include $(TOP)$(ROOT)config/rules.cf
include $(TOP)$(ROOT)config/$(HB_ARCHITECTURE)/cygwin.cf

View File

@@ -74,7 +74,7 @@ HB_FUNC( SSL_RAND_STATUS )
HB_FUNC( SSL_RAND_EVENT )
{
#if defined( HB_OS_WIN )
#if defined( HB_OS_WIN ) && ! defined( __CYGWIN__ )
hb_retni( RAND_event( hb_parni( 1 ), ( WPARAM ) hb_parnint( 2 ), ( LPARAM ) hb_parnint( 3 ) ) );
#else
hb_retni( 0 );
@@ -83,7 +83,7 @@ HB_FUNC( SSL_RAND_EVENT )
HB_FUNC( SSL_RAND_SCREEN )
{
#if defined( HB_OS_WIN )
#if defined( HB_OS_WIN ) && ! defined( __CYGWIN__ )
RAND_screen();
#endif
}

View File

@@ -22,6 +22,7 @@ if [ -z "$HB_ARCHITECTURE" ]; then
hb_arch=`uname -s | tr -d "[-]" | tr '[A-Z]' '[a-z]' 2>/dev/null`
case "$hb_arch" in
*windows*|*mingw32*|msys*) hb_arch="win" ;;
cygwin*) hb_arch="cyg" ;;
*os/2*) hb_arch="os2" ;;
*dos) hb_arch="dos" ;;
*bsd) hb_arch="bsd" ;;
@@ -33,12 +34,18 @@ fi
if [ -z "$HB_COMPILER" ]; then
case "$HB_ARCHITECTURE" in
win) HB_COMPILER="mingw" ;;
cyg) HB_COMPILER="cygwin" ;;
dos) HB_COMPILER="djgpp" ;;
*) HB_COMPILER="gcc" ;;
esac
export HB_COMPILER
fi
if [ "$HB_ARCHITECTURE" == "cyg" ]
then
export HB_ARCHITECTURE=win
fi
if [ -z "$HB_GPM_MOUSE" ]; then
if [ "$HB_ARCHITECTURE" = "linux" ] && \
( [ -f /usr/include/gpm.h ] || [ -f /usr/local/include/gpm.h ]); then
@@ -159,7 +166,6 @@ if [ "$HB_ARCHITECTURE" == "win" ] || \
mkdir -p $HB_LIB_INSTALL
mkdir -p $HB_INC_INSTALL
mkdir -p $HB_DOC_INSTALL
echo !!! $HB_BIN_INSTALL
fi
if [ -z "$HB_ARCHITECTURE" ]; then

View File

@@ -271,7 +271,7 @@ optimized.
# define _MODFD( x, p ) modf( x, p )
# else
# define _x_long_dbl long double
# if defined( __WATCOMC__ ) || defined( __MINGW32CE__ )
# if defined( __WATCOMC__ ) || defined( __MINGW32CE__ ) || defined( __CYGWIN__ )
# define _HB_WRAP_MODFL_
# define _MODFD( x, p ) _hb_modfl( x, p )
# else

View File

@@ -405,8 +405,8 @@ FUNCTION Main( ... )
OTHERWISE ; cDynLibExt := ".so"
ENDSWITCH
CASE t_cARCH == "dos"
aCOMPDET := { { {|| FindInPath( "gcc" ) != NIL }, "djgpp" },;
{ {|| FindInPath( "wpp386" ) != NIL }, "owatcom" } } /* TODO: Add full support for wcc386 */
aCOMPDET := { { {|| FindInPath( "gcc" ) != NIL }, "djgpp" },;
{ {|| FindInPath( "wpp386" ) != NIL }, "owatcom" } } /* TODO: Add full support for wcc386 */
aCOMPSUP := { "djgpp", "gcc", "owatcom", "rsx32" }
cBin_CompPRG := "harbour.exe"
s_aLIBHBGT := { "gtdos" }
@@ -415,9 +415,9 @@ FUNCTION Main( ... )
cDynLibExt := ""
cBinExt := ".exe"
CASE t_cARCH == "os2"
aCOMPDET := { { {|| FindInPath( "gcc" ) != NIL }, "gcc" },;
{ {|| FindInPath( "wpp386" ) != NIL }, "owatcom" },; /* TODO: Add full support for wcc386 */
{ {|| FindInPath( "icc" ) != NIL }, "icc" } }
aCOMPDET := { { {|| FindInPath( "gcc" ) != NIL }, "gcc" },;
{ {|| FindInPath( "wpp386" ) != NIL }, "owatcom" },; /* TODO: Add full support for wcc386 */
{ {|| FindInPath( "icc" ) != NIL }, "icc" } }
aCOMPSUP := { "gcc", "owatcom", "icc" }
cBin_CompPRG := "harbour.exe"
s_aLIBHBGT := { "gtos2" }
@@ -428,20 +428,22 @@ FUNCTION Main( ... )
CASE t_cARCH == "win"
/* Order is significant.
owatcom also keeps a cl.exe in it's binary dir. */
aCOMPDET := { { {|| FindInPath( "gcc" ) != NIL }, "mingw" },; /* TODO: Add full support for g++ */
{ {|| FindInPath( "wpp386" ) != NIL .AND. ;
aCOMPDET := { { {|| FindInPath( "gcc" ) != NIL }, "mingw" },; /* TODO: Add full support for g++ */
{ {|| FindInPath( "wpp386" ) != NIL .AND. ;
! Empty( GetEnv( "WATCOM" ) ) }, "owatcom" },; /* TODO: Add full support for wcc386 */
{ {|| FindInPath( "ml64" ) != NIL }, "msvc64" },;
{ {|| FindInPath( "cl" ) != NIL .AND. ;
FindInPath( "wpp386" ) == NIL }, "msvc" },;
{ {|| FindInPath( "bcc32" ) != NIL }, "bcc" },;
{ {|| FindInPath( "porc64" ) != NIL }, "pocc64" },;
{ {|| FindInPath( "pocc" ) != NIL }, "pocc" },;
{ {|| FindInPath( "dmc" ) != NIL }, "dmc" },;
{ {|| FindInPath( "icc" ) != NIL }, "icc" },;
{ {|| FindInPath( "xcc" ) != NIL }, "xcc" } }
/* TODO: "mingwce", "msvcce", "poccce" */
aCOMPSUP := { "gcc", "mingw", "msvc", "msvc64", "msvcia64", "bcc", "owatcom", "pocc", "pocc64", "rsxnt", "xcc", "dmc", "icc" }
{ {|| FindInPath( "ml64" ) != NIL }, "msvc64" },;
{ {|| FindInPath( "cl" ) != NIL .AND. ;
FindInPath( "wpp386" ) == NIL }, "msvc" },;
{ {|| FindInPath( "bcc32" ) != NIL }, "bcc" },;
{ {|| FindInPath( "porc64" ) != NIL }, "pocc64" },;
{ {|| FindInPath( "pocc" ) != NIL }, "pocc" },;
{ {|| FindInPath( "dmc" ) != NIL }, "dmc" },;
{ {|| FindInPath( "icc" ) != NIL }, "icc" },;
{ {|| FindInPath( "cygstart" ) != NIL }, "cygwin" },;
{ {|| FindInPath( "xcc" ) != NIL }, "xcc" } }
aCOMPSUP := { "gcc", "mingw", "msvc", "bcc", "owatcom", "pocc", "rsxnt", "xcc", "dmc", "icc", "cygwin",;
"msvc64", "msvcia64", "pocc64",;
"mingwce", "msvcce", "poccce" }
cBin_CompPRG := "harbour.exe"
s_aLIBHBGT := { "gtwin", "gtwvt", "gtgui" }
t_cGTDEFAULT := "gtwin"
@@ -756,7 +758,7 @@ FUNCTION Main( ... )
cParam := NIL
ENDIF
ENDIF
IF ! Empty( cParam )
IF ! Empty( cParam ) .AND. !( Lower( cParam ) == "gtnul" )
IF AScan( t_aLIBCOREGT, {|tmp| Lower( tmp ) == cParamL } ) == 0 .AND. ;
AScan( s_aLIBUSERGT, {|tmp| Lower( tmp ) == cParamL } ) == 0
AAddNotEmpty( s_aLIBUSERGT, PathSepToTarget( cParam ) )
@@ -1149,6 +1151,7 @@ FUNCTION Main( ... )
CASE ( t_cARCH == "win" .AND. t_cCOMP == "gcc" ) .OR. ;
( t_cARCH == "win" .AND. t_cCOMP == "mingw" ) .OR. ;
( t_cARCH == "win" .AND. t_cCOMP == "cygwin" ) .OR. ;
( t_cARCH == "win" .AND. t_cCOMP == "rsxnt" )
cLibPrefix := "-l"
@@ -1169,9 +1172,6 @@ FUNCTION Main( ... )
IF s_lSHARED
AAdd( s_aLIBPATH, "{DB}" )
ENDIF
IF t_cCOMP == "gcc"
cOpt_CompC += " -mno-cygwin"
ENDIF
IF t_cCOMP == "rsxnt"
cOpt_CompC += " -Zwin32"
ENDIF
@@ -1205,7 +1205,7 @@ FUNCTION Main( ... )
cOpt_Res := "{LR} -o {LS}"
cResExt := ".o"
ELSE
OutErr( "hbmk: Warning: Resource files ignored. Multiple ones not support for mingw." + hb_osNewLine() )
OutErr( "hbmk: Warning: Resource files ignored. Multiple ones not supported with mingw." + hb_osNewLine() )
ENDIF
ENDIF
@@ -1290,7 +1290,7 @@ FUNCTION Main( ... )
cResPrefix := "OP res="
cResExt := ".res"
ELSE
OutErr( "hbmk: Warning: Resource files ignored. Multiple ones not support for owatcom." + hb_osNewLine() )
OutErr( "hbmk: Warning: Resource files ignored. Multiple ones not supported with owatcom." + hb_osNewLine() )
ENDIF
ENDIF
@@ -1562,9 +1562,9 @@ FUNCTION Main( ... )
"LNK4217: locally defined symbol ... imported in function ..."
if using 'dllimport'. [vszakats] */
tmp := ""
CASE t_cCOMP $ "gcc|mingw" ; tmp := "__attribute__ (( dllimport ))"
CASE t_cCOMP == "bcc|owatcom" ; tmp := "__declspec( dllimport )"
OTHERWISE ; tmp := "_declspec( dllimport )"
CASE t_cCOMP $ "gcc|mingw|cygwin" ; tmp := "__attribute__ (( dllimport ))"
CASE t_cCOMP == "bcc|owatcom" ; tmp := "__declspec( dllimport )"
OTHERWISE ; tmp := "_declspec( dllimport )"
ENDCASE
/* Create list of requested symbols */
@@ -1984,7 +1984,7 @@ STATIC FUNCTION ListCookLib( arraySrc, cPrefix, cExtNew )
LOCAL cDir
LOCAL cLibName
IF t_cCOMP $ "gcc|gpp|mingw|djgpp|rsxnt|rsx32"
IF t_cCOMP $ "gcc|gpp|mingw|djgpp|rsxnt|rsx32|cygwin"
FOR EACH cLibName IN array
hb_FNameSplit( cLibName, @cDir )
IF Empty( cDir )
@@ -2120,7 +2120,7 @@ STATIC FUNCTION PathSepToSelf( cFileName )
STATIC FUNCTION PathSepToTarget( cFileName )
IF t_cARCH $ "win|dos|os2" .AND. !( t_cCOMP $ "mingw|mingwce" )
IF t_cARCH $ "win|dos|os2" .AND. !( t_cCOMP $ "mingw|mingwce|cygwin" )
RETURN StrTran( cFileName, "/", "\" )
ENDIF
@@ -2432,7 +2432,7 @@ STATIC PROCEDURE HBP_ProcessOne( cFileName,;
IF ! SetupForGT( cLine, @t_cGTDEFAULT, @lGUI )
cLine := NIL
ENDIF
IF ! Empty( cLine )
IF ! Empty( cLine ) .AND. !( Lower( cLine ) == "gtnul" )
IF AScan( t_aLIBCOREGT, {|tmp| Lower( tmp ) == Lower( cLine ) } ) == 0 .AND. ;
AScan( aLIBUSERGT , {|tmp| Lower( tmp ) == Lower( cLine ) } ) == 0
AAddNotEmpty( aLIBUSERGT, PathSepToTarget( cLine ) )
@@ -2447,7 +2447,7 @@ STATIC PROCEDURE HBP_ProcessOne( cFileName,;
cLine := NIL
ENDIF
ENDIF
IF ! Empty( cLine )
IF ! Empty( cLine ) .AND. !( Lower( cLine ) == "gtnul" )
IF AScan( t_aLIBCOREGT, {|tmp| Lower( tmp ) == Lower( cLine ) } ) == 0 .AND. ;
AScan( aLIBUSERGT , {|tmp| Lower( tmp ) == Lower( cLine ) } ) == 0
AAddNotEmpty( aLIBUSERGT, PathSepToTarget( cLine ) )
@@ -2658,7 +2658,7 @@ STATIC FUNCTION getFirstFunc( cFile )
LOCAL cFuncList, cExecNM, cFuncName, cExt, cLine, n, c
cFuncName := ""
IF t_cCOMP $ "gcc|gpp|mingw"
IF t_cCOMP $ "gcc|gpp|mingw|cygwin"
hb_FNameSplit( cFile,,, @cExt )
IF cExt == ".c"
FOR EACH cLine IN hb_ATokens( StrTran( hb_MemoRead( cFile ), Chr( 13 ), Chr( 10 ) ), Chr( 10 ) )
@@ -2790,8 +2790,8 @@ STATIC PROCEDURE ShowHelp( lLong )
" - Supported <comp> values for each supported <arch> value:" ,;
" linux : gcc, gpp, owatcom, icc, mingw, mingwce" ,;
" darwin : gcc" ,;
" win : gcc, mingw, msvc, bcc, owatcom, pocc, dmc, rsxnt, xcc, icc" ,;
" mingwce, msvc64, msvcia64, msvcce, pocc64, poccce" ,;
" win : gcc, mingw, msvc, bcc, owatcom, pocc, dmc, rsxnt, icc, cygwin" ,;
" mingwce, msvc64, msvcia64, msvcce, pocc64, poccce, xcc" ,;
" os2 : gcc, owatcom, icc" ,;
" dos : gcc, djgpp, owatcom, rsx32" ,;
" bsd, hpux, sunos: gcc" }