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
11 months 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",
|
||
|
] + 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'])
|