You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					65 lines
				
				1.4 KiB
			
		
		
			
		
	
	
					65 lines
				
				1.4 KiB
			| 
											2 months ago
										 | import os
 | ||
|  | import subprocess
 | ||
|  | import platform
 | ||
|  | 
 | ||
|  | arch = subprocess.check_output(["uname", "-m"], encoding='utf8').rstrip()
 | ||
|  | if platform.system() == "Darwin":
 | ||
|  |   arch = "Darwin"
 | ||
|  | 
 | ||
|  | cpppath = [
 | ||
|  |   '#',
 | ||
|  |   '/usr/lib/include',
 | ||
|  | ]
 | ||
|  | 
 | ||
|  | AddOption('--minimal',
 | ||
|  |           action='store_false',
 | ||
|  |           dest='extras',
 | ||
|  |           default=True,
 | ||
|  |           help='the minimum build. no tests, tools, etc.')
 | ||
|  | 
 | ||
|  | AddOption('--asan',
 | ||
|  |           action='store_true',
 | ||
|  |           help='turn on ASAN')
 | ||
|  | 
 | ||
|  | # safety options
 | ||
|  | AddOption('--ubsan',
 | ||
|  |           action='store_true',
 | ||
|  |           help='turn on UBSan')
 | ||
|  | 
 | ||
|  | AddOption('--mutation',
 | ||
|  |           action='store_true',
 | ||
|  |           help='generate mutation-ready code')
 | ||
|  | 
 | ||
|  | ccflags_asan = ["-fsanitize=address", "-fno-omit-frame-pointer"] if GetOption('asan') else []
 | ||
|  | ldflags_asan = ["-fsanitize=address"] if GetOption('asan') else []
 | ||
|  | 
 | ||
|  | env = Environment(
 | ||
|  |   ENV=os.environ,
 | ||
|  |   CC='gcc',
 | ||
|  |   CXX='g++',
 | ||
|  |   CCFLAGS=[
 | ||
|  |     "-g",
 | ||
|  |     "-fPIC",
 | ||
|  |     "-O2",
 | ||
|  |     "-Wunused",
 | ||
|  |     "-Werror",
 | ||
|  |     "-Wshadow",
 | ||
|  |     "-Wno-vla-cxx-extension",
 | ||
|  |     "-Wno-unknown-warning-option",  # for compatibility across compiler versions
 | ||
|  |   ] + ccflags_asan,
 | ||
|  |   LDFLAGS=ldflags_asan,
 | ||
|  |   LINKFLAGS=ldflags_asan,
 | ||
|  |   CFLAGS="-std=gnu11",
 | ||
|  |   CXXFLAGS=["-std=c++1z"],
 | ||
|  |   CPPPATH=cpppath,
 | ||
|  |   tools=["default", "compilation_db"]
 | ||
|  | )
 | ||
|  | if arch != "Darwin":
 | ||
|  |   env.Append(CCFLAGS=["-fmax-errors=1", ])
 | ||
|  | 
 | ||
|  | env.CompilationDatabase('compile_commands.json')
 | ||
|  | 
 | ||
|  | Export('env', 'arch')
 | ||
|  | 
 | ||
|  | SConscript(['SConscript'])
 |