Updated the cmake patterns to support windows and OSX.
Removed multiple project(X) declarations in the same directory as it confused vscode. Instead only one root The-Forge project exists, which also defines the default project.
Added Vulcan to the default dependency set for windows due to header includes requiring it, largely due to a set of debug lines but oh well.
Migrated library includes from the root level to Common_3 due to a possible issue where dependency names were considered libraries instead of project dependencies.
Migrated library config sections to Common_3 so they would be more likely to gather the correct libraries. Now the root file defines the feature set dependencies, but Common_3/Renderer.cmake implements those config options.
Removed global include and library dependencies because it broke some consumer patterns, this is more isolated to the projects consuming Forge anyways.
Removed PLATFORM_STATIC_EXT and PLATFORM_DYNAMIC_EXT as cmake has it's own versions of those variables.
Removed The-Forge-Dependencies project, instead building each third party library as an independent static library and linking them using cmake projects.
Added imported libraries for WinPixEventRuntime, AGS, Nvapi, and DirectXShaderCompiler so cmake's internal library management can take over, instead of having custom build events and include paths.
Replaced usages of CMAKE_SOURCE_DIR with CMAKE_CURRENT_SOURCE_DIR, as the former is not the expected directory (instead it is the root, which may not be where the dependent paths expect).
Inlined Ozz into The-Forge, it's technically a bit larger but not by much. This also simplified the linking pattern as in some cases both sets of input files were needed but they were sometimes the same files (so they were compiled twice).
Added a bootstrap project that verifies that a build can run on a specific platform. This project almost always crashes on startup, but the goal is to verify that the exe can link. If this project fails to link at runtime then nothing will be printed to console.
Updated the cmake patterns to support windows and OSX.
project(X)
declarations in the same directory as it confused vscode. Instead only one rootThe-Forge
project exists, which also defines the default project.Common_3
due to a possible issue where dependency names were considered libraries instead of project dependencies.Common_3
so they would be more likely to gather the correct libraries. Now the root file defines the feature set dependencies, butCommon_3/Renderer.cmake
implements those config options.PLATFORM_STATIC_EXT
andPLATFORM_DYNAMIC_EXT
as cmake has it's own versions of those variables.WinPixEventRuntime
,AGS
,Nvapi
, andDirectXShaderCompiler
so cmake's internal library management can take over, instead of having custom build events and include paths.CMAKE_SOURCE_DIR
withCMAKE_CURRENT_SOURCE_DIR
, as the former is not the expected directory (instead it is the root, which may not be where the dependent paths expect).Ozz
intoThe-Forge
, it's technically a bit larger but not by much. This also simplified the linking pattern as in some cases both sets of input files were needed but they were sometimes the same files (so they were compiled twice).bootstrap
project that verifies that a build can run on a specific platform. This project almost always crashes on startup, but the goal is to verify that the exe can link. If this project fails to link at runtime then nothing will be printed to console.