|
|
|
|
|
|
|
|
#include <dds/logging.hpp> |
|
|
#include <dds/logging.hpp> |
|
|
#include <dds/usage_reqs.hpp> |
|
|
#include <dds/usage_reqs.hpp> |
|
|
#include <dds/util/algo.hpp> |
|
|
#include <dds/util/algo.hpp> |
|
|
|
|
|
#include <dds/util/time.hpp> |
|
|
#include <libman/index.hpp> |
|
|
#include <libman/index.hpp> |
|
|
#include <libman/parse.hpp> |
|
|
#include <libman/parse.hpp> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (params.generate_compdb) { |
|
|
if (params.generate_compdb) { |
|
|
generate_compdb(plan, env); |
|
|
generate_compdb(plan, env); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
dds::stopwatch sw; |
|
|
plan.compile_all(env, params.parallel_jobs); |
|
|
plan.compile_all(env, params.parallel_jobs); |
|
|
|
|
|
spdlog::info("Compilation completed in {:n}ms", sw.elapsed_ms().count()); |
|
|
|
|
|
|
|
|
|
|
|
sw.reset(); |
|
|
plan.archive_all(env, params.parallel_jobs); |
|
|
plan.archive_all(env, params.parallel_jobs); |
|
|
plan.link_all(env, params.parallel_jobs); |
|
|
|
|
|
|
|
|
spdlog::info("Archiving completed in {:n}ms", sw.elapsed_ms().count()); |
|
|
|
|
|
|
|
|
auto test_failures = plan.run_all_tests(env, params.parallel_jobs); |
|
|
|
|
|
for (auto& failures : test_failures) { |
|
|
|
|
|
spdlog::error("Test {} failed! Output:\n{}[dds - test output end]", |
|
|
|
|
|
failures.executable_path.string(), |
|
|
|
|
|
failures.output); |
|
|
|
|
|
|
|
|
if (params.build_apps || params.build_tests) { |
|
|
|
|
|
sw.reset(); |
|
|
|
|
|
plan.link_all(env, params.parallel_jobs); |
|
|
|
|
|
spdlog::info("Runtime binary linking completed in {:n}ms", sw.elapsed_ms().count()); |
|
|
} |
|
|
} |
|
|
if (!test_failures.empty()) { |
|
|
|
|
|
throw compile_failure("Test failures during the build!"); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (params.build_tests) { |
|
|
|
|
|
sw.reset(); |
|
|
|
|
|
auto test_failures = plan.run_all_tests(env, params.parallel_jobs); |
|
|
|
|
|
spdlog::info("Test execution finished in {:n}ms", sw.elapsed_ms().count()); |
|
|
|
|
|
|
|
|
|
|
|
for (auto& failures : test_failures) { |
|
|
|
|
|
spdlog::error("Test {} failed! Output:\n{}[dds - test output end]", |
|
|
|
|
|
failures.executable_path.string(), |
|
|
|
|
|
failures.output); |
|
|
|
|
|
} |
|
|
|
|
|
if (!test_failures.empty()) { |
|
|
|
|
|
throw compile_failure("Test failures during the build!"); |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
if (params.do_export) { |
|
|
if (params.do_export) { |