diff --git a/README.md b/README.md index f6f5bf57..038af93f 100644 --- a/README.md +++ b/README.md @@ -170,11 +170,11 @@ _BuildCC_ is licensed under the Apache License, Version 2.0. See [LICENSE](LICEN > Developers who would like to suggest an alternative library, raise an issue with the **license** and **advantages** clearly outlined. -- [Fmtlib](https://github.com/fmtlib/fmt) (Formatting) [MIT License] [Header Only] -- [Spdlog](https://github.com/gabime/spdlog) (Logging) [MIT License] [Header Only] +- [Fmtlib](https://github.com/fmtlib/fmt) (Formatting) [MIT License] +- [Spdlog](https://github.com/gabime/spdlog) (Logging) [MIT License] - [Tiny Process Library](https://gitlab.com/eidheim/tiny-process-library) (Process handling) [MIT License] - [Taskflow](https://github.com/taskflow/taskflow) (Parallel Programming) [MIT License] [Header Only] - See also [3rd-Party](https://github.com/taskflow/taskflow/tree/master/3rd-party) used by Taskflow -- [Flatbuffers](https://github.com/google/flatbuffers) (Serialization) [Apache-2.0 License] [Header Only] +- [Flatbuffers](https://github.com/google/flatbuffers) (Serialization) [Apache-2.0 License] - [CLI11](https://github.com/CLIUtils/CLI11) (Argument Parsing) [BSD-3-Clause License] [Header Only] - [CppUTest](https://github.com/cpputest/cpputest) (Unit Testing/Mocking) [BSD-3-Clause License] diff --git a/buildcc/CMakeLists.txt b/buildcc/CMakeLists.txt index f4d5d628..035da54b 100644 --- a/buildcc/CMakeLists.txt +++ b/buildcc/CMakeLists.txt @@ -11,20 +11,19 @@ if(${BUILDCC_BUILD_AS_SINGLE_LIB}) $ ) target_link_libraries(buildcc PUBLIC - fmt::fmt-header-only - flatbuffers_header_only + fmt::fmt + flatbuffers Taskflow CLI11::CLI11 ) target_link_libraries(buildcc PRIVATE - spdlog::spdlog_header_only + spdlog::spdlog tiny-process-library::tiny-process-library ) target_compile_options(buildcc PRIVATE ${BUILD_COMPILE_FLAGS}) target_link_options(buildcc PRIVATE ${BUILD_LINK_FLAGS}) if(${BUILDCC_PRECOMPILE_HEADERS}) target_precompile_headers(buildcc INTERFACE buildcc.h) - target_precompile_headers(buildcc INTERFACE ${FBS_DIR}/pch/pch.h) endif() endif() @@ -65,7 +64,6 @@ if (${BUILDCC_BUILD_AS_INTERFACE}) ) if(${BUILDCC_PRECOMPILE_HEADERS}) target_precompile_headers(buildcc_i INTERFACE buildcc.h) - target_precompile_headers(buildcc_i INTERFACE ${FBS_DIR}/pch/pch.h) endif() endif() diff --git a/buildcc/lib/args/test/test_register.cpp b/buildcc/lib/args/test/test_register.cpp index 2403876c..04d8661e 100644 --- a/buildcc/lib/args/test/test_register.cpp +++ b/buildcc/lib/args/test/test_register.cpp @@ -108,8 +108,9 @@ TEST(RegisterTestGroup, Register_Build) { // Make dummy toolchain and target buildcc::Project::Init(fs::current_path(), fs::current_path()); - buildcc::Toolchain toolchain(buildcc::ToolchainId::Gcc, "", "", "", "", "", - ""); + buildcc::Toolchain toolchain( + buildcc::ToolchainId::Gcc, "", + buildcc::ToolchainExecutables("", "", "", "", "")); buildcc::BaseTarget target("dummyT", buildcc::TargetType::Executable, toolchain, ""); @@ -160,8 +161,9 @@ TEST(RegisterTestGroup, Register_Run_PostCb) { // Make dummy toolchain and target buildcc::Project::Init(fs::current_path(), fs::current_path()); - buildcc::Toolchain toolchain(buildcc::ToolchainId::Gcc, "", "", "", "", "", - ""); + buildcc::Toolchain toolchain( + buildcc::ToolchainId::Gcc, "", + buildcc::ToolchainExecutables("", "", "", "", "")); buildcc::BaseTarget target("dummyT", buildcc::TargetType::Executable, toolchain, ""); @@ -203,8 +205,9 @@ TEST(RegisterTestGroup, Register_NoBuildAndDep) { // Make dummy toolchain and target buildcc::Project::Init(fs::current_path(), fs::current_path()); - buildcc::Toolchain toolchain(buildcc::ToolchainId::Gcc, "", "", "", "", "", - ""); + buildcc::Toolchain toolchain( + buildcc::ToolchainId::Gcc, "", + buildcc::ToolchainExecutables("", "", "", "", "")); buildcc::BaseTarget target("dummyT", buildcc::TargetType::Executable, toolchain, ""); buildcc::BaseTarget dependency("depT", buildcc::TargetType::Executable, @@ -292,8 +295,9 @@ TEST(RegisterTestGroup, Register_BuildAndDep) { // Make dummy toolchain and target buildcc::Project::Init(fs::current_path(), fs::current_path()); - buildcc::Toolchain toolchain(buildcc::ToolchainId::Gcc, "", "", "", "", "", - ""); + buildcc::Toolchain toolchain( + buildcc::ToolchainId::Gcc, "", + buildcc::ToolchainExecutables("", "", "", "", "")); buildcc::BaseTarget target("dummyT", buildcc::TargetType::Executable, toolchain, ""); buildcc::BaseTarget dependency("depT", buildcc::TargetType::Executable, @@ -389,8 +393,9 @@ TEST(RegisterTestGroup, Register_DepDuplicate) { // Make dummy toolchain and target buildcc::Project::Init(fs::current_path(), fs::current_path()); - buildcc::Toolchain toolchain(buildcc::ToolchainId::Gcc, "", "", "", "", "", - ""); + buildcc::Toolchain toolchain( + buildcc::ToolchainId::Gcc, "", + buildcc::ToolchainExecutables("", "", "", "", "")); buildcc::BaseTarget target("dummyT", buildcc::TargetType::Executable, toolchain, ""); buildcc::BaseTarget dependency("depT", buildcc::TargetType::Executable, @@ -465,8 +470,9 @@ TEST(RegisterTestGroup, Register_DepCyclic) { // Make dummy toolchain and target buildcc::Project::Init(fs::current_path(), fs::current_path()); - buildcc::Toolchain toolchain(buildcc::ToolchainId::Gcc, "", "", "", "", "", - ""); + buildcc::Toolchain toolchain( + buildcc::ToolchainId::Gcc, "", + buildcc::ToolchainExecutables("", "", "", "", "")); buildcc::BaseTarget target("dummyT", buildcc::TargetType::Executable, toolchain, ""); buildcc::BaseTarget dependency("depT", buildcc::TargetType::Executable, @@ -542,8 +548,9 @@ TEST(RegisterTestGroup, Register_Test) { // Make dummy toolchain and target buildcc::Project::Init(fs::current_path(), fs::current_path()); - buildcc::Toolchain toolchain(buildcc::ToolchainId::Gcc, "", "", "", "", "", - ""); + buildcc::Toolchain toolchain( + buildcc::ToolchainId::Gcc, "", + buildcc::ToolchainExecutables("", "", "", "", "")); buildcc::BaseTarget target("dummyT", buildcc::TargetType::Executable, toolchain, ""); buildcc::BaseTarget dependency("depT", buildcc::TargetType::Executable, @@ -632,8 +639,9 @@ TEST(RegisterTestGroup, Register_TestWithOutput) { // Make dummy toolchain and target buildcc::Project::Init(fs::current_path(), fs::current_path()); - buildcc::Toolchain toolchain(buildcc::ToolchainId::Gcc, "", "", "", "", "", - ""); + buildcc::Toolchain toolchain( + buildcc::ToolchainId::Gcc, "", + buildcc::ToolchainExecutables("", "", "", "", "")); buildcc::BaseTarget target("dummyT", buildcc::TargetType::Executable, toolchain, ""); buildcc::BaseTarget dependency("depT", buildcc::TargetType::Executable, diff --git a/buildcc/lib/env/CMakeLists.txt b/buildcc/lib/env/CMakeLists.txt index 8af914c2..1cc6c285 100644 --- a/buildcc/lib/env/CMakeLists.txt +++ b/buildcc/lib/env/CMakeLists.txt @@ -16,7 +16,7 @@ if (${TESTING}) ${CMAKE_CURRENT_SOURCE_DIR}/mock/include ) target_link_libraries(mock_env PUBLIC - fmt::fmt-header-only + fmt::fmt Taskflow CppUTest @@ -96,11 +96,11 @@ if(${BUILDCC_BUILD_AS_INTERFACE}) $ $ ) - target_link_libraries(env PUBLIC fmt::fmt-header-only) + target_link_libraries(env PUBLIC fmt::fmt) target_compile_options(env PRIVATE ${BUILD_COMPILE_FLAGS}) target_link_options(env PRIVATE ${BUILD_LINK_FLAGS}) target_link_libraries(env PRIVATE - spdlog::spdlog_header_only + spdlog::spdlog tiny-process-library::tiny-process-library ) endif() diff --git a/buildcc/lib/env/include/env/storage.h b/buildcc/lib/env/include/env/storage.h index 21d5528e..b5407df8 100644 --- a/buildcc/lib/env/include/env/storage.h +++ b/buildcc/lib/env/include/env/storage.h @@ -100,10 +100,10 @@ class ScopedStorage { * @param ptr Can hold data of any type * @param typeid_name We cannot store a template type so this is the next * best thing - * @param desstructor Destructor callback to delete ptr + * @param destructor Destructor callback to delete ptr */ struct PtrMetadata { - void *ptr; + void *ptr{nullptr}; std::string typeid_name; std::function destructor; }; diff --git a/buildcc/lib/target/test/target/test_base_target.cpp b/buildcc/lib/target/test/target/test_base_target.cpp index ddc4990d..a00c5a24 100644 --- a/buildcc/lib/target/test/target/test_base_target.cpp +++ b/buildcc/lib/target/test/target/test_base_target.cpp @@ -21,8 +21,9 @@ TEST_GROUP(TargetBaseTestGroup) } }; // clang-format on -static buildcc::Toolchain gcc(buildcc::ToolchainId::Gcc, "gcc", "as", "gcc", - "g++", "ar", "ld"); +static buildcc::Toolchain gcc(buildcc::ToolchainId::Gcc, "gcc", + buildcc::ToolchainExecutables("as", "gcc", "g++", + "ar", "ld")); TEST(TargetBaseTestGroup, InvalidTargetType) { constexpr const char *const INVALID_NAME = "Invalid.random"; diff --git a/buildcc/lib/target/test/target/test_compile_object.cpp b/buildcc/lib/target/test/target/test_compile_object.cpp index 8c5f1f8e..d3cdcdff 100644 --- a/buildcc/lib/target/test/target/test_compile_object.cpp +++ b/buildcc/lib/target/test/target/test_compile_object.cpp @@ -15,8 +15,9 @@ TEST_GROUP(TargetCompileObjectTestGroup) }; // clang-format on -static buildcc::Toolchain gcc(buildcc::ToolchainId::Gcc, "gcc", "as", "gcc", - "g++", "ar", "ld"); +static buildcc::Toolchain gcc(buildcc::ToolchainId::Gcc, "gcc", + buildcc::ToolchainExecutables("as", "gcc", "g++", + "ar", "ld")); TEST(TargetCompileObjectTestGroup, CacheCompileCommand_Invalid) { buildcc::BaseTarget target("CacheCompileCommand_Invalid", diff --git a/buildcc/lib/target/test/target/test_target_external_lib.cpp b/buildcc/lib/target/test/target/test_target_external_lib.cpp index 4a979b6d..404f7330 100644 --- a/buildcc/lib/target/test/target/test_target_external_lib.cpp +++ b/buildcc/lib/target/test/target/test_target_external_lib.cpp @@ -27,8 +27,9 @@ TEST_GROUP(TargetTestExternalLib) }; // clang-format on -static buildcc::Toolchain gcc(buildcc::ToolchainId::Gcc, "gcc", "as", "gcc", - "g++", "ar", "ld"); +static buildcc::Toolchain gcc(buildcc::ToolchainId::Gcc, "gcc", + buildcc::ToolchainExecutables("as", "gcc", "g++", + "ar", "ld")); static const fs::path intermediate_path = fs::path(BUILD_TARGET_EXTERNAL_LIB_INTERMEDIATE_DIR) / gcc.GetName(); diff --git a/buildcc/lib/target/test/target/test_target_failure_states.cpp b/buildcc/lib/target/test/target/test_target_failure_states.cpp index 61ea9176..f7d813f5 100644 --- a/buildcc/lib/target/test/target/test_target_failure_states.cpp +++ b/buildcc/lib/target/test/target/test_target_failure_states.cpp @@ -25,8 +25,9 @@ TEST_GROUP(TargetTestFailureStates) }; // clang-format on -static buildcc::Toolchain gcc(buildcc::ToolchainId::Gcc, "gcc", "as", "gcc", - "g++", "ar", "ld"); +static buildcc::Toolchain gcc(buildcc::ToolchainId::Gcc, "gcc", + buildcc::ToolchainExecutables("as", "gcc", "g++", + "ar", "ld")); TEST(TargetTestFailureStates, StartTaskEnvFailure) { buildcc::env::set_task_state(buildcc::env::TaskState::FAILURE); diff --git a/buildcc/lib/target/test/target/test_target_flags.cpp b/buildcc/lib/target/test/target/test_target_flags.cpp index cfef234f..72933547 100644 --- a/buildcc/lib/target/test/target/test_target_flags.cpp +++ b/buildcc/lib/target/test/target/test_target_flags.cpp @@ -21,8 +21,9 @@ // Constants -static buildcc::Toolchain gcc(buildcc::ToolchainId::Gcc, "gcc", "as", "gcc", - "g++", "ar", "ld"); +static buildcc::Toolchain gcc(buildcc::ToolchainId::Gcc, "gcc", + buildcc::ToolchainExecutables("as", "gcc", "g++", + "ar", "ld")); // ------------- PREPROCESSOR FLAGS --------------- diff --git a/buildcc/lib/target/test/target/test_target_include_dir.cpp b/buildcc/lib/target/test/target/test_target_include_dir.cpp index 5f95c603..ea8633b0 100644 --- a/buildcc/lib/target/test/target/test_target_include_dir.cpp +++ b/buildcc/lib/target/test/target/test_target_include_dir.cpp @@ -26,8 +26,9 @@ TEST_GROUP(TargetTestIncludeDirGroup) }; // clang-format on -static buildcc::Toolchain gcc(buildcc::ToolchainId::Gcc, "gcc", "as", "gcc", - "g++", "ar", "ld"); +static buildcc::Toolchain gcc(buildcc::ToolchainId::Gcc, "gcc", + buildcc::ToolchainExecutables("as", "gcc", "g++", + "ar", "ld")); static const fs::path target_include_dir_intermediate_path = fs::path(BUILD_TARGET_INCLUDE_DIR_INTERMEDIATE_DIR) / gcc.GetName(); diff --git a/buildcc/lib/target/test/target/test_target_lib_dep.cpp b/buildcc/lib/target/test/target/test_target_lib_dep.cpp index 56c97666..2f83d5b2 100644 --- a/buildcc/lib/target/test/target/test_target_lib_dep.cpp +++ b/buildcc/lib/target/test/target/test_target_lib_dep.cpp @@ -30,8 +30,9 @@ TEST_GROUP(TargetTestLibDep) }; // clang-format on -static buildcc::Toolchain gcc(buildcc::ToolchainId::Gcc, "gcc", "as", "gcc", - "g++", "ar", "ld"); +static buildcc::Toolchain gcc(buildcc::ToolchainId::Gcc, "gcc", + buildcc::ToolchainExecutables("as", "gcc", "g++", + "ar", "ld")); static const fs::path intermediate_path = fs::path(BUILD_TARGET_LIB_DEP_INTERMEDIATE_DIR) / gcc.GetName(); diff --git a/buildcc/lib/target/test/target/test_target_lock.cpp b/buildcc/lib/target/test/target/test_target_lock.cpp index 768db823..b3b3f5f9 100644 --- a/buildcc/lib/target/test/target/test_target_lock.cpp +++ b/buildcc/lib/target/test/target/test_target_lock.cpp @@ -25,8 +25,9 @@ TEST_GROUP(TargetTestLock) }; // clang-format on -static buildcc::Toolchain gcc(buildcc::ToolchainId::Gcc, "gcc", "as", "gcc", - "g++", "ar", "ld"); +static buildcc::Toolchain gcc(buildcc::ToolchainId::Gcc, "gcc", + buildcc::ToolchainExecutables("as", "gcc", "g++", + "ar", "ld")); TEST(TargetTestLock, LockState) { constexpr const char *const NAME = "LockState.exe"; diff --git a/buildcc/lib/target/test/target/test_target_pch.cpp b/buildcc/lib/target/test/target/test_target_pch.cpp index 8eefcba2..4278c40c 100644 --- a/buildcc/lib/target/test/target/test_target_pch.cpp +++ b/buildcc/lib/target/test/target/test_target_pch.cpp @@ -30,8 +30,9 @@ TEST_GROUP(TargetPchTestGroup) }; // clang-format on -static buildcc::Toolchain gcc(buildcc::ToolchainId::Gcc, "gcc", "as", "gcc", - "g++", "ar", "ld"); +static buildcc::Toolchain gcc(buildcc::ToolchainId::Gcc, "gcc", + buildcc::ToolchainExecutables("as", "gcc", "g++", + "ar", "ld")); TEST(TargetPchTestGroup, Target_AddPch) { constexpr const char *const NAME = "AddPch.exe"; diff --git a/buildcc/lib/target/test/target/test_target_source.cpp b/buildcc/lib/target/test/target/test_target_source.cpp index b94c2dfb..2d09ab04 100644 --- a/buildcc/lib/target/test/target/test_target_source.cpp +++ b/buildcc/lib/target/test/target/test_target_source.cpp @@ -27,8 +27,9 @@ TEST_GROUP(TargetTestSourceGroup) }; // clang-format on -static buildcc::Toolchain gcc(buildcc::ToolchainId::Gcc, "gcc", "as", "gcc", - "g++", "ar", "ld"); +static buildcc::Toolchain gcc(buildcc::ToolchainId::Gcc, "gcc", + buildcc::ToolchainExecutables("as", "gcc", "g++", + "ar", "ld")); static const fs::path target_source_intermediate_path = fs::path(BUILD_TARGET_SOURCE_INTERMEDIATE_DIR) / gcc.GetName(); diff --git a/buildcc/lib/target/test/target/test_target_source_out_of_root.cpp b/buildcc/lib/target/test/target/test_target_source_out_of_root.cpp index b4fcac9a..5381f659 100644 --- a/buildcc/lib/target/test/target/test_target_source_out_of_root.cpp +++ b/buildcc/lib/target/test/target/test_target_source_out_of_root.cpp @@ -26,8 +26,9 @@ TEST_GROUP(TargetTestSourceOutOfRootGroup) }; // clang-format on -static buildcc::Toolchain gcc(buildcc::ToolchainId::Gcc, "gcc", "as", "gcc", - "g++", "ar", "ld"); +static buildcc::Toolchain gcc(buildcc::ToolchainId::Gcc, "gcc", + buildcc::ToolchainExecutables("as", "gcc", "g++", + "ar", "ld")); static const fs::path target_source_intermediate_path = fs::path(BUILD_TARGET_SOURCE_OUT_OF_ROOT_INTERMEDIATE_DIR) / gcc.GetName(); diff --git a/buildcc/lib/target/test/target/test_target_sync.cpp b/buildcc/lib/target/test/target/test_target_sync.cpp index 8380e318..50e7f207 100644 --- a/buildcc/lib/target/test/target/test_target_sync.cpp +++ b/buildcc/lib/target/test/target/test_target_sync.cpp @@ -19,8 +19,9 @@ TEST_GROUP(TargetTestSyncGroup) }; // clang-format on -static buildcc::Toolchain gcc(buildcc::ToolchainId::Gcc, "gcc", "as", "gcc", - "g++", "ar", "ldd"); +static buildcc::Toolchain gcc(buildcc::ToolchainId::Gcc, "gcc", + buildcc::ToolchainExecutables("as", "gcc", "g++", + "ar", "ld")); TEST(TargetTestSyncGroup, CopyByConstRef) { buildcc::BaseTarget srcTarget("srcTarget", buildcc::TargetType::Executable, diff --git a/buildcc/lib/target/test/target/test_target_user_deps.cpp b/buildcc/lib/target/test/target/test_target_user_deps.cpp index 50e51c64..686ca0d9 100644 --- a/buildcc/lib/target/test/target/test_target_user_deps.cpp +++ b/buildcc/lib/target/test/target/test_target_user_deps.cpp @@ -27,8 +27,9 @@ TEST_GROUP(TargetTestUserDepsGroup) }; // clang-format on -static buildcc::Toolchain gcc(buildcc::ToolchainId::Gcc, "gcc", "as", "gcc", - "g++", "ar", "ld"); +static buildcc::Toolchain gcc(buildcc::ToolchainId::Gcc, "gcc", + buildcc::ToolchainExecutables("as", "gcc", "g++", + "ar", "ld")); static const fs::path target_source_intermediate_path = fs::path(BUILD_TARGET_USER_DEPS_INTERMEDIATE_DIR) / gcc.GetName(); diff --git a/buildcc/lib/target/test/target/test_toolchain_flag_api.cpp b/buildcc/lib/target/test/target/test_toolchain_flag_api.cpp index 54344e46..d6308a89 100644 --- a/buildcc/lib/target/test/target/test_toolchain_flag_api.cpp +++ b/buildcc/lib/target/test/target/test_toolchain_flag_api.cpp @@ -15,8 +15,9 @@ TEST_GROUP(ToolchainFlagApiTestGroup) // clang-format on TEST(ToolchainFlagApiTestGroup, BasicToolchainTest_Lock) { - buildcc::Toolchain toolchain(buildcc::ToolchainId::Gcc, "gcc", "as", "gcc", - "g++", "ar", "ld"); + buildcc::Toolchain toolchain( + buildcc::ToolchainId::Gcc, "gcc", + buildcc::ToolchainExecutables("as", "gcc", "g++", "ar", "ld")); toolchain.Lock(); CHECK_THROWS(std::exception, toolchain.AddPreprocessorFlag("-preprocessor")); CHECK_THROWS(std::exception, toolchain.AddAsmCompileFlag("-asm")); @@ -29,8 +30,9 @@ TEST(ToolchainFlagApiTestGroup, BasicToolchainTest_Lock) { } TEST(ToolchainFlagApiTestGroup, BasicToolchainTest_Unlock) { - buildcc::Toolchain toolchain(buildcc::ToolchainId::Gcc, "gcc", "as", "gcc", - "g++", "ar", "ld"); + buildcc::Toolchain toolchain( + buildcc::ToolchainId::Gcc, "gcc", + buildcc::ToolchainExecutables("as", "gcc", "g++", "ar", "ld")); toolchain.AddPreprocessorFlag("-preprocessor"); toolchain.AddAsmCompileFlag("-asm"); toolchain.AddPchCompileFlag("-pchcompile"); @@ -55,8 +57,9 @@ TEST(ToolchainFlagApiTestGroup, BasicToolchainTest_Unlock) { } TEST(ToolchainFlagApiTestGroup, BasicTargetTest) { - buildcc::Toolchain toolchain(buildcc::ToolchainId::Gcc, "gcc", "as", "gcc", - "g++", "ar", "ld"); + buildcc::Toolchain toolchain( + buildcc::ToolchainId::Gcc, "gcc", + buildcc::ToolchainExecutables("as", "gcc", "g++", "ar", "ld")); toolchain.AddPreprocessorFlag("-preprocessor"); toolchain.AddAsmCompileFlag("-asm"); diff --git a/buildcc/lib/toolchain/include/toolchain/toolchain.h b/buildcc/lib/toolchain/include/toolchain/toolchain.h index 41c92137..55eeb30e 100644 --- a/buildcc/lib/toolchain/include/toolchain/toolchain.h +++ b/buildcc/lib/toolchain/include/toolchain/toolchain.h @@ -45,17 +45,6 @@ class Toolchain : public internal::FlagApi, : id_(id), name_(name), executables_(executables), config_(config), lock_(false) {} - [[deprecated]] Toolchain(ToolchainId id, std::string_view name, - std::string_view assembler, - std::string_view c_compiler, - std::string_view cpp_compiler, - std::string_view archiver, std::string_view linker, - const ToolchainConfig &config = ToolchainConfig()) - : Toolchain(id, name, - ToolchainExecutables(assembler, c_compiler, cpp_compiler, - archiver, linker), - config) {} - virtual ~Toolchain() = default; Toolchain(Toolchain &&) = default; Toolchain &operator=(Toolchain &&) = default; diff --git a/buildcc/lib/toolchain/test/test_toolchain_find.cpp b/buildcc/lib/toolchain/test/test_toolchain_find.cpp index 3867b8ac..9b67961a 100644 --- a/buildcc/lib/toolchain/test/test_toolchain_find.cpp +++ b/buildcc/lib/toolchain/test/test_toolchain_find.cpp @@ -26,8 +26,9 @@ TEST_GROUP(ToolchainFindTestGroup) // clang-format on TEST(ToolchainFindTestGroup, FindToolchain_ThroughEnvVar) { - buildcc::Toolchain gcc(buildcc::ToolchainId::Gcc, "gcc", "as", "gcc", "g++", - "ar", "ld"); + buildcc::Toolchain gcc( + buildcc::ToolchainId::Gcc, "gcc", + buildcc::ToolchainExecutables("as", "gcc", "g++", "ar", "ld")); std::string putenv_str = fmt::format("CUSTOM_BUILDCC_PATH={}/toolchains/gcc", fs::current_path().string()); @@ -46,8 +47,9 @@ TEST(ToolchainFindTestGroup, FindToolchain_ThroughEnvVar) { } TEST(ToolchainFindTestGroup, FindToolchain_ThroughAbsolutePath) { - buildcc::Toolchain gcc(buildcc::ToolchainId::Gcc, "gcc", "as", "gcc", "g++", - "ar", "ld"); + buildcc::Toolchain gcc( + buildcc::ToolchainId::Gcc, "gcc", + buildcc::ToolchainExecutables("as", "gcc", "g++", "ar", "ld")); buildcc::ToolchainFindConfig config; config.absolute_search_paths.insert(fs::current_path() / "toolchains" / @@ -59,8 +61,9 @@ TEST(ToolchainFindTestGroup, FindToolchain_ThroughAbsolutePath) { } TEST(ToolchainFindTestGroup, FindToolchain_DirectoryDoesntExist) { - buildcc::Toolchain gcc(buildcc::ToolchainId::Gcc, "gcc", "as", "gcc", "g++", - "ar", "ld"); + buildcc::Toolchain gcc( + buildcc::ToolchainId::Gcc, "gcc", + buildcc::ToolchainExecutables("as", "gcc", "g++", "ar", "ld")); buildcc::ToolchainFindConfig config; config.absolute_search_paths.insert(fs::current_path() / "toolchains" / @@ -72,8 +75,9 @@ TEST(ToolchainFindTestGroup, FindToolchain_DirectoryDoesntExist) { } TEST(ToolchainFindTestGroup, FindToolchain_NoDirectoryFound) { - buildcc::Toolchain gcc(buildcc::ToolchainId::Gcc, "gcc", "as", "gcc", "g++", - "ar", "ld"); + buildcc::Toolchain gcc( + buildcc::ToolchainId::Gcc, "gcc", + buildcc::ToolchainExecutables("as", "gcc", "g++", "ar", "ld")); buildcc::ToolchainFindConfig config; config.absolute_search_paths.insert(fs::current_path() / "toolchains" / @@ -85,8 +89,9 @@ TEST(ToolchainFindTestGroup, FindToolchain_NoDirectoryFound) { } TEST(ToolchainFindTestGroup, FindToolchain_NoToolchainFound) { - buildcc::Toolchain gcc(buildcc::ToolchainId::Gcc, "gcc", "as", "gcc", "g++", - "ar", "ld"); + buildcc::Toolchain gcc( + buildcc::ToolchainId::Gcc, "gcc", + buildcc::ToolchainExecutables("as", "gcc", "g++", "ar", "ld")); buildcc::ToolchainFindConfig config; config.absolute_search_paths.insert(fs::current_path() / "toolchains"); diff --git a/buildcc/plugins/include/plugins/buildcc_find.h b/buildcc/plugins/include/plugins/buildcc_find.h index 1c8f3661..50eab64e 100644 --- a/buildcc/plugins/include/plugins/buildcc_find.h +++ b/buildcc/plugins/include/plugins/buildcc_find.h @@ -20,6 +20,7 @@ #include #include #include +#include #include "env/host_os.h" diff --git a/buildcc/schema/cmake/schema.cmake b/buildcc/schema/cmake/schema.cmake index c7c1371a..b3c996f8 100644 --- a/buildcc/schema/cmake/schema.cmake +++ b/buildcc/schema/cmake/schema.cmake @@ -18,7 +18,7 @@ if (${TESTING}) ) target_link_libraries(mock_schema PUBLIC mock_env - flatbuffers_header_only + flatbuffers CppUTest CppUTestExt @@ -77,7 +77,7 @@ if(${BUILDCC_BUILD_AS_INTERFACE}) target_compile_options(schema PRIVATE ${BUILD_COMPILE_FLAGS}) target_link_options(schema PRIVATE ${BUILD_LINK_FLAGS}) target_link_libraries(schema PRIVATE - flatbuffers_header_only + flatbuffers ) add_dependencies(schema fbs_to_header) endif() diff --git a/cmake/target/flatbuffers.cmake b/cmake/target/flatbuffers.cmake index 0c59684b..dc4e1c1b 100644 --- a/cmake/target/flatbuffers.cmake +++ b/cmake/target/flatbuffers.cmake @@ -6,29 +6,8 @@ set(FLATBUFFERS_BUILD_CPP17 ON CACHE BOOL "Flatbuffers C++17 support") set(FLATBUFFERS_BUILD_TESTS OFF CACHE BOOL "Flatbuffers build tests") set(FLATBUFFERS_BUILD_FLATC ${BUILDCC_FLATBUFFERS_FLATC} CACHE BOOL "Flatbuffers build flatc") set(FLATBUFFERS_BUILD_FLATHASH OFF CACHE BOOL "Flatbuffers build flathash") -set(FLATBUFFERS_BUILD_FLATLIB OFF CACHE BOOL "Flatbuffers build flatlib") +set(FLATBUFFERS_BUILD_FLATLIB ON CACHE BOOL "Flatbuffers build flatlib") set(FLATBUFFERS_LIBCXX_WITH_CLANG OFF CACHE BOOL "Flatbuffers LIBCXX") set(FLATBUFFERS_INSTALL ON CACHE BOOL "Enable the installation of targets.") set(FLATBUFFERS_ENABLE_PCH ${BUILDCC_PRECOMPILE_HEADERS} CACHE BOOL "Flatbuffers PCH") add_subdirectory(third_party/flatbuffers) - -set(FBS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/third_party/flatbuffers/include/flatbuffers") -set(FBS_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/third_party/flatbuffers/include") -file(GLOB FLATBUFFERS_INCLUDE_HEADERS "${FBS_DIR}/*.h") -if(${BUILDCC_PRECOMPILE_HEADERS}) - list(APPEND FLATBUFFERS_INCLUDE_HEADERS ${FBS_DIR}/pch/pch.h) -endif() - -add_library(flatbuffers_header_only INTERFACE - ${FLATBUFFERS_INCLUDE_HEADERS} -) -target_include_directories(flatbuffers_header_only INTERFACE - $ - $ -) - -if (${BUILDCC_INSTALL}) - install(TARGETS flatbuffers_header_only DESTINATION lib EXPORT flatbuffers_header_onlyConfig) - install(DIRECTORY ${FBS_INCLUDE_DIR} DESTINATION "include") - install(EXPORT flatbuffers_header_onlyConfig DESTINATION "lib/cmake/flatbuffers_header_only") -endif() diff --git a/doc/software_architecture/buildcc_interface_lib.PNG b/doc/software_architecture/buildcc_interface_lib.PNG index e0ce861c..6fac4da1 100644 Binary files a/doc/software_architecture/buildcc_interface_lib.PNG and b/doc/software_architecture/buildcc_interface_lib.PNG differ diff --git a/doc/software_architecture/buildcc_single_lib.PNG b/doc/software_architecture/buildcc_single_lib.PNG index 62c4c929..2f836e4a 100644 Binary files a/doc/software_architecture/buildcc_single_lib.PNG and b/doc/software_architecture/buildcc_single_lib.PNG differ diff --git a/docs/source/arch/cmake_boilerplate.rst b/docs/source/arch/cmake_boilerplate.rst index d4ac48cf..9a882cea 100644 --- a/docs/source/arch/cmake_boilerplate.rst +++ b/docs/source/arch/cmake_boilerplate.rst @@ -57,7 +57,7 @@ We can then ``add_subdirectory`` that particular folder. This helps us keep our ${CMAKE_CURRENT_SOURCE_DIR}/mock/include ) target_link_libraries(mock_env PUBLIC - fmt::fmt-header-only + fmt::fmt Taskflow CppUTest @@ -122,11 +122,11 @@ We can then ``add_subdirectory`` that particular folder. This helps us keep our $ $ ) - target_link_libraries(env PUBLIC fmt::fmt-header-only) + target_link_libraries(env PUBLIC fmt::fmt) target_compile_options(env PRIVATE ${BUILD_COMPILE_FLAGS}) target_link_options(env PRIVATE ${BUILD_LINK_FLAGS}) target_link_libraries(env PRIVATE - spdlog::spdlog_header_only + spdlog::spdlog tiny-process-library::tiny-process-library ) endif() diff --git a/docs/source/examples/gcc.rst b/docs/source/examples/gcc.rst index ee5e0246..c67e3289 100644 --- a/docs/source/examples/gcc.rst +++ b/docs/source/examples/gcc.rst @@ -218,7 +218,7 @@ Use BuildCC with CMake # fmt is imported by spdlog by default find_package(fmt_package NAMES "fmt" REQUIRED) find_package(spdlog_package NAMES "spdlog" REQUIRED) - find_package(flatbuffers_header_only_package NAMES "flatbuffers_header_only" REQUIRED) + find_package(flatbuffers_package NAMES "flatbuffers" REQUIRED) find_package(taskflow_package NAMES "Taskflow" "taskflow" REQUIRED) find_package(CLI11_package NAMES "CLI11" REQUIRED) find_package(tiny_process_library_package NAMES "tiny-process-library" REQUIRED) @@ -227,7 +227,7 @@ Use BuildCC with CMake message("Find package: ${fmt_package_DIR}") message("Find package: ${spdlog_package_DIR}") - message("Find package: ${flatbuffers_header_only_package_DIR}") + message("Find package: ${flatbuffers_package_DIR}") message("Find package: ${taskflow_package_DIR}") message("Find package: ${CLI11_package_DIR}") message("Find package: ${tiny_process_library_package_DIR}") # diff --git a/example/gcc/AfterInstall/CMakeLists.txt b/example/gcc/AfterInstall/CMakeLists.txt index 6848d43a..9445c04c 100644 --- a/example/gcc/AfterInstall/CMakeLists.txt +++ b/example/gcc/AfterInstall/CMakeLists.txt @@ -12,7 +12,7 @@ project(simple) # fmt is imported by spdlog by default find_package(fmt_package NAMES "fmt" REQUIRED) find_package(spdlog_package NAMES "spdlog" REQUIRED) -find_package(flatbuffers_header_only_package NAMES "flatbuffers_header_only" REQUIRED) +find_package(flatbuffers_package NAMES "Flatbuffers" "flatbuffers" REQUIRED) find_package(taskflow_package NAMES "Taskflow" "taskflow" REQUIRED) find_package(CLI11_package NAMES "CLI11" REQUIRED) find_package(tiny_process_library_package NAMES "tiny-process-library" REQUIRED) @@ -21,7 +21,7 @@ find_package(buildcc_package NAMES "buildcc" REQUIRED) message("Find package: ${fmt_package_DIR}") message("Find package: ${spdlog_package_DIR}") -message("Find package: ${flatbuffers_header_only_package_DIR}") +message("Find package: ${flatbuffers_package_DIR}") message("Find package: ${taskflow_package_DIR}") message("Find package: ${CLI11_package_DIR}") message("Find package: ${tiny_process_library_package_DIR}") #