diff --git a/Bin2CPP/Sources/Bin2CPPExe/CMakeLists.txt b/Bin2CPP/Sources/Bin2CPPExe/CMakeLists.txt index ab00820..7cfa0a1 100644 --- a/Bin2CPP/Sources/Bin2CPPExe/CMakeLists.txt +++ b/Bin2CPP/Sources/Bin2CPPExe/CMakeLists.txt @@ -27,4 +27,18 @@ target_link_libraries(${PROJECT_NAME} PRIVATE ${CMAKE_DL_LIBS}) source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} PREFIX Src FILES ${SOURCES}) -set_target_properties(${PROJECT_NAME} PROPERTIES FOLDER Bin2CPP/${ParentFolder}) \ No newline at end of file +set_target_properties(${PROJECT_NAME} PROPERTIES FOLDER Bin2CPP/${ParentFolder}) + +##################ASAN SETUP################### + +if (MSVC) + get_filename_component(MSVC_BIN_DIR "${CMAKE_CXX_COMPILER}" DIRECTORY) + set(ASAN_DLL "${MSVC_BIN_DIR}/clang_rt.asan_dynamic-x86_64.dll") + + add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD + COMMAND ${CMAKE_COMMAND} -E echo "Copying ASan DLL: ${ASAN_DLL} to $" + COMMAND ${CMAKE_COMMAND} -E $,$>,copy_if_different,true> + "${ASAN_DLL}" + "$" + ) +endif() \ No newline at end of file diff --git a/Bin2CPP/Tests/Bin2CPPLib/CMakeLists.txt b/Bin2CPP/Tests/Bin2CPPLib/CMakeLists.txt index 056e8c9..5382a7e 100644 --- a/Bin2CPP/Tests/Bin2CPPLib/CMakeLists.txt +++ b/Bin2CPP/Tests/Bin2CPPLib/CMakeLists.txt @@ -30,6 +30,20 @@ source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} PREFIX Src/ FILES ${TEST_SOURCES}) set_target_properties(${PROJECT_NAME} PROPERTIES FOLDER Tests/Bin2CPP/${ParentFolder}) +##################ASAN SETUP################### + +if (MSVC) + get_filename_component(MSVC_BIN_DIR "${CMAKE_CXX_COMPILER}" DIRECTORY) + set(ASAN_DLL "${MSVC_BIN_DIR}/clang_rt.asan_dynamic-x86_64.dll") + + add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD + COMMAND ${CMAKE_COMMAND} -E echo "Copying ASan DLL: ${ASAN_DLL} to $" + COMMAND ${CMAKE_COMMAND} -E $,$>,copy_if_different,true> + "${ASAN_DLL}" + "$" + ) +endif() + ##################COPY FIXTURE FOLDER################### if(NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/Fixture) @@ -46,7 +60,7 @@ add_custom_target(${PROJECT_NAME}Fixture COMMAND ${CMAKE_COMMAND} -E remove_directory $/Fixture COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/Fixture $/Fixture DEPENDS ${FIXTURE_FILES} - COMMENT "Copying Fixture folder for ${PROJECT_NAME}" + COMMENT "Copying Fixture folder ${CMAKE_CURRENT_SOURCE_DIR}/Fixture to $/Fixture" ) add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}Fixture) diff --git a/CMakeLists.txt b/CMakeLists.txt index 315f7e2..27d1a5f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,15 @@ cmake_minimum_required(VERSION 3.24) +foreach(config DEBUG RELWITHDEBINFO) + foreach(lang EXE SHARED MODULE) + if("${CMAKE_${lang}_LINKER_FLAGS_${config}}" MATCHES "/INCREMENTAL:NO") + string(REGEX REPLACE "/INCREMENTAL([^:]|$)" "" + CMAKE_${lang}_LINKER_FLAGS_${config} + "${CMAKE_${lang}_LINKER_FLAGS_${config}}") + endif() + endforeach() +endforeach() + project(Bin2CPP VERSION 0.1.0 DESCRIPTION "Bin2CPP" LANGUAGES CXX) diff --git a/ConanProfiles/clang b/ConanProfiles/clang index a85443e..997385f 100644 --- a/ConanProfiles/clang +++ b/ConanProfiles/clang @@ -6,15 +6,16 @@ compiler.version=20 compiler.libcxx=libstdc++11 compiler.cppstd=20 compiler.cstd=17 +compiler.runtime=static build_type=Release + [conf] tools.cmake.cmaketoolchain:extra_variables={'CMAKE_CXX_COMPILER_LAUNCHER': 'ccache', 'CMAKE_C_COMPILER_LAUNCHER': 'ccache'} tools.cmake.cmaketoolchain:extra_variables*={'BIN2CPP_CXX_FLAGS': {'value': '-Wall;-Wextra;-Wpedantic;-Werror', 'cache': True, 'type': 'STRING', 'docstring': 'CXX flags for Bigfoot', 'force': True}} tools.cmake.cmaketoolchain:extra_variables*={'BIN2CPP_C_FLAGS': {'value': '-Wall;-Wextra;-Wpedantic;-Werror', 'cache': True, 'type': 'STRING', 'docstring': 'C flags for Bigfoot', 'force': True}} -tools.cmake.cmaketoolchain:generator=Ninja + tools.system.package_manager:mode=install tools.system.package_manager:sudo=True -tools.build:compiler_executables={"c": "clang", "cpp": "clang++"} tools.build:exelinkflags=["-fuse-ld=mold", "-flto"] tools.build:sharedlinkflags=["-fuse-ld=mold", "-flto"] @@ -22,5 +23,7 @@ tools.build:sharedlinkflags=["-fuse-ld=mold", "-flto"] tools.build:cflags=["-flto"] tools.build:cxxflags=["-flto"] +tools.cmake.cmaketoolchain:generator=Ninja + [tool_requires] !cmake/*: cmake/[>=4.2] \ No newline at end of file diff --git a/ConanProfiles/clang_coverage b/ConanProfiles/clang_coverage index e94fdfc..b84c15a 100644 --- a/ConanProfiles/clang_coverage +++ b/ConanProfiles/clang_coverage @@ -6,20 +6,23 @@ 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.cmake.cmaketoolchain:extra_variables*={'BIN2CPP_CXX_FLAGS': {'value': '-Wall;-Wextra;-Wpedantic;-Werror;-fprofile-instr-generate;-fcoverage-mapping', 'cache': True, 'type': 'STRING', 'docstring': 'CXX flags for Bigfoot', 'force': True}} tools.cmake.cmaketoolchain:extra_variables*={'BIN2CPP_C_FLAGS': {'value': '-Wall;-Wextra;-Wpedantic;-Werror;-fprofile-instr-generate;-fcoverage-mapping', 'cache': True, 'type': 'STRING', 'docstring': 'C flags for Bigfoot', 'force': True}} tools.cmake.cmaketoolchain:extra_variables*={'BIN2CPP_SHARED_LINK_FLAGS': {'value': '-fprofile-instr-generate', 'cache': True, 'type': 'STRING', 'docstring': 'SHARED link flags for Bigfoot', 'force': True}} tools.cmake.cmaketoolchain:extra_variables*={'BIN2CPP_EXE_LINK_FLAGS': {'value': '-fprofile-instr-generate', 'cache': True, 'type': 'STRING', 'docstring': 'EXE link flags for Bigfoot', 'force': True}} -tools.cmake.cmaketoolchain:generator=Ninja + tools.system.package_manager:mode=install tools.system.package_manager:sudo=True -tools.build:compiler_executables={"c": "clang", "cpp": "clang++"} tools.build:exelinkflags=["-fuse-ld=mold"] tools.build:sharedlinkflags=["-fuse-ld=mold"] +tools.cmake.cmaketoolchain:generator=Ninja + [tool_requires] !cmake/*: cmake/[>=4.2] \ No newline at end of file diff --git a/ConanProfiles/clangd b/ConanProfiles/clangd index cec5523..8f27c93 100644 --- a/ConanProfiles/clangd +++ b/ConanProfiles/clangd @@ -6,20 +6,23 @@ 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.cmake.cmaketoolchain:extra_variables*={'BIN2CPP_CXX_FLAGS': {'value': '-Wall;-Wextra;-Wpedantic;-Werror;-fsanitize=address,undefined;-fno-sanitize-recover=all', 'cache': True, 'type': 'STRING', 'docstring': 'CXX flags for Bigfoot', 'force': True}} tools.cmake.cmaketoolchain:extra_variables*={'BIN2CPP_C_FLAGS': {'value': '-Wall;-Wextra;-Wpedantic;-Werror;-fsanitize=address,undefined;-fno-sanitize-recover=all', 'cache': True, 'type': 'STRING', 'docstring': 'C flags for Bigfoot', 'force': True}} tools.cmake.cmaketoolchain:extra_variables*={'BIN2CPP_SHARED_LINK_FLAGS': {'value': '-fsanitize=address,undefined', 'cache': True, 'type': 'STRING', 'docstring': 'SHARED link flags for Bigfoot', 'force': True}} tools.cmake.cmaketoolchain:extra_variables*={'BIN2CPP_EXE_LINK_FLAGS': {'value': '-fsanitize=address,undefined', 'cache': True, 'type': 'STRING', 'docstring': 'EXE link flags for Bigfoot', 'force': True}} -tools.cmake.cmaketoolchain:generator=Ninja + tools.system.package_manager:mode=install tools.system.package_manager:sudo=True -tools.build:compiler_executables={"c": "clang", "cpp": "clang++"} tools.build:exelinkflags=["-fuse-ld=mold"] tools.build:sharedlinkflags=["-fuse-ld=mold"] +tools.cmake.cmaketoolchain:generator=Ninja + [tool_requires] !cmake/*: cmake/[>=4.2] \ No newline at end of file diff --git a/ConanProfiles/msvc b/ConanProfiles/msvc index 769a3fe..e95cd6a 100644 --- a/ConanProfiles/msvc +++ b/ConanProfiles/msvc @@ -5,8 +5,9 @@ compiler=msvc compiler.version=195 compiler.cppstd=20 compiler.cstd=17 -compiler.runtime=dynamic +compiler.runtime=static build_type=Release + [conf] tools.cmake.cmaketoolchain:extra_variables={'BIN2CPP_CXX_FLAGS': {'value': '/W4;/WX;', 'cache': True, 'type': 'STRING', 'docstring': 'CXX flags for Bigfoot', 'force': True}} tools.cmake.cmaketoolchain:extra_variables*={'BIN2CPP_C_FLAGS': {'value': '/W4;/WX;', 'cache': True, 'type': 'STRING', 'docstring': 'C flags for Bigfoot', 'force': True}} diff --git a/ConanProfiles/msvcd b/ConanProfiles/msvcd index 13df5ce..754b03f 100644 --- a/ConanProfiles/msvcd +++ b/ConanProfiles/msvcd @@ -5,8 +5,9 @@ compiler=msvc compiler.version=195 compiler.cppstd=20 compiler.cstd=17 -compiler.runtime=dynamic +compiler.runtime=static build_type=Debug + [conf] tools.cmake.cmaketoolchain:extra_variables={'BIN2CPP_CXX_FLAGS': {'value': '/W4;/WX', 'cache': True, 'type': 'STRING', 'docstring': 'CXX flags for Bigfoot', 'force': True}} tools.cmake.cmaketoolchain:extra_variables*={'BIN2CPP_C_FLAGS': {'value': '/W4;/WX', 'cache': True, 'type': 'STRING', 'docstring': 'C flags for Bigfoot', 'force': True}}