diff options
Diffstat (limited to 'build-system.patch')
-rw-r--r-- | build-system.patch | 552 |
1 files changed, 0 insertions, 552 deletions
diff --git a/build-system.patch b/build-system.patch deleted file mode 100644 index fec2ec0b3974..000000000000 --- a/build-system.patch +++ /dev/null @@ -1,552 +0,0 @@ -diff --git a/Source/CMake/HelperMethods.cmake b/Source/CMake/HelperMethods.cmake -index 49adb3c50..f7f496188 100644 ---- a/Source/CMake/HelperMethods.cmake -+++ b/Source/CMake/HelperMethods.cmake -@@ -205,7 +205,7 @@ MACRO(install_dependency_binaries FOLDER_NAME) - set(DEBUG_FILENAME ${DEBUG_FILENAME}.so) - set(SRC_RELEASE ${${LOOP_ENTRY}_LIBRARY_RELEASE}) - set(SRC_DEBUG ${${LOOP_ENTRY}_LIBRARY_DEBUG}) -- set(DESTINATION_DIR lib) -+ set(DESTINATION_DIR lib/bsf-${BS_FRAMEWORK_VERSION_MAJOR}.${BS_FRAMEWORK_VERSION_MINOR}.${BS_FRAMEWORK_VERSION_PATCH}) - endif() - - install( -@@ -335,6 +335,7 @@ function(install_bsf_target targetName) - - install( - TARGETS ${targetName} -+ EXPORT bsf - RUNTIME DESTINATION bin - LIBRARY DESTINATION lib - ARCHIVE DESTINATION lib -@@ -380,6 +381,92 @@ function(copyBsfBinaries target srcDir) - endif() - endfunction() - -+function(add_common_flags target) -+ get_target_property(target_type ${target} TYPE) -+ -+ if(MSVC) -+ # Linker -+ # The VS generator seems picky about how the linker flags are passed: we have to make sure -+ # the options are quoted correctly and with append_string or random semicolons will be -+ # inserted in the command line; and unrecognised options are only treated as warnings -+ # and not errors so they won't be caught by CI. Make sure the options are separated by -+ # spaces too. -+ # For some reason this does not apply to the compiler options... -+ -+ set_property(TARGET ${target} APPEND_STRING PROPERTY LINK_FLAGS "/DYNAMICBASE /NOLOGO") -+ -+ set_property(TARGET ${target} APPEND_STRING PROPERTY LINK_FLAGS_DEBUG "/DEBUG") -+ set_property(TARGET ${target} APPEND_STRING PROPERTY LINK_FLAGS_RELWITHDEBINFO "/DEBUG /LTCG:incremental /INCREMENTAL:NO /OPT:REF") -+ set_property(TARGET ${target} APPEND_STRING PROPERTY LINK_FLAGS_MINSIZEREL "/DEBUG /LTCG /INCREMENTAL:NO /OPT:REF") -+ set_property(TARGET ${target} APPEND_STRING PROPERTY LINK_FLAGS_RELEASE "/DEBUG /LTCG /INCREMENTAL:NO /OPT:REF") -+ -+ if(BS_64BIT) -+ set_property(TARGET ${target} APPEND_STRING PROPERTY LINK_FLAGS_RELWITHDEBINFO " /OPT:ICF") -+ set_property(TARGET ${target} APPEND_STRING PROPERTY LINK_FLAGS_MINSIZEREL " /OPT:ICF") -+ set_property(TARGET ${target} APPEND_STRING PROPERTY LINK_FLAGS_RELEASE " /OPT:ICF") -+ endif() -+ -+ if (${target_type} STREQUAL "SHARED_LIBRARY" OR ${target_type} STREQUAL "MODULE_LIBRARY") -+ set_property(TARGET ${target} APPEND_STRING PROPERTY LINK_FLAGS " /DLL") -+ endif() -+ -+ # Compiler -+ set_property(TARGET ${target} APPEND PROPERTY COMPILE_OPTIONS /GS- /W3 /WX- /MP /nologo /bigobj /wd4577 /wd4530) -+ set_property(TARGET ${target} APPEND PROPERTY COMPILE_OPTIONS -DWIN32 -D_WINDOWS) -+ -+ set_property(TARGET ${target} APPEND PROPERTY COMPILE_OPTIONS $<$<CONFIG:Debug>:/Od /RTC1 /MDd -DDEBUG>) -+ -+ if(BS_64BIT) # Debug edit and continue for 64-bit -+ set_property(TARGET ${target} APPEND PROPERTY COMPILE_OPTIONS $<$<CONFIG:Debug>:/ZI>) -+ else() # Normal debug for 32-bit -+ set_property(TARGET ${target} APPEND PROPERTY COMPILE_OPTIONS $<$<CONFIG:Debug>:/Zi>) -+ endif() -+ -+ set_property(TARGET ${target} APPEND PROPERTY COMPILE_OPTIONS $<$<CONFIG:RelWithDebInfo>:/GL /Gy /Zi /O2 /Oi /MD -DDEBUG>) -+ set_property(TARGET ${target} APPEND PROPERTY COMPILE_OPTIONS $<$<CONFIG:MinSizeRel>:/GL /Gy /Zi /O2 /Oi /MD -DNDEBUG>) -+ set_property(TARGET ${target} APPEND PROPERTY COMPILE_OPTIONS $<$<CONFIG:Release>:/GL /Gy /Zi /O2 /Oi /MD -DNDEBUG>) -+ -+ # Global defines -+ #add_definitions(-D_HAS_EXCEPTIONS=0) -+ -+ elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID MATCHES "AppleClang" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") -+ # Note: Optionally add -ffunction-sections, -fdata-sections, but with linker option --gc-sections -+ # TODO: Use link-time optimization -flto. Might require non-default linker. -+ set_property(TARGET ${target} APPEND PROPERTY COMPILE_OPTIONS -Wall -Wextra -Wno-unused-parameter -fPIC -fno-strict-aliasing -msse4.1) -+ -+ if(CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID MATCHES "AppleClang") -+ set_property(TARGET ${target} APPEND PROPERTY COMPILE_OPTIONS -fno-ms-compatibility) -+ -+ if(APPLE) -+ set_property(TARGET ${target} APPEND PROPERTY COMPILE_OPTIONS -fobjc-arc $<$<COMPILE_LANGUAGE:CXX>:-std=c++1z>) -+ endif() -+ endif() -+ -+ set_property(TARGET ${target} APPEND PROPERTY COMPILE_OPTIONS $<$<CONFIG:Debug>:-ggdb -O0 -DDEBUG>) -+ set_property(TARGET ${target} APPEND PROPERTY COMPILE_OPTIONS $<$<CONFIG:RelWithDebInfo>:-ggdb -O2 -DDEBUG -Wno-unused-variable>) -+ set_property(TARGET ${target} APPEND PROPERTY COMPILE_OPTIONS $<$<CONFIG:MinSizeRel>:-ggdb -O2 -DNDEBUG -Wno-unused-variable>) -+ set_property(TARGET ${target} APPEND PROPERTY COMPILE_OPTIONS $<$<CONFIG:Release>:-ggdb -O2 -DNDEBUG -Wno-unused-variable>) -+ -+ if (${target_type} STREQUAL "EXECUTABLE") -+ if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") -+ set_property(TARGET ${target} APPEND PROPERTY LINK_FLAGS_DEBUG -no-pie) -+ set_property(TARGET ${target} APPEND PROPERTY LINK_FLAGS_RELWITHDEBINFO -no-pie) -+ set_property(TARGET ${target} APPEND PROPERTY LINK_FLAGS_MINSIZEREL -no-pie) -+ set_property(TARGET ${target} APPEND PROPERTY LINK_FLAGS_RELEASE -no-pie) -+ endif() -+ endif() -+ else() -+ # TODO_OTHER_COMPILERS_GO_HERE -+ endif() -+ -+ if (${target_type} STREQUAL "SHARED_LIBRARY") -+ set_property(TARGET ${target} PROPERTY VERSION ${BS_FRAMEWORK_VERSION_MAJOR}.${BS_FRAMEWORK_VERSION_MINOR}.${BS_FRAMEWORK_VERSION_PATCH}) -+ set_property(TARGET ${target} PROPERTY SOVERSION ${BS_FRAMEWORK_VERSION_MAJOR}) -+ endif() -+ -+ set_property(TARGET ${target} PROPERTY INSTALL_RPATH ${CMAKE_INSTALL_PREFIX}/lib/bsf-${BS_FRAMEWORK_VERSION_MAJOR}.${BS_FRAMEWORK_VERSION_MINOR}.${BS_FRAMEWORK_VERSION_PATCH}) -+endfunction() -+ - ####################################################################################### - ##################### Built-in asset import and versioning ############################ - ####################################################################################### -@@ -631,4 +718,4 @@ macro(conditional_cotire) - if(COMMAND cotire) - cotire(${ARGN}) - endif() --endmacro() -\ No newline at end of file -+endmacro() -diff --git a/Source/CMake/Properties.cmake b/Source/CMake/Properties.cmake -index 903dc13ac..eb6cf61a6 100644 ---- a/Source/CMake/Properties.cmake -+++ b/Source/CMake/Properties.cmake -@@ -31,95 +31,6 @@ set(CMAKE_CXX_STANDARD_REQUIRED TRUE) - - set(CMAKE_INSTALL_RPATH "\$ORIGIN") - --## Compiler-specific settings --if(MSVC) -- # Linker -- set(BS_LINKER_FLAGS_COMMON "/DYNAMICBASE /NOLOGO") -- -- set(BS_LINKER_FLAGS_DEBUG "${BS_LINKER_FLAGS_COMMON} /DEBUG") -- set(BS_LINKER_FLAGS_RELWITHDEBINFO "${BS_LINKER_FLAGS_COMMON} /LTCG:incremental /INCREMENTAL:NO /OPT:REF /DEBUG") -- set(BS_LINKER_FLAGS_MINSIZEREL "${BS_LINKER_FLAGS_COMMON} /DEBUG /LTCG /INCREMENTAL:NO /OPT:REF") -- set(BS_LINKER_FLAGS_RELEASE "${BS_LINKER_FLAGS_COMMON} /DEBUG /LTCG /INCREMENTAL:NO /OPT:REF") -- -- if(BS_64BIT) -- set(BS_LINKER_FLAGS_RELWITHDEBINFO "${BS_LINKER_FLAGS_RELWITHDEBINFO} /OPT:ICF") -- set(BS_LINKER_FLAGS_MINSIZEREL "${BS_LINKER_FLAGS_MINSIZEREL} /OPT:ICF") -- set(BS_LINKER_FLAGS_RELEASE "${BS_LINKER_FLAGS_RELEASE} /OPT:ICF") -- endif() -- -- set(CMAKE_SHARED_LINKER_FLAGS_DEBUG "${CMAKE_SHARED_LINKER_FLAGS_DEBUG} /DLL ${BS_LINKER_FLAGS_DEBUG}") -- set(CMAKE_MODULE_LINKER_FLAGS_DEBUG "${CMAKE_MODULE_LINKER_FLAGS_DEBUG} /DLL ${BS_LINKER_FLAGS_DEBUG}") -- set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} ${BS_LINKER_FLAGS_DEBUG}") -- -- set(CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO} /DLL ${BS_LINKER_FLAGS_RELWITHDEBINFO}") -- set(CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO} /DLL ${BS_LINKER_FLAGS_RELWITHDEBINFO}") -- set(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO} ${BS_LINKER_FLAGS_RELWITHDEBINFO}") -- -- set(CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL "${CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL} /DLL ${BS_LINKER_FLAGS_MINSIZEREL}") -- set(CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL "${CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL} /DLL ${BS_LINKER_FLAGS_MINSIZEREL}") -- set(CMAKE_EXE_LINKER_FLAGS_MINSIZEREL "${CMAKE_EXE_LINKER_FLAGS_MINSIZEREL} ${BS_LINKER_FLAGS_MINSIZEREL}") -- -- set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /DLL ${BS_LINKER_FLAGS_RELEASE}") -- set(CMAKE_MODULE_LINKER_FLAGS_RELEASE "${CMAKE_MODULE_LINKER_FLAGS_RELEASE} /DLL ${BS_LINKER_FLAGS_RELEASE}") -- set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} ${BS_LINKER_FLAGS_RELEASE}") -- -- # Compiler -- set(BS_COMPILER_FLAGS_COMMON "/GS- /W3 /GR- /WX- /MP /nologo /bigobj /wd\"4577\" /wd\"4530\"") -- set(CMAKE_CXX_FLAGS "/DWIN32 /D_WINDOWS") -- -- set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${BS_COMPILER_FLAGS_COMMON} /Od /RTC1 /MDd -DDEBUG") -- -- if(BS_64BIT) # Debug edit and continue for 64-bit -- set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /ZI") -- else() # Normal debug for 32-bit -- set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /Zi") -- endif() -- -- set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} ${BS_COMPILER_FLAGS_COMMON} /GL /Gy /Zi /O2 /Oi /MD -DDEBUG") -- set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} ${BS_COMPILER_FLAGS_COMMON} /GL /Gy /Zi /O2 /Oi /MD -DNDEBUG") -- set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${BS_COMPILER_FLAGS_COMMON} /GL /Gy /Zi /O2 /Oi /MD -DNDEBUG") -- -- # Global defines -- #add_definitions(-D_HAS_EXCEPTIONS=0) -- --elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID MATCHES "AppleClang") -- # Note: Optionally add -ffunction-sections, -fdata-sections, but with linker option --gc-sections -- # TODO: Use link-time optimization -flto. Might require non-default linker. -- set(BS_COMPILER_FLAGS_COMMON "-Wall -Wextra -Wno-unused-parameter -fPIC -fno-exceptions -fno-strict-aliasing -fno-rtti -fno-ms-compatibility -msse4.1") -- -- if(APPLE) -- set(BS_COMPILER_FLAGS_COMMON "${BS_COMPILER_FLAGS_COMMON} -fobjc-arc -std=c++1z") -- endif() -- -- set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${BS_COMPILER_FLAGS_COMMON} -ggdb -O0 -DDEBUG") -- set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} ${BS_COMPILER_FLAGS_COMMON} -ggdb -O2 -DDEBUG -Wno-unused-variable") -- set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} ${BS_COMPILER_FLAGS_COMMON} -ggdb -O2 -DNDEBUG -Wno-unused-variable") -- set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${BS_COMPILER_FLAGS_COMMON} -ggdb -O2 -DNDEBUG -Wno-unused-variable") -- -- if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang") -- set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} -no-pie") -- set(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO} -no-pie") -- set(CMAKE_EXE_LINKER_FLAGS_MINSIZEREL "${CMAKE_EXE_LINKER_FLAGS_MINSIZEREL} -no-pie") -- set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -no-pie") -- endif() -- --elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") -- # TODO: Use link-time optimization -flto. Might require non-default linker. -- set(BS_COMPILER_FLAGS_COMMON "-Wall -Wextra -Wno-unused-parameter -fPIC -fno-exceptions -fno-strict-aliasing -fno-rtti -msse4.1") -- -- set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${BS_COMPILER_FLAGS_COMMON} -ggdb -O0 -DDEBUG") -- set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} ${BS_COMPILER_FLAGS_COMMON} -ggdb -O2 -DDEBUG -Wno-unused-variable") -- set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} ${BS_COMPILER_FLAGS_COMMON} -ggdb -O2 -DNDEBUG -Wno-unused-variable") -- set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${BS_COMPILER_FLAGS_COMMON} -ggdb -O2 -DNDEBUG -Wno-unused-variable") -- -- set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} -no-pie") -- set(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO} -no-pie") -- set(CMAKE_EXE_LINKER_FLAGS_MINSIZEDEL "${CMAKE_EXE_LINKER_FLAGS_MINSIZEDEL} -no-pie") -- set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -no-pie") --else() --# TODO_OTHER_COMPILERS_GO_HERE --endif() -- - # Enable colored output - if (CMAKE_GENERATOR STREQUAL "Ninja") - check_cxx_compiler_flag("-fdiagnostics-color=always" F_DIAGNOSTIC_COLOR_ALWAYS) -@@ -138,8 +49,8 @@ else() - set(BS_OUTPUT_DIR_PREFIX x86) - endif() - --set(BS_BINARY_OUTPUT_DIR ${PROJECT_SOURCE_DIR}/bin/${BS_OUTPUT_DIR_PREFIX}) --set(BS_LIBRARY_OUTPUT_DIR ${PROJECT_SOURCE_DIR}/lib/${BS_OUTPUT_DIR_PREFIX}) -+set(BS_BINARY_OUTPUT_DIR ${PROJECT_BINARY_DIR}/bin/${BS_OUTPUT_DIR_PREFIX}) -+set(BS_LIBRARY_OUTPUT_DIR ${PROJECT_BINARY_DIR}/lib/${BS_OUTPUT_DIR_PREFIX}) - - if (BS_TOP_LEVEL) - set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${BS_BINARY_OUTPUT_DIR}/Debug) -diff --git a/Source/CMakeLists.txt b/Source/CMakeLists.txt -index d8526f5ec..02ba71c5a 100644 ---- a/Source/CMakeLists.txt -+++ b/Source/CMakeLists.txt -@@ -93,14 +93,21 @@ endif() - set(RENDERER_MODULE_LIB bsfRenderBeast) - set(PHYSICS_MODULE_LIB bsfPhysX) - --## Generate config files) --configure_file("${BSF_SOURCE_DIR}/CMake/BsEngineConfig.h.in" "${BSF_SOURCE_DIR}/Foundation/bsfEngine/BsEngineConfig.h") --configure_file("${BSF_SOURCE_DIR}/CMake/BsFrameworkConfig.h.in" "${BSF_SOURCE_DIR}/Foundation/bsfUtility/BsFrameworkConfig.h") -+## Generate config files -+configure_file("${BSF_SOURCE_DIR}/CMake/BsEngineConfig.h.in" "${PROJECT_BINARY_DIR}/Generated/bsfEngine/BsEngineConfig.h") -+configure_file("${BSF_SOURCE_DIR}/CMake/BsFrameworkConfig.h.in" "${PROJECT_BINARY_DIR}/Generated/bsfUtility/BsFrameworkConfig.h") - - # Set files disallowed in precompiled headers - set_directory_properties(PROPERTIES - COTIRE_PREFIX_HEADER_IGNORE_PATH "${CMAKE_CURRENT_SOURCE_DIR}") - -+# Remove /EHsc from CMAKE_CXX_FLAGS for MSVC to disable exceptions -+if (MSVC) -+ if(CMAKE_CXX_FLAGS MATCHES "/EHsc") -+ string(REPLACE "/EHsc" "/EHs-c-" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") -+ endif() -+endif() -+ - # Sub-directories - ## Foundation - add_subdirectory(Foundation) -@@ -165,6 +172,7 @@ endif() - ## Builtin resource preprocessing - add_executable(bsfImportTool - Foundation/bsfEngine/Resources/BsBuiltinResourcesImporter.cpp) -+add_common_flags(bsfImportTool) - - target_link_libraries(bsfImportTool bsf) - -@@ -188,4 +196,6 @@ install( - DIRECTORY ../Data - DESTINATION bin/ - PATTERN "../Data/Raw" EXCLUDE -+ PATTERN ".version" EXCLUDE -+ PATTERN ".reqversion" EXCLUDE - ) -diff --git a/Source/Foundation/CMakeLists.txt b/Source/Foundation/CMakeLists.txt -index 3f833a937..ae2168edb 100644 ---- a/Source/Foundation/CMakeLists.txt -+++ b/Source/Foundation/CMakeLists.txt -@@ -29,13 +29,25 @@ endif() - - # Third party (non-package) libraries - add_library(ThirdParty INTERFACE) --target_include_directories(ThirdParty INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}/bsfUtility/ThirdParty") -+target_include_directories(ThirdParty INTERFACE -+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/bsfUtility/ThirdParty> -+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_PREFIX}/include/bsfUtility/ThirdParty>) - - # Target - add_library(bsf SHARED ${BS_UTILITY_SRC} ${BS_CORE_SRC} ${BS_ENGINE_SRC}) - -+add_common_flags(bsf) -+ - # Includes --target_include_directories(bsf PUBLIC "bsfUtility" "bsfCore" "bsfEngine") -+target_include_directories(bsf PUBLIC -+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/bsfUtility> -+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/bsfCore> -+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/bsfEngine> -+ $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/Generated/bsfUtility> -+ $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/Generated/bsfEngine> -+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_PREFIX}/include/bsfUtility> -+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_PREFIX}/include/bsfCore> -+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_PREFIX}/include/bsfEngine>) - - # Defines - target_compile_definitions(bsf PRIVATE -@@ -47,6 +59,21 @@ target_compile_definitions(bsf PRIVATE - $<$<CONFIG:MinSizeRel>:BS_CONFIG=BS_CONFIG_MINSIZEREL> - $<$<CONFIG:Release>:BS_CONFIG=BS_CONFIG_RELEASE>) - -+if(MSVC) -+ target_compile_options(bsf PUBLIC -+ $<$<COMPILE_LANGUAGE:CXX>:/GR->) -+elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID MATCHES "AppleClang") -+ target_compile_options(bsf PUBLIC -+ -fno-exceptions -+ $<$<COMPILE_LANGUAGE:CXX>:-fno-rtti>) -+elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") -+ target_compile_options(bsf PUBLIC -+ -fno-exceptions -+ $<$<COMPILE_LANGUAGE:CXX>:-fno-rtti>) -+else() -+# TODO_OTHER_COMPILERS_GO_HERE -+endif() -+ - # Libraries - ## External lib: NVTT - target_link_libraries(bsf PRIVATE ${nvtt_LIBRARIES}) -@@ -113,8 +140,33 @@ install( - PATTERN "Private" EXCLUDE - ) - -+install( -+ DIRECTORY ${PROJECT_BINARY_DIR}/Generated/bsfEngine -+ DESTINATION include -+ FILES_MATCHING -+ PATTERN "*.h" -+) -+ -+install( -+ DIRECTORY ${PROJECT_BINARY_DIR}/Generated/bsfUtility -+ DESTINATION include -+ FILES_MATCHING -+ PATTERN "*.h" -+) -+ - install_bsf_target(bsf) - -+# This doesn't actually install anything as it is an imported library -+# but it is required because it is a dependency of the bsf target -+install(TARGETS ThirdParty EXPORT bsf) -+ -+install( -+ EXPORT bsf -+ NAMESPACE bsf:: -+ FILE bsf-config.cmake -+ DESTINATION lib/bsf -+) -+ - # Precompiled headers (Cotire) - if(MSVC) - find_windows_system_headers(windows_headers "Windows.h") -@@ -128,4 +180,4 @@ endif() - set_directory_properties(PROPERTIES - COTIRE_PREFIX_HEADER_IGNORE_PATH "${ignore_paths}") - --conditional_cotire(bsf) -\ No newline at end of file -+conditional_cotire(bsf) -diff --git a/Source/Foundation/bsfUtility/Prerequisites/BsPrerequisitesUtil.h b/Source/Foundation/bsfUtility/Prerequisites/BsPrerequisitesUtil.h -index 884fd59ee..5239c0089 100644 ---- a/Source/Foundation/bsfUtility/Prerequisites/BsPrerequisitesUtil.h -+++ b/Source/Foundation/bsfUtility/Prerequisites/BsPrerequisitesUtil.h -@@ -140,7 +140,7 @@ - #define BS_PROFILING_ENABLED 1 - - // Config from the build system --#include "BsFrameworkConfig.h" -+#include <BsFrameworkConfig.h> - - // Platform-specific stuff - #include "Prerequisites/BsPlatformDefines.h" -diff --git a/Source/Plugins/bsfD3D11RenderAPI/CMakeLists.txt b/Source/Plugins/bsfD3D11RenderAPI/CMakeLists.txt -index cfbb9ece0..6bcadeca6 100644 ---- a/Source/Plugins/bsfD3D11RenderAPI/CMakeLists.txt -+++ b/Source/Plugins/bsfD3D11RenderAPI/CMakeLists.txt -@@ -4,6 +4,9 @@ include(CMakeSources.cmake) - # Target - add_library(bsfD3D11RenderAPI SHARED ${BS_D3D11RENDERAPI_SRC}) - -+# Common flags -+add_common_flags(bsfD3D11RenderAPI) -+ - # Defines - target_compile_definitions(bsfD3D11RenderAPI PRIVATE -DBS_RSD3D11_EXPORTS) - -diff --git a/Source/Plugins/bsfFBXImporter/CMakeLists.txt b/Source/Plugins/bsfFBXImporter/CMakeLists.txt -index 3f0cb6440..61b77406d 100644 ---- a/Source/Plugins/bsfFBXImporter/CMakeLists.txt -+++ b/Source/Plugins/bsfFBXImporter/CMakeLists.txt -@@ -7,6 +7,9 @@ find_package(FBXSDK REQUIRED) - # Target - add_library(bsfFBXImporter SHARED ${BS_FBXIMPORTER_SRC}) - -+# Common flags -+add_common_flags(bsfFBXImporter) -+ - # Includes - target_include_directories(bsfFBXImporter PRIVATE "./") - -diff --git a/Source/Plugins/bsfFMOD/CMakeLists.txt b/Source/Plugins/bsfFMOD/CMakeLists.txt -index cfca3fcf1..b7c5e5add 100644 ---- a/Source/Plugins/bsfFMOD/CMakeLists.txt -+++ b/Source/Plugins/bsfFMOD/CMakeLists.txt -@@ -11,6 +11,9 @@ endif() - # Target - add_library(bsfFMOD SHARED ${BS_FMOD_SRC}) - -+# Common flags -+add_common_flags(bsfFMOD) -+ - # Includes - target_include_directories(bsfFMOD PRIVATE - "./" -diff --git a/Source/Plugins/bsfFontImporter/CMakeLists.txt b/Source/Plugins/bsfFontImporter/CMakeLists.txt -index fcd4b640a..99d397bae 100644 ---- a/Source/Plugins/bsfFontImporter/CMakeLists.txt -+++ b/Source/Plugins/bsfFontImporter/CMakeLists.txt -@@ -7,6 +7,9 @@ find_package(freetype REQUIRED) - # Target - add_library(bsfFontImporter SHARED ${BS_FONTIMPORTER_SRC}) - -+# Common flags -+add_common_flags(bsfFontImporter) -+ - # Includes - target_include_directories(bsfFontImporter PRIVATE "./") - -diff --git a/Source/Plugins/bsfFreeImgImporter/CMakeLists.txt b/Source/Plugins/bsfFreeImgImporter/CMakeLists.txt -index c9f977aca..2ded00f26 100644 ---- a/Source/Plugins/bsfFreeImgImporter/CMakeLists.txt -+++ b/Source/Plugins/bsfFreeImgImporter/CMakeLists.txt -@@ -7,6 +7,9 @@ find_package(freeimg REQUIRED) - # Target - add_library(bsfFreeImgImporter SHARED ${BS_FREEIMGIMPORTER_SRC}) - -+# Common flags -+add_common_flags(bsfFreeImgImporter) -+ - # Includes - target_include_directories(bsfFreeImgImporter PRIVATE "./") - -diff --git a/Source/Plugins/bsfGLRenderAPI/CMakeLists.txt b/Source/Plugins/bsfGLRenderAPI/CMakeLists.txt -index e26157634..cdea749ca 100644 ---- a/Source/Plugins/bsfGLRenderAPI/CMakeLists.txt -+++ b/Source/Plugins/bsfGLRenderAPI/CMakeLists.txt -@@ -10,6 +10,9 @@ endif() - # Target - add_library(bsfGLRenderAPI SHARED ${BS_GLRENDERAPI_SRC}) - -+# Common flags -+add_common_flags(bsfGLRenderAPI) -+ - # Includes - target_include_directories(bsfGLRenderAPI PRIVATE "./") - -diff --git a/Source/Plugins/bsfMono/CMakeLists.txt b/Source/Plugins/bsfMono/CMakeLists.txt -index 9004720f5..4347025c9 100644 ---- a/Source/Plugins/bsfMono/CMakeLists.txt -+++ b/Source/Plugins/bsfMono/CMakeLists.txt -@@ -7,6 +7,9 @@ find_package(mono) - # Target - add_library(bsfMono SHARED ${BS_MONO_SRC}) - -+# Common flags -+add_common_flags(bsfMono) -+ - # Includes - target_include_directories(bsfMono PUBLIC "./") - -diff --git a/Source/Plugins/bsfOpenAudio/CMakeLists.txt b/Source/Plugins/bsfOpenAudio/CMakeLists.txt -index 5968fff4f..947e68f50 100644 ---- a/Source/Plugins/bsfOpenAudio/CMakeLists.txt -+++ b/Source/Plugins/bsfOpenAudio/CMakeLists.txt -@@ -12,6 +12,9 @@ endif() - # Target - add_library(bsfOpenAudio SHARED ${BS_OPENAUDIO_SRC}) - -+# Common flags -+add_common_flags(bsfOpenAudio) -+ - # Includes - target_include_directories(bsfOpenAudio PRIVATE "./") - -diff --git a/Source/Plugins/bsfPhysX/CMakeLists.txt b/Source/Plugins/bsfPhysX/CMakeLists.txt -index 9bf280284..d0e71b487 100644 ---- a/Source/Plugins/bsfPhysX/CMakeLists.txt -+++ b/Source/Plugins/bsfPhysX/CMakeLists.txt -@@ -7,6 +7,9 @@ find_package(PhysX REQUIRED) - # Target - add_library(bsfPhysX SHARED ${BS_PHYSX_SRC}) - -+# Common flags -+add_common_flags(bsfPhysX) -+ - # Includes - target_include_directories(bsfPhysX PRIVATE "./") - -diff --git a/Source/Plugins/bsfRenderBeast/CMakeLists.txt b/Source/Plugins/bsfRenderBeast/CMakeLists.txt -index 877c9b95e..795d62fcd 100644 ---- a/Source/Plugins/bsfRenderBeast/CMakeLists.txt -+++ b/Source/Plugins/bsfRenderBeast/CMakeLists.txt -@@ -4,6 +4,9 @@ include(CMakeSources.cmake) - # Target - add_library(bsfRenderBeast SHARED ${BS_RENDERBEAST_SRC}) - -+# Common flags -+add_common_flags(bsfRenderBeast) -+ - # Includes - target_include_directories(bsfRenderBeast PRIVATE "./") - -diff --git a/Source/Plugins/bsfSL/CMakeLists.txt b/Source/Plugins/bsfSL/CMakeLists.txt -index 9ff374a19..e4a0e9fd9 100644 ---- a/Source/Plugins/bsfSL/CMakeLists.txt -+++ b/Source/Plugins/bsfSL/CMakeLists.txt -@@ -30,6 +30,9 @@ find_package(XShaderCompiler) - # Target - add_library(bsfSL SHARED ${BS_SL_SRC}) - -+# Common flags -+add_common_flags(bsfSL) -+ - # Includes - target_include_directories(bsfSL PRIVATE "./") - -diff --git a/Source/Plugins/bsfVulkanRenderAPI/CMakeLists.txt b/Source/Plugins/bsfVulkanRenderAPI/CMakeLists.txt -index d2c85ea22..9fc7d86d2 100644 ---- a/Source/Plugins/bsfVulkanRenderAPI/CMakeLists.txt -+++ b/Source/Plugins/bsfVulkanRenderAPI/CMakeLists.txt -@@ -10,6 +10,9 @@ endif() - # Target - add_library(bsfVulkanRenderAPI SHARED ${BS_VULKANRENDERAPI_SRC}) - -+# Common flags -+add_common_flags(bsfD3D11RenderAPI) -+ - # Includes - target_include_directories(bsfVulkanRenderAPI PRIVATE "./") - |