@@ -833,6 +833,11 @@ def setUp(self):
833833 self .js_engines = config .JS_ENGINES .copy ()
834834 self .settings_mods = {}
835835 self .emcc_args = ['-Wclosure' , '-Werror' , '-Wno-limited-postlink-optimizations' ]
836+ # TODO(https://github.com/emscripten-core/emscripten/issues/11121)
837+ # For historical reasons emcc compiles and links as C++ by default.
838+ # However we want to run our tests in a more strict manner. We can
839+ # remove this if the issue above is ever fixed.
840+ self .set_setting ('NO_DEFAULT_TO_CXX' )
836841 self .ldflags = []
837842 # Increate stack trace limit to maximise usefulness of test failure reports
838843 self .node_args = ['--stack-trace-limit=50' ]
@@ -954,9 +959,13 @@ def has_changed_setting(self, key):
954959 def clear_setting (self , key ):
955960 self .settings_mods .pop (key , None )
956961
957- def serialize_settings (self ):
962+ def serialize_settings (self , ldflags = True ):
958963 ret = []
964+ # Incomplete list of link-only settings
965+ link_only_settings = ['NO_DEFAULT_TO_CXX' ]
959966 for key , value in self .settings_mods .items ():
967+ if not ldflags and key in link_only_settings :
968+ continue
960969 if value == 1 :
961970 ret .append (f'-s{ key } ' )
962971 elif type (value ) is list :
@@ -994,7 +1003,7 @@ def get_emcc_args(self, main_file=False, ldflags=True):
9941003 def is_ldflag (f ):
9951004 return any (f .startswith (s ) for s in ['-sENVIRONMENT=' , '--pre-js=' , '--post-js=' ])
9961005
997- args = self .serialize_settings () + self .emcc_args
1006+ args = self .serialize_settings (ldflags ) + self .emcc_args
9981007 if ldflags :
9991008 args += self .ldflags
10001009 else :
@@ -1034,12 +1043,6 @@ def build(self, filename, libraries=None, includes=None, force_c=False, js_outfi
10341043 filename = test_file (filename )
10351044 suffix = '.js' if js_outfile else '.wasm'
10361045 compiler = [compiler_for (filename , force_c )]
1037- if compiler [0 ] == EMCC :
1038- # TODO(https://github.com/emscripten-core/emscripten/issues/11121)
1039- # For historical reasons emcc compiles and links as C++ by default.
1040- # However we want to run our tests in a more strict manner. We can
1041- # remove this if the issue above is ever fixed.
1042- compiler .append ('-sNO_DEFAULT_TO_CXX' )
10431046
10441047 if force_c :
10451048 assert shared .suffix (filename ) != '.c' , 'force_c is not needed for source files ending in .c'
0 commit comments