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.
		
		
		
		
		
			
		
			
				
					
					
						
							91 lines
						
					
					
						
							1.8 KiB
						
					
					
				
			
		
		
	
	
							91 lines
						
					
					
						
							1.8 KiB
						
					
					
				| import os
 | |
| import platform
 | |
| import subprocess
 | |
| import sysconfig
 | |
| import numpy as np
 | |
| 
 | |
| arch = subprocess.check_output(["uname", "-m"], encoding='utf8').rstrip()
 | |
| if platform.system() == "Darwin":
 | |
|   arch = "Darwin"
 | |
| 
 | |
| common = ''
 | |
| 
 | |
| cpppath = [
 | |
|   f"#/",
 | |
|   '#msgq/',
 | |
|   '/usr/lib/include',
 | |
|   '/opt/homebrew/include',
 | |
|   sysconfig.get_paths()['include'],
 | |
| ]
 | |
| 
 | |
| libpath = [
 | |
|   '/opt/homebrew/lib',
 | |
| ]
 | |
| 
 | |
| 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')
 | |
| 
 | |
| AddOption('--ubsan',
 | |
|           action='store_true',
 | |
|           help='turn on UBSan')
 | |
| 
 | |
| ccflags = []
 | |
| ldflags = []
 | |
| if GetOption('ubsan'):
 | |
|   flags = [
 | |
|     "-fsanitize=undefined",
 | |
|     "-fno-sanitize-recover=undefined",
 | |
|   ]
 | |
|   ccflags += flags
 | |
|   ldflags += flags
 | |
| elif GetOption('asan'):
 | |
|   ccflags += ["-fsanitize=address", "-fno-omit-frame-pointer"]
 | |
|   ldflags += ["-fsanitize=address"]
 | |
| 
 | |
| env = Environment(
 | |
|   ENV=os.environ,
 | |
|   CC='clang',
 | |
|   CXX='clang++',
 | |
|   CCFLAGS=[
 | |
|     "-g",
 | |
|     "-fPIC",
 | |
|     "-O2",
 | |
|     "-Wunused",
 | |
|     "-Werror",
 | |
|     "-Wshadow",
 | |
|     "-Wno-vla-cxx-extension",
 | |
|     "-Wno-unknown-warning-option",
 | |
|   ] + ccflags,
 | |
|   LDFLAGS=ldflags,
 | |
|   LINKFLAGS=ldflags,
 | |
| 
 | |
|   CFLAGS="-std=gnu11",
 | |
|   CXXFLAGS="-std=c++1z",
 | |
|   CPPPATH=cpppath,
 | |
|   LIBPATH=libpath,
 | |
|   CYTHONCFILESUFFIX=".cpp",
 | |
|   tools=["default", "cython"]
 | |
| )
 | |
| 
 | |
| Export('env', 'arch', 'common')
 | |
| 
 | |
| envCython = env.Clone(LIBS=[])
 | |
| envCython["CPPPATH"] += [np.get_include()]
 | |
| envCython["CCFLAGS"] += ["-Wno-#warnings", "-Wno-shadow", "-Wno-deprecated-declarations"]
 | |
| envCython["CCFLAGS"].remove('-Werror')
 | |
| if arch == "Darwin":
 | |
|   envCython["LINKFLAGS"] = ["-bundle", "-undefined", "dynamic_lookup"]
 | |
| else:
 | |
|   envCython["LINKFLAGS"] = ["-pthread", "-shared"]
 | |
| 
 | |
| Export('envCython')
 | |
| 
 | |
| 
 | |
| SConscript(['SConscript'])
 | |
| 
 |