summarylogtreecommitdiffstats
path: root/build-system.patch
diff options
context:
space:
mode:
Diffstat (limited to 'build-system.patch')
-rw-r--r--build-system.patch552
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 "./")
-