2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								import  os  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-10-30 19:05:14 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								def  is_active ( ) :  
						 
					
						
							
								
									
										
										
										
											2016-10-30 18:44:57 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  True 
							 
						 
					
						
							
								
									
										
										
										
											2016-04-02 20:26:12 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-10-30 19:05:14 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								def  get_name ( ) :  
						 
					
						
							
								
									
										
										
										
											2018-03-21 15:51:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  ' JavaScript ' 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-10-30 19:05:14 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								def  can_build ( ) :  
						 
					
						
							
								
									
										
										
										
											2018-03-28 06:10:11 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  ' EM_CONFIG '  in  os . environ  or  os . path . exists ( os . path . expanduser ( ' ~/.emscripten ' ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-10-30 19:05:14 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								def  get_opts ( ) :  
						 
					
						
							
								
									
										
										
										
											2017-09-25 00:37:17 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    from  SCons . Variables  import  BoolVariable 
							 
						 
					
						
							
								
									
										
										
										
											2016-10-30 18:44:57 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  [ 
							 
						 
					
						
							
								
									
										
										
										
											2018-03-21 15:51:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        # eval() can be a security concern, so it can be disabled. 
							 
						 
					
						
							
								
									
										
										
										
											2017-09-25 00:37:17 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        BoolVariable ( ' javascript_eval ' ,  ' Enable JavaScript eval interface ' ,  True ) , 
							 
						 
					
						
							
								
									
										
										
										
											2016-10-30 18:44:57 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ] 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-10-30 19:05:14 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								def  get_flags ( ) :  
						 
					
						
							
								
									
										
										
										
											2016-10-30 18:44:57 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  [ 
							 
						 
					
						
							
								
									
										
										
										
											2017-09-25 00:04:49 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ( ' tools ' ,  False ) , 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-20 08:54:52 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ( ' builtin_pcre2_with_jit ' ,  False ) , 
							 
						 
					
						
							
								
									
										
										
										
											2018-02-08 22:00:55 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        # Disabling the mbedtls module reduces file size. 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-25 09:07:07 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        # The module has little use due to the limited networking functionality 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        # in this platform. For the available networking methods, the browser 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        # manages TLS. 
							 
						 
					
						
							
								
									
										
										
										
											2018-02-08 22:00:55 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ( ' module_mbedtls_enabled ' ,  False ) , 
							 
						 
					
						
							
								
									
										
										
										
											2016-10-30 18:44:57 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ] 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  configure ( env ) :  
						 
					
						
							
								
									
										
										
										
											2016-06-14 11:27:16 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-06-30 19:21:38 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ## Build type 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-05-14 15:11:42 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  env [ ' target ' ]  !=  ' debug ' : 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-07 00:13:04 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        # Use -Os to prioritize optimizing for reduced file size. This is 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        # particularly valuable for the web platform because it directly 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        # decreases download time. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        # -Os reduces file size by around 5 MiB over -O3. -Oz only saves about 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        # 100 KiB over -Os, which does not justify the negative impact on 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        # run-time performance. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        env . Append ( CCFLAGS = [ ' -Os ' ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        env . Append ( LINKFLAGS = [ ' -Os ' ] ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-05-14 15:11:42 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  env [ ' target ' ]  ==  ' release_debug ' : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            env . Append ( CPPDEFINES = [ ' DEBUG_ENABLED ' ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            # Retain function names for backtraces at the cost of file size. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            env . Append ( LINKFLAGS = [ ' --profiling-funcs ' ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else : 
							 
						 
					
						
							
								
									
										
										
										
											2018-03-21 15:51:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        env . Append ( CPPDEFINES = [ ' DEBUG_ENABLED ' ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        env . Append ( CCFLAGS = [ ' -O1 ' ,  ' -g ' ] ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-06-30 19:21:38 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        env . Append ( LINKFLAGS = [ ' -O1 ' ,  ' -g ' ] ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-03-18 21:33:54 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        env . Append ( LINKFLAGS = [ ' -s ' ,  ' ASSERTIONS=1 ' ] ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-06-30 19:21:38 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ## Compiler configuration 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    env [ ' ENV ' ]  =  os . environ 
							 
						 
					
						
							
								
									
										
										
										
											2018-03-28 06:10:11 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    em_config_file  =  os . getenv ( ' EM_CONFIG ' )  or  os . path . expanduser ( ' ~/.emscripten ' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  not  os . path . exists ( em_config_file ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        raise  RuntimeError ( " Emscripten configuration file  ' %s '  does not exist "  %  em_config_file ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    with  open ( em_config_file )  as  f : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        em_config  =  { } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        try : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            # Emscripten configuration file is a Python file with simple assignments. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            exec ( f . read ( ) ,  em_config ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        except  StandardError  as  e : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            raise  RuntimeError ( " Emscripten configuration file  ' %s '  is invalid: \n %s "  %  ( em_config_file ,  e ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-09 18:57:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ' BINARYEN_ROOT '  in  em_config  and  os . path . isdir ( os . path . join ( em_config . get ( ' BINARYEN_ROOT ' ) ,  ' emscripten ' ) ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        # New style, emscripten path as a subfolder of BINARYEN_ROOT 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        env . PrependENVPath ( ' PATH ' ,  os . path . join ( em_config . get ( ' BINARYEN_ROOT ' ) ,  ' emscripten ' ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    elif  ' EMSCRIPTEN_ROOT '  in  em_config : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        # Old style (but can be there as a result from previous activation, so do last) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        env . PrependENVPath ( ' PATH ' ,  em_config . get ( ' EMSCRIPTEN_ROOT ' ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else : 
							 
						 
					
						
							
								
									
										
										
										
											2019-06-04 18:45:49 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        raise  RuntimeError ( " ' BINARYEN_ROOT '  or  ' EMSCRIPTEN_ROOT '  missing in Emscripten configuration file  ' %s ' "  %  em_config_file ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-06-30 19:21:38 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-03-21 15:51:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    env [ ' CC ' ]  =  ' emcc ' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    env [ ' CXX ' ]  =  ' em++ ' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    env [ ' LINK ' ]  =  ' emcc ' 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-20 07:47:06 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-11-15 09:39:18 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    env [ ' AR ' ]  =  ' emar ' 
							 
						 
					
						
							
								
									
										
										
										
											2018-03-21 15:51:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    env [ ' RANLIB ' ]  =  ' emranlib ' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # Use TempFileMunge since some AR invocations are too long for cmd.exe. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # Use POSIX-style paths, required with TempFileMunge. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    env [ ' ARCOM_POSIX ' ]  =  env [ ' ARCOM ' ] . replace ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ' $TARGET ' ,  ' $TARGET.posix ' ) . replace ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ' $SOURCES ' ,  ' $SOURCES.posix ' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    env [ ' ARCOM ' ]  =  ' $ { TEMPFILE(ARCOM_POSIX)} ' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # All intermediate files are just LLVM bitcode. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    env [ ' OBJPREFIX ' ]  =  ' ' 
							 
						 
					
						
							
								
									
										
										
										
											2017-02-20 13:36:54 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    env [ ' OBJSUFFIX ' ]  =  ' .bc ' 
							 
						 
					
						
							
								
									
										
										
										
											2018-03-21 15:51:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    env [ ' PROGPREFIX ' ]  =  ' ' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # Program() output consists of multiple files, so specify suffixes manually at builder. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    env [ ' PROGSUFFIX ' ]  =  ' ' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    env [ ' LIBPREFIX ' ]  =  ' lib ' 
							 
						 
					
						
							
								
									
										
										
										
											2017-02-21 22:47:33 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    env [ ' LIBSUFFIX ' ]  =  ' .bc ' 
							 
						 
					
						
							
								
									
										
										
										
											2018-03-21 15:51:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    env [ ' LIBPREFIXES ' ]  =  [ ' $LIBPREFIX ' ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    env [ ' LIBSUFFIXES ' ]  =  [ ' $LIBSUFFIX ' ] 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-20 07:47:06 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-06-30 19:21:38 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ## Compile flags 
							 
						 
					
						
							
								
									
										
										
										
											2016-10-30 18:44:57 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-04-30 13:12:02 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    env . Prepend ( CPPPATH = [ ' #platform/javascript ' ] ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-03-21 15:51:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    env . Append ( CPPDEFINES = [ ' JAVASCRIPT_ENABLED ' ,  ' UNIX_ENABLED ' ] ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-10-30 18:44:57 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-03-21 15:51:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    # No multi-threading (SharedArrayBuffer) available yet, 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # once feasible also consider memory buffer size issues. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    env . Append ( CPPDEFINES = [ ' NO_THREADS ' ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-05-20 16:47:32 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    # Disable exceptions and rtti on non-tools (template) builds 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  not  env [ ' tools ' ] : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        # These flags help keep the file size down. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        env . Append ( CCFLAGS = [ ' -fno-exceptions ' ,  ' -fno-rtti ' ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        # Don't use dynamic_cast, necessary with no-rtti. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        env . Append ( CPPDEFINES = [ ' NO_SAFE_CAST ' ] ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-06-30 19:21:38 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-09-25 00:37:17 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  env [ ' javascript_eval ' ] : 
							 
						 
					
						
							
								
									
										
										
										
											2018-03-21 15:51:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        env . Append ( CPPDEFINES = [ ' JAVASCRIPT_EVAL_ENABLED ' ] ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-06-30 19:21:38 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ## Link flags 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-11-19 09:44:04 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    # We use IDBFS in javascript_main.cpp. Since Emscripten 1.39.1 it needs to 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # be linked explicitly. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    env . Append ( LIBS = [ ' idbfs.js ' ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-11-18 05:50:26 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    env . Append ( LINKFLAGS = [ ' -s ' ,  ' BINARYEN=1 ' ] ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-03-21 15:51:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-01-22 22:18:02 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    # Only include the JavaScript support code for the web environment 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # (i.e. exclude Node.js and other unused environments). 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # This makes the JavaScript support code about 4 KB smaller. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    env . Append ( LINKFLAGS = [ ' -s ' ,  ' ENVIRONMENT=web ' ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-12-02 14:10:46 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    # This needs to be defined for Emscripten using 'fastcomp' (default pre-1.39.0) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # and undefined if using 'upstream'. And to make things simple, earlier 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # Emscripten versions didn't include 'fastcomp' in their path, so we check 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # against the presence of 'upstream' to conditionally add the flag. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  not  " upstream "  in  em_config [ ' EMSCRIPTEN_ROOT ' ] : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        env . Append ( LINKFLAGS = [ ' -s ' ,  ' BINARYEN_TRAP_MODE= \' clamp \' ' ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-03-21 15:51:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    # Allow increasing memory buffer size during runtime. This is efficient 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # when using WebAssembly (in comparison to asm.js) and works well for 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # us since we don't know requirements at compile-time. 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-18 05:50:26 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    env . Append ( LINKFLAGS = [ ' -s ' ,  ' ALLOW_MEMORY_GROWTH=1 ' ] ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-03-21 15:51:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # This setting just makes WebGL 2 APIs available, it does NOT disable WebGL 1. 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-19 15:30:09 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    env . Append ( LINKFLAGS = [ ' -s ' ,  ' USE_WEBGL2=1 ' ] ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-03-21 15:51:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-11-19 15:30:09 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    env . Append ( LINKFLAGS = [ ' -s ' ,  ' INVOKE_RUN=0 ' ] ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-03-21 15:51:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # TODO: Reevaluate usage of this setting now that engine.js manages engine runtime. 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-19 15:30:09 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    env . Append ( LINKFLAGS = [ ' -s ' ,  ' NO_EXIT_RUNTIME=1 ' ] ) 
							 
						 
					
						
							
								
									
										
										
										
											2019-08-12 21:59:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    #adding flag due to issue with emscripten 1.38.41 callMain method https://github.com/emscripten-core/emscripten/blob/incoming/ChangeLog.md#v13841-08072019 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    env . Append ( LINKFLAGS = [ ' -s ' ,  ' EXTRA_EXPORTED_RUNTIME_METHODS=[ " callMain " ] ' ] )