From b636ffaa713e77efc449640d3fd8f6d4fc7e3758 Mon Sep 17 00:00:00 2001 From: Romain BOULLARD Date: Sat, 28 Feb 2026 10:46:03 +0100 Subject: [PATCH] more profiles --- .gitea/workflows/ci.yml | 14 ++------ Bin2CPP/Sources/Bin2CPPExe/CMakeLists.txt | 28 ++++++++++----- Bin2CPP/Sources/Bin2CPPLib/CMakeLists.txt | 42 +++++++++++++++-------- Bin2CPP/Tests/Bin2CPPLib/CMakeLists.txt | 25 ++++++++++---- CMake/FindDependencies.cmake | 4 ++- ConanProfiles/clangd | 8 ++--- ConanProfiles/clangd_asan | 33 ++++++++++++++++++ ConanProfiles/msvcd | 8 ++--- ConanProfiles/msvcd_asan | 25 ++++++++++++++ 9 files changed, 132 insertions(+), 55 deletions(-) create mode 100644 ConanProfiles/clangd_asan create mode 100644 ConanProfiles/msvcd_asan diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index 228f452..82c227a 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -19,17 +19,8 @@ jobs: matrix: build_type: ["Debug", "RelWithDebInfo", "Release"] unity_build: ["ON", "OFF"] - include: - - build_type: Release - conan_profile: ./ConanProfiles/clang - name: Release - - build_type: Debug - conan_profile: ./ConanProfiles/clangd - name: Debug (ASAN, LSAN, UBSAN) - - build_type: RelWithDebInfo - conan_profile: ./ConanProfiles/clangd - name: RelWithDebInfo (ASAN, LSAN, UBSAN) - name: "Build & Test ${{ matrix.name }} (Unity Build: ${{ matrix.unity_build }})" + conan_profile: ["./ConanProfiles/clang", "./ConanProfiles/clangd", "./ConanProfiles/clangd_asan"] + name: "Build & Test ${{ matrix.name }} with ${{ matrix.conan_profile }} (Unity Build: ${{ matrix.unity_build }})" steps: - name: Install Node.js run: apt-get update && apt-get install -y nodejs @@ -41,7 +32,6 @@ jobs: - name: Build run: | - conan profile detect conan install . --deployer=full_deploy --deployer-folder=build --remote=bigfootpackages -pr:h=${{ matrix.conan_profile }} -pr:b=${{ matrix.conan_profile }} --build=missing -s build_type=${{ matrix.build_type }} cmake -S . -B ./build/${{ matrix.build_type }} --toolchain ./build/${{ matrix.build_type }}/generators/conan_toolchain.cmake -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} -DCMAKE_UNITY_BUILD=${{ matrix.unity_build }} -G "Ninja" cmake --build build/${{ matrix.build_type }} --parallel $(nproc) diff --git a/Bin2CPP/Sources/Bin2CPPExe/CMakeLists.txt b/Bin2CPP/Sources/Bin2CPPExe/CMakeLists.txt index e27c20a..ab3ca17 100644 --- a/Bin2CPP/Sources/Bin2CPPExe/CMakeLists.txt +++ b/Bin2CPP/Sources/Bin2CPPExe/CMakeLists.txt @@ -4,26 +4,36 @@ project(${PackageName}) add_executable(${PROJECT_NAME}) target_compile_features(${PROJECT_NAME} PRIVATE cxx_std_20) -target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/Include) +file(GLOB_RECURSE BIN2CPPEXE_SOURCES + CONFIGURE_DEPENDS + ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp +) -# collect sources (reconfigure when files are added/removed) -file(GLOB_RECURSE SOURCES +file(GLOB_RECURSE BIN2CPPEXE_HEADERS CONFIGURE_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/*.h ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp - ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp ) target_sources(${PROJECT_NAME} PRIVATE - ${SOURCES} + ${BIN2CPPEXE_SOURCES} + PRIVATE + FILE_SET HEADERS + BASE_DIRS + ${CMAKE_CURRENT_SOURCE_DIR}/Include + FILES + ${BIN2CPPEXE_HEADERS} ) -target_link_libraries(${PROJECT_NAME} PRIVATE Bin2CPPCompileAndLinkFlags) -target_link_libraries(${PROJECT_NAME} PUBLIC CLI11::CLI11 Bin2CPPLib) -target_link_libraries(${PROJECT_NAME} PRIVATE ${CMAKE_DL_LIBS}) +target_link_libraries(${PROJECT_NAME} + PRIVATE + Bin2CPPCompileAndLinkFlags + Bin2CPPLib + CLI11::CLI11 + ${CMAKE_DL_LIBS}) -source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} PREFIX Src FILES ${SOURCES}) +source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} PREFIX Src FILES ${BIN2CPPEXE_SOURCES} ${BIN2CPPEXE_HEADERS}) set_target_properties(${PROJECT_NAME} PROPERTIES FOLDER Bin2CPP/${ParentFolder}) diff --git a/Bin2CPP/Sources/Bin2CPPLib/CMakeLists.txt b/Bin2CPP/Sources/Bin2CPPLib/CMakeLists.txt index 1da8ebe..5807ce3 100644 --- a/Bin2CPP/Sources/Bin2CPPLib/CMakeLists.txt +++ b/Bin2CPP/Sources/Bin2CPPLib/CMakeLists.txt @@ -4,35 +4,49 @@ project(${PackageName}) add_library(${PROJECT_NAME} STATIC) target_compile_features(${PROJECT_NAME} PRIVATE cxx_std_20) -target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/Include) +file(GLOB_RECURSE BIN2CPPLIB_SOURCES + CONFIGURE_DEPENDS + ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp +) -# collect sources (reconfigure when files are added/removed) -file(GLOB_RECURSE SOURCES +file(GLOB_RECURSE BIN2CPPLIB_HEADERS CONFIGURE_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/*.h ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp - ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp +) + +file(GLOB_RECURSE BIN2CPPLIB_OTHERS + CONFIGURE_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp.in ) target_sources(${PROJECT_NAME} PRIVATE - ${SOURCES} + ${BIN2CPPLIB_SOURCES} + PUBLIC + FILE_SET HEADERS + BASE_DIRS + ${CMAKE_CURRENT_SOURCE_DIR}/Include + FILES + ${BIN2CPPLIB_HEADERS} ) -target_link_libraries(${PROJECT_NAME} PRIVATE Bin2CPPCompileAndLinkFlags) -target_link_libraries(${PROJECT_NAME} PUBLIC - EASTL::EASTL - $,mimalloc-asan,mimalloc-static> - quill::quill - $<$:cpptrace::cpptrace>) +target_link_libraries(${PROJECT_NAME} + PRIVATE + Bin2CPPCompileAndLinkFlags + PUBLIC + $,mimalloc-asan,mimalloc-static> + EASTL::EASTL + quill::quill + $<$:cpptrace::cpptrace>) target_compile_definitions(${PROJECT_NAME} - PUBLIC QUILL_NO_EXCEPTIONS - PUBLIC QUILL_DISABLE_NON_PREFIXED_MACROS) + PUBLIC + QUILL_NO_EXCEPTIONS + QUILL_DISABLE_NON_PREFIXED_MACROS) set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/MimallocImpl.cpp PROPERTIES SKIP_UNITY_BUILD_INCLUSION ON) -source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} PREFIX Src FILES ${SOURCES}) +source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} PREFIX Src FILES ${BIN2CPPLIB_SOURCES} ${BIN2CPPLIB_HEADERS} ${BIN2CPPLIB_OTHERS}) set_target_properties(${PROJECT_NAME} PROPERTIES FOLDER Bin2CPP/${ParentFolder}) \ No newline at end of file diff --git a/Bin2CPP/Tests/Bin2CPPLib/CMakeLists.txt b/Bin2CPP/Tests/Bin2CPPLib/CMakeLists.txt index 2475d5f..c5bfae5 100644 --- a/Bin2CPP/Tests/Bin2CPPLib/CMakeLists.txt +++ b/Bin2CPP/Tests/Bin2CPPLib/CMakeLists.txt @@ -4,27 +4,38 @@ project(${PackageName}Tests) add_executable(${PROJECT_NAME}) target_compile_features(${PROJECT_NAME} PRIVATE cxx_std_20) -target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/Include) +file(GLOB_RECURSE BIN2CPPLIBTESTS_SOURCES + CONFIGURE_DEPENDS + ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp +) -file(GLOB_RECURSE TEST_SOURCES +file(GLOB_RECURSE BIN2CPPLIBTESTS_HEADERS CONFIGURE_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/*.h ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp - ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp ) target_sources(${PROJECT_NAME} PRIVATE - ${TEST_SOURCES} + ${BIN2CPPLIBTESTS_SOURCES} + PRIVATE + FILE_SET HEADERS + BASE_DIRS + ${CMAKE_CURRENT_SOURCE_DIR}/Include + FILES + ${BIN2CPPLIBTESTS_HEADERS} ) -target_link_libraries(${PROJECT_NAME} PRIVATE Bin2CPPCompileAndLinkFlags) -target_link_libraries(${PROJECT_NAME} PRIVATE gtest::gtest Bin2CPPLib) +target_link_libraries(${PROJECT_NAME} + PRIVATE + Bin2CPPCompileAndLinkFlags + Bin2CPPLib + gtest::gtest) include(GoogleTest) gtest_discover_tests(${PROJECT_NAME} XML_OUTPUT_DIR ${CMAKE_BINARY_DIR}/TestResults/) -source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} PREFIX Src/ FILES ${TEST_SOURCES}) +source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} PREFIX Src/ FILES ${BIN2CPPLIBTESTS_SOURCES} ${BIN2CPPLIBTESTS_HEADERS}) set_target_properties(${PROJECT_NAME} PROPERTIES FOLDER Tests/Bin2CPP/${ParentFolder}) diff --git a/CMake/FindDependencies.cmake b/CMake/FindDependencies.cmake index c2a83a0..9f40144 100644 --- a/CMake/FindDependencies.cmake +++ b/CMake/FindDependencies.cmake @@ -15,7 +15,9 @@ else() find_package(mimalloc REQUIRED) endif() -if(${IS_MULTI_CONFIG} OR ${CMAKE_BUILD_TYPE} STREQUAL "Debug" OR ${CMAKE_BUILD_TYPE} STREQUAL "RelWithDebInfo") +if(${IS_MULTI_CONFIG}) + find_package(cpptrace REQUIRED) +elseif(${CMAKE_BUILD_TYPE} STREQUAL "Debug" OR ${CMAKE_BUILD_TYPE} STREQUAL "RelWithDebInfo") find_package(cpptrace REQUIRED) endif() diff --git a/ConanProfiles/clangd b/ConanProfiles/clangd index 9a8fc1e..0fa3339 100644 --- a/ConanProfiles/clangd +++ b/ConanProfiles/clangd @@ -15,11 +15,8 @@ tools.cmake.cmaketoolchain:extra_variables={'CMAKE_CXX_COMPILER_LAUNCHER': 'ccac tools.system.package_manager:mode=install tools.system.package_manager:sudo=True -tools.build:exelinkflags=["-fuse-ld=mold", "-fsanitize=address,undefined,leak"] -tools.build:sharedlinkflags=["-fuse-ld=mold", "-fsanitize=address,undefined,leak"] - -tools.build:cflags=["-fsanitize=address,undefined,leak", "-fno-sanitize-recover=all"] -tools.build:cxxflags=["-fsanitize=address,undefined,leak", "-fno-sanitize-recover=all"] +tools.build:exelinkflags=["-fuse-ld=mold"] +tools.build:sharedlinkflags=["-fuse-ld=mold"] tools.cmake.cmaketoolchain:generator=Ninja @@ -29,5 +26,4 @@ tools.build:compiler_executables={"c": "clang", "cpp": "clang++"} !cmake/*: cmake/[>=4.2] [options] -Bin2CPP/*:asan=True Bin2CPP/*:build_tests=True \ No newline at end of file diff --git a/ConanProfiles/clangd_asan b/ConanProfiles/clangd_asan new file mode 100644 index 0000000..9a8fc1e --- /dev/null +++ b/ConanProfiles/clangd_asan @@ -0,0 +1,33 @@ +[settings] +os=Linux +arch=x86_64 +compiler=clang +compiler.version=20 +compiler.libcxx=libstdc++11 +compiler.cppstd=20 +compiler.cstd=17 +compiler.runtime=static +build_type=Debug + +[conf] +tools.cmake.cmaketoolchain:extra_variables={'CMAKE_CXX_COMPILER_LAUNCHER': 'ccache', 'CMAKE_C_COMPILER_LAUNCHER': 'ccache'} + +tools.system.package_manager:mode=install +tools.system.package_manager:sudo=True + +tools.build:exelinkflags=["-fuse-ld=mold", "-fsanitize=address,undefined,leak"] +tools.build:sharedlinkflags=["-fuse-ld=mold", "-fsanitize=address,undefined,leak"] + +tools.build:cflags=["-fsanitize=address,undefined,leak", "-fno-sanitize-recover=all"] +tools.build:cxxflags=["-fsanitize=address,undefined,leak", "-fno-sanitize-recover=all"] + +tools.cmake.cmaketoolchain:generator=Ninja + +tools.build:compiler_executables={"c": "clang", "cpp": "clang++"} + +[tool_requires] +!cmake/*: cmake/[>=4.2] + +[options] +Bin2CPP/*:asan=True +Bin2CPP/*:build_tests=True \ No newline at end of file diff --git a/ConanProfiles/msvcd b/ConanProfiles/msvcd index aa385c6..74ff47a 100644 --- a/ConanProfiles/msvcd +++ b/ConanProfiles/msvcd @@ -11,15 +11,11 @@ build_type=Debug [conf] tools.cmake.cmaketoolchain:user_toolchain+={{profile_dir}}/msvc_ccache.cmake -tools.build:exelinkflags=["/INCREMENTAL:NO"] -tools.build:sharedlinkflags=["/INCREMENTAL:NO"] - -tools.build:cflags=["/Zc:preprocessor", "/Zc:__STDC__", "/D_CRT_DECLARE_NONSTDC_NAMES=1", "/fsanitize=address"] -tools.build:cxxflags=["/Zc:preprocessor", "/Zc:__cplusplus", "/Zc:enumTypes", "/Zc:templateScope", "/Zc:strictStrings", "/Zc:rvalueCast", "/Zc:hiddenFriend", "/Zc:externConstexpr", "/Zc:ternary", "/fsanitize=address"] +tools.build:cflags=["/Zc:preprocessor", "/Zc:__STDC__", "/D_CRT_DECLARE_NONSTDC_NAMES=1"] +tools.build:cxxflags=["/Zc:preprocessor", "/Zc:__cplusplus", "/Zc:enumTypes", "/Zc:templateScope", "/Zc:strictStrings", "/Zc:rvalueCast", "/Zc:hiddenFriend", "/Zc:externConstexpr", "/Zc:ternary"] [tool_requires] !cmake/*: cmake/[>=4.2] [options] -Bin2CPP/*:asan=True Bin2CPP/*:build_tests=True diff --git a/ConanProfiles/msvcd_asan b/ConanProfiles/msvcd_asan new file mode 100644 index 0000000..13ad410 --- /dev/null +++ b/ConanProfiles/msvcd_asan @@ -0,0 +1,25 @@ +[settings] +os=Windows +arch=x86_64 +compiler=msvc +compiler.version=195 +compiler.cppstd=20 +compiler.cstd=17 +compiler.runtime=static +build_type=Debug + +[conf] +tools.cmake.cmaketoolchain:user_toolchain+={{profile_dir}}/msvc_ccache.cmake + +tools.build:exelinkflags=["/INCREMENTAL:NO"] +tools.build:sharedlinkflags=["/INCREMENTAL:NO"] + +tools.build:cflags=["/Zc:preprocessor", "/Zc:__STDC__", "/D_CRT_DECLARE_NONSTDC_NAMES=1"] +tools.build:cxxflags=["/Zc:preprocessor", "/Zc:__cplusplus", "/Zc:enumTypes", "/Zc:templateScope", "/Zc:strictStrings", "/Zc:rvalueCast", "/Zc:hiddenFriend", "/Zc:externConstexpr", "/Zc:ternary"] + +[tool_requires] +!cmake/*: cmake/[>=4.2] + +[options] +Bin2CPP/*:asan=True +Bin2CPP/*:build_tests=True