diff --git a/ChangeLog.txt b/ChangeLog.txt index 481ded89f5..c4452c39f9 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -7,6 +7,46 @@ Entries may not always be in chronological/commit order. See license at the end of file. */ +2019-02-11 13:43 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl) + * bin/commit.hb + ! fixed UTC offset formatting + + * contrib/hbwin/win_os.prg + * updated win_osNetRegOk() for modern MS-Windows versions: + - on Win7 and upper set + System\CurrentControlSet\Services\LanmanServer\Parameters\DisableLeasing + to disable opportunistic locks. + - do not force SMB1 to disable oplocks on Win7 and upper - new MS-Win10 + does not support SMB1 at all so this setting on the server with + such system completely disables SMB network and forcing SMB1 on the + client side blocks access to new Win10 servers. + Warning! this setting is still activated on Vista so it cannot + connect work with new Win10 but I do not know any other + working method to disable oplocks in Windows Vista. + * synced with Viktor's branch + + * contrib/xhb/hbserv.c + ! added missing return + + * include/harbour.hbx + * src/harbour.def + * src/rtl/version.c + + added new PRG functions: + hb_osIsWin7(), hb_osIsWin8(), hb_osIsWin81(), hb_osIsWin10() + + * src/rtl/gttrm/gttrm.c + + added autodetection for few other XTerm compatible terminals + + respect color extension in TERM name of all XTerm compatible + terminals + + * utils/hbmk2/hbmk2.prg + + added support for -cpp=isoXX borowed from Viktor's branch + + * contrib/gtqtc/gtqtc.hbc + * contrib/gtqtc/gtqtc.hbp + * use -cpp=iso11 required for QT 5.7.0 or upper + * extended QT detection and partial syncing with Viktor's branch + 2019-02-11 13:09 UTC+0100 Aleksander Czajczynski (hb fki.pl) * contrib/sddsqlt3/core.c ! fix DBUSEAREA() operation with SQLITE3 SDD to return empty result diff --git a/bin/commit.hb b/bin/commit.hb index 2c4bb90163..4a63d411a6 100755 --- a/bin/commit.hb +++ b/bin/commit.hb @@ -205,8 +205,8 @@ STATIC FUNCTION MakeEntry( aChanges, cMyName, cLogName, lAllowChangeLog ) LOCAL cLog := hb_StrFormat( "%1$s UTC%2$s%3$02d%4$02d %5$s", ; hb_TToC( hb_DateTime(), "YYYY-MM-DD", "HH:MM" ), ; iif( nOffset < 0, "-", "+" ), ; - Int( nOffset / 3600 ), ; - Int( ( ( nOffset / 3600 ) - Int( nOffset / 3600 ) ) * 60 ), ; + Int( Abs( nOffset ) / 3600 ), ; + Int( Abs( nOffset ) % 3600 / 60 ), ; cMyName ) + hb_eol() LOCAL cLine diff --git a/contrib/gtqtc/gtqtc.hbc b/contrib/gtqtc/gtqtc.hbc index abf732e402..f6011622ce 100644 --- a/contrib/gtqtc/gtqtc.hbc +++ b/contrib/gtqtc/gtqtc.hbc @@ -1,23 +1,32 @@ -description=Multi-Platform QT based GUI console (QTC) +description=Multi-platform QT based GUI console (QTC) gt=${_HB_DYNPREF}${hb_name}${_HB_DYNSUFF} +deppkgname=qt5:qt5 depcontrol=qt5:${HB_WITH_QT} depkeyhead=qt5:QtCore/QJsonObject depoptional=qt5:yes depincpath=qt5:/usr/local/opt/qt5/include{darwin} +depincpath=qt5:/usr/local/include/qt5{bsd} depfinish=qt5 -{!HBMK_HAS_QT5&darwin}depcontrol=qt:${HB_WITH_QT} -{!HBMK_HAS_QT5&darwin}depkeyhead=qt:QtCore/qglobal.h +{!HBMK_HAS_QT5&!darwin&!android}deppkgname=qt:QtCore +{!HBMK_HAS_QT5}deppkgname=qt:qt4 +{!HBMK_HAS_QT5}depcontrol=qt:${HB_WITH_QT} +{!HBMK_HAS_QT5}depkeyhead=qt:QtCore/qglobal.h +{!HBMK_HAS_QT5&bsd}depincpath=qt:/usr/local/include/qt4 +{!HBMK_HAS_QT5&beos}depincpath=qt:/boot/common/include {!HBMK_HAS_QT5&darwin}depincpath=qt:/Developer/qt/include {!HBMK_HAS_QT5&darwin}depincpath=qt:/Library/Frameworks {!HBMK_HAS_QT5&darwin}depincpath=qt:/usr/local/include -{!HBMK_HAS_QT5&darwin}depfinish=qt +{!HBMK_HAS_QT5}depfinish=qt -{(allwin|os2)|HB_WITH_QT}libpaths=${HB_WITH_QT}/../lib +{(allwin|os2)|HBMK_HAS_QT}libpaths=${HBMK_DIR_QT}/../lib +{(allwin|os2)|HBMK_HAS_QT5}libpaths=${HBMK_DIR_QT5}/../lib +{bsd&HBMK_HAS_QT}libpaths=/usr/local/lib/qt4 +{bsd&HBMK_HAS_QT5}libpaths=/usr/local/lib/qt5 {(allwin|os2)&!HBMK_HAS_QT5}libs=QtCore4 QtGui4 -{(allwin|os2|linux|beos|symbian)&HBMK_HAS_QT5}libs=Qt5Core Qt5Gui Qt5Widgets +{(allwin|os2|linux|bsd|beos|symbian)&HBMK_HAS_QT5}libs=Qt5Core Qt5Gui Qt5Widgets {(linux|beos|symbian)&!HBMK_HAS_QT5}libs=QtCore QtGui {!HBMK_HAS_QT5&darwin}ldflags=-F${HBMK_DIR_QT}/../lib {!HBMK_HAS_QT5&darwin}dflags=-F${HBMK_DIR_QT}/../lib @@ -25,7 +34,7 @@ depfinish=qt5 {HBMK_HAS_QT5&darwin}dflags=-F${HBMK_DIR_QT5}/../lib {darwin}frameworks=QtCore QtGui {darwin&HBMK_HAS_QT5}frameworks=QtWidgets -{(bsd|darwin)}libs=stdc++ +{bsd|darwin}libs=stdc++ cpp=yes gui=yes diff --git a/contrib/gtqtc/gtqtc.hbp b/contrib/gtqtc/gtqtc.hbp index 51cbdf69a5..a7d8262417 100644 --- a/contrib/gtqtc/gtqtc.hbp +++ b/contrib/gtqtc/gtqtc.hbp @@ -5,20 +5,32 @@ -w3 -es2 +# Tone down warnings for both QT4 and QT5 +-warn=low{allclang} + -stop{dos|watcom|bcc|pocc|pocc64|poccarm|msvcia64|pcc|(hbdyn&android)} -pic +# NOTE: You can override auto-detection of QT 'moc' tool by using HB_QTPATH and +# optionally HB_QTSUFFIX envvars. This may only be necessary on some *nix +# systems. E.g.: +# +# HB_QTPATH=/opt/qt5/bin/ +# HB_QTSUFFIX= + -plugin=hbmk2_qtgt.hb --depcontrol=qt5:${HB_WITH_QT} +-deppkgname=qt5:qt5 -depkeyhead=qt5:QtCore/QJsonObject +-depcontrol=qt5:${HB_WITH_QT} -depoptional=qt5:yes -depincpath=qt5:/usr/local/opt/qt5/include{darwin} -depincpath=qt5:/usr/local/include/qt5{bsd} -depfinish=qt5 {!HBMK_HAS_QT5&!darwin&!android}-deppkgname=qt:QtCore +{!HBMK_HAS_QT5}-deppkgname=qt:qt4 {!HBMK_HAS_QT5}-depkeyhead=qt:QtCore/qglobal.h {!HBMK_HAS_QT5}-depcontrol=qt:${HB_WITH_QT} {!HBMK_HAS_QT5&HB_BUILD_3RDEXT='no'}-depcontrol=qt:no @@ -31,7 +43,10 @@ {!HBMK_HAS_QT5&darwin}-depincpath=qt:/Library/Frameworks {!HBMK_HAS_QT5&darwin}-depincpath=qt:/usr/local/include +${hb_name}.hbx + +# Required for 5.7.0 or upper +-cpp=iso11{HBMK_HAS_QT5} + gtqtc1.cpp gtqtc.h - -${hb_name}.hbx diff --git a/contrib/hbwin/win_os.prg b/contrib/hbwin/win_os.prg index 5fc8493e35..03bf3ef36d 100644 --- a/contrib/hbwin/win_os.prg +++ b/contrib/hbwin/win_os.prg @@ -64,9 +64,8 @@ FUNCTION win_osNetRegOk( lSetIt, lDoVista ) LOCAL cKeyWks hb_default( @lSetIt, .F. ) - hb_default( @lDoVista, .T. ) - IF ! lDoVista .AND. hb_osIsWinVista() + IF ! hb_defaultValue( lDoVista, .T. ) .AND. hb_osIsWinVista() /* do nothing */ ELSEIF hb_osIsWin9x() bRetVal := win_regQuery( WIN_HKEY_LOCAL_MACHINE, "System\CurrentControlSet\Services\VxD\VREDIR", "DiscardCacheOnOpen", 1, lSetIt ) @@ -85,11 +84,6 @@ FUNCTION win_osNetRegOk( lSetIt, lDoVista ) bRetVal := bRetVal .AND. win_regQuery( WIN_HKEY_LOCAL_MACHINE, cKeySrv, "SharingViolationDelay", 0, lSetIt ) bRetVal := bRetVal .AND. win_regQuery( WIN_HKEY_LOCAL_MACHINE, cKeySrv, "SharingViolationRetries", 0, lSetIt ) - IF hb_osIsWinVista() - /* If SMB2 is enabled turning off oplocks does not work, so SMB2 is required to be turned off on Server. */ - bRetVal := bRetVal .AND. win_regQuery( WIN_HKEY_LOCAL_MACHINE, cKeySrv, "SMB2", 0, lSetIt ) - ENDIF - /* Workstation settings */ bRetVal := bRetVal .AND. win_regQuery( WIN_HKEY_LOCAL_MACHINE, cKeyWks, "UseOpportunisticLocking", 0, lSetIt ) bRetVal := bRetVal .AND. win_regQuery( WIN_HKEY_LOCAL_MACHINE, cKeyWks, "EnableOpLocks", 0, lSetIt ) @@ -97,6 +91,14 @@ FUNCTION win_osNetRegOk( lSetIt, lDoVista ) bRetVal := bRetVal .AND. win_regQuery( WIN_HKEY_LOCAL_MACHINE, cKeyWks, "UtilizeNtCaching", 0, lSetIt ) bRetVal := bRetVal .AND. win_regQuery( WIN_HKEY_LOCAL_MACHINE, cKeyWks, "UseLockReadUnlock", 0, lSetIt ) + IF hb_osIsWin7() + /* https://groups.google.com/forum/#!msg/harbour-users/RyjXKmlQqWw/QOYwIPS5BQAJ */ + bRetVal := bRetVal .AND. win_regQuery( WIN_HKEY_LOCAL_MACHINE, cKeySrv, "DisableLeasing", 1, lSetIt ) + ELSEIF hb_osIsWinVista() + /* If SMB2 is enabled turning off oplocks does not work, so SMB2 is required to be turned off on Server. */ + bRetVal := bRetVal .AND. win_regQuery( WIN_HKEY_LOCAL_MACHINE, cKeySrv, "SMB2", 0, lSetIt ) + ENDIF + IF hb_osIsWinVista() bRetVal := bRetVal .AND. win_regQuery( WIN_HKEY_LOCAL_MACHINE, cKeyWks, "FileInfoCacheLifetime", 0, lSetIt ) bRetVal := bRetVal .AND. win_regQuery( WIN_HKEY_LOCAL_MACHINE, cKeyWks, "FileNotFoundCacheLifetime", 0, lSetIt ) @@ -116,15 +118,21 @@ FUNCTION win_osNetVRedirOk( /* @ */ nResult ) nResult := 0 - IF hb_osIsWin9x() - aFiles := Directory( hb_GetEnv( "WINDIR", "C:\WINDOWS" ) + "\SYSTEM\VREDIR.VXD" ) /* Check for faulty files. */ - IF ! Empty( aFiles ) - IF aFiles[ 1 ][ F_SIZE ] == 156749 .AND. aFiles[ 1 ][ F_TIME ] == "11:11:10" - nResult := 1111 - ELSEIF aFiles[ 1 ][ F_SIZE ] == 140343 .AND. aFiles[ 1 ][ F_TIME ] == "09:50:00" - nResult := 950 - ENDIF - ENDIF + /* Check for faulty files */ + IF hb_osIsWin9x() .AND. ; + ! Empty( aFiles := Directory( hb_GetEnv( "WINDIR", "C:\WINDOWS" ) + "\SYSTEM\VREDIR.VXD" ) ) + SWITCH aFiles[ 1 ][ F_SIZE ] + CASE 156749 + IF aFiles[ 1 ][ F_TIME ] == "11:11:10" + nResult := 1111 + ENDIF + EXIT + CASE 140343 + IF aFiles[ 1 ][ F_TIME ] == "09:50:00" + nResult := 950 + ENDIF + EXIT + ENDSWITCH ENDIF - RETURN Empty( nResult ) + RETURN nResult == 0 diff --git a/contrib/xhb/hbserv.c b/contrib/xhb/hbserv.c index dcf7859046..9be470afcc 100644 --- a/contrib/xhb/hbserv.c +++ b/contrib/xhb/hbserv.c @@ -981,6 +981,7 @@ HB_FUNC( HB_SIGNALDESC ) case SIGABRT: hb_retc_const( "Abort" ); + return; case SIGUSR1: hb_retc_const( "User defined" ); diff --git a/include/harbour.hbx b/include/harbour.hbx index 86bf156266..6ab691c188 100644 --- a/include/harbour.hbx +++ b/include/harbour.hbx @@ -727,7 +727,11 @@ DYNAMIC hb_osDriveSeparator DYNAMIC hb_osError DYNAMIC hb_osFileMask DYNAMIC hb_osIs64bit +DYNAMIC hb_osIsWin10 DYNAMIC hb_osIsWin2K +DYNAMIC hb_osIsWin7 +DYNAMIC hb_osIsWin8 +DYNAMIC hb_osIsWin81 DYNAMIC hb_osIsWin9x DYNAMIC hb_osIsWinCE DYNAMIC hb_osIsWinNT diff --git a/src/harbour.def b/src/harbour.def index 33896323f8..75e1ad3d08 100644 --- a/src/harbour.def +++ b/src/harbour.def @@ -912,7 +912,11 @@ HB_FUN_HB_OSDRIVESEPARATOR HB_FUN_HB_OSERROR HB_FUN_HB_OSFILEMASK HB_FUN_HB_OSIS64BIT +HB_FUN_HB_OSISWIN10 HB_FUN_HB_OSISWIN2K +HB_FUN_HB_OSISWIN7 +HB_FUN_HB_OSISWIN8 +HB_FUN_HB_OSISWIN81 HB_FUN_HB_OSISWIN9X HB_FUN_HB_OSISWINCE HB_FUN_HB_OSISWINNT diff --git a/src/rtl/gttrm/gttrm.c b/src/rtl/gttrm/gttrm.c index 894fb2233f..5594497ee6 100644 --- a/src/rtl/gttrm/gttrm.c +++ b/src/rtl/gttrm/gttrm.c @@ -3225,10 +3225,17 @@ static void hb_gt_trm_SetTerm( PHB_GTTRM pTerm ) pTerm->terminal_ext |= TERM_PUTTY; } - if( ( pTerm->terminal_ext & TERM_PUTTY ) || - strncmp( szTerm, "xterm", 5 ) == 0 || - strncmp( szTerm, "rxvt", 4 ) == 0 || - strncmp( szTerm, "screen", 6 ) == 0 ) + if( ( pTerm->terminal_ext & TERM_PUTTY ) || /* PuTTY terminal emulator */ + strncmp( szTerm, "xterm", 5 ) == 0 || /* X11 terminal emulator */ + strncmp( szTerm, "rxvt", 4 ) == 0 || /* rxvt terminal emulator */ + strncmp( szTerm, "gnome", 5 ) == 0 || /* GNOME Terminal */ + strncmp( szTerm, "vte", 3 ) == 0 || /* VTE aka GNOME Terminal */ + strncmp( szTerm, "konsole", 7 ) == 0 || /* KDE console window */ + strncmp( szTerm, "nsterm", 6 ) == 0 || /* Apple Terminal */ + strncmp( szTerm, "Apple_Terminal", 14 ) == 0 || /* Apple Terminal */ + strncmp( szTerm, "aixterm", 7 ) == 0 || /* IBM Aixterm Terminal Emulator */ + strncmp( szTerm, "tmux", 4 ) == 0 || /* tmux terminal multiplexer */ + strncmp( szTerm, "screen", 6 ) == 0 ) /* VT 100/ANSI X3.64 virtual terminal */ { pTerm->Init = hb_gt_trm_AnsiInit; pTerm->Exit = hb_gt_trm_AnsiExit; @@ -3245,19 +3252,14 @@ static void hb_gt_trm_SetTerm( PHB_GTTRM pTerm ) pTerm->terminal_type = TERM_XTERM; if( pTerm->iExtColor == HB_GTTRM_CLRNDF ) { - if( pTerm->terminal_ext & TERM_PUTTY ) + if( pTerm->terminal_ext & TERM_PUTTY || + strstr( szTerm, "+256color" ) != NULL || + strstr( szTerm, "-256color" ) != NULL ) pTerm->iExtColor = HB_GTTRM_CLR256; - else if( strncmp( szTerm, "xterm", 5 ) == 0 || - strncmp( szTerm, "rxvt", 4 ) == 0 ) - { - if( strstr( szTerm, "+256color" ) != NULL || - strstr( szTerm, "-256color" ) != NULL ) - pTerm->iExtColor = HB_GTTRM_CLR256; - else if( strstr( szTerm, "-88color" ) != NULL ) - pTerm->iExtColor = HB_GTTRM_CLRRGB; - else if( strstr( szTerm, "-16color" ) != NULL ) - pTerm->iExtColor = HB_GTTRM_CLRAIX; - } + else if( strstr( szTerm, "-88color" ) != NULL ) + pTerm->iExtColor = HB_GTTRM_CLRRGB; + else if( strstr( szTerm, "-16color" ) != NULL ) + pTerm->iExtColor = HB_GTTRM_CLRAIX; } } else if( strncmp( szTerm, "linux", 5 ) == 0 || diff --git a/src/rtl/version.c b/src/rtl/version.c index f004a8247e..21b8b47a27 100644 --- a/src/rtl/version.c +++ b/src/rtl/version.c @@ -214,6 +214,26 @@ HB_FUNC( HB_OSISWINVISTA ) hb_retl( hb_iswinvista() ); } +HB_FUNC( HB_OSISWIN7 ) +{ + hb_retl( hb_iswin7() ); +} + +HB_FUNC( HB_OSISWIN8 ) +{ + hb_retl( hb_iswin8() ); +} + +HB_FUNC( HB_OSISWIN81 ) +{ + hb_retl( hb_iswin81() ); +} + +HB_FUNC( HB_OSISWIN10 ) +{ + hb_retl( hb_iswin10() ); +} + HB_FUNC( HB_OSISWINCE ) { hb_retl( hb_iswince() ); diff --git a/utils/hbmk2/hbmk2.prg b/utils/hbmk2/hbmk2.prg index 14f6102deb..7101eab5ec 100644 --- a/utils/hbmk2/hbmk2.prg +++ b/utils/hbmk2/hbmk2.prg @@ -2756,7 +2756,7 @@ STATIC FUNCTION __hbmk( aArgs, nArgTarget, nLevel, /* @ */ lPause, /* @ */ lExit #ifdef HB_LEGACY_LEVEL4 CASE cParamL == "-nocompr" ; hbmk[ _HBMK_nCOMPR ] := _COMPR_OFF ; LegacyWarning( hbmk, aParam, "-compr=no" ) #endif - CASE Left( cParamL, 6 ) == "-head=" + CASE hb_LeftEq( cParamL, "-head=" ) DO CASE CASE SubStr( cParamL, 6 + 1 ) == "off" ; hbmk[ _HBMK_nHEAD ] := _HEAD_OFF @@ -2764,9 +2764,9 @@ STATIC FUNCTION __hbmk( aArgs, nArgTarget, nLevel, /* @ */ lPause, /* @ */ lExit CASE SubStr( cParamL, 6 + 1 ) == "native" ; hbmk[ _HBMK_nHEAD ] := _HEAD_NATIVE CASE SubStr( cParamL, 6 + 1 ) == "dep" ; hbmk[ _HBMK_nHEAD ] := _HEAD_DEP #ifdef HB_LEGACY_LEVEL4 - OTHERWISE ; hbmk[ _HBMK_nHEAD ] := _HEAD_FULL ; LegacyWarning( hbmk, aParam, "-head=full" ) + OTHERWISE ; hbmk[ _HBMK_nHEAD ] := _HEAD_FULL ; LegacyWarning( hbmk, aParam, "-head=full" ) #else - OTHERWISE ; InvalidOptionValue( hbmk, aParam ) + OTHERWISE ; InvalidOptionValue( hbmk, aParam ) #endif ENDCASE @@ -2776,7 +2776,7 @@ STATIC FUNCTION __hbmk( aArgs, nArgTarget, nLevel, /* @ */ lPause, /* @ */ lExit CASE cParamL == "-nohead" ; hbmk[ _HBMK_nHEAD ] := _HEAD_OFF ; LegacyWarning( hbmk, aParam, "-head=off" ) #endif - CASE Left( cParamL, 5 ) == "-cpp=" + CASE hb_LeftEq( cParamL, "-cpp=" ) DO CASE CASE SubStr( cParamL, 5 + 1 ) == "def" ; hbmk[ _HBMK_lCPP ] := NIL @@ -2785,14 +2785,20 @@ STATIC FUNCTION __hbmk( aArgs, nArgTarget, nLevel, /* @ */ lPause, /* @ */ lExit CASE SubStr( cParamL, 5 + 1 ) == "iso98" ; hbmk[ _HBMK_cCPP ] := "iso98" CASE SubStr( cParamL, 5 + 1 ) == "iso03" ; hbmk[ _HBMK_cCPP ] := "iso03" CASE SubStr( cParamL, 5 + 1 ) == "iso0x" ; hbmk[ _HBMK_cCPP ] := "iso0x" + CASE SubStr( cParamL, 5 + 1 ) == "iso11" ; hbmk[ _HBMK_cCPP ] := "iso11" + CASE SubStr( cParamL, 5 + 1 ) == "iso14" ; hbmk[ _HBMK_cCPP ] := "iso14" + CASE SubStr( cParamL, 5 + 1 ) == "iso17" ; hbmk[ _HBMK_cCPP ] := "iso17" + CASE SubStr( cParamL, 5 + 1 ) == "iso20" ; hbmk[ _HBMK_cCPP ] := "iso20" CASE SubStr( cParamL, 5 + 1 ) == "gnu98" ; hbmk[ _HBMK_cCPP ] := "gnu98" CASE SubStr( cParamL, 5 + 1 ) == "gnu0x" ; hbmk[ _HBMK_cCPP ] := "gnu0x" + CASE SubStr( cParamL, 5 + 1 ) == "gnu11" ; hbmk[ _HBMK_cCPP ] := "gnu11" + CASE SubStr( cParamL, 5 + 1 ) == "gnu14" ; hbmk[ _HBMK_cCPP ] := "gnu14" + CASE SubStr( cParamL, 5 + 1 ) == "gnu17" ; hbmk[ _HBMK_cCPP ] := "gnu17" + CASE SubStr( cParamL, 5 + 1 ) == "gnu20" ; hbmk[ _HBMK_cCPP ] := "gnu20" CASE SubStr( cParamL, 5 + 1 ) == "" ; hbmk[ _HBMK_cCPP ] := "" + OTHERWISE ; InvalidOptionValue( hbmk, aParam ) ENDCASE - /* dangerous? disable it */ - hbmk[ _HBMK_cCPP ] := "" - CASE Left( cParamL, 3 ) == "-c=" DO CASE @@ -2803,11 +2809,9 @@ STATIC FUNCTION __hbmk( aArgs, nArgTarget, nLevel, /* @ */ lPause, /* @ */ lExit CASE SubStr( cParamL, 3 + 1 ) == "gnu99" ; hbmk[ _HBMK_cC ] := "gnu99" CASE SubStr( cParamL, 3 + 1 ) == "gnu1x" ; hbmk[ _HBMK_cC ] := "gnu1x" CASE SubStr( cParamL, 3 + 1 ) == "" ; hbmk[ _HBMK_cC ] := "" + OTHERWISE ; InvalidOptionValue( hbmk, aParam ) ENDCASE - /* dangerous? disable it */ - hbmk[ _HBMK_cC ] := "" - CASE cParamL == "-cpp" ; hbmk[ _HBMK_lCPP ] := .T. /* synonym to -cpp=yes */ CASE cParamL == "-cpp-" ; hbmk[ _HBMK_lCPP ] := .F. /* synonym to -cpp=no */ #ifdef HB_LEGACY_LEVEL4 @@ -7886,24 +7890,15 @@ STATIC PROCEDURE Set_lCreateDyn( hbmk, lValue ) STATIC FUNCTION gcc_opt_lngc_fill( hbmk ) DO CASE - CASE HBMK_ISCOMP( "gcc|gccarm|gccomf|mingw|mingw64|mingwarm|djgpp" ) + CASE HBMK_ISCOMP( "gcc|gccarm|gccomf|mingw|mingw64|mingwarm|djgpp|icc|icc64|clang|clang64" ) SWITCH hbmk[ _HBMK_cC ] - CASE "iso90" ; RETURN "-std=c89" - CASE "iso99" ; RETURN "-std=c9x" - CASE "iso1x" ; RETURN "-std=c1x" - CASE "gnu90" ; RETURN "-std=gnu89" - CASE "gnu99" ; RETURN "-std=gnu9x" - CASE "gnu1x" ; RETURN "-std=gnu1x" - ENDSWITCH - - CASE HBMK_ISCOMP( "icc|clang" ) - - SWITCH hbmk[ _HBMK_cC ] - CASE "iso90" ; RETURN "-std=c89" - CASE "iso99" ; RETURN "-std=c99" + CASE "iso90" ; RETURN "-std=c89" /* aka c89, aka ansi */ + CASE "iso99" ; RETURN "-std=c99" /* aka c9x */ + CASE "iso11" ; RETURN "-std=c11" /* aka c1x */ CASE "gnu90" ; RETURN "-std=gnu89" CASE "gnu99" ; RETURN "-std=gnu99" + CASE "gnu11" ; RETURN "-std=gnu11" ENDSWITCH ENDCASE @@ -7913,21 +7908,30 @@ STATIC FUNCTION gcc_opt_lngc_fill( hbmk ) STATIC FUNCTION gcc_opt_lngcpp_fill( hbmk ) DO CASE - CASE HBMK_ISCOMP( "gcc|gccarm|gccomf|mingw|mingw64|mingwarm|djgpp" ) + CASE HBMK_ISCOMP( "gcc|gccarm|gccomf|mingw|mingw64|mingwarm|djgpp|clang|clang64" ) SWITCH hbmk[ _HBMK_cCPP ] - CASE "iso98" ; RETURN "-std=c++98" + CASE "iso98" ; RETURN "-std=c++98" /* ~aka c++03, ~aka ansi */ CASE "iso0x" ; RETURN "-std=c++0x" + CASE "iso11" ; RETURN "-std=c++11" /* aka c++0x */ + CASE "iso14" ; RETURN "-std=c++14" /* aka c++1y */ + CASE "iso17" ; RETURN "-std=c++17" /* aka c++1z */ + CASE "iso20" ; RETURN "-std=c++20" /* aka c++2a */ CASE "gnu98" ; RETURN "-std=gnu++98" CASE "gnu0x" ; RETURN "-std=gnu++0x" + CASE "gnu11" ; RETURN "-std=gnu++11" + CASE "gnu14" ; RETURN "-std=gnu++14" + CASE "gnu17" ; RETURN "-std=gnu++17" + CASE "gnu20" ; RETURN "-std=gnu++20" ENDSWITCH - CASE HBMK_ISCOMP( "icc" ) + CASE HBMK_ISCOMP( "icc|icc64" ) SWITCH hbmk[ _HBMK_cCPP ] CASE "iso98" CASE "gnu98" ; RETURN "-std=gnu++98" CASE "iso0x" ; RETURN "-std=c++0x" + CASE "iso11" ; RETURN "-std=c++11" /* aka c++0x */ ENDSWITCH ENDCASE @@ -15835,8 +15839,8 @@ STATIC PROCEDURE ShowHelp( hbmk, lMore, lLong ) { "-optim[-]" , I_( "toggle C compiler optimizations (default: on)" ) }, ; { "-cpp[-]" , I_( "force C++/C mode" ) }, ; { "-cpp=" , I_( "select C++ mode. Allowed values are: def, yes, no" ) }, ; -/* { "-c=" , I_( "select C standard. Allowed values are: iso90, iso99, iso1x, gnu90, gnu99, gnu1x" ) }, */; -/* { "-cpp=" , I_( "select C++ mode or standard. Allowed values are: def, yes, no, iso98, iso03, iso0x, gnu98, gnu0x" ) }, */; + { "-c=" , I_( "select C standard. Allowed values are: iso90, iso99, iso11, gnu90, gnu99, gnu11" ) }, ; + { "-cpp=" , I_( "select C++ mode or standard. Allowed values are: def, yes, no, iso98, iso11, iso14, gnu98, gnu11, gnu14" ) }, ; { "-map[-]" , I_( "create (or not) a map file" ) }, ; { "-implib[-]" , I_( "create (or not) an import library (in -hbdyn/-hbexe mode). The name will have a suffix added." ) }, ; { "-implib=" , I_( "create import library (in -hbdyn/-hbexe mode) name to (default: same as output)" ) }, ;