def run_native(args, additional_args=None): wd, filename = None, None if args.dir: wd = args.dir filename = args.PATH else: wd = args.PATH if os.path.isfile(args.PATH): wd, filename = os.path.split(args.PATH) program, arguments = prepare_native(args.release, args.coverage, args.disable_modules) if filename: # other main file arguments.append(filename) if args.live: arguments.append("--livecoding") if additional_args: arguments += additional_args if args.debug: execute(get_gdb_args(program, arguments=arguments), cwd=wd) elif args.profile: execute(['valgrind'] + VALGRIND_ARGS_PROFILE + [program] + arguments, cwd=wd) elif args.memcheck: execute(['valgrind'] + VALGRIND_ARGS_MEMCHECK + [program] + arguments, cwd=wd) else: execute([program] + arguments, cwd=wd) if args.coverage: directory = args.release and BUILD_NATIVE_RELEASE or BUILD_NATIVE_DEBUG run_target(directory, 'coverage-report')
def cmake_update(build, definitions=[], force_clean=False): generator = HAS_NINJA and 'Ninja' or 'Unix Makefiles' builder = HAS_NINJA and 'ninja' or 'make' if force_clean: clean(build) if not os.path.exists(build): os.mkdir(build) defs = ['-D' + d for d in definitions] if not execute(['cmake', '..', '-G', generator] + defs, cwd=build): print(E + 'cmake failed. Fix CMakeLists.txt and try again!' + N) clean(build) sys.exit(1) if not execute([builder], cwd=build): print(E + builder, 'failed, stopping.' + N) sys.exit(1)
def run_target(build, target): builder = HAS_NINJA and 'ninja' or 'make' if not execute([builder, target], cwd=build): print(E + builder, target, 'failed, stopping.' + N) sys.exit(1)