From 9b27f5e7074d736fb6e1908f84ad6555dbfbde5f Mon Sep 17 00:00:00 2001 From: Viktor Szakats Date: Thu, 21 Apr 2011 01:12:24 +0000 Subject: [PATCH] 2011-04-21 03:11 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) * utils/hbmk2/hbmk2.prg + Added experimental -c=[iso90|iso99|iso1x|gnu90|gnu99|gnu1x] and -cpp=[iso98|iso0x|gnu98|gnu0x] hbmk2 options to select C/C++ dialect in a C compiler and built setting independent way. It will currently affect GCC and compatible family of compilers. If you happen to know about C dialect/std selection in other compilers, pls tell and they can be mapped to this option. F.e. in other win compilers the adaptation to C/C++ stds is very fuzzy, where such option exists at all (f.e. BCC -A* options), mostly it's just toggling some compiler extensions. Comments are welcome of course. + Added TOFIX for vxworks with potential disagreement on C std level. I used hardwired C99 forcage hack while porting Harbour to it. + Added internal logic for C- and C++-only options. ; NOTE: Behavior with Objective C sources is yet to be tested. * contrib/hbmzip/3rd/minizip/minizip.hbp * contrib/hbunix/hbunix.hbp * contrib/gtalleg/gtalleg.hbm * contrib/xhb/xhb.hbp * contrib/hbqt/hbqt_common.hbm * contrib/rddads/rddads.hbp * contrib/hbfimage/hbfimage.hbp * contrib/hbpre.hbm * contrib/hbssl/hbssl.hbm + -cflag=-std=... => -c=gnu90 hbmk2 option. --- harbour/ChangeLog | 28 ++ harbour/contrib/gtalleg/gtalleg.hbm | 2 +- harbour/contrib/hbfimage/hbfimage.hbp | 2 +- .../contrib/hbmzip/3rd/minizip/minizip.hbp | 2 +- harbour/contrib/hbpre.hbm | 3 +- harbour/contrib/hbqt/hbqt_common.hbm | 2 - harbour/contrib/hbssl/hbssl.hbm | 2 +- harbour/contrib/hbunix/hbunix.hbp | 2 +- harbour/contrib/rddads/rddads.hbp | 2 +- harbour/contrib/xhb/xhb.hbp | 2 +- harbour/utils/hbmk2/hbmk2.prg | 251 ++++++++++-------- 11 files changed, 182 insertions(+), 116 deletions(-) diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 0d5031f771..8954933ae7 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -16,6 +16,34 @@ The license applies to all entries newer than 2009-04-28. */ +2011-04-21 03:11 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) + * utils/hbmk2/hbmk2.prg + + Added experimental -c=[iso90|iso99|iso1x|gnu90|gnu99|gnu1x] and + -cpp=[iso98|iso0x|gnu98|gnu0x] hbmk2 options to select + C/C++ dialect in a C compiler and built setting independent way. + It will currently affect GCC and compatible family of compilers. + If you happen to know about C dialect/std selection in other + compilers, pls tell and they can be mapped to this option. + F.e. in other win compilers the adaptation to C/C++ stds is very + fuzzy, where such option exists at all (f.e. BCC -A* options), + mostly it's just toggling some compiler extensions. + Comments are welcome of course. + + Added TOFIX for vxworks with potential disagreement on C std level. + I used hardwired C99 forcage hack while porting Harbour to it. + + Added internal logic for C- and C++-only options. + ; NOTE: Behavior with Objective C sources is yet to be tested. + + * contrib/hbmzip/3rd/minizip/minizip.hbp + * contrib/hbunix/hbunix.hbp + * contrib/gtalleg/gtalleg.hbm + * contrib/xhb/xhb.hbp + * contrib/hbqt/hbqt_common.hbm + * contrib/rddads/rddads.hbp + * contrib/hbfimage/hbfimage.hbp + * contrib/hbpre.hbm + * contrib/hbssl/hbssl.hbm + + -cflag=-std=... => -c=gnu90 hbmk2 option. + 2011-04-21 01:04 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) * contrib/hbcurl/core.c * contrib/hbcurl/core_t1.c diff --git a/harbour/contrib/gtalleg/gtalleg.hbm b/harbour/contrib/gtalleg/gtalleg.hbm index 807f4803ee..96aab1fb9d 100644 --- a/harbour/contrib/gtalleg/gtalleg.hbm +++ b/harbour/contrib/gtalleg/gtalleg.hbm @@ -22,7 +22,7 @@ -iflag={bcc}-a # For allegro headers --cflag=-std=gnu89{!lngcpp&allgcc} +-c=gnu90 gtalleg.c ssf.c diff --git a/harbour/contrib/hbfimage/hbfimage.hbp b/harbour/contrib/hbfimage/hbfimage.hbp index 7ca63d299c..feea2c6a0b 100644 --- a/harbour/contrib/hbfimage/hbfimage.hbp +++ b/harbour/contrib/hbfimage/hbfimage.hbp @@ -24,7 +24,7 @@ -instfile=inc:hbfimage.hbx # For FreeImage headers --cflag=-std=gnu89{!lngcpp&allgcc} +-c=gnu90 hbfimage.hbx diff --git a/harbour/contrib/hbmzip/3rd/minizip/minizip.hbp b/harbour/contrib/hbmzip/3rd/minizip/minizip.hbp index ab32dd7ab9..8493167809 100644 --- a/harbour/contrib/hbmzip/3rd/minizip/minizip.hbp +++ b/harbour/contrib/hbmzip/3rd/minizip/minizip.hbp @@ -14,7 +14,7 @@ -pic # for f*64() functions --cflag=-std=gnu89{!lngcpp&allgcc} +-c=gnu90 ioapi.c zip.c diff --git a/harbour/contrib/hbpre.hbm b/harbour/contrib/hbpre.hbm index 1c925d817b..666068adf8 100644 --- a/harbour/contrib/hbpre.hbm +++ b/harbour/contrib/hbpre.hbm @@ -17,6 +17,7 @@ {_HB_BUILD_LIBDYN}-hbdyn --cflag=-std=c89{!lngcpp&allgcc} +-c=iso90 +-cpp=iso98 -warn=yes diff --git a/harbour/contrib/hbqt/hbqt_common.hbm b/harbour/contrib/hbqt/hbqt_common.hbm index 43de5a3753..84bcf7005c 100644 --- a/harbour/contrib/hbqt/hbqt_common.hbm +++ b/harbour/contrib/hbqt/hbqt_common.hbm @@ -17,8 +17,6 @@ -w3 -es2 --cflag=-std=gnu++98{allgcc} - -i. -stop{dos|watcom|bcc|pocc|pocc64|poccarm|msvcia64|pcc} diff --git a/harbour/contrib/hbssl/hbssl.hbm b/harbour/contrib/hbssl/hbssl.hbm index 5843bf1807..25a2938062 100644 --- a/harbour/contrib/hbssl/hbssl.hbm +++ b/harbour/contrib/hbssl/hbssl.hbm @@ -32,7 +32,7 @@ -cflag=-DOPENSSL_NO_IDEA # For _fileno() in openssl/applink.c --cflag=-std=gnu89{!lngcpp&allgcc} +-c=gnu90 -instfile=inc:hbssl.ch -instfile=inc:hbssl.hbx diff --git a/harbour/contrib/hbunix/hbunix.hbp b/harbour/contrib/hbunix/hbunix.hbp index 3bb11a7353..a585d22c88 100644 --- a/harbour/contrib/hbunix/hbunix.hbp +++ b/harbour/contrib/hbunix/hbunix.hbp @@ -11,7 +11,7 @@ -stop{!unix} --cflag=-std=gnu89{!lngcpp&allgcc} +-c=gnu90 hbunix.hbx diff --git a/harbour/contrib/rddads/rddads.hbp b/harbour/contrib/rddads/rddads.hbp index 569b789904..e0ed1df8a5 100644 --- a/harbour/contrib/rddads/rddads.hbp +++ b/harbour/contrib/rddads/rddads.hbp @@ -28,7 +28,7 @@ -cflag+=-Wno-unknown-pragmas{allgcc} # for ADS headers --cflag=-std=gnu89{!lngcpp&allgcc} +-c=gnu90 rddads.hbx diff --git a/harbour/contrib/xhb/xhb.hbp b/harbour/contrib/xhb/xhb.hbp index b3923bb8b5..0ba2aee2cf 100644 --- a/harbour/contrib/xhb/xhb.hbp +++ b/harbour/contrib/xhb/xhb.hbp @@ -21,7 +21,7 @@ -instfile=inc:xhb.hbx # For hbserv.c, maybe more --cflag=-std=gnu89{!lngcpp&allgcc&unix} +-c=gnu90 ../hbct/hbct.hbc ../hbtip/hbtip.hbc diff --git a/harbour/utils/hbmk2/hbmk2.prg b/harbour/utils/hbmk2/hbmk2.prg index 2aa3819eff..70b5fa2be4 100644 --- a/harbour/utils/hbmk2/hbmk2.prg +++ b/harbour/utils/hbmk2/hbmk2.prg @@ -339,127 +339,129 @@ REQUEST hbmk_KEYW #define _HBMK_aINSTPATH 36 #define _HBMK_aOPTC 37 #define _HBMK_aOPTCUSER 38 -#define _HBMK_aOPTPRG 39 -#define _HBMK_aOPTRES 40 -#define _HBMK_aOPTL 41 -#define _HBMK_aOPTA 42 -#define _HBMK_aOPTD 43 -#define _HBMK_aOPTI 44 -#define _HBMK_lCPP 45 -#define _HBMK_lSHARED 46 -#define _HBMK_lSTATICFULL 47 -#define _HBMK_lSHAREDDIST 48 -#define _HBMK_lNULRDD 49 -#define _HBMK_lMAP 50 -#define _HBMK_lBEEP 51 -#define _HBMK_lSTRIP 52 -#define _HBMK_lOPTIM 53 -#define _HBMK_nCOMPR 54 -#define _HBMK_nWARN 55 -#define _HBMK_lRUN 56 -#define _HBMK_lINC 57 -#define _HBMK_lREBUILDPO 58 -#define _HBMK_lMINIPO 59 -#define _HBMK_lWINUNI 60 -#define _HBMK_nCONF 61 -#define _HBMK_lIGNOREERROR 62 -#define _HBMK_lIMPLIB 63 -#define _HBMK_lHBCPPMM 64 -#define _HBMK_aVAR 65 -#define _HBMK_hDEP 66 +#define _HBMK_aOPTCX 39 +#define _HBMK_aOPTCPPX 40 +#define _HBMK_aOPTPRG 41 +#define _HBMK_aOPTRES 42 +#define _HBMK_aOPTL 43 +#define _HBMK_aOPTA 44 +#define _HBMK_aOPTD 45 +#define _HBMK_aOPTI 46 +#define _HBMK_lCPP 47 +#define _HBMK_lSHARED 48 +#define _HBMK_lSTATICFULL 49 +#define _HBMK_lSHAREDDIST 50 +#define _HBMK_lNULRDD 51 +#define _HBMK_lMAP 52 +#define _HBMK_lBEEP 53 +#define _HBMK_lSTRIP 54 +#define _HBMK_lOPTIM 55 +#define _HBMK_nCOMPR 56 +#define _HBMK_nWARN 57 +#define _HBMK_lRUN 58 +#define _HBMK_lINC 59 +#define _HBMK_lREBUILDPO 60 +#define _HBMK_lMINIPO 61 +#define _HBMK_lWINUNI 62 +#define _HBMK_nCONF 63 +#define _HBMK_lIGNOREERROR 64 +#define _HBMK_lIMPLIB 65 +#define _HBMK_lHBCPPMM 66 +#define _HBMK_aVAR 67 +#define _HBMK_hDEP 68 -#define _HBMK_lCreateLib 67 -#define _HBMK_lCreateDyn 68 -#define _HBMK_lCreateImpLib 69 -#define _HBMK_lCreatePPO 70 -#define _HBMK_lCreateHRB 71 +#define _HBMK_lCreateLib 69 +#define _HBMK_lCreateDyn 70 +#define _HBMK_lCreateImpLib 71 +#define _HBMK_lCreatePPO 72 +#define _HBMK_lCreateHRB 73 -#define _HBMK_lDynVM 72 +#define _HBMK_lDynVM 74 -#define _HBMK_lBLDFLGP 73 -#define _HBMK_lBLDFLGC 74 -#define _HBMK_lBLDFLGL 75 +#define _HBMK_lBLDFLGP 75 +#define _HBMK_lBLDFLGC 76 +#define _HBMK_lBLDFLGL 77 -#define _HBMK_cFIRST 76 -#define _HBMK_aPRG 77 -#define _HBMK_aC 78 -#define _HBMK_aCPP 79 -#define _HBMK_aRESSRC 80 -#define _HBMK_aRESCMP 81 -#define _HBMK_aOBJUSER 82 -#define _HBMK_aICON 83 -#define _HBMK_cMANIFEST 84 -#define _HBMK_aIMPLIBSRC 85 -#define _HBMK_aDEF 86 -#define _HBMK_aINSTFILE 87 -#define _HBMK_hDEPTS 88 -#define _HBMK_aREQUEST 89 +#define _HBMK_cFIRST 78 +#define _HBMK_aPRG 79 +#define _HBMK_aC 80 +#define _HBMK_aCPP 81 +#define _HBMK_aRESSRC 82 +#define _HBMK_aRESCMP 83 +#define _HBMK_aOBJUSER 84 +#define _HBMK_aICON 85 +#define _HBMK_cMANIFEST 86 +#define _HBMK_aIMPLIBSRC 87 +#define _HBMK_aDEF 88 +#define _HBMK_aINSTFILE 89 +#define _HBMK_hDEPTS 90 +#define _HBMK_aREQUEST 91 -#define _HBMK_aPO 90 -#define _HBMK_cHBL 91 -#define _HBMK_cHBLDir 92 -#define _HBMK_aLNG 93 -#define _HBMK_cPO 94 +#define _HBMK_aPO 92 +#define _HBMK_cHBL 93 +#define _HBMK_cHBLDir 94 +#define _HBMK_aLNG 95 +#define _HBMK_cPO 96 -#define _HBMK_hPLUGINHRB 95 -#define _HBMK_hPLUGINVars 96 -#define _HBMK_aPLUGINPars 97 -#define _HBMK_hPLUGINExt 98 +#define _HBMK_hPLUGINHRB 97 +#define _HBMK_hPLUGINVars 98 +#define _HBMK_aPLUGINPars 99 +#define _HBMK_hPLUGINExt 100 -#define _HBMK_lDEBUGTIME 99 -#define _HBMK_lDEBUGINC 100 -#define _HBMK_lDEBUGSTUB 101 -#define _HBMK_lDEBUGI18N 102 -#define _HBMK_lDEBUGDEPD 103 -#define _HBMK_lDEBUGPARS 104 +#define _HBMK_lDEBUGTIME 101 +#define _HBMK_lDEBUGINC 102 +#define _HBMK_lDEBUGSTUB 103 +#define _HBMK_lDEBUGI18N 104 +#define _HBMK_lDEBUGDEPD 105 +#define _HBMK_lDEBUGPARS 106 -#define _HBMK_cCCPATH 105 -#define _HBMK_cCCPREFIX 106 -#define _HBMK_cCCPOSTFIX 107 -#define _HBMK_cCCEXT 108 +#define _HBMK_cCCPATH 107 +#define _HBMK_cCCPREFIX 108 +#define _HBMK_cCCPOSTFIX 109 +#define _HBMK_cCCEXT 110 -#define _HBMK_cWorkDir 109 -#define _HBMK_cWorkDirDynSub 110 -#define _HBMK_nCmd_Esc 111 -#define _HBMK_nScr_Esc 112 -#define _HBMK_nCmd_FNF 113 -#define _HBMK_nScr_FNF 114 -#define _HBMK_nErrorLevel 115 +#define _HBMK_cWorkDir 111 +#define _HBMK_cWorkDirDynSub 112 +#define _HBMK_nCmd_Esc 113 +#define _HBMK_nScr_Esc 114 +#define _HBMK_nCmd_FNF 115 +#define _HBMK_nScr_FNF 116 +#define _HBMK_nErrorLevel 117 -#define _HBMK_cPROGDIR 116 -#define _HBMK_cPROGNAME 117 +#define _HBMK_cPROGDIR 118 +#define _HBMK_cPROGNAME 119 -#define _HBMK_hAUTOHBC 118 /* trigger header => .hbc associations */ -#define _HBMK_hAUTOHBCFOUND 119 /* trigger headers found */ +#define _HBMK_hAUTOHBC 120 /* trigger header => .hbc associations */ +#define _HBMK_hAUTOHBCFOUND 121 /* trigger headers found */ -#define _HBMK_aDEPTHBC 120 /* .hbc references found */ -#define _HBMK_hDEPTSDIR 121 /* Header dirs found for dependencies */ +#define _HBMK_aDEPTHBC 122 /* .hbc references found */ +#define _HBMK_hDEPTSDIR 123 /* Header dirs found for dependencies */ -#define _HBMK_lStopAfterInit 122 -#define _HBMK_lStopAfterHarbour 123 +#define _HBMK_lStopAfterInit 124 +#define _HBMK_lStopAfterHarbour 125 -#define _HBMK_nCOMPVer 124 -#define _HBMK_lDEPIMPLIB 125 /* Generate import libs configured in dependecy specification */ -#define _HBMK_lInstForce 126 /* Force to install target even if was up to date */ -#define _HBMK_lAutoHBM 127 /* Toggles processing of hbmk.hbm file in current directory */ -#define _HBMK_lContainer 128 /* Target type: container */ -#define _HBMK_lShowLevel 129 /* Show project nesting level in all output lines */ -#define _HBMK_hFiles 130 /* Cache for the header parser (common for C and Harbour) */ -#define _HBMK_cDynLibPrefix 131 /* Dynamic lib filename prefix */ -#define _HBMK_cDynLibExt 132 /* Dynamic lib filename extension */ -#define _HBMK_aLINK 133 /* Links to be created and pointing to the target */ -#define _HBMK_hDEPTMACRO 134 /* Links to be created and pointing to the target */ -#define _HBMK_cC 135 /* C dialect */ -#define _HBMK_cCPP 136 /* C++ dialect */ +#define _HBMK_nCOMPVer 126 +#define _HBMK_lDEPIMPLIB 127 /* Generate import libs configured in dependecy specification */ +#define _HBMK_lInstForce 128 /* Force to install target even if was up to date */ +#define _HBMK_lAutoHBM 129 /* Toggles processing of hbmk.hbm file in current directory */ +#define _HBMK_lContainer 130 /* Target type: container */ +#define _HBMK_lShowLevel 131 /* Show project nesting level in all output lines */ +#define _HBMK_hFiles 132 /* Cache for the header parser (common for C and Harbour) */ +#define _HBMK_cDynLibPrefix 133 /* Dynamic lib filename prefix */ +#define _HBMK_cDynLibExt 134 /* Dynamic lib filename extension */ +#define _HBMK_aLINK 135 /* Links to be created and pointing to the target */ +#define _HBMK_hDEPTMACRO 136 /* Links to be created and pointing to the target */ +#define _HBMK_cC 137 /* C dialect */ +#define _HBMK_cCPP 138 /* C++ dialect */ -#define _HBMK_aArgs 137 -#define _HBMK_nArgTarget 138 -#define _HBMK_lPause 139 -#define _HBMK_nLevel 140 +#define _HBMK_aArgs 139 +#define _HBMK_nArgTarget 140 +#define _HBMK_lPause 141 +#define _HBMK_nLevel 142 -#define _HBMK_cHBX 141 +#define _HBMK_cHBX 143 -#define _HBMK_MAX_ 141 +#define _HBMK_MAX_ 143 #define _HBMK_DEP_CTRL_MARKER ".control." /* must be an invalid path */ @@ -1949,6 +1951,8 @@ FUNCTION hbmk2( aArgs, nArgTarget, /* @ */ lPause, nLevel ) hbmk[ _HBMK_aOPTPRG ] := {} hbmk[ _HBMK_aOPTC ] := {} hbmk[ _HBMK_aOPTCUSER ] := {} + hbmk[ _HBMK_aOPTCX ] := {} + hbmk[ _HBMK_aOPTCPPX ] := {} hbmk[ _HBMK_aOPTRES ] := {} hbmk[ _HBMK_aOPTL ] := {} hbmk[ _HBMK_aOPTA ] := {} @@ -2282,10 +2286,10 @@ FUNCTION hbmk2( aArgs, nArgTarget, /* @ */ lPause, nLevel ) DO CASE CASE SubStr( cParamL, 4 ) == "iso90" ; hbmk[ _HBMK_cC ] := "iso90" CASE SubStr( cParamL, 4 ) == "iso99" ; hbmk[ _HBMK_cC ] := "iso99" - CASE SubStr( cParamL, 4 ) == "iso1X" ; hbmk[ _HBMK_cC ] := "iso1X" + CASE SubStr( cParamL, 4 ) == "iso1x" ; hbmk[ _HBMK_cC ] := "iso1X" CASE SubStr( cParamL, 4 ) == "gnu90" ; hbmk[ _HBMK_cC ] := "gnu90" CASE SubStr( cParamL, 4 ) == "gnu99" ; hbmk[ _HBMK_cC ] := "gnu99" - CASE SubStr( cParamL, 4 ) == "gnu1X" ; hbmk[ _HBMK_cC ] := "gnu1X" + CASE SubStr( cParamL, 4 ) == "gnu1x" ; hbmk[ _HBMK_cC ] := "gnu1X" CASE SubStr( cParamL, 4 ) == "" ; hbmk[ _HBMK_cC ] := "" ENDCASE @@ -3366,6 +3370,7 @@ FUNCTION hbmk2( aArgs, nArgTarget, /* @ */ lPause, nLevel ) AAdd( hbmk[ _HBMK_aOPTL ], "-mrtp" ) AAdd( hbmk[ _HBMK_aOPTD ], "-mrtp" ) AAdd( hbmk[ _HBMK_aOPTC ], "-fno-strict-aliasing" ) + /* TOFIX: Potential collision with -cpp=/-c= options */ AAdd( hbmk[ _HBMK_aOPTC ], "-D_C99" ) AAdd( hbmk[ _HBMK_aOPTC ], "-D_HAS_C9X" ) ENDIF @@ -3393,6 +3398,8 @@ FUNCTION hbmk2( aArgs, nArgTarget, /* @ */ lPause, nLevel ) ELSE cOpt_CompC += " {LC}" ENDIF + AAddNotEmpty( hbmk[ _HBMK_aOPTCX ], gcc_opt_lngc_fill( hbmk ) ) + AAddNotEmpty( hbmk[ _HBMK_aOPTCPPX ], gcc_opt_lngcpp_fill( hbmk ) ) IF hbmk[ _HBMK_cPLAT ] == "darwin" cBin_Dyn := cBin_Lib cOpt_Dyn := "-dynamic -o {OD} -flat_namespace -undefined suppress -single_module {FD} {DL} {LO} {LS}" /* NOTE: -single_module is now the default in ld/libtool. */ @@ -3646,6 +3653,8 @@ FUNCTION hbmk2( aArgs, nArgTarget, /* @ */ lPause, nLevel ) ELSE cOpt_CompC += " {LC}" ENDIF + AAddNotEmpty( hbmk[ _HBMK_aOPTCX ], gcc_opt_lngc_fill( hbmk ) ) + AAddNotEmpty( hbmk[ _HBMK_aOPTCPPX ], gcc_opt_lngcpp_fill( hbmk ) ) cBin_Dyn := cBin_CompC cOpt_Dyn := "-shared -o {OD} {LO} {FD} {IM} {DL} {LS}{SCRIPT_MINGW}" cBin_Link := cBin_CompC @@ -3782,6 +3791,8 @@ FUNCTION hbmk2( aArgs, nArgTarget, /* @ */ lPause, nLevel ) ELSE cOpt_CompC += " {LC}" ENDIF + AAddNotEmpty( hbmk[ _HBMK_aOPTCX ], gcc_opt_lngc_fill( hbmk ) ) + AAddNotEmpty( hbmk[ _HBMK_aOPTCPPX ], gcc_opt_lngcpp_fill( hbmk ) ) cBin_Dyn := cBin_CompC cOpt_Dyn := "-shared -o {OD} {LO} {LL} {LB} {FD} {IM} {DL} {LS}" cBin_Link := cBin_CompC @@ -3893,6 +3904,8 @@ FUNCTION hbmk2( aArgs, nArgTarget, /* @ */ lPause, nLevel ) ELSE cOpt_CompC += " {LC}" ENDIF + AAddNotEmpty( hbmk[ _HBMK_aOPTCX ], gcc_opt_lngc_fill( hbmk ) ) + AAddNotEmpty( hbmk[ _HBMK_aOPTCPPX ], gcc_opt_lngcpp_fill( hbmk ) ) cBin_Dyn := "dxe3gen" cOpt_Dyn := "--whole-archive -U {FD} -o {OD} {DL} {LO} {LL} {LB} {LS}" cBin_Link := cBin_CompC @@ -5894,9 +5907,11 @@ FUNCTION hbmk2( aArgs, nArgTarget, /* @ */ lPause, nLevel ) nOpt_FNF := iif( "{SCRIPT}" $ cOpt_CompC, hbmk[ _HBMK_nScr_FNF ], hbmk[ _HBMK_nCmd_FNF ] ) /* Order is significant */ + tmp4 := iif( tmp3 == _CCOMP_PASS_C .AND. ( hbmk[ _HBMK_lCPP ] == NIL .OR. ! hbmk[ _HBMK_lCPP ] ), hbmk[ _HBMK_aOPTCX ], hbmk[ _HBMK_aOPTCPPX ] ) cOpt_CompC := StrTran( cOpt_CompC, "{FC}" , iif( hbmk[ _HBMK_lBLDFLGC ], hb_Version( HB_VERSION_FLAG_C ) + " ", "" ) +; GetEnv( "HB_USER_CFLAGS" ) +; iif( ! Empty( hbmk[ _HBMK_aOPTC ] ), " " + ArrayToList( hbmk[ _HBMK_aOPTC ] ), "" ) +; + iif( ! Empty( tmp4 ), " " + ArrayToList( tmp4 ), "" ) +; iif( ! Empty( hbmk[ _HBMK_aOPTCUSER ] ), " " + ArrayToList( hbmk[ _HBMK_aOPTCUSER ] ), "" ) ) cOpt_CompC := StrTran( cOpt_CompC, "{OD}" , FNameEscape( hb_FNameDir( hbmk[ _HBMK_cPROGNAME ] ), nOpt_Esc, nOpt_FNF ) ) cOpt_CompC := StrTran( cOpt_CompC, "{DI}" , FNameEscape( l_cHB_INSTALL_INC, nOpt_Esc, nOpt_FNF ) ) @@ -6682,6 +6697,30 @@ STATIC PROCEDURE Set_lCreateDyn( hbmk, lValue ) RETURN +STATIC FUNCTION gcc_opt_lngc_fill( hbmk ) + + 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 + + RETURN "" + +STATIC FUNCTION gcc_opt_lngcpp_fill( hbmk ) + + SWITCH hbmk[ _HBMK_cCPP ] + CASE "iso98" ; RETURN "-std=c++98" + CASE "iso0x" ; RETURN "-std=c++0x" + CASE "gnu98" ; RETURN "-std=gnu++98" + CASE "gnu0x" ; RETURN "-std=gnu++0x" + ENDSWITCH + + RETURN "" + STATIC PROCEDURE vxworks_env_init( hbmk ) /* Array positions for aTable */