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.
		
		
		
		
			
				
					92 lines
				
				1.8 KiB
			
		
		
			
		
	
	
					92 lines
				
				1.8 KiB
			| 
								 
											2 weeks ago
										 
									 | 
							
								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'])
							 |