|
|
|
|
|
|
|
|
jobs: int |
|
|
jobs: int |
|
|
static: bool |
|
|
static: bool |
|
|
debug: bool |
|
|
debug: bool |
|
|
|
|
|
asan: bool |
|
|
|
|
|
|
|
|
@property |
|
|
@property |
|
|
def is_msvc(self) -> bool: |
|
|
def is_msvc(self) -> bool: |
|
|
|
|
|
|
|
|
str(cpp_file), |
|
|
str(cpp_file), |
|
|
f'-o{obj_file}', |
|
|
f'-o{obj_file}', |
|
|
] |
|
|
] |
|
|
|
|
|
if opts.asan: |
|
|
|
|
|
cmd.append('-fsanitize=address') |
|
|
if have_ccache(): |
|
|
if have_ccache(): |
|
|
cmd.insert(0, 'ccache') |
|
|
cmd.insert(0, 'ccache') |
|
|
elif have_sccache(): |
|
|
elif have_sccache(): |
|
|
|
|
|
|
|
|
'-lstdc++fs', |
|
|
'-lstdc++fs', |
|
|
f'-o{out}', |
|
|
f'-o{out}', |
|
|
] |
|
|
] |
|
|
|
|
|
if opts.asan: |
|
|
|
|
|
cmd.append('-fsanitize=address') |
|
|
if opts.static: |
|
|
if opts.static: |
|
|
cmd.extend(( |
|
|
cmd.extend(( |
|
|
'-static', |
|
|
'-static', |
|
|
|
|
|
|
|
|
help='Build with debug information and disable optimizations') |
|
|
help='Build with debug information and disable optimizations') |
|
|
parser.add_argument( |
|
|
parser.add_argument( |
|
|
'--static', action='store_true', help='Build a static executable') |
|
|
'--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) |
|
|
args = parser.parse_args(argv) |
|
|
|
|
|
|
|
|
all_sources = set(ROOT.glob('src/**/*.cpp')) |
|
|
all_sources = set(ROOT.glob('src/**/*.cpp')) |
|
|
|
|
|
|
|
|
cxx=Path(args.cxx), |
|
|
cxx=Path(args.cxx), |
|
|
jobs=args.jobs, |
|
|
jobs=args.jobs, |
|
|
static=args.static, |
|
|
static=args.static, |
|
|
|
|
|
asan=args.asan, |
|
|
debug=args.debug) |
|
|
debug=args.debug) |
|
|
|
|
|
|
|
|
objects = compile_sources(build_opts, sorted(all_sources)) |
|
|
objects = compile_sources(build_opts, sorted(all_sources)) |