diff --git a/Bigfoot/Tests/Engine/CMakeLists.txt b/Bigfoot/Tests/Engine/CMakeLists.txt index a3170a1..bbd169b 100644 --- a/Bigfoot/Tests/Engine/CMakeLists.txt +++ b/Bigfoot/Tests/Engine/CMakeLists.txt @@ -6,8 +6,8 @@ set(BigfootDependencies System Utils) -bigfoot_create_bigfile("Tests/Bigfoot") - bigfoot_create_package_tests( "" - "${BigfootDependencies}") \ No newline at end of file + "${BigfootDependencies}") + +bigfoot_create_bigfile("Tests/Bigfoot") \ No newline at end of file diff --git a/CMake/Package.cmake b/CMake/Package.cmake index 086644d..9566088 100644 --- a/CMake/Package.cmake +++ b/CMake/Package.cmake @@ -106,46 +106,56 @@ function(bigfoot_create_package_tests ParentFolder BigfootDependencies) source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} PREFIX Src/ FILES ${_SOURCES} ${_HEADERS} ${_OTHERS}) - set_target_properties(${PROJECT_NAME} PROPERTIES - FOLDER Tests/Bigfoot/${ParentFolder} - VS_DEBUGGER_WORKING_DIRECTORY "$") + set_target_properties(${PROJECT_NAME} PROPERTIES FOLDER Tests/Bigfoot/${ParentFolder}) + set_target_properties(${PROJECT_NAME} PROPERTIES VS_DEBUGGER_WORKING_DIRECTORY "$") ##################ASAN SETUP################### if(${ASAN}) - message(HELLO) - if (MSVC) + 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") - message(HELLO) - 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 "${ASAN_DLL}" "$" + add_custom_command( + OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-asan.timestamp" + DEPENDS "${ASAN_DLL}" + COMMAND ${CMAKE_COMMAND} -E copy_if_different "${ASAN_DLL}" "$" + COMMAND ${CMAKE_COMMAND} -E touch "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-asan.timestamp" + COMMENT "Copying ASan DLL for ${PROJECT_NAME}" ) + + add_custom_target(${PROJECT_NAME}Asan + DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-asan.timestamp" + ) + + add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}Asan) + set_target_properties(${PROJECT_NAME}Asan PROPERTIES FOLDER UtilityTargets/Tests/Bigfoot/${ParentFolder}) endif() endif() ##################COPY FIXTURE FOLDER################### - if(NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/Fixture) file(MAKE_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/Fixture) endif() - # Track all fixture files file(GLOB_RECURSE FIXTURE_FILES - CONFIGURE_DEPENDS - ${CMAKE_CURRENT_SOURCE_DIR}/Fixture/* + CONFIGURE_DEPENDS + ${CMAKE_CURRENT_SOURCE_DIR}/Fixture/* + ) + + add_custom_command( + OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-fixture.timestamp" + DEPENDS ${FIXTURE_FILES} + COMMAND ${CMAKE_COMMAND} -E remove_directory $/Fixture + COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/Fixture $/Fixture + COMMAND ${CMAKE_COMMAND} -E touch "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-fixture.timestamp" + COMMENT "Copying Fixture folder for ${PROJECT_NAME}" ) 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}" + DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-fixture.timestamp" ) add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}Fixture) - set_target_properties(${PROJECT_NAME}Fixture PROPERTIES FOLDER UtilityTargets/Tests/Bigfoot/${ParentFolder}) endfunction() \ No newline at end of file diff --git a/CMake/Utils.cmake b/CMake/Utils.cmake index 5baaf70..6143af5 100644 --- a/CMake/Utils.cmake +++ b/CMake/Utils.cmake @@ -20,19 +20,22 @@ function(bigfoot_create_bigfile ParentFolder) COMMAND ${CMAKE_COMMAND} -E touch ${OUTPUT_PATH_BIGFILE_ABSOLUTE}.bftimestamp COMMENT "Creating Bigfile ${OUTPUT_PATH_BIGFILE_ABSOLUTE}" ) - list(APPEND BIGFILE_SOURCES ${OUTPUT_PATH_BIGFILE_ABSOLUTE}.bftimestamp) - add_custom_target(${PROJECT_NAME}BigFile ALL DEPENDS ${BIGFILE_SOURCES}) + add_custom_target(${PROJECT_NAME}BigFile ALL + DEPENDS ${OUTPUT_PATH_BIGFILE_ABSOLUTE}.bftimestamp + ) + set_target_properties(${PROJECT_NAME}BigFile PROPERTIES FOLDER UtilityTargets/${ParentFolder}) - add_dependencies(${PROJECT_NAME}BigFile ${PROJECT_NAME}) - - target_sources(${PROJECT_NAME}BigFile PRIVATE ${BIGFILE_SOURCES}) + + add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}BigFile) string(TOUPPER ${PROJECT_NAME} BIGFILE_NAME) set(BIGFILE_LOCATION "./${PROJECT_NAME}-bigfile.db") - configure_file( ${CMAKE_SOURCE_DIR}/Bigfoot/Sources/Engine/Include/Engine/BigFile/BigFileInfo_generated.hpp.in - ${CMAKE_CURRENT_SOURCE_DIR}/Include/${PROJECT_NAME}/BigFileInfo_generated.hpp - @ONLY) + configure_file( + ${CMAKE_SOURCE_DIR}/Bigfoot/Sources/Engine/Include/Engine/BigFile/BigFileInfo_generated.hpp.in + ${CMAKE_CURRENT_SOURCE_DIR}/Include/${PROJECT_NAME}/BigFileInfo_generated.hpp + @ONLY + ) endfunction() function(bigfoot_compile_flatbuffers BigfootDependencies) @@ -100,4 +103,11 @@ function(bigfoot_compile_flatbuffers BigfootDependencies) --namespace Bigfoot ) endforeach() -endfunction() \ No newline at end of file +endfunction() + +macro(bigfoot_remove_default_exception_flags) + if(MSVC) + string(REPLACE "/EHsc" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") + string(REPLACE "/EHs" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") + endif() +endmacro() \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index 4ebcafe..7693d78 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -27,6 +27,8 @@ find_program(SQLITE3_EXECUTABLE NAMES sqlite3) find_program(MINJECT_EXECUTABLE NAMES minject) find_program(BIN2CPP_EXECUTABLE NAMES Bin2CPP) +bigfoot_remove_default_exception_flags() + set(CMAKE_EXPORT_COMPILE_COMMANDS ON) set(CMAKE_OPTIMIZE_DEPENDENCIES 1)