def do_generate_makefile(): dependency_map = {} for name in packageinfo.get_packages(): info = packageinfo.get(name) if info.enabled: dependency_map.update(info.dependency_map()) names = sorted(dependency_map.iterkeys()) build_targets = add_prefix('build-', names) clean_targets = add_prefix('clean-', names) target_file = path.join(packageinfo.get_work_dir(), 'Makefile') with open(target_file, 'w') as f: f.write('export BUILDTOOL_PROFILE := %s\n' % _config_profile) f.write('export BUILDTOOL_BASE_DIR := %s\n\n' % _base_dir) f.write('buildtool := %s %s\n\n' % (sys.executable, path.abspath(__file__))) f.write('build := $(buildtool) build\n') f.write('clean := $(buildtool) clean\n\n') f.write('_default:\n') f.write('\t@echo No defaults. Please, specify target to build.\n\n') f.write('refresh:\n') f.write('\t@$(buildtool) generate-makefile\n\n') f.write('clean: %s\n\n' % wrap_for_make(clean_targets)) for name, target in zip(names, build_targets): deps = add_prefix('build-', dependency_map[name]) f.write('%s: %s\n' % (target, wrap_for_make(deps))) f.write('\t@$(build) %s\n\n' % name) for name, target in zip(names, clean_targets): f.write('%s:\n' % target) f.write('\t@$(clean) %s\n\n' % name) f.write('.PHONY: _default refresh clean\n') f.write('.PHONY: %s\n' % wrap_for_make(build_targets)) f.write('.PHONY: %s\n' % wrap_for_make(clean_targets))
def do_build_all(info): do_generate_makefile() args = ['-j', config.get('build_jobs', '1'), 'build-' + info.name] cmdutil.native_make(args, packageinfo.get_work_dir())