|
|
@@ -28,6 +28,7 @@ class BuildOptions(NamedTuple): |
|
|
|
jobs: int |
|
|
|
static: bool |
|
|
|
debug: bool |
|
|
|
asan: bool |
|
|
|
|
|
|
|
@property |
|
|
|
def is_msvc(self) -> bool: |
|
|
@@ -77,6 +78,8 @@ def _create_compile_command(opts: BuildOptions, cpp_file: Path, |
|
|
|
str(cpp_file), |
|
|
|
f'-o{obj_file}', |
|
|
|
] |
|
|
|
if opts.asan: |
|
|
|
cmd.append('-fsanitize=address') |
|
|
|
if have_ccache(): |
|
|
|
cmd.insert(0, 'ccache') |
|
|
|
elif have_sccache(): |
|
|
@@ -198,6 +201,8 @@ def _create_exe_link_command(opts: BuildOptions, obj: Path, lib: Path, |
|
|
|
'-lstdc++fs', |
|
|
|
f'-o{out}', |
|
|
|
] |
|
|
|
if opts.asan: |
|
|
|
cmd.append('-fsanitize=address') |
|
|
|
if opts.static: |
|
|
|
cmd.extend(( |
|
|
|
'-static', |
|
|
@@ -265,6 +270,7 @@ def main(argv: Sequence[str]) -> int: |
|
|
|
help='Build with debug information and disable optimizations') |
|
|
|
parser.add_argument( |
|
|
|
'--static', action='store_true', help='Build a static executable') |
|
|
|
parser.add_argument('--asan', action='store_true', help='Enable Address Sanitizer') |
|
|
|
args = parser.parse_args(argv) |
|
|
|
|
|
|
|
all_sources = set(ROOT.glob('src/**/*.cpp')) |
|
|
@@ -277,6 +283,7 @@ def main(argv: Sequence[str]) -> int: |
|
|
|
cxx=Path(args.cxx), |
|
|
|
jobs=args.jobs, |
|
|
|
static=args.static, |
|
|
|
asan=args.asan, |
|
|
|
debug=args.debug) |
|
|
|
|
|
|
|
objects = compile_sources(build_opts, sorted(all_sources)) |