@@ -58,6 +58,7 @@ var MINRE2C = "1.0.3";
5858
5959/* Store the enabled extensions (summary + QA check) */
6060var extensions_enabled = new Array ( ) ;
61+ var cxx_mode_targets = { } ;
6162
6263/* Store the SAPI enabled (summary + QA check) */
6364var sapi_enabled = new Array ( ) ;
@@ -1460,13 +1461,17 @@ function ZEND_EXTENSION(extname, file_list, shared, cflags, dllname, obj_dir)
14601461 extensions_enabled [ extensions_enabled . length - 1 ] [ 2 ] = true ;
14611462}
14621463
1463- function EXTENSION ( extname , file_list , shared , cflags , dllname , obj_dir )
1464+ function EXTENSION ( extname , file_list , shared , cflags , dllname , obj_dir , cxx_mode )
14641465{
14651466 var objs = null ;
14661467 var EXT = extname . toUpperCase ( ) ;
14671468 var extname_for_printing ;
14681469 var ldflags ;
14691470
1471+ if ( cxx_mode ) {
1472+ cxx_mode_targets [ extname ] = true ;
1473+ }
1474+
14701475 if ( shared == null ) {
14711476 if ( force_all_shared ( ) ) {
14721477 shared = true ;
@@ -1804,8 +1809,9 @@ function ADD_SOURCES(dir, file_list, target, obj_dir, duplicate_sources)
18041809 var _tmp = src . split ( "\\" ) ;
18051810 var filename = _tmp . pop ( ) ;
18061811 obj = filename . replace ( re , ".obj" ) ;
1812+ var c11_flag = VS_TOOLSET && ! cxx_mode_targets [ target ] && / \. c $ / i. test ( src ) ? " /std:c11" : "" ;
18071813
1808- MFO . WriteLine ( "\t" + CMD_MOD1 + "$(CC) $(" + flags + ") $(CFLAGS) $(" + bd_flags_name + ") /c " + dir + "\\" + src + " /Fo" + sub_build + d + obj ) ;
1814+ MFO . WriteLine ( "\t" + CMD_MOD1 + "$(CC)" + c11_flag + " $(" + flags + ") $(CFLAGS) $(" + bd_flags_name + ") /c " + dir + "\\" + src + " /Fo" + sub_build + d + obj ) ;
18091815
18101816 if ( "clang" == PHP_ANALYZER ) {
18111817 MFO . WriteLine ( "\t" + CMD_MOD1 + "\"$(CLANG_CL)\" " + analyzer_base_args + " $(" + flags + "_ANALYZER) $(CFLAGS_ANALYZER) $(" + bd_flags_name + "_ANALYZER) " + dir + "\\" + src ) ;
@@ -1819,11 +1825,20 @@ function ADD_SOURCES(dir, file_list, target, obj_dir, duplicate_sources)
18191825 } else {
18201826 /* TODO create a response file at least for the source files to work around the cmd line length limit. */
18211827 var src_line = "" ;
1828+ var src_lines = [ "" , "" ] ;
18221829 for ( var j in srcs_by_dir [ k ] ) {
1823- src_line += dir + "\\" + file_list [ srcs_by_dir [ k ] [ j ] ] + " " ;
1830+ var source = file_list [ srcs_by_dir [ k ] [ j ] ] ;
1831+ var source_path = dir + "\\" + source + " " ;
1832+ src_line += source_path ;
1833+ src_lines [ VS_TOOLSET && / \. c $ / i. test ( source ) ? 0 : 1 ] += source_path ;
18241834 }
18251835
1826- MFO . WriteLine ( "\t" + CMD_MOD1 + "$(CC) $(" + flags + ") $(CFLAGS) /Fo" + sub_build + d + " $(" + bd_flags_name + ") /c " + src_line ) ;
1836+ for ( var language = 0 ; language < src_lines . length ; language ++ ) {
1837+ if ( src_lines [ language ] ) {
1838+ var c11_flag = language == 0 && ! cxx_mode_targets [ target ] ? " /std:c11" : "" ;
1839+ MFO . WriteLine ( "\t" + CMD_MOD1 + "$(CC)" + c11_flag + " $(" + flags + ") $(CFLAGS) /Fo" + sub_build + d + " $(" + bd_flags_name + ") /c " + src_lines [ language ] ) ;
1840+ }
1841+ }
18271842
18281843 if ( "clang" == PHP_ANALYZER ) {
18291844 MFO . WriteLine ( "\t\"$(CLANG_CL)\" " + analyzer_base_args + " $(" + flags + "_ANALYZER) $(CFLAGS_ANALYZER) $(" + bd_flags_name + "_ANALYZER) " + src_line ) ;
0 commit comments