aboutsummaryrefslogtreecommitdiff
path: root/sdk/compiler
diff options
context:
space:
mode:
authorBryan Galdrikian <[email protected]>2017-02-24 09:32:20 -0800
committerBryan Galdrikian <[email protected]>2017-02-24 09:32:20 -0800
commite1bf674c16e3c8472b29574159c789cd3f0c64e0 (patch)
tree9f0cfce09c71a2c27ff19589fcad6cd83504477c /sdk/compiler
parentfirst commit (diff)
downloadblast-e1bf674c16e3c8472b29574159c789cd3f0c64e0.tar.xz
blast-e1bf674c16e3c8472b29574159c789cd3f0c64e0.zip
Updating to [email protected] and [email protected] with a new directory structure.
NvBlast folder is gone, files have been moved to top level directory. README is changed to reflect this.
Diffstat (limited to 'sdk/compiler')
-rw-r--r--sdk/compiler/cmake/NvBlast.cmake89
-rw-r--r--sdk/compiler/cmake/NvBlastExtAuthoring.cmake106
-rw-r--r--sdk/compiler/cmake/NvBlastExtConverterLL.cmake77
-rw-r--r--sdk/compiler/cmake/NvBlastExtImport.cmake95
-rw-r--r--sdk/compiler/cmake/NvBlastExtPhysX.cmake113
-rw-r--r--sdk/compiler/cmake/NvBlastExtSerialization.cmake200
-rw-r--r--sdk/compiler/cmake/NvBlastExtSerializationLL.cmake151
-rw-r--r--sdk/compiler/cmake/NvBlastExtShaders.cmake74
-rw-r--r--sdk/compiler/cmake/NvBlastTk.cmake126
-rw-r--r--sdk/compiler/cmake/modules/CapnProtoGenerate.cmake108
-rw-r--r--sdk/compiler/cmake/modules/FindApexSDK.cmake399
-rw-r--r--sdk/compiler/cmake/modules/FindCapnProtoSDK.cmake111
-rw-r--r--sdk/compiler/cmake/modules/FindFBXSDK.cmake71
-rw-r--r--sdk/compiler/cmake/modules/FindGoogleTestNV.cmake131
-rw-r--r--sdk/compiler/cmake/modules/FindPhysXSDK.cmake566
-rw-r--r--sdk/compiler/cmake/modules/FindPxSharedSDK.cmake293
-rw-r--r--sdk/compiler/cmake/modules/FindXDK.cmake257
-rw-r--r--sdk/compiler/cmake/windows/CMakeLists.txt67
-rw-r--r--sdk/compiler/cmake/windows/NvBlast.cmake22
-rw-r--r--sdk/compiler/cmake/windows/NvBlastExtAuthoring.cmake24
-rw-r--r--sdk/compiler/cmake/windows/NvBlastExtConverterLL.cmake24
-rw-r--r--sdk/compiler/cmake/windows/NvBlastExtImport.cmake24
-rw-r--r--sdk/compiler/cmake/windows/NvBlastExtPhysX.cmake24
-rw-r--r--sdk/compiler/cmake/windows/NvBlastExtSerialization.cmake26
-rw-r--r--sdk/compiler/cmake/windows/NvBlastExtSerializationLL.cmake26
-rw-r--r--sdk/compiler/cmake/windows/NvBlastExtShaders.cmake24
-rw-r--r--sdk/compiler/cmake/windows/NvBlastTk.cmake27
27 files changed, 3255 insertions, 0 deletions
diff --git a/sdk/compiler/cmake/NvBlast.cmake b/sdk/compiler/cmake/NvBlast.cmake
new file mode 100644
index 0000000..5ac9ce9
--- /dev/null
+++ b/sdk/compiler/cmake/NvBlast.cmake
@@ -0,0 +1,89 @@
+#
+# Build NvBlast common
+#
+
+SET(COMMON_SOURCE_DIR ${PROJECT_SOURCE_DIR}/common)
+SET(SOLVER_SOURCE_DIR ${PROJECT_SOURCE_DIR}/lowlevel/source)
+SET(PUBLIC_INCLUDE_DIR ${PROJECT_SOURCE_DIR}/lowlevel/include)
+
+# Include here after the directories are defined so that the platform specific file can use the variables.
+include(${PROJECT_CMAKE_FILES_DIR}/${TARGET_BUILD_PLATFORM}/NvBlast.cmake)
+
+SET(COMMON_FILES
+ ${BLAST_PLATFORM_COMMON_FILES}
+
+ ${COMMON_SOURCE_DIR}/NvBlastAssert.cpp
+ ${COMMON_SOURCE_DIR}/NvBlastAssert.h
+ ${COMMON_SOURCE_DIR}/NvBlastAtomic.cpp
+ ${COMMON_SOURCE_DIR}/NvBlastAtomic.h
+ ${COMMON_SOURCE_DIR}/NvBlastDLink.h
+ ${COMMON_SOURCE_DIR}/NvBlastFixedArray.h
+ ${COMMON_SOURCE_DIR}/NvBlastFixedBitmap.h
+ ${COMMON_SOURCE_DIR}/NvBlastFixedBoolArray.h
+ ${COMMON_SOURCE_DIR}/NvBlastFixedPriorityQueue.h
+ ${COMMON_SOURCE_DIR}/NvBlastGeometry.h
+# ${COMMON_SOURCE_DIR}/NvBlastIndexFns.cpp
+ ${COMMON_SOURCE_DIR}/NvBlastIndexFns.h
+ ${COMMON_SOURCE_DIR}/NvBlastIteratorBase.h
+ ${COMMON_SOURCE_DIR}/NvBlastMath.h
+ ${COMMON_SOURCE_DIR}/NvBlastMemory.h
+ ${COMMON_SOURCE_DIR}/NvBlastPreprocessorInternal.h
+ ${COMMON_SOURCE_DIR}/NvBlastTime.cpp
+ ${COMMON_SOURCE_DIR}/NvBlastTime.h
+ ${COMMON_SOURCE_DIR}/NvBlastTimers.cpp
+)
+
+SET(PUBLIC_FILES
+ ${PUBLIC_INCLUDE_DIR}/NvBlast.h
+ ${PUBLIC_INCLUDE_DIR}/NvBlastPreprocessor.h
+ ${PUBLIC_INCLUDE_DIR}/NvBlastTypes.h
+ ${PUBLIC_INCLUDE_DIR}/NvPreprocessor.h
+)
+
+SET(SOLVER_FILES
+ ${SOLVER_SOURCE_DIR}/NvBlastActor.cpp
+ ${SOLVER_SOURCE_DIR}/NvBlastActor.h
+ ${SOLVER_SOURCE_DIR}/NvBlastFamilyGraph.cpp
+ ${SOLVER_SOURCE_DIR}/NvBlastFamilyGraph.h
+ ${SOLVER_SOURCE_DIR}/NvBlastActorSerializationBlock.cpp
+ ${SOLVER_SOURCE_DIR}/NvBlastActorSerializationBlock.h
+ ${SOLVER_SOURCE_DIR}/NvBlastAsset.cpp
+ ${SOLVER_SOURCE_DIR}/NvBlastAssetHelper.cpp
+ ${SOLVER_SOURCE_DIR}/NvBlastAsset.h
+ ${SOLVER_SOURCE_DIR}/NvBlastSupportGraph.h
+ ${SOLVER_SOURCE_DIR}/NvBlastChunkHierarchy.h
+ ${SOLVER_SOURCE_DIR}/NvBlastFamily.cpp
+ ${SOLVER_SOURCE_DIR}/NvBlastFamily.h
+)
+
+ADD_LIBRARY(NvBlast ${BLAST_LIB_TYPE}
+ ${COMMON_FILES}
+ ${PUBLIC_FILES}
+ ${SOLVER_FILES}
+)
+
+SOURCE_GROUP("common" FILES ${COMMON_FILES})
+SOURCE_GROUP("public" FILES ${PUBLIC_FILES})
+SOURCE_GROUP("solver" FILES ${SOLVER_FILES})
+
+# Target specific compile options
+
+
+TARGET_INCLUDE_DIRECTORIES(NvBlast
+ PRIVATE ${BLAST_PLATFORM_INCLUDES}
+
+ PUBLIC ${PUBLIC_INCLUDE_DIR}
+ PRIVATE ${COMMON_SOURCE_DIR}
+)
+
+TARGET_COMPILE_DEFINITIONS(NvBlast
+ PRIVATE ${BLAST_COMPILE_DEFS}
+)
+
+SET_TARGET_PROPERTIES(NvBlast PROPERTIES
+ PDB_NAME_DEBUG "NvBlast${CMAKE_DEBUG_POSTFIX}"
+ PDB_NAME_CHECKED "NvBlast${CMAKE_CHECKED_POSTFIX}"
+ PDB_NAME_PROFILE "NvBlast${CMAKE_PROFILE_POSTFIX}"
+ PDB_NAME_RELEASE "NvBlast${CMAKE_RELEASE_POSTFIX}"
+)
+
diff --git a/sdk/compiler/cmake/NvBlastExtAuthoring.cmake b/sdk/compiler/cmake/NvBlastExtAuthoring.cmake
new file mode 100644
index 0000000..dda8056
--- /dev/null
+++ b/sdk/compiler/cmake/NvBlastExtAuthoring.cmake
@@ -0,0 +1,106 @@
+#
+# Build NvBlastExt Common
+#
+
+
+SET(COMMON_SOURCE_DIR ${PROJECT_SOURCE_DIR}/common)
+
+SET(AUTHORING_EXT_SOURCE_DIR ${PROJECT_SOURCE_DIR}/extensions/authoring/source)
+SET(COMMON_EXT_SOURCE_DIR ${PROJECT_SOURCE_DIR}/extensions/common/source)
+SET(AUTHORING_EXT_INCLUDE_DIR ${PROJECT_SOURCE_DIR}/extensions/authoring/include)
+
+FIND_PACKAGE(PxSharedSDK $ENV{PM_PxShared_VERSION} REQUIRED)
+FIND_PACKAGE(PhysXSDK $ENV{PM_PhysX_VERSION} REQUIRED)
+
+# Include here after the directories are defined so that the platform specific file can use the variables.
+include(${PROJECT_CMAKE_FILES_DIR}/${TARGET_BUILD_PLATFORM}/NvBlastExtAuthoring.cmake)
+
+SET(COMMON_FILES
+ ${BLASTEXT_PLATFORM_COMMON_FILES}
+
+ #${COMMON_SOURCE_DIR}/NvBlastAssert.cpp
+ #${COMMON_SOURCE_DIR}/NvBlastAssert.h
+)
+
+SET(PUBLIC_FILES
+ ${AUTHORING_EXT_INCLUDE_DIR}/NvBlastExtAuthoringBondGenerator.h
+ ${AUTHORING_EXT_INCLUDE_DIR}/NvBlastExtAuthoringCollisionBuilder.h
+ ${AUTHORING_EXT_INCLUDE_DIR}/NvBlastExtAuthoringFractureTool.h
+ ${AUTHORING_EXT_INCLUDE_DIR}/NvBlastExtAuthoringMesh.h
+ ${AUTHORING_EXT_INCLUDE_DIR}/NvBlastExtAuthoringTypes.h
+)
+
+SET(EXT_AUTHORING_FILES
+ ${AUTHORING_EXT_SOURCE_DIR}/NvBlastExtAuthoringAccelerator.cpp
+ ${AUTHORING_EXT_SOURCE_DIR}/NvBlastExtAuthoringAccelerator.h
+ ${AUTHORING_EXT_SOURCE_DIR}/NvBlastExtAuthoringBondGenerator.cpp
+ ${AUTHORING_EXT_SOURCE_DIR}/NvBlastExtAuthoringBooleanTool.cpp
+ ${AUTHORING_EXT_SOURCE_DIR}/NvBlastExtAuthoringBooleanTool.h
+ ${AUTHORING_EXT_SOURCE_DIR}/NvBlastExtAuthoringCollisionBuilder.cpp
+ ${AUTHORING_EXT_SOURCE_DIR}/NvBlastExtAuthoringMesh.cpp
+ ${AUTHORING_EXT_SOURCE_DIR}/NvBlastExtAuthoringPerlinNoise.h
+ ${AUTHORING_EXT_SOURCE_DIR}/NvBlastExtAuthoringTriangulator.cpp
+ ${AUTHORING_EXT_SOURCE_DIR}/NvBlastExtAuthoringTriangulator.h
+ ${AUTHORING_EXT_SOURCE_DIR}/NvBlastExtAuthoringVSA.h
+ ${AUTHORING_EXT_SOURCE_DIR}/NvBlastExtAuthoringFractureTool.cpp
+ ${AUTHORING_EXT_SOURCE_DIR}/NvBlastExtTriangleProcessor.cpp
+ ${AUTHORING_EXT_SOURCE_DIR}/NvBlastExtTriangleProcessor.h
+ ${AUTHORING_EXT_SOURCE_DIR}/NvBlastExtApexSharedParts.cpp
+ ${AUTHORING_EXT_SOURCE_DIR}/NvBlastExtApexSharedParts.h
+ ${AUTHORING_EXT_SOURCE_DIR}/NvBlastExtAuthoringInternalCommon.h
+)
+
+ADD_LIBRARY(NvBlastExtAuthoring STATIC
+ ${COMMON_FILES}
+ ${PUBLIC_FILES}
+
+ ${EXT_AUTHORING_FILES}
+)
+
+SOURCE_GROUP("common" FILES ${COMMON_FILES})
+SOURCE_GROUP("public" FILES ${PUBLIC_FILES})
+SOURCE_GROUP("src" FILES ${EXT_AUTHORING_FILES})
+
+
+# Target specific compile options
+
+TARGET_INCLUDE_DIRECTORIES(NvBlastExtAuthoring
+ PRIVATE ${BLASTEXT_PLATFORM_INCLUDES}
+
+ PUBLIC ${PROJECT_SOURCE_DIR}/lowlevel/include
+ PUBLIC ${AUTHORING_EXT_INCLUDE_DIR}
+
+ PRIVATE ${PROJECT_SOURCE_DIR}/common
+ PRIVATE ${COMMON_EXT_SOURCE_DIR}
+
+ PRIVATE ${AUTHORING_EXT_SOURCE_DIR}
+
+ PRIVATE ${PHYSXSDK_INCLUDE_DIRS}
+ PRIVATE ${PXSHAREDSDK_INCLUDE_DIRS}
+)
+
+TARGET_COMPILE_DEFINITIONS(NvBlastExtAuthoring
+ PRIVATE ${BLASTEXT_COMPILE_DEFS}
+)
+
+# Warning disables for Capn Proto
+TARGET_COMPILE_OPTIONS(NvBlastExtAuthoring
+ PRIVATE ${BLASTEXT_PLATFORM_COMPILE_OPTIONS}
+)
+
+SET_TARGET_PROPERTIES(NvBlastExtAuthoring PROPERTIES
+ PDB_NAME_DEBUG "NvBlastExtAuthoring${CMAKE_DEBUG_POSTFIX}"
+ PDB_NAME_CHECKED "NvBlastExtAuthoring${CMAKE_CHECKED_POSTFIX}"
+ PDB_NAME_PROFILE "NvBlastExtAuthoring${CMAKE_PROFILE_POSTFIX}"
+ PDB_NAME_RELEASE "NvBlastExtAuthoring${CMAKE_RELEASE_POSTFIX}"
+)
+
+# Do final direct sets after the target has been defined
+TARGET_LINK_LIBRARIES(NvBlastExtAuthoring
+ PRIVATE NvBlast
+ PUBLIC ${BLASTEXT_PLATFORM_LINKED_LIBS}
+ PUBLIC $<$<CONFIG:debug>:${PHYSX3_LIB_DEBUG}> $<$<CONFIG:debug>:${PHYSX3EXTENSIONS_LIB_DEBUG}> $<$<CONFIG:debug>:${PXFOUNDATION_LIB_DEBUG}>
+ PUBLIC $<$<CONFIG:checked>:${PHYSX3_LIB_CHECKED}> $<$<CONFIG:checked>:${PHYSX3EXTENSIONS_LIB_CHECKED}> $<$<CONFIG:checked>:${PXFOUNDATION_LIB_CHECKED}>
+ PUBLIC $<$<CONFIG:profile>:${PHYSX3_LIB_PROFILE}> $<$<CONFIG:profile>:${PHYSX3EXTENSIONS_LIB_PROFILE}> $<$<CONFIG:profile>:${PXFOUNDATION_LIB_PROFILE}>
+ PUBLIC $<$<CONFIG:release>:${PHYSX3_LIB}> $<$<CONFIG:release>:${PHYSX3EXTENSIONS_LIB}> $<$<CONFIG:release>:${PXFOUNDATION_LIB}>
+)
diff --git a/sdk/compiler/cmake/NvBlastExtConverterLL.cmake b/sdk/compiler/cmake/NvBlastExtConverterLL.cmake
new file mode 100644
index 0000000..c84b60d
--- /dev/null
+++ b/sdk/compiler/cmake/NvBlastExtConverterLL.cmake
@@ -0,0 +1,77 @@
+#
+# Build NvBlastExtConverterLL Common
+#
+
+
+SET(COMMON_SOURCE_DIR ${PROJECT_SOURCE_DIR}/common)
+SET(CONVERTERLL_EXT_SOURCE_DIR ${PROJECT_SOURCE_DIR}/extensions/converter/source)
+SET(CONVERTERLL_EXT_INCLUDE_DIR ${PROJECT_SOURCE_DIR}/extensions/converter/include)
+
+
+# Include here after the directories are defined so that the platform specific file can use the variables.
+include(${PROJECT_CMAKE_FILES_DIR}/${TARGET_BUILD_PLATFORM}/NvBlastExtConverterLL.cmake)
+
+SET(COMMON_FILES
+ ${BLASTEXT_PLATFORM_COMMON_FILES}
+
+ ${COMMON_SOURCE_DIR}/NvBlastAssert.cpp
+ ${COMMON_SOURCE_DIR}/NvBlastAssert.h
+)
+
+SET(PUBLIC_FILES
+ ${CONVERTERLL_EXT_INCLUDE_DIR}/NvBlastExtDataConverter.h
+)
+
+SET(EXT_CONVERSION_FILES
+ ${CONVERTERLL_EXT_SOURCE_DIR}/conversion/NvBlastExtAssetBlockVersionConverter_v0_v1.h
+ ${CONVERTERLL_EXT_SOURCE_DIR}/conversion/NvBlastExtBinaryBlockConverter.cpp
+ ${CONVERTERLL_EXT_SOURCE_DIR}/conversion/NvBlastExtBinaryBlockConverter.h
+ ${CONVERTERLL_EXT_SOURCE_DIR}/conversion/NvBlastExtDataConverter.cpp
+)
+
+ADD_LIBRARY(NvBlastExtConverterLL STATIC
+ ${COMMON_FILES}
+ ${PUBLIC_FILES}
+
+ ${EXT_CONVERSION_FILES}
+)
+
+SOURCE_GROUP("common" FILES ${COMMON_FILES})
+SOURCE_GROUP("public" FILES ${PUBLIC_FILES})
+SOURCE_GROUP("src\\conversion" FILES ${EXT_CONVERSION_FILES})
+
+
+# Target specific compile options
+
+TARGET_INCLUDE_DIRECTORIES(NvBlastExtConverterLL
+ PRIVATE ${BLASTEXT_PLATFORM_INCLUDES}
+
+ PUBLIC ${PROJECT_SOURCE_DIR}/converter/include
+ PUBLIC ${CONVERTERLL_EXT_INCLUDE_DIR}
+
+ PRIVATE ${CONVERTERLL_EXT_SOURCE_DIR}/conversion
+ PRIVATE ${PROJECT_SOURCE_DIR}/common
+)
+
+TARGET_COMPILE_DEFINITIONS(NvBlastExtConverterLL
+ PRIVATE ${BLASTEXT_COMPILE_DEFS}
+)
+
+# Warning disables for Capn Proto
+TARGET_COMPILE_OPTIONS(NvBlastExtConverterLL
+ PRIVATE ${BLASTEXT_PLATFORM_COMPILE_OPTIONS}
+)
+
+SET_TARGET_PROPERTIES(NvBlastExtConverterLL PROPERTIES
+ PDB_NAME_DEBUG "NvBlastExtConverterLL${CMAKE_DEBUG_POSTFIX}"
+ PDB_NAME_CHECKED "NvBlastExtConverterLL${CMAKE_CHECKED_POSTFIX}"
+ PDB_NAME_PROFILE "NvBlastExtConverterLL${CMAKE_PROFILE_POSTFIX}"
+ PDB_NAME_RELEASE "NvBlastExtConverterLL${CMAKE_RELEASE_POSTFIX}"
+)
+
+# Do final direct sets after the target has been defined
+#TARGET_LINK_LIBRARIES(NvBlastExtConverterLL NvBlast ${PHYSXSDK_LIBRARIES} ${APEXSDK_LIBRARIES} ${PXSHAREDSDK_LIBRARIES})
+TARGET_LINK_LIBRARIES(NvBlastExtConverterLL
+ PUBLIC NvBlast
+ PUBLIC ${BLASTEXT_PLATFORM_LINKED_LIBS}
+)
diff --git a/sdk/compiler/cmake/NvBlastExtImport.cmake b/sdk/compiler/cmake/NvBlastExtImport.cmake
new file mode 100644
index 0000000..3d7b27a
--- /dev/null
+++ b/sdk/compiler/cmake/NvBlastExtImport.cmake
@@ -0,0 +1,95 @@
+#
+# Build NvBlastExt Common
+#
+
+
+SET(COMMON_SOURCE_DIR ${PROJECT_SOURCE_DIR}/common)
+
+SET(COMMON_EXT_SOURCE_DIR ${PROJECT_SOURCE_DIR}/extensions/common/source)
+SET(IMPORT_EXT_SOURCE_DIR ${PROJECT_SOURCE_DIR}/extensions/import/source)
+SET(IMPORT_EXT_INCLUDE_DIR ${PROJECT_SOURCE_DIR}/extensions/import/include)
+SET(PHYSX_EXT_INCLUDE_DIR ${PROJECT_SOURCE_DIR}/extensions/physx/include)
+
+FIND_PACKAGE(PhysXSDK $ENV{PM_PhysX_VERSION} REQUIRED)
+FIND_PACKAGE(ApexSDK $ENV{PM_Apex_VERSION} REQUIRED)
+FIND_PACKAGE(PxSharedSDK $ENV{PM_PxShared_VERSION} REQUIRED)
+
+# Include here after the directories are defined so that the platform specific file can use the variables.
+include(${PROJECT_CMAKE_FILES_DIR}/${TARGET_BUILD_PLATFORM}/NvBlastExtImport.cmake)
+
+SET(COMMON_FILES
+ ${BLASTEXT_PLATFORM_COMMON_FILES}
+
+ ${COMMON_SOURCE_DIR}/NvBlastAssert.cpp
+ ${COMMON_SOURCE_DIR}/NvBlastAssert.h
+)
+
+SET(PUBLIC_FILES
+ ${IMPORT_EXT_INCLUDE_DIR}/NvBlastExtApexImportTool.h
+)
+
+SET(EXT_IMPORT_FILES
+ ${IMPORT_EXT_SOURCE_DIR}/NvBlastExtApexDestruction.cpp
+ ${IMPORT_EXT_SOURCE_DIR}/NvBlastExtApexDestruction.h
+ ${IMPORT_EXT_SOURCE_DIR}/NvBlastExtApexImportTool.cpp
+ ${IMPORT_EXT_SOURCE_DIR}/NvBlastExtScopedResource.cpp
+ ${IMPORT_EXT_SOURCE_DIR}/NvBlastExtScopedResource.h
+)
+
+ADD_LIBRARY(NvBlastExtImport STATIC
+ ${COMMON_FILES}
+ ${PUBLIC_FILES}
+
+ ${EXT_IMPORT_FILES}
+)
+
+SOURCE_GROUP("common" FILES ${COMMON_FILES})
+SOURCE_GROUP("public" FILES ${PUBLIC_FILES})
+SOURCE_GROUP("src" FILES ${EXT_IMPORT_FILES})
+
+
+# Target specific compile options
+
+TARGET_INCLUDE_DIRECTORIES(NvBlastExtImport
+ PRIVATE ${BLASTEXT_PLATFORM_INCLUDES}
+
+ PUBLIC ${PROJECT_SOURCE_DIR}/lowlevel/include
+ PUBLIC ${PROJECT_SOURCE_DIR}/toolkit/include
+ PUBLIC ${PHYSX_EXT_INCLUDE_DIR}
+ PUBLIC ${IMPORT_EXT_INCLUDE_DIR}
+
+ PRIVATE ${PROJECT_SOURCE_DIR}/common
+ PRIVATE ${COMMON_EXT_SOURCE_DIR}
+
+ PRIVATE ${IMPORT_EXT_SOURCE_DIR}
+
+ PRIVATE ${PHYSXSDK_INCLUDE_DIRS}
+ PRIVATE ${APEXSDK_INCLUDE_DIRS}
+ PRIVATE ${PXSHAREDSDK_INCLUDE_DIRS}
+)
+
+TARGET_COMPILE_DEFINITIONS(NvBlastExtImport
+ PRIVATE ${BLASTEXT_COMPILE_DEFS}
+)
+
+# Warning disables for Capn Proto
+TARGET_COMPILE_OPTIONS(NvBlastExtImport
+ PRIVATE ${BLASTEXT_PLATFORM_COMPILE_OPTIONS}
+)
+
+SET_TARGET_PROPERTIES(NvBlastExtImport PROPERTIES
+ PDB_NAME_DEBUG "NvBlastExtImport${CMAKE_DEBUG_POSTFIX}"
+ PDB_NAME_CHECKED "NvBlastExtImport${CMAKE_CHECKED_POSTFIX}"
+ PDB_NAME_PROFILE "NvBlastExtImport${CMAKE_PROFILE_POSTFIX}"
+ PDB_NAME_RELEASE "NvBlastExtImport${CMAKE_RELEASE_POSTFIX}"
+)
+
+# Do final direct sets after the target has been defined
+TARGET_LINK_LIBRARIES(NvBlastExtImport
+ PRIVATE NvBlast NvBlastTk NvBlastExtAuthoring
+ PUBLIC ${BLASTEXT_PLATFORM_LINKED_LIBS}
+ PUBLIC $<$<CONFIG:debug>:${APEXFRAMEWORK_LIB_DEBUG}> $<$<CONFIG:debug>:${PSFASTXML_LIB_DEBUG}>
+ PUBLIC $<$<CONFIG:checked>:${APEXFRAMEWORK_LIB_CHECKED}> $<$<CONFIG:checked>:${PSFASTXML_LIB_CHECKED}>
+ PUBLIC $<$<CONFIG:profile>:${APEXFRAMEWORK_LIB_PROFILE}> $<$<CONFIG:profile>:${PSFASTXML_LIB_PROFILE}>
+ PUBLIC $<$<CONFIG:release>:${APEXFRAMEWORK_LIB}> $<$<CONFIG:release>:${PSFASTXML_LIB}>
+)
diff --git a/sdk/compiler/cmake/NvBlastExtPhysX.cmake b/sdk/compiler/cmake/NvBlastExtPhysX.cmake
new file mode 100644
index 0000000..d2d0f0a
--- /dev/null
+++ b/sdk/compiler/cmake/NvBlastExtPhysX.cmake
@@ -0,0 +1,113 @@
+#
+# Build NvBlastExtPhysX Common
+#
+
+
+SET(COMMON_SOURCE_DIR ${PROJECT_SOURCE_DIR}/common)
+
+SET(COMMON_EXT_SOURCE_DIR ${PROJECT_SOURCE_DIR}/extensions/common/source)
+SET(PHYSX_EXT_SOURCE_DIR ${PROJECT_SOURCE_DIR}/extensions/physx/source)
+SET(COMMON_EXT_INCLUDE_DIR ${PROJECT_SOURCE_DIR}/extensions/common/include)
+SET(PHYSX_EXT_INCLUDE_DIR ${PROJECT_SOURCE_DIR}/extensions/physx/include)
+
+FIND_PACKAGE(PhysXSDK $ENV{PM_PhysX_VERSION} REQUIRED)
+FIND_PACKAGE(PxSharedSDK $ENV{PM_PxShared_VERSION} REQUIRED)
+
+# Include here after the directories are defined so that the platform specific file can use the variables.
+include(${PROJECT_CMAKE_FILES_DIR}/${TARGET_BUILD_PLATFORM}/NvBlastExtPhysX.cmake)
+
+SET(COMMON_FILES
+ ${BLASTEXT_PLATFORM_COMMON_FILES}
+
+ ${COMMON_SOURCE_DIR}/NvBlastAssert.cpp
+ ${COMMON_SOURCE_DIR}/NvBlastAssert.h
+)
+
+SET(PUBLIC_FILES
+ ${PHYSX_EXT_INCLUDE_DIR}/NvBlastExtImpactDamageManager.h
+ ${PHYSX_EXT_INCLUDE_DIR}/NvBlastExtPx.h
+ ${PHYSX_EXT_INCLUDE_DIR}/NvBlastExtPxActor.h
+ ${PHYSX_EXT_INCLUDE_DIR}/NvBlastExtPxAsset.h
+ ${PHYSX_EXT_INCLUDE_DIR}/NvBlastExtPxFamily.h
+ ${PHYSX_EXT_INCLUDE_DIR}/NvBlastExtPxListener.h
+ ${PHYSX_EXT_INCLUDE_DIR}/NvBlastExtPxManager.h
+ ${PHYSX_EXT_INCLUDE_DIR}/NvBlastExtStressSolver.h
+ ${PHYSX_EXT_INCLUDE_DIR}/NvBlastExtSync.h
+)
+
+SET(EXT_PHYSICS_FILES
+ ${PHYSX_EXT_SOURCE_DIR}/physics/NvBlastExtImpulseStressSolver.h
+ ${PHYSX_EXT_SOURCE_DIR}/physics/NvBlastExtImpactDamageManager.cpp
+ ${PHYSX_EXT_SOURCE_DIR}/physics/NvBlastExtImpulseStressSolver.cpp
+ ${PHYSX_EXT_SOURCE_DIR}/physics/NvBlastExtPxActorImpl.h
+ ${PHYSX_EXT_SOURCE_DIR}/physics/NvBlastExtPxActorImpl.cpp
+ ${PHYSX_EXT_SOURCE_DIR}/physics/NvBlastExtPxAssetImpl.h
+ ${PHYSX_EXT_SOURCE_DIR}/physics/NvBlastExtPxAssetImpl.cpp
+ ${PHYSX_EXT_SOURCE_DIR}/physics/NvBlastExtPxFamilyImpl.h
+ ${PHYSX_EXT_SOURCE_DIR}/physics/NvBlastExtPxFamilyImpl.cpp
+ ${PHYSX_EXT_SOURCE_DIR}/physics/NvBlastExtPxManagerImpl.h
+ ${PHYSX_EXT_SOURCE_DIR}/physics/NvBlastExtPxManagerImpl.cpp
+)
+
+SET(EXT_SYNC_FILES
+ ${PHYSX_EXT_SOURCE_DIR}/sync/NvBlastExtSync.cpp
+)
+
+ADD_LIBRARY(NvBlastExtPhysX ${BLASTEXT_PHYSX_LIBTYPE}
+ ${COMMON_FILES}
+ ${PUBLIC_FILES}
+
+ ${EXT_PHYSICS_FILES}
+ ${EXT_SYNC_FILES}
+)
+
+SOURCE_GROUP("common" FILES ${COMMON_FILES})
+SOURCE_GROUP("public" FILES ${PUBLIC_FILES})
+SOURCE_GROUP("src\\physics" FILES ${EXT_PHYSICS_FILES})
+SOURCE_GROUP("src\\sync" FILES ${EXT_SYNC_FILES})
+
+
+# Target specific compile options
+
+TARGET_INCLUDE_DIRECTORIES(NvBlastExtPhysX
+ PRIVATE ${BLASTEXT_PLATFORM_INCLUDES}
+
+ PUBLIC ${PROJECT_SOURCE_DIR}/lowlevel/include
+ PUBLIC ${PHYSX_EXT_INCLUDE_DIR}
+
+ PRIVATE ${PROJECT_SOURCE_DIR}/common
+ PRIVATE ${COMMON_EXT_SOURCE_DIR}
+
+ PRIVATE ${PHYSX_EXT_SOURCE_DIR}/physics
+ PRIVATE ${PHYSX_EXT_SOURCE_DIR}/sync
+
+ PUBLIC ${PHYSXSDK_INCLUDE_DIRS}
+ PRIVATE ${PXSHAREDSDK_INCLUDE_DIRS}
+)
+
+TARGET_COMPILE_DEFINITIONS(NvBlastExtPhysX
+ PRIVATE ${BLASTEXT_COMPILE_DEFS}
+)
+
+# Warning disables for Capn Proto
+TARGET_COMPILE_OPTIONS(NvBlastExtPhysX
+ PRIVATE ${BLASTEXT_PLATFORM_COMPILE_OPTIONS}
+)
+
+SET_TARGET_PROPERTIES(NvBlastExtPhysX PROPERTIES
+ PDB_NAME_DEBUG "NvBlastExtPhysX${CMAKE_DEBUG_POSTFIX}"
+ PDB_NAME_CHECKED "NvBlastExtPhysX${CMAKE_CHECKED_POSTFIX}"
+ PDB_NAME_PROFILE "NvBlastExtPhysX${CMAKE_PROFILE_POSTFIX}"
+ PDB_NAME_RELEASE "NvBlastExtPhysX${CMAKE_RELEASE_POSTFIX}"
+)
+
+# Do final direct sets after the target has been defined
+TARGET_LINK_LIBRARIES(NvBlastExtPhysX
+ PUBLIC NvBlast NvBlastExtShaders NvBlastTk
+ PUBLIC $<$<CONFIG:debug>:${PHYSX3_LIB_DEBUG}> $<$<CONFIG:debug>:${PHYSX3COOKING_LIB_DEBUG}> $<$<CONFIG:debug>:${PHYSX3EXTENSIONS_LIB_DEBUG}> $<$<CONFIG:debug>:${PXFOUNDATION_LIB_DEBUG}>
+ PUBLIC $<$<CONFIG:checked>:${PHYSX3_LIB_CHECKED}> $<$<CONFIG:checked>:${PHYSX3COOKING_LIB_CHECKED}> $<$<CONFIG:checked>:${PHYSX3EXTENSIONS_LIB_CHECKED}> $<$<CONFIG:checked>:${PXFOUNDATION_LIB_CHECKED}>
+ PUBLIC $<$<CONFIG:profile>:${PHYSX3_LIB_PROFILE}> $<$<CONFIG:profile>:${PHYSX3COOKING_LIB_PROFILE}> $<$<CONFIG:profile>:${PHYSX3EXTENSIONS_LIB_PROFILE}> $<$<CONFIG:profile>:${PXFOUNDATION_LIB_PROFILE}>
+ PUBLIC $<$<CONFIG:release>:${PHYSX3_LIB}> $<$<CONFIG:release>:${PHYSX3COOKING_LIB}> $<$<CONFIG:release>:${PHYSX3EXTENSIONS_LIB}> $<$<CONFIG:release>:${PXFOUNDATION_LIB}>
+
+ PUBLIC ${BLASTEXT_PLATFORM_LINKED_LIBS}
+)
diff --git a/sdk/compiler/cmake/NvBlastExtSerialization.cmake b/sdk/compiler/cmake/NvBlastExtSerialization.cmake
new file mode 100644
index 0000000..440ad43
--- /dev/null
+++ b/sdk/compiler/cmake/NvBlastExtSerialization.cmake
@@ -0,0 +1,200 @@
+#
+# Build NvBlastExtSerialization Common
+#
+
+SET(COMMON_SOURCE_DIR ${PROJECT_SOURCE_DIR}/common)
+
+SET(SERIAL_EXT_SOURCE_DIR ${PROJECT_SOURCE_DIR}/extensions/serialization/source)
+SET(SERIAL_EXT_INCLUDE_DIR ${PROJECT_SOURCE_DIR}/extensions/serialization/include)
+SET(TK_INCLUDE_DIR ${BLAST_ROOT_DIR}/sdk/toolkit/include)
+SET(PHYSX_EXT_INCLUDE_DIR ${PROJECT_SOURCE_DIR}/extensions/physx/include)
+SET(PHYSX_EXT_SOURCE_DIR ${PROJECT_SOURCE_DIR}/extensions/physx/source)
+SET(EXT_COMMON_SOURCE_DIR ${PROJECT_SOURCE_DIR}/extensions/common/source)
+SET(EXT_COMMON_INCLUDE_DIR ${PROJECT_SOURCE_DIR}/extensions/common/include)
+
+SET(DTO_SOURCE_DIR ${SERIAL_EXT_SOURCE_DIR}/DTO)
+
+SET(SOLVER_SOURCE_DIR ${PROJECT_SOURCE_DIR}/lowlevel/source)
+
+SET(SERIAL_GENERATED_SOURCE_DIR ${SERIAL_EXT_SOURCE_DIR}/generated)
+
+FIND_PACKAGE(PhysXSDK $ENV{PM_PhysX_VERSION} REQUIRED)
+FIND_PACKAGE(PxSharedSDK $ENV{PM_PxShared_VERSION} REQUIRED)
+FIND_PACKAGE(CapnProtoSDK $ENV{PM_CapnProto_VERSION} REQUIRED)
+
+# Include here after the directories are defined so that the platform specific file can use the variables.
+include(${PROJECT_CMAKE_FILES_DIR}/${TARGET_BUILD_PLATFORM}/NvBlastExtSerialization.cmake)
+
+# Compile the generated files for serialization
+
+INCLUDE(CapnProtoGenerate)
+
+SET(CAPNPC_OUTPUT_DIR ${SERIAL_GENERATED_SOURCE_DIR})
+SET(CAPNPC_SRC_PREFIX ${SERIAL_EXT_SOURCE_DIR})
+CAPNP_GENERATE_CPP(CAPNP_SRCS CAPNP_HDRS ${SERIAL_EXT_SOURCE_DIR}/NvBlastExtSerializationLL.capn ${SERIAL_EXT_SOURCE_DIR}/NvBlastExtSerialization.capn)
+
+SET(COMMON_FILES
+ ${BLASTEXTSERIALIZATION_PLATFORM_COMMON_FILES}
+
+ ${COMMON_SOURCE_DIR}/NvBlastAssert.cpp
+ ${COMMON_SOURCE_DIR}/NvBlastAssert.h
+ ${COMMON_SOURCE_DIR}/NvBlastAtomic.cpp
+ ${COMMON_SOURCE_DIR}/NvBlastAtomic.h
+ ${COMMON_SOURCE_DIR}/NvBlastDLink.h
+ ${COMMON_SOURCE_DIR}/NvBlastFixedArray.h
+ ${COMMON_SOURCE_DIR}/NvBlastFixedBitmap.h
+ ${COMMON_SOURCE_DIR}/NvBlastFixedBoolArray.h
+ ${COMMON_SOURCE_DIR}/NvBlastFixedPriorityQueue.h
+ ${COMMON_SOURCE_DIR}/NvBlastGeometry.h
+# ${COMMON_SOURCE_DIR}/NvBlastIndexFns.cpp
+ ${COMMON_SOURCE_DIR}/NvBlastIndexFns.h
+ ${COMMON_SOURCE_DIR}/NvBlastIteratorBase.h
+ ${COMMON_SOURCE_DIR}/NvBlastMath.h
+ ${COMMON_SOURCE_DIR}/NvBlastMemory.h
+ ${COMMON_SOURCE_DIR}/NvBlastPreprocessorInternal.h
+ ${COMMON_SOURCE_DIR}/NvBlastTime.cpp
+ ${COMMON_SOURCE_DIR}/NvBlastTime.h
+ ${COMMON_SOURCE_DIR}/NvBlastTimers.cpp
+)
+
+
+SET(EXT_SERIALIZATION_FILES
+ ${SERIAL_EXT_SOURCE_DIR}/NvBlastExtSerializationLL.capn
+ ${SERIAL_EXT_SOURCE_DIR}/NvBlastExtSerialization.capn
+
+ ${SERIAL_EXT_SOURCE_DIR}/NvBlastExtSerialization.h
+ ${SERIAL_EXT_SOURCE_DIR}/NvBlastExtSerializationImpl.h
+ ${SERIAL_EXT_SOURCE_DIR}/NvBlastExtSerializationLLImpl.h
+
+ ${SERIAL_EXT_SOURCE_DIR}/NvBlastExtSerializationLLInterface.cpp
+ ${SERIAL_EXT_SOURCE_DIR}/NvBlastExtSerializationInterface.cpp
+
+ ${SERIAL_EXT_SOURCE_DIR}/NvBlastExtOutputStream.h
+ ${SERIAL_EXT_SOURCE_DIR}/NvBlastExtOutputStream.cpp
+ ${SERIAL_EXT_SOURCE_DIR}/NvBlastExtInputStream.h
+ ${SERIAL_EXT_SOURCE_DIR}/NvBlastExtInputStream.cpp
+
+ ${SERIAL_EXT_SOURCE_DIR}/NvBlastExtKJPxInputStream.h
+ ${SERIAL_EXT_SOURCE_DIR}/NvBlastExtKJPxInputStream.cpp
+
+ ${SERIAL_EXT_SOURCE_DIR}/NvBlastExtKJPxOutputStream.h
+ ${SERIAL_EXT_SOURCE_DIR}/NvBlastExtKJPxOutputStream.cpp
+)
+
+SET(DTO_SOURCE_FILES
+ ${DTO_SOURCE_DIR}/DTOMacros.h
+ ${DTO_SOURCE_DIR}/AssetDTO.h
+ ${DTO_SOURCE_DIR}/AssetDTO.cpp
+ ${DTO_SOURCE_DIR}/TkAssetDTO.h
+ ${DTO_SOURCE_DIR}/TkAssetDTO.cpp
+ ${DTO_SOURCE_DIR}/ExtPxAssetDTO.h
+ ${DTO_SOURCE_DIR}/ExtPxAssetDTO.cpp
+ ${DTO_SOURCE_DIR}/PxVec3DTO.h
+ ${DTO_SOURCE_DIR}/PxVec3DTO.cpp
+ ${DTO_SOURCE_DIR}/NvBlastChunkDTO.h
+ ${DTO_SOURCE_DIR}/NvBlastChunkDTO.cpp
+ ${DTO_SOURCE_DIR}/NvBlastBondDTO.h
+ ${DTO_SOURCE_DIR}/NvBlastBondDTO.cpp
+ ${DTO_SOURCE_DIR}/NvBlastIDDTO.h
+ ${DTO_SOURCE_DIR}/NvBlastIDDTO.cpp
+ ${DTO_SOURCE_DIR}/TkAssetJointDescDTO.h
+ ${DTO_SOURCE_DIR}/TkAssetJointDescDTO.cpp
+ ${DTO_SOURCE_DIR}/ExtPxChunkDTO.h
+ ${DTO_SOURCE_DIR}/ExtPxChunkDTO.cpp
+ ${DTO_SOURCE_DIR}/ExtPxSubchunkDTO.h
+ ${DTO_SOURCE_DIR}/ExtPxSubchunkDTO.cpp
+ ${DTO_SOURCE_DIR}/PxQuatDTO.h
+ ${DTO_SOURCE_DIR}/PxQuatDTO.cpp
+ ${DTO_SOURCE_DIR}/PxTransformDTO.h
+ ${DTO_SOURCE_DIR}/PxTransformDTO.cpp
+ ${DTO_SOURCE_DIR}/PxMeshScaleDTO.h
+ ${DTO_SOURCE_DIR}/PxMeshScaleDTO.cpp
+ ${DTO_SOURCE_DIR}/PxConvexMeshGeometryDTO.h
+ ${DTO_SOURCE_DIR}/PxConvexMeshGeometryDTO.cpp
+
+
+
+)
+
+SET(EXT_SERIALIZATION_INCLUDES
+ ${SERIAL_EXT_INCLUDE_DIR}/NvBlastExtSerializationLLInterface.h
+ ${SERIAL_EXT_INCLUDE_DIR}/NvBlastExtSerializationInterface.h
+)
+
+ADD_LIBRARY(NvBlastExtSerialization ${BLASTEXTSERIALIZATION_LIB_TYPE}
+ ${COMMON_FILES}
+
+ ${DTO_SOURCE_FILES}
+
+ ${EXT_SERIALIZATION_INCLUDES}
+ ${EXT_SERIALIZATION_FILES}
+
+ ${CAPNP_SRCS}
+ ${CAPNP_HDRS}
+
+ ${MD5_FILES}
+)
+
+SOURCE_GROUP("common" FILES ${COMMON_FILES})
+
+SOURCE_GROUP("include" FILES ${EXT_SERIALIZATION_INCLUDES})
+SOURCE_GROUP("src\\serialization" FILES ${EXT_SERIALIZATION_FILES})
+SOURCE_GROUP("src\\serialization\\DTO" FILES ${DTO_SOURCE_FILES})
+SOURCE_GROUP("src\\serialization\\generated" FILES ${CAPNP_SRCS} ${CAPNP_HDRS})
+
+
+# Target specific compile options
+
+TARGET_INCLUDE_DIRECTORIES(NvBlastExtSerialization
+ PRIVATE ${BLASTEXTSERIALIZATION_PLATFORM_INCLUDES}
+
+ PRIVATE ${PROJECT_SOURCE_DIR}/common
+ PRIVATE ${PROJECT_SOURCE_DIR}/lowlevel/include
+ PRIVATE ${PROJECT_SOURCE_DIR}/lowlevel/source
+
+ PRIVATE ${TK_INCLUDE_DIR}
+
+ PUBLIC ${SERIAL_EXT_INCLUDE_DIR}
+ PUBLIC ${SERIAL_EXT_SOURCE_DIR}
+ PUBLIC ${DTO_SOURCE_DIR}
+
+ PRIVATE ${PHYSX_EXT_INCLUDE_DIR}
+ PRIVATE ${PHYSX_EXT_SOURCE_DIR}
+
+ PRIVATE ${EXT_COMMON_SOURCE_DIR}
+ PRIVATE ${EXT_COMMON_INCLUDE_DIR}
+
+ PUBLIC ${CAPNPROTOSDK_INCLUDE_DIRS}
+
+ PRIVATE ${COMMON_SOURCE_DIR}
+
+ PUBLIC ${PHYSXSDK_INCLUDE_DIRS}
+ PRIVATE ${PXSHAREDSDK_INCLUDE_DIRS}
+)
+
+TARGET_COMPILE_DEFINITIONS(NvBlastExtSerialization
+ PUBLIC CAPNP_LITE=1
+ PRIVATE ${BLASTEXTSERIALIZATION_COMPILE_DEFS}
+)
+
+# Warning disables for Capn Proto
+TARGET_COMPILE_OPTIONS(NvBlastExtSerialization
+ PRIVATE ${BLASTEXTSERIALIZATION_COMPILE_OPTIONS}
+)
+
+SET_TARGET_PROPERTIES(NvBlastExtSerialization PROPERTIES
+ PDB_NAME_DEBUG "NvBlastExtSerialization${CMAKE_DEBUG_POSTFIX}"
+ PDB_NAME_CHECKED "NvBlastExtSerialization${CMAKE_CHECKED_POSTFIX}"
+ PDB_NAME_PROFILE "NvBlastExtSerialization${CMAKE_PROFILE_POSTFIX}"
+ PDB_NAME_RELEASE "NvBlastExtSerialization${CMAKE_RELEASE_POSTFIX}"
+)
+
+# Do final direct sets after the target has been defined
+TARGET_LINK_LIBRARIES(NvBlastExtSerialization
+ PRIVATE NvBlast NvBlastExtPhysX NvBlastTk ${CAPNPROTOSDK_LIBRARIES}
+ PUBLIC $<$<CONFIG:debug>:${PHYSX3_LIB_DEBUG}> $<$<CONFIG:debug>:${PHYSX3COOKING_LIB_DEBUG}>
+ PUBLIC $<$<CONFIG:checked>:${PHYSX3_LIB_CHECKED}> $<$<CONFIG:checked>:${PHYSX3COOKING_LIB_CHECKED}>
+ PUBLIC $<$<CONFIG:profile>:${PHYSX3_LIB_PROFILE}> $<$<CONFIG:profile>:${PHYSX3COOKING_LIB_PROFILE}>
+ PUBLIC $<$<CONFIG:release>:${PHYSX3_LIB}> $<$<CONFIG:release>:${PHYSX3COOKING_LIB}>
+
+)
diff --git a/sdk/compiler/cmake/NvBlastExtSerializationLL.cmake b/sdk/compiler/cmake/NvBlastExtSerializationLL.cmake
new file mode 100644
index 0000000..da1a9d2
--- /dev/null
+++ b/sdk/compiler/cmake/NvBlastExtSerializationLL.cmake
@@ -0,0 +1,151 @@
+#
+# Build NvBlastExtSerializationLL Common
+#
+
+SET(COMMON_SOURCE_DIR ${PROJECT_SOURCE_DIR}/common)
+
+SET(SERIAL_EXT_SOURCE_DIR ${PROJECT_SOURCE_DIR}/extensions/serialization/source)
+SET(SERIAL_EXT_INCLUDE_DIR ${PROJECT_SOURCE_DIR}/extensions/serialization/include)
+
+SET(DTO_SOURCE_DIR ${SERIAL_EXT_SOURCE_DIR}/DTO)
+
+SET(SOLVER_SOURCE_DIR ${PROJECT_SOURCE_DIR}/lowlevel/source)
+
+SET(SERIAL_GENERATED_SOURCE_DIR ${SERIAL_EXT_SOURCE_DIR}/generated)
+
+FIND_PACKAGE(CapnProtoSDK $ENV{PM_CapnProto_VERSION} REQUIRED)
+
+# Include here after the directories are defined so that the platform specific file can use the variables.
+include(${PROJECT_CMAKE_FILES_DIR}/${TARGET_BUILD_PLATFORM}/NvBlastExtSerializationLL.cmake)
+
+# Compile the generated files for serialization
+
+INCLUDE(CapnProtoGenerate)
+
+SET(CAPNPC_OUTPUT_DIR ${SERIAL_GENERATED_SOURCE_DIR})
+SET(CAPNPC_SRC_PREFIX ${SERIAL_EXT_SOURCE_DIR})
+CAPNP_GENERATE_CPP(CAPNP_SRCS CAPNP_HDRS ${SERIAL_EXT_SOURCE_DIR}/NvBlastExtSerializationLL.capn)
+
+SET(COMMON_FILES
+ ${BLASTEXTSERIALIZATION_PLATFORM_COMMON_FILES}
+
+ ${COMMON_SOURCE_DIR}/NvBlastAssert.cpp
+ ${COMMON_SOURCE_DIR}/NvBlastAssert.h
+ ${COMMON_SOURCE_DIR}/NvBlastAtomic.cpp
+ ${COMMON_SOURCE_DIR}/NvBlastAtomic.h
+ ${COMMON_SOURCE_DIR}/NvBlastDLink.h
+ ${COMMON_SOURCE_DIR}/NvBlastFixedArray.h
+ ${COMMON_SOURCE_DIR}/NvBlastFixedBitmap.h
+ ${COMMON_SOURCE_DIR}/NvBlastFixedBoolArray.h
+ ${COMMON_SOURCE_DIR}/NvBlastFixedPriorityQueue.h
+ ${COMMON_SOURCE_DIR}/NvBlastGeometry.h
+ ${COMMON_SOURCE_DIR}/NvBlastIndexFns.h
+ ${COMMON_SOURCE_DIR}/NvBlastIteratorBase.h
+ ${COMMON_SOURCE_DIR}/NvBlastMath.h
+ ${COMMON_SOURCE_DIR}/NvBlastMemory.h
+ ${COMMON_SOURCE_DIR}/NvBlastPreprocessorInternal.h
+ ${COMMON_SOURCE_DIR}/NvBlastTime.cpp
+ ${COMMON_SOURCE_DIR}/NvBlastTime.h
+ ${COMMON_SOURCE_DIR}/NvBlastTimers.cpp
+)
+
+
+SET(EXT_SERIALIZATION_FILES
+ ${SERIAL_EXT_SOURCE_DIR}/NvBlastExtSerializationLL.capn
+
+ ${SERIAL_EXT_SOURCE_DIR}/NvBlastExtSerialization.h
+ ${SERIAL_EXT_SOURCE_DIR}/NvBlastExtSerializationLLImpl.h
+
+ ${SERIAL_EXT_SOURCE_DIR}/NvBlastExtSerializationLLInterface.cpp
+
+ ${SERIAL_EXT_SOURCE_DIR}/NvBlastExtOutputStream.h
+ ${SERIAL_EXT_SOURCE_DIR}/NvBlastExtOutputStream.cpp
+ ${SERIAL_EXT_SOURCE_DIR}/NvBlastExtInputStream.h
+ ${SERIAL_EXT_SOURCE_DIR}/NvBlastExtInputStream.cpp
+
+# ${SERIAL_EXT_SOURCE_DIR}/NvBlastExtKJPxInputStream.h
+# ${SERIAL_EXT_SOURCE_DIR}/NvBlastExtKJPxInputStream.cpp
+
+# ${SERIAL_EXT_SOURCE_DIR}/NvBlastExtKJPxOutputStream.h
+# ${SERIAL_EXT_SOURCE_DIR}/NvBlastExtKJPxOutputStream.cpp
+)
+
+SET(DTO_SOURCE_FILES
+ ${DTO_SOURCE_DIR}/DTOMacros.h
+ ${DTO_SOURCE_DIR}/AssetDTO.h
+ ${DTO_SOURCE_DIR}/AssetDTO.cpp
+ ${DTO_SOURCE_DIR}/NvBlastChunkDTO.h
+ ${DTO_SOURCE_DIR}/NvBlastChunkDTO.cpp
+ ${DTO_SOURCE_DIR}/NvBlastBondDTO.h
+ ${DTO_SOURCE_DIR}/NvBlastBondDTO.cpp
+ ${DTO_SOURCE_DIR}/NvBlastIDDTO.h
+ ${DTO_SOURCE_DIR}/NvBlastIDDTO.cpp
+)
+
+SET(EXT_SERIALIZATION_INCLUDES
+ ${SERIAL_EXT_INCLUDE_DIR}/NvBlastExtSerializationLLInterface.h
+)
+
+ADD_LIBRARY(NvBlastExtSerializationLL ${BLASTEXTSERIALIZATION_LIB_TYPE}
+ ${COMMON_FILES}
+
+ ${DTO_SOURCE_FILES}
+
+ ${EXT_SERIALIZATION_INCLUDES}
+ ${EXT_SERIALIZATION_FILES}
+
+ ${CAPNP_SRCS}
+ ${CAPNP_HDRS}
+
+ ${MD5_FILES}
+)
+
+SOURCE_GROUP("common" FILES ${COMMON_FILES})
+
+SOURCE_GROUP("include" FILES ${EXT_SERIALIZATION_INCLUDES})
+SOURCE_GROUP("src\\serialization" FILES ${EXT_SERIALIZATION_FILES})
+SOURCE_GROUP("src\\serialization\\DTO" FILES ${DTO_SOURCE_FILES})
+SOURCE_GROUP("src\\serialization\\generated" FILES ${CAPNP_SRCS} ${CAPNP_HDRS})
+
+
+# Target specific compile options
+
+TARGET_INCLUDE_DIRECTORIES(NvBlastExtSerializationLL
+ PRIVATE ${BLASTEXTSERIALIZATION_PLATFORM_INCLUDES}
+
+ PRIVATE ${PROJECT_SOURCE_DIR}/common
+ PRIVATE ${PROJECT_SOURCE_DIR}/lowlevel/include
+ PRIVATE ${PROJECT_SOURCE_DIR}/lowlevel/source
+
+ PRIVATE ${TK_INCLUDE_DIR}
+
+ PUBLIC ${SERIAL_EXT_INCLUDE_DIR}
+ PUBLIC ${SERIAL_EXT_SOURCE_DIR}
+ PUBLIC ${DTO_SOURCE_DIR}
+
+ PUBLIC ${CAPNPROTOSDK_INCLUDE_DIRS}
+
+ PRIVATE ${COMMON_SOURCE_DIR}
+)
+
+TARGET_COMPILE_DEFINITIONS(NvBlastExtSerializationLL
+ PUBLIC CAPNP_LITE=1;BLAST_LL_ALLOC=1
+ PRIVATE ${BLASTEXTSERIALIZATION_COMPILE_DEFS}
+)
+
+# Warning disables for Capn Proto
+TARGET_COMPILE_OPTIONS(NvBlastExtSerializationLL
+ PRIVATE ${BLASTEXTSERIALIZATION_COMPILE_OPTIONS}
+)
+
+SET_TARGET_PROPERTIES(NvBlastExtSerializationLL PROPERTIES
+ PDB_NAME_DEBUG "NvBlastExtSerializationLL${CMAKE_DEBUG_POSTFIX}"
+ PDB_NAME_CHECKED "NvBlastExtSerializationLL${CMAKE_CHECKED_POSTFIX}"
+ PDB_NAME_PROFILE "NvBlastExtSerializationLL${CMAKE_PROFILE_POSTFIX}"
+ PDB_NAME_RELEASE "NvBlastExtSerializationLL${CMAKE_RELEASE_POSTFIX}"
+)
+
+# Do final direct sets after the target has been defined
+TARGET_LINK_LIBRARIES(NvBlastExtSerializationLL
+ PRIVATE NvBlast ${CAPNPROTOSDK_LIBRARIES}
+)
diff --git a/sdk/compiler/cmake/NvBlastExtShaders.cmake b/sdk/compiler/cmake/NvBlastExtShaders.cmake
new file mode 100644
index 0000000..df4a3ad
--- /dev/null
+++ b/sdk/compiler/cmake/NvBlastExtShaders.cmake
@@ -0,0 +1,74 @@
+#
+# Build NvBlastExtShaders Common
+#
+
+
+SET(COMMON_SOURCE_DIR ${PROJECT_SOURCE_DIR}/common)
+SET(SHADERS_EXT_SOURCE_DIR ${PROJECT_SOURCE_DIR}/extensions/shaders/source)
+SET(SHADERS_EXT_INCLUDE_DIR ${PROJECT_SOURCE_DIR}/extensions/shaders/include)
+
+# Include here after the directories are defined so that the platform specific file can use the variables.
+include(${PROJECT_CMAKE_FILES_DIR}/${TARGET_BUILD_PLATFORM}/NvBlastExtShaders.cmake)
+
+SET(COMMON_FILES
+ ${BLASTEXT_PLATFORM_COMMON_FILES}
+
+ ${COMMON_SOURCE_DIR}/NvBlastAssert.cpp
+ ${COMMON_SOURCE_DIR}/NvBlastAssert.h
+)
+
+SET(PUBLIC_FILES
+ ${SHADERS_EXT_INCLUDE_DIR}/NvBlastExtDamageShaders.h
+)
+
+SET(EXT_SOURCE_FILES
+ ${SHADERS_EXT_SOURCE_DIR}/NvBlastExtRadialShaders.cpp
+ ${SHADERS_EXT_SOURCE_DIR}/NvBlastExtShearShaders.cpp
+)
+
+ADD_LIBRARY(NvBlastExtShaders ${BLAST_EXT_SHARED_LIB_TYPE}
+ ${COMMON_FILES}
+ ${PUBLIC_FILES}
+
+ ${EXT_SOURCE_FILES}
+)
+
+SOURCE_GROUP("common" FILES ${COMMON_FILES})
+SOURCE_GROUP("public" FILES ${PUBLIC_FILES})
+SOURCE_GROUP("src" FILES ${EXT_SOURCE_FILES})
+
+
+# Target specific compile options
+
+TARGET_INCLUDE_DIRECTORIES(NvBlastExtShaders
+ PRIVATE ${BLASTEXT_PLATFORM_INCLUDES}
+
+ PUBLIC ${PROJECT_SOURCE_DIR}/lowlevel/include
+ PUBLIC ${SHADERS_EXT_INCLUDE_DIR}
+
+ PRIVATE ${SHADERS_EXT_SOURCE_DIR}
+ PRIVATE ${PROJECT_SOURCE_DIR}/common
+)
+
+TARGET_COMPILE_DEFINITIONS(NvBlastExtShaders
+ PRIVATE ${BLASTEXT_COMPILE_DEFS}
+)
+
+# Warning disables for Capn Proto
+TARGET_COMPILE_OPTIONS(NvBlastExtShaders
+ PRIVATE ${BLASTEXT_PLATFORM_COMPILE_OPTIONS}
+)
+
+SET_TARGET_PROPERTIES(NvBlastExtShaders PROPERTIES
+ PDB_NAME_DEBUG "NvBlastExtShaders${CMAKE_DEBUG_POSTFIX}"
+ PDB_NAME_CHECKED "NvBlastExtShaders${CMAKE_CHECKED_POSTFIX}"
+ PDB_NAME_PROFILE "NvBlastExtShaders${CMAKE_PROFILE_POSTFIX}"
+ PDB_NAME_RELEASE "NvBlastExtShaders${CMAKE_RELEASE_POSTFIX}"
+)
+
+# Do final direct sets after the target has been defined
+#TARGET_LINK_LIBRARIES(NvBlastExtShaders NvBlast ${PHYSXSDK_LIBRARIES} ${APEXSDK_LIBRARIES} ${PXSHAREDSDK_LIBRARIES})
+TARGET_LINK_LIBRARIES(NvBlastExtShaders
+ PUBLIC NvBlast
+ PUBLIC ${BLASTEXT_PLATFORM_LINKED_LIBS}
+)
diff --git a/sdk/compiler/cmake/NvBlastTk.cmake b/sdk/compiler/cmake/NvBlastTk.cmake
new file mode 100644
index 0000000..be9e04a
--- /dev/null
+++ b/sdk/compiler/cmake/NvBlastTk.cmake
@@ -0,0 +1,126 @@
+#
+# Build NvBlastTk common
+#
+
+SET(TOOLKIT_DIR ${PROJECT_SOURCE_DIR}/toolkit)
+SET(PROFILER_SOURCE_DIR ${PROJECT_SOURCE_DIR}/profiler)
+SET(COMMON_SOURCE_DIR ${PROJECT_SOURCE_DIR}/common)
+
+FIND_PACKAGE(PxSharedSDK $ENV{PM_PxShared_VERSION} REQUIRED)
+
+# Include here after the directories are defined so that the platform specific file can use the variables.
+include(${PROJECT_CMAKE_FILES_DIR}/${TARGET_BUILD_PLATFORM}/NvBlastTk.cmake)
+
+SET(COMMON_FILES
+ ${BLASTTK_PLATFORM_COMMON_FILES}
+
+ ${COMMON_SOURCE_DIR}/NvBlastAssert.cpp
+ ${COMMON_SOURCE_DIR}/NvBlastAssert.h
+ ${COMMON_SOURCE_DIR}/NvBlastAtomic.cpp
+ ${COMMON_SOURCE_DIR}/NvBlastAtomic.h
+ ${COMMON_SOURCE_DIR}/NvBlastDLink.h
+ ${COMMON_SOURCE_DIR}/NvBlastFixedArray.h
+ ${COMMON_SOURCE_DIR}/NvBlastFixedBitmap.h
+ ${COMMON_SOURCE_DIR}/NvBlastFixedBoolArray.h
+ ${COMMON_SOURCE_DIR}/NvBlastFixedPriorityQueue.h
+ ${COMMON_SOURCE_DIR}/NvBlastGeometry.h
+# ${COMMON_SOURCE_DIR}/NvBlastIndexFns.cpp
+ ${COMMON_SOURCE_DIR}/NvBlastIndexFns.h
+ ${COMMON_SOURCE_DIR}/NvBlastIteratorBase.h
+ ${COMMON_SOURCE_DIR}/NvBlastMath.h
+ ${COMMON_SOURCE_DIR}/NvBlastMemory.h
+ ${COMMON_SOURCE_DIR}/NvBlastPreprocessorInternal.h
+ ${COMMON_SOURCE_DIR}/NvBlastTime.cpp
+ ${COMMON_SOURCE_DIR}/NvBlastTime.h
+ ${COMMON_SOURCE_DIR}/NvBlastTimers.cpp
+)
+
+SET(PROFILER_FILES
+ ${PROFILER_SOURCE_DIR}/NvBlastProfiler.cpp
+ ${PROFILER_SOURCE_DIR}/NvBlastProfilerInternal.h
+)
+
+SET(PUBLIC_FILES
+ ${TOOLKIT_DIR}/include/NvBlastTk.h
+ ${TOOLKIT_DIR}/include/NvBlastTkActor.h
+ ${TOOLKIT_DIR}/include/NvBlastTkAsset.h
+ ${TOOLKIT_DIR}/include/NvBlastTkEvent.h
+ ${TOOLKIT_DIR}/include/NvBlastTkFamily.h
+ ${TOOLKIT_DIR}/include/NvBlastTkFramework.h
+ ${TOOLKIT_DIR}/include/NvBlastTkGroup.h
+ ${TOOLKIT_DIR}/include/NvBlastTkIdentifiable.h
+ ${TOOLKIT_DIR}/include/NvBlastTkJoint.h
+ ${TOOLKIT_DIR}/include/NvBlastTkObject.h
+ ${TOOLKIT_DIR}/include/NvBlastTkSerializable.h
+ ${TOOLKIT_DIR}/include/NvBlastTkType.h
+)
+
+SET(TOOLKIT_FILES
+ ${TOOLKIT_DIR}/source/NvBlastTkActorImpl.cpp
+ ${TOOLKIT_DIR}/source/NvBlastTkActorImpl.h
+ ${TOOLKIT_DIR}/source/NvBlastTkAllocator.cpp
+ ${TOOLKIT_DIR}/source/NvBlastTkAllocator.h
+ ${TOOLKIT_DIR}/source/NvBlastTkArray.h
+ ${TOOLKIT_DIR}/source/NvBlastTkAssetImpl.cpp
+ ${TOOLKIT_DIR}/source/NvBlastTkAssetImpl.h
+ ${TOOLKIT_DIR}/source/NvBlastTkCommon.h
+ ${TOOLKIT_DIR}/source/NvBlastTkEventQueue.h
+ ${TOOLKIT_DIR}/source/NvBlastTkFamilyImpl.cpp
+ ${TOOLKIT_DIR}/source/NvBlastTkFamilyImpl.h
+ ${TOOLKIT_DIR}/source/NvBlastTkFrameworkImpl.cpp
+ ${TOOLKIT_DIR}/source/NvBlastTkFrameworkImpl.h
+ ${TOOLKIT_DIR}/source/NvBlastTkGroupImpl.cpp
+ ${TOOLKIT_DIR}/source/NvBlastTkGroupImpl.h
+ ${TOOLKIT_DIR}/source/NvBlastTkGUID.h
+ ${TOOLKIT_DIR}/source/NvBlastTkHashMap.h
+ ${TOOLKIT_DIR}/source/NvBlastTkHashSet.h
+ ${TOOLKIT_DIR}/source/NvBlastTkJointImpl.cpp
+ ${TOOLKIT_DIR}/source/NvBlastTkJointImpl.h
+ ${TOOLKIT_DIR}/source/NvBlastTkTaskImpl.cpp
+ ${TOOLKIT_DIR}/source/NvBlastTkTaskImpl.h
+ ${TOOLKIT_DIR}/source/NvBlastTkTypeImpl.h
+)
+
+ADD_LIBRARY(NvBlastTk ${BLASTTK_LIBTYPE}
+ ${COMMON_FILES}
+ ${PROFILER_FILES}
+ ${PUBLIC_FILES}
+ ${TOOLKIT_FILES}
+)
+
+SOURCE_GROUP("common" FILES ${COMMON_FILES})
+SOURCE_GROUP("profiler" FILES ${PROFILER_FILES})
+SOURCE_GROUP("public" FILES ${PUBLIC_FILES})
+SOURCE_GROUP("toolkit" FILES ${TOOLKIT_FILES})
+
+# Target specific compile options
+
+TARGET_INCLUDE_DIRECTORIES(NvBlastTk
+ PRIVATE ${BLASTTK_PLATFORM_INCLUDES}
+
+ PRIVATE ${PROJECT_SOURCE_DIR}/common
+ PRIVATE ${PROJECT_SOURCE_DIR}/profiler
+ PUBLIC ${PROJECT_SOURCE_DIR}/lowlevel/include
+ PUBLIC ${PROJECT_SOURCE_DIR}/toolkit/include
+
+ PRIVATE ${PXSHAREDSDK_INCLUDE_DIRS}
+)
+
+TARGET_COMPILE_DEFINITIONS(NvBlastTk
+ PRIVATE ${BLASTTK_COMPILE_DEFS}
+)
+
+SET_TARGET_PROPERTIES(NvBlastTk PROPERTIES
+ PDB_NAME_DEBUG "NvBlastTk${CMAKE_DEBUG_POSTFIX}"
+ PDB_NAME_CHECKED "NvBlastTk${CMAKE_CHECKED_POSTFIX}"
+ PDB_NAME_PROFILE "NvBlastTk${CMAKE_PROFILE_POSTFIX}"
+ PDB_NAME_RELEASE "NvBlastTk${CMAKE_RELEASE_POSTFIX}"
+)
+
+# Do final direct sets after the target has been defined
+TARGET_LINK_LIBRARIES(NvBlastTk
+ PRIVATE NvBlast
+
+ PUBLIC ${BLASTTK_PLATFORM_LINKED_LIBS}
+)
+
diff --git a/sdk/compiler/cmake/modules/CapnProtoGenerate.cmake b/sdk/compiler/cmake/modules/CapnProtoGenerate.cmake
new file mode 100644
index 0000000..3579784
--- /dev/null
+++ b/sdk/compiler/cmake/modules/CapnProtoGenerate.cmake
@@ -0,0 +1,108 @@
+# Configuration variables (optional):
+# CAPNPC_OUTPUT_DIR
+# Directory to place compiled schema sources (default: the same directory as the schema file).
+# CAPNPC_IMPORT_DIRS
+# List of additional include directories for the schema compiler.
+# (CMAKE_CURRENT_SOURCE_DIR and CAPNP_INCLUDE_DIRS are always included.)
+# CAPNPC_SRC_PREFIX
+# Schema file source prefix (default: CMAKE_CURRENT_SOURCE_DIR).
+# CAPNPC_FLAGS
+# Additional flags to pass to the schema compiler.
+# Example usage:
+#
+# capnp_generate_cpp(CAPNP_SRCS CAPNP_HDRS schema.capnp)
+# add_executable(a a.cc ${CAPNP_SRCS} ${CAPNP_HDRS})
+# target_link_library(a ${CAPNP_LIBRARIES})
+#
+# For out-of-source builds:
+#
+# set(CAPNPC_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR})
+# include_directories(${CAPNPC_OUTPUT_DIR})
+# capnp_generate_cpp(...)
+
+function(CAPNP_GENERATE_CPP SOURCES HEADERS)
+ if(NOT ARGN)
+ message(SEND_ERROR "CAPNP_GENERATE_CPP() called without any source files.")
+ endif()
+ if(NOT CAPNP_EXECUTABLE)
+ message(SEND_ERROR "Could not locate capnp executable (CAPNP_EXECUTABLE).")
+ endif()
+ if(NOT CAPNPC_CXX_EXECUTABLE)
+ message(SEND_ERROR "Could not locate capnpc-c++ executable (CAPNPC_CXX_EXECUTABLE).")
+ endif()
+ if(NOT CAPNP_INCLUDE_DIRS)
+ message(SEND_ERROR "Could not locate capnp header files (CAPNP_INCLUDE_DIRS).")
+ endif()
+
+ # Default compiler includes
+ set(include_path -I ${CMAKE_CURRENT_SOURCE_DIR} -I ${CAPNP_INCLUDE_DIRS})
+
+ if(DEFINED CAPNPC_IMPORT_DIRS)
+ # Append each directory as a series of '-I' flags in ${include_path}
+ foreach(directory ${CAPNPC_IMPORT_DIRS})
+ get_filename_component(absolute_path "${directory}" ABSOLUTE)
+ list(APPEND include_path -I ${absolute_path})
+ endforeach()
+ endif()
+
+ if(DEFINED CAPNPC_OUTPUT_DIR)
+ # Prepend a ':' to get the format for the '-o' flag right
+ set(output_dir ":${CAPNPC_OUTPUT_DIR}")
+ else()
+ set(output_dir ":.")
+ endif()
+
+ if(NOT DEFINED CAPNPC_SRC_PREFIX)
+ set(CAPNPC_SRC_PREFIX "${CMAKE_CURRENT_SOURCE_DIR}")
+ endif()
+ get_filename_component(CAPNPC_SRC_PREFIX "${CAPNPC_SRC_PREFIX}" ABSOLUTE)
+
+ set(${SOURCES})
+ set(${HEADERS})
+ foreach(schema_file ${ARGN})
+ get_filename_component(file_path "${schema_file}" ABSOLUTE)
+ get_filename_component(file_dir "${file_path}" PATH)
+
+ # Figure out where the output files will go
+ if (NOT DEFINED CAPNPC_OUTPUT_DIR)
+ set(output_base "${file_path}")
+ else()
+ # Output files are placed in CAPNPC_OUTPUT_DIR, at a location as if they were
+ # relative to CAPNPC_SRC_PREFIX.
+ string(LENGTH "${CAPNPC_SRC_PREFIX}" prefix_len)
+ string(SUBSTRING "${file_path}" 0 ${prefix_len} output_prefix)
+ if(NOT "${CAPNPC_SRC_PREFIX}" STREQUAL "${output_prefix}")
+ message(SEND_ERROR "Could not determine output path for '${schema_file}' ('${file_path}') with source prefix '${CAPNPC_SRC_PREFIX}' into '${CAPNPC_OUTPUT_DIR}'.")
+ endif()
+
+ string(SUBSTRING "${file_path}" ${prefix_len} -1 output_path)
+ set(output_base "${CAPNPC_OUTPUT_DIR}${output_path}")
+ endif()
+
+ MESSAGE("Output base: " ${output_base})
+ MESSAGE("Output path: " ${output_path})
+ MESSAGE("Output dir: " ${output_dir})
+ MESSAGE("Src prefix: " ${CAPNPC_SRC_PREFIX})
+
+ add_custom_command(
+ OUTPUT "${output_base}.c++" "${output_base}.h"
+ COMMAND "${CAPNP_EXECUTABLE}"
+ ARGS compile
+ -o ${CAPNPC_CXX_EXECUTABLE}${output_dir}
+ --verbose
+ --src-prefix ${CAPNPC_SRC_PREFIX}
+ ${include_path}
+ ${CAPNPC_FLAGS}
+ ${file_path}
+ DEPENDS "${schema_file}"
+ COMMENT "Compiling Cap'n Proto schema ${schema_file}"
+ VERBATIM
+ )
+ list(APPEND ${SOURCES} "${output_base}.c++")
+ list(APPEND ${HEADERS} "${output_base}.h")
+ endforeach()
+
+ set_source_files_properties(${${SOURCES}} ${${HEADERS}} PROPERTIES GENERATED TRUE)
+ set(${SOURCES} ${${SOURCES}} PARENT_SCOPE)
+ set(${HEADERS} ${${HEADERS}} PARENT_SCOPE)
+endfunction() \ No newline at end of file
diff --git a/sdk/compiler/cmake/modules/FindApexSDK.cmake b/sdk/compiler/cmake/modules/FindApexSDK.cmake
new file mode 100644
index 0000000..9910236
--- /dev/null
+++ b/sdk/compiler/cmake/modules/FindApexSDK.cmake
@@ -0,0 +1,399 @@
+# - Try to find Apex binary SDK
+# - Sets APEXSDK_LIBS_DEBUG and APEXSDK_LIBS_RELEASE - lists of the libraries found
+# - Sets APEXSDK_INCLUDE_DIRS
+# - Sets APEXSDK_DLLS - List of the DLLs to copy to the bin directory of projects that depend on this
+
+include(FindPackageHandleStandardArgs)
+
+# Find the includes
+
+# TODO: Do the version stuff properly!
+find_path(APEXSDK_PATH include/Apex.h
+ PATHS
+ ${GW_DEPS_ROOT}/$ENV{PM_Apex_NAME}/${ApexSDK_FIND_VERSION}
+ ${GW_DEPS_ROOT}/Apex/${ApexSDK_FIND_VERSION}
+)
+
+if (TARGET_BUILD_PLATFORM STREQUAL "Windows")
+ # If the project pulling in this dependency needs the static crt, then append that to the path.
+ if (STATIC_WINCRT)
+ SET(PXSHARED_CRT_SUFFIX "-staticcrt")
+ else()
+ SET(PXSHARED_CRT_SUFFIX "")
+ endif()
+
+ if (CMAKE_CL_64)
+ SET(APEX_ARCH_FOLDER "win64")
+ SET(APEX_ARCH_FILE "_x64")
+ else()
+ SET(APEX_ARCH_FOLDER "win32")
+ SET(APEX_ARCH_FILE "_x86")
+ endif()
+
+ # What compiler version do we want?
+
+ if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 18.0.0.0 AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 19.0.0.0)
+ SET(VS_STR "vc12")
+ elseif(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 19.0.0.0)
+ SET(VS_STR "vc14")
+ else()
+ MESSAGE(FATAL_ERROR "Failed to find compatible PxSharedSDK - Only supporting VS2013 and VS2015")
+ endif()
+
+ SET(LIB_PATH ${APEXSDK_PATH}/lib/${VS_STR}${APEX_ARCH_FOLDER}-cmake${PHYSX_CRT_SUFFIX})
+ SET(CMAKE_FIND_LIBRARY_SUFFIXES ".lib" ".dll")
+
+elseif(TARGET_BUILD_PLATFORM STREQUAL "PS4")
+ SET(LIB_PATH ${APEXSDK_PATH}/lib/vc14ps4-cmake)
+ SET(CMAKE_FIND_LIBRARY_SUFFIXES ".a")
+ SET(CMAKE_FIND_LIBRARY_PREFIXES "lib")
+elseif(TARGET_BUILD_PLATFORM STREQUAL "XboxOne")
+ SET(LIB_PATH ${APEXSDK_PATH}/lib/vc14xboxone-cmake)
+ SET(CMAKE_FIND_LIBRARY_SUFFIXES ".a")
+ SET(CMAKE_FIND_LIBRARY_PREFIXES "lib")
+elseif(TARGET_BUILD_PLATFORM STREQUAL "linux")
+ SET(LIB_PATH ${APEXSDK_PATH}/lib/linux64-cmake)
+ SET(CMAKE_FIND_LIBRARY_SUFFIXES ".a")
+ SET(CMAKE_FIND_LIBRARY_PREFIXES "lib")
+endif()
+
+find_library(APEXCLOTHING_LIB
+ NAMES APEX_Clothing${APEX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(APEXDESTRUCTIBLE_LIB
+ NAMES APEX_Destructible${APEX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(APEXLEGACY_LIB
+ NAMES APEX_Legacy${APEX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(APEXLOADER_LIB
+ NAMES APEX_Loader${APEX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(APEXCOMMON_LIB
+ NAMES APEXCommon${APEX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(APEXFRAMEWORK_LIB
+ NAMES APEXFramework${APEX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(APEXSHARED_LIB
+ NAMES APEXShared${APEX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+
+find_library(APEXCLOTHING_LIB_DEBUG
+ NAMES APEX_ClothingDEBUG${APEX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(APEXDESTRUCTIBLE_LIB_DEBUG
+ NAMES APEX_DestructibleDEBUG${APEX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(APEXLEGACY_LIB_DEBUG
+ NAMES APEX_LegacyDEBUG${APEX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(APEXLOADER_LIB_DEBUG
+ NAMES APEX_LoaderDEBUG${APEX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(APEXCOMMON_LIB_DEBUG
+ NAMES APEXCommonDEBUG${APEX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(APEXFRAMEWORK_LIB_DEBUG
+ NAMES APEXFrameworkDEBUG${APEX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(APEXSHARED_LIB_DEBUG
+ NAMES APEXSharedDEBUG${APEX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+
+find_library(APEXCLOTHING_LIB_CHECKED
+ NAMES APEX_ClothingCHECKED${APEX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(APEXDESTRUCTIBLE_LIB_CHECKED
+ NAMES APEX_DestructibleCHECKED${APEX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(APEXLEGACY_LIB_CHECKED
+ NAMES APEX_LegacyCHECKED${APEX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(APEXLOADER_LIB_CHECKED
+ NAMES APEX_LoaderCHECKED${APEX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(APEXCOMMON_LIB_CHECKED
+ NAMES APEXCommonCHECKED${APEX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(APEXFRAMEWORK_LIB_CHECKED
+ NAMES APEXFrameworkCHECKED${APEX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(APEXSHARED_LIB_CHECKED
+ NAMES APEXSharedCHECKED${APEX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+
+find_library(APEXCLOTHING_LIB_PROFILE
+ NAMES APEX_ClothingPROFILE${APEX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(APEXDESTRUCTIBLE_LIB_PROFILE
+ NAMES APEX_DestructiblePROFILE${APEX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(APEXLEGACY_LIB_PROFILE
+ NAMES APEX_LegacyPROFILE${APEX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(APEXLOADER_LIB_PROFILE
+ NAMES APEX_LoaderPROFILE${APEX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(APEXCOMMON_LIB_PROFILE
+ NAMES APEXCommonPROFILE${APEX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(APEXFRAMEWORK_LIB_PROFILE
+ NAMES APEXFrameworkPROFILE${APEX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(APEXSHARED_LIB_PROFILE
+ NAMES APEXSharedPROFILE${APEX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+
+
+if (TARGET_BUILD_PLATFORM STREQUAL "Windows")
+
+ SET(DLL_PATH ${APEXSDK_PATH}/bin/${VS_STR}${APEX_ARCH_FOLDER}-cmake${APEX_CRT_SUFFIX})
+
+ find_library(APEXCLOTHING_DLL
+ NAMES APEX_Clothing${APEX_ARCH_FILE}
+ PATHS ${DLL_PATH}
+ )
+ find_library(APEXDESTRUCTIBLE_DLL
+ NAMES APEX_Destructible${APEX_ARCH_FILE}
+ PATHS ${DLL_PATH}
+ )
+ find_library(APEXLEGACY_DLL
+ NAMES APEX_Legacy${APEX_ARCH_FILE}
+ PATHS ${DLL_PATH}
+ )
+ find_library(APEXLOADER_DLL
+ NAMES APEX_Loader${APEX_ARCH_FILE}
+ PATHS ${DLL_PATH}
+ )
+ find_library(APEXFRAMEWORK_DLL
+ NAMES APEXFramework${APEX_ARCH_FILE}
+ PATHS ${DLL_PATH}
+ )
+
+ find_library(APEXCLOTHING_DLL_DEBUG
+ NAMES APEX_ClothingDEBUG${APEX_ARCH_FILE}
+ PATHS ${DLL_PATH}
+ )
+ find_library(APEXDESTRUCTIBLE_DLL_DEBUG
+ NAMES APEX_DestructibleDEBUG${APEX_ARCH_FILE}
+ PATHS ${DLL_PATH}
+ )
+ find_library(APEXLEGACY_DLL_DEBUG
+ NAMES APEX_LegacyDEBUG${APEX_ARCH_FILE}
+ PATHS ${DLL_PATH}
+ )
+ find_library(APEXLOADER_DLL_DEBUG
+ NAMES APEX_LoaderDEBUG${APEX_ARCH_FILE}
+ PATHS ${DLL_PATH}
+ )
+ find_library(APEXFRAMEWORK_DLL_DEBUG
+ NAMES APEXFrameworkDEBUG${APEX_ARCH_FILE}
+ PATHS ${DLL_PATH}
+ )
+
+ find_library(APEXCLOTHING_DLL_CHECKED
+ NAMES APEX_ClothingCHECKED${APEX_ARCH_FILE}
+ PATHS ${DLL_PATH}
+ )
+ find_library(APEXDESTRUCTIBLE_DLL_CHECKED
+ NAMES APEX_DestructibleCHECKED${APEX_ARCH_FILE}
+ PATHS ${DLL_PATH}
+ )
+ find_library(APEXLEGACY_DLL_CHECKED
+ NAMES APEX_LegacyCHECKED${APEX_ARCH_FILE}
+ PATHS ${DLL_PATH}
+ )
+ find_library(APEXLOADER_DLL_CHECKED
+ NAMES APEX_LoaderCHECKED${APEX_ARCH_FILE}
+ PATHS ${DLL_PATH}
+ )
+ find_library(APEXFRAMEWORK_DLL_CHECKED
+ NAMES APEXFrameworkCHECKED${APEX_ARCH_FILE}
+ PATHS ${DLL_PATH}
+ )
+
+ find_library(APEXCLOTHING_DLL_PROFILE
+ NAMES APEX_ClothingPROFILE${APEX_ARCH_FILE}
+ PATHS ${DLL_PATH}
+ )
+ find_library(APEXDESTRUCTIBLE_DLL_PROFILE
+ NAMES APEX_DestructiblePROFILE${APEX_ARCH_FILE}
+ PATHS ${DLL_PATH}
+ )
+ find_library(APEXLEGACY_DLL_PROFILE
+ NAMES APEX_LegacyPROFILE${APEX_ARCH_FILE}
+ PATHS ${DLL_PATH}
+ )
+ find_library(APEXLOADER_DLL_PROFILE
+ NAMES APEX_LoaderPROFILE${APEX_ARCH_FILE}
+ PATHS ${DLL_PATH}
+ )
+ find_library(APEXFRAMEWORK_DLL_PROFILE
+ NAMES APEXFrameworkPROFILE${APEX_ARCH_FILE}
+ PATHS ${DLL_PATH}
+ )
+
+
+ SET(DLL_VAR_LIST
+ APEXCLOTHING_DLL
+ APEXDESTRUCTIBLE_DLL
+ APEXLEGACY_DLL
+ APEXLOADER_DLL
+ APEXFRAMEWORK_DLL
+
+ APEXCLOTHING_DLL_DEBUG
+ APEXDESTRUCTIBLE_DLL_DEBUG
+ APEXLEGACY_DLL_DEBUG
+ APEXLOADER_DLL_DEBUG
+ APEXFRAMEWORK_DLL_DEBUG
+
+ APEXCLOTHING_DLL_CHECKED
+ APEXDESTRUCTIBLE_DLL_CHECKED
+ APEXLEGACY_DLL_CHECKED
+ APEXLOADER_DLL_CHECKED
+ APEXFRAMEWORK_DLL_CHECKED
+
+ APEXCLOTHING_DLL_PROFILE
+ APEXDESTRUCTIBLE_DLL_PROFILE
+ APEXLEGACY_DLL_PROFILE
+ APEXLOADER_DLL_PROFILE
+ APEXFRAMEWORK_DLL_PROFILE
+
+ )
+endif()
+
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(APEXSDK
+ DEFAULT_MSG
+ APEXSDK_PATH
+
+ APEXCLOTHING_LIB
+ APEXDESTRUCTIBLE_LIB
+ APEXLEGACY_LIB
+ APEXLOADER_LIB
+ APEXCOMMON_LIB
+ APEXFRAMEWORK_LIB
+ APEXSHARED_LIB
+
+ APEXCLOTHING_LIB_DEBUG
+ APEXDESTRUCTIBLE_LIB_DEBUG
+ APEXLEGACY_LIB_DEBUG
+ APEXLOADER_LIB_DEBUG
+ APEXCOMMON_LIB_DEBUG
+ APEXFRAMEWORK_LIB_DEBUG
+ APEXSHARED_LIB_DEBUG
+
+ APEXCLOTHING_LIB_CHECKED
+ APEXDESTRUCTIBLE_LIB_CHECKED
+ APEXLEGACY_LIB_CHECKED
+ APEXLOADER_LIB_CHECKED
+ APEXCOMMON_LIB_CHECKED
+ APEXFRAMEWORK_LIB_CHECKED
+ APEXSHARED_LIB_CHECKED
+
+ APEXCLOTHING_LIB_PROFILE
+ APEXDESTRUCTIBLE_LIB_PROFILE
+ APEXLEGACY_LIB_PROFILE
+ APEXLOADER_LIB_PROFILE
+ APEXCOMMON_LIB_PROFILE
+ APEXFRAMEWORK_LIB_PROFILE
+ APEXSHARED_LIB_PROFILE
+
+ ${DLL_VAR_LIST}
+)
+
+if (APEXSDK_FOUND)
+ # NOTE: This include list is way too long and reaches into too many internals.
+ # Also may not be good enough for all users.
+ SET(APEXSDK_INCLUDE_DIRS
+ ${APEXSDK_PATH}/public
+ ${APEXSDK_PATH}/include
+ ${APEXSDK_PATH}/common/include
+ ${APEXSDK_PATH}/common/include/autogen
+ ${APEXSDK_PATH}/NvParameterized/include
+ ${APEXSDK_PATH}/include/destructible
+ ${APEXSDK_PATH}/include/PhysX3
+ ${APEXSDK_PATH}/shared/external/include
+ ${APEXSDK_PATH}/shared/internal/include
+ ${APEXSDK_PATH}/shared/general/shared
+ ${APEXSDK_PATH}/shared/general/RenderDebug/public
+ )
+
+ SET(APEXSDK_LIBS_RELEASE ${APEXCLOTHING_LIB} ${APEXDESTRUCTIBLE_LIB} ${APEXLEGACY_LIB} ${APEXLOADER_LIB} ${APEXCOMMON_LIB} ${APEXFRAMEWORK_LIB} ${APEXSHARED_LIB}
+ CACHE STRING ""
+ )
+ SET(APEXSDK_LIBS_DEBUG ${APEXCLOTHING_LIB_DEBUG} ${APEXDESTRUCTIBLE_LIB_DEBUG} ${APEXLEGACY_LIB_DEBUG} ${APEXLOADER_LIB_DEBUG} ${APEXCOMMON_LIB_DEBUG} ${APEXFRAMEWORK_LIB_DEBUG} ${APEXSHARED_LIB_DEBUG}
+ CACHE STRING ""
+ )
+ SET(APEXSDK_LIBS_CHECKED ${APEXCLOTHING_LIB_CHECKED} ${APEXDESTRUCTIBLE_LIB_CHECKED} ${APEXLEGACY_LIB_CHECKED} ${APEXLOADER_LIB_CHECKED} ${APEXCOMMON_LIB_CHECKED} ${APEXFRAMEWORK_LIB_CHECKED} ${APEXSHARED_LIB_CHECKED}
+ CACHE STRING ""
+ )
+ SET(APEXSDK_LIBS_PROFILE ${APEXCLOTHING_LIB_PROFILE} ${APEXDESTRUCTIBLE_LIB_PROFILE} ${APEXLEGACY_LIB_PROFILE} ${APEXLOADER_LIB_PROFILE} ${APEXCOMMON_LIB_PROFILE} ${APEXFRAMEWORK_LIB_PROFILE} ${APEXSHARED_LIB_PROFILE}
+ CACHE STRING ""
+ )
+
+
+ SET(APEXSDK_DLLS
+ ${APEXCLOTHING_DLL}
+ ${APEXDESTRUCTIBLE_DLL}
+ ${APEXLEGACY_DLL}
+ ${APEXLOADER_DLL}
+ ${APEXFRAMEWORK_DLL}
+
+ ${APEXCLOTHING_DLL_DEBUG}
+ ${APEXDESTRUCTIBLE_DLL_DEBUG}
+ ${APEXLEGACY_DLL_DEBUG}
+ ${APEXLOADER_DLL_DEBUG}
+ ${APEXFRAMEWORK_DLL_DEBUG}
+
+ ${APEXCLOTHING_DLL_CHECKED}
+ ${APEXDESTRUCTIBLE_DLL_CHECKED}
+ ${APEXLEGACY_DLL_CHECKED}
+ ${APEXLOADER_DLL_CHECKED}
+ ${APEXFRAMEWORK_DLL_CHECKED}
+
+ ${APEXCLOTHING_DLL_PROFILE}
+ ${APEXDESTRUCTIBLE_DLL_PROFILE}
+ ${APEXLEGACY_DLL_PROFILE}
+ ${APEXLOADER_DLL_PROFILE}
+ ${APEXFRAMEWORK_DLL_PROFILE}
+ )
+
+ SET(APEXSDK_LIBRARIES "" CACHE STRING "")
+
+ foreach(x ${APEXSDK_LIBS_RELEASE})
+ list(APPEND APEXSDK_LIBRARIES optimized ${x})
+ endforeach()
+
+ foreach(x ${APEXSDK_LIBS_DEBUG})
+ list(APPEND APEXSDK_LIBRARIES debug ${x})
+ endforeach()
+endif()
diff --git a/sdk/compiler/cmake/modules/FindCapnProtoSDK.cmake b/sdk/compiler/cmake/modules/FindCapnProtoSDK.cmake
new file mode 100644
index 0000000..dcf5190
--- /dev/null
+++ b/sdk/compiler/cmake/modules/FindCapnProtoSDK.cmake
@@ -0,0 +1,111 @@
+# - Try to find CapnProto SDK
+# - Sets CAPNPROTOSDK_LIBRARIES - list of the libraries found
+# - Sets CAPNPROTOSDK_INCLUDE_DIRS
+
+include(FindPackageHandleStandardArgs)
+
+# Find the includes
+
+# TODO: Do the version stuff properly!
+find_path(CAPNPROTOSDK_PATH src/capnp/message.h
+ PATHS ${GW_DEPS_ROOT}/$ENV{PM_CapnProto_NAME}/${CapnProtoSDK_FIND_VERSION}
+)
+
+if (TARGET_BUILD_PLATFORM STREQUAL "Windows")
+
+ if (STATIC_WINCRT)
+ SET(CAPNPROTOSDK_CRT_SUFFIX "-mt")
+ else()
+ SET(CAPNPROTOSDK_CRT_SUFFIX "-md")
+ endif()
+
+
+ # If the project pulling in this dependency needs the static crt, then append that to the path.
+ if (CMAKE_CL_64)
+ SET(CAPNPROTOSDK_ARCH_FOLDER "win64")
+ else()
+ SET(CAPNPROTOSDK_ARCH_FOLDER "win32")
+ endif()
+
+ SET(LIB_PATH ${CAPNPROTOSDK_PATH}/bin/${CAPNPROTOSDK_ARCH_FOLDER})
+ SET(EXE_PATH ${CAPNPROTOSDK_PATH}/tools/win32)
+
+
+elseif(TARGET_BUILD_PLATFORM STREQUAL "PS4")
+ SET(LIB_PATH ${CAPNPROTOSDK_PATH}/bin/ps4)
+ SET(EXE_PATH ${CAPNPROTOSDK_PATH}/tools/win32)
+ SET(CMAKE_FIND_LIBRARY_SUFFIXES ".a")
+ SET(CMAKE_FIND_LIBRARY_PREFIXES "lib")
+elseif(TARGET_BUILD_PLATFORM STREQUAL "XboxOne")
+ SET(LIB_PATH ${CAPNPROTOSDK_PATH}/bin/xboxone)
+ SET(EXE_PATH ${CAPNPROTOSDK_PATH}/tools/win32)
+ SET(CMAKE_FIND_LIBRARY_SUFFIXES ".a")
+ SET(CMAKE_FIND_LIBRARY_PREFIXES "lib")
+elseif(TARGET_BUILD_PLATFORM STREQUAL "linux")
+ SET(LIB_PATH ${CAPNPROTOSDK_PATH}/bin/ubuntu64)
+ SET(EXE_PATH ${CAPNPROTOSDK_PATH}/tools/ubuntu64)
+ SET(CMAKE_FIND_LIBRARY_SUFFIXES ".a")
+ SET(CMAKE_FIND_LIBRARY_PREFIXES "lib")
+endif()
+
+find_library(CAPNPROTO_LIB
+ NAMES capnp${CAPNPROTOSDK_CRT_SUFFIX}
+ PATHS ${LIB_PATH}/Release
+)
+find_library(CAPNPROTO_LIB_DEBUG
+ NAMES capnp${CAPNPROTOSDK_CRT_SUFFIX}
+ PATHS ${LIB_PATH}/Debug
+)
+
+find_library(KJ_LIB
+ NAMES kj${CAPNPROTOSDK_CRT_SUFFIX}
+ PATHS ${LIB_PATH}/Release
+)
+find_library(KJ_LIB_DEBUG
+ NAMES kj${CAPNPROTOSDK_CRT_SUFFIX}
+ PATHS ${LIB_PATH}/Debug
+)
+
+find_program(CAPNP_EXECUTABLE
+ NAMES capnp
+ DOC "Cap'n Proto Command-line Tool"
+ PATHS ${EXE_PATH}
+)
+
+find_program(CAPNPC_CXX_EXECUTABLE
+ NAMES capnpc-c++
+ DOC "Capn'n Proto C++ Compiler"
+ PATHS ${EXE_PATH}
+)
+
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(CAPNPROTOSDK
+ DEFAULT_MSG
+ CAPNPROTOSDK_PATH
+
+ CAPNP_EXECUTABLE
+ CAPNPC_CXX_EXECUTABLE
+
+ CAPNPROTO_LIB
+ KJ_LIB
+
+ CAPNPROTO_LIB_DEBUG
+ KJ_LIB_DEBUG
+)
+
+if (CAPNPROTOSDK_FOUND)
+
+ SET(CAPNPROTOSDK_INCLUDE_DIRS
+ ${CAPNPROTOSDK_PATH}/src/
+ )
+
+ SET(CAPNP_INCLUDE_DIRS
+ ${CAPNPROTOSDK_INCLUDE_DIRS}
+ )
+
+ SET(CAPNPROTOSDK_LIBRARIES "" CACHE STRING "")
+
+ LIST(APPEND CAPNPROTOSDK_LIBRARIES
+ optimized ${CAPNPROTO_LIB} debug ${CAPNPROTO_LIB_DEBUG}
+ optimized ${KJ_LIB} debug ${KJ_LIB_DEBUG}
+ )
+endif()
diff --git a/sdk/compiler/cmake/modules/FindFBXSDK.cmake b/sdk/compiler/cmake/modules/FindFBXSDK.cmake
new file mode 100644
index 0000000..7e1bfb4
--- /dev/null
+++ b/sdk/compiler/cmake/modules/FindFBXSDK.cmake
@@ -0,0 +1,71 @@
+# - Try to find FBX SDK
+# - Sets FBXSDK_LIBRARIES - list of the libraries found
+# - Sets FBXSDK_INCLUDE_DIRS
+# - Sets FBXSDK_DLLS - List of the DLLs to copy to the bin directory of projects that depend on this
+
+
+include(FindPackageHandleStandardArgs)
+
+# Find the includes
+
+# TODO: Do the version stuff properly!
+find_path(FBXSDK_PATH include/fbxsdk.h
+ PATHS ${GW_DEPS_ROOT}/FBXSDK/${FBXSDK_FIND_VERSION}
+)
+
+if (STATIC_WINCRT)
+ SET(FBXSDK_CRT_SUFFIX "mt")
+else()
+ SET(FBXSDK_CRT_SUFFIX "md")
+endif()
+
+
+# If the project pulling in this dependency needs the static crt, then append that to the path.
+if (CMAKE_CL_64)
+ SET(FBXSDK_ARCH_FOLDER "x64")
+else()
+ SET(FBXSDK_ARCH_FOLDER "x86")
+endif()
+
+# What compiler version do we want?
+
+if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 18.0.0.0 AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 19.0.0.0)
+ SET(VS_STR "vs2013")
+elseif(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 19.0.0.0)
+ SET(VS_STR "vs2015")
+else()
+ MESSAGE(FATAL_ERROR "Failed to find compatible FBXSDK - Only supporting VS2013 and VS2015")
+endif()
+
+# Now find all of the PhysX libs in the lib directory
+
+SET(LIB_PATH ${FBXSDK_PATH}/lib/${VS_STR}/${FBXSDK_ARCH_FOLDER})
+
+find_library(FBX_LIB
+ NAMES libfbxsdk-${FBXSDK_CRT_SUFFIX}
+ PATHS ${LIB_PATH}/release
+)
+find_library(FBX_LIB_DEBUG
+ NAMES libfbxsdk-${FBXSDK_CRT_SUFFIX}
+ PATHS ${LIB_PATH}/debug
+)
+
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(FBXSDK
+ DEFAULT_MSG
+ FBXSDK_PATH
+ FBX_LIB
+
+ FBX_LIB_DEBUG
+)
+
+if (FBXSDK_FOUND)
+
+ SET(FBXSDK_INCLUDE_DIRS
+ ${FBXSDK_PATH}/include
+ ${FBXSDK_PATH}/include/fbxsdk
+ )
+
+ SET(FBXSDK_LIBRARIES "" CACHE STRING "")
+
+ LIST(APPEND FBXSDK_LIBRARIES optimized ${FBX_LIB} debug ${FBX_LIB_DEBUG})
+endif()
diff --git a/sdk/compiler/cmake/modules/FindGoogleTestNV.cmake b/sdk/compiler/cmake/modules/FindGoogleTestNV.cmake
new file mode 100644
index 0000000..50e7edd
--- /dev/null
+++ b/sdk/compiler/cmake/modules/FindGoogleTestNV.cmake
@@ -0,0 +1,131 @@
+# - Try to find GoogleTest SDK
+# - Sets GOOGLETEST_LIBRARIES - lists of the libraries found
+# - Sets GOOGLETEST_INCLUDE_DIRS
+
+include(FindPackageHandleStandardArgs)
+
+# Find the includes
+
+# TODO: Do the version stuff properly!
+find_path(GOOGLETEST_PATH include/gtest/gtest.h
+ PATHS ${GW_DEPS_ROOT}/$ENV{PM_googletest_NAME}/${GoogleTestNV_FIND_VERSION}
+)
+
+if (TARGET_BUILD_PLATFORM STREQUAL "Windows")
+ # If the project pulling in this dependency needs the static crt, then append that to the path.
+
+ if (STATIC_WINCRT)
+ SET(GOOGLETEST_CRT_SUFFIX "-staticcrt")
+ else()
+ SET(GOOGLETEST_CRT_SUFFIX "")
+ endif()
+
+ if (CMAKE_CL_64)
+ SET(GOOGLETEST_ARCH_FOLDER "win64")
+ else()
+ SET(GOOGLETEST_ARCH_FOLDER "win32")
+ endif()
+
+ if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 18.0.0.0 AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 19.0.0.0)
+ SET(VS_STR "vc12")
+ elseif(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 19.0.0.0)
+ SET(VS_STR "vc14")
+ else()
+ MESSAGE(FATAL_ERROR "Failed to find compatible FBXSDK - Only supporting VS2013 and VS2015")
+ endif()
+
+
+ # Now find all of the PhysX libs in the lib directory
+
+ SET(LIB_PATH ${GOOGLETEST_PATH}/lib/${VS_STR}${GOOGLETEST_ARCH_FOLDER}-cmake${GOOGLETEST_CRT_SUFFIX})
+
+elseif(TARGET_BUILD_PLATFORM STREQUAL "PS4")
+ SET(LIB_PATH ${GOOGLETEST_PATH}/lib/PS4)
+ SET(CMAKE_FIND_LIBRARY_SUFFIXES ".a")
+ SET(CMAKE_FIND_LIBRARY_PREFIXES "lib")
+elseif(TARGET_BUILD_PLATFORM STREQUAL "XboxOne")
+ SET(LIB_PATH ${GOOGLETEST_PATH}/lib/xboxone-${XDK_VERSION})
+ SET(CMAKE_FIND_LIBRARY_SUFFIXES ".a")
+ SET(CMAKE_FIND_LIBRARY_PREFIXES "lib")
+elseif(TARGET_BUILD_PLATFORM STREQUAL "linux")
+ if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 5.0)
+ SET(LIB_PATH ${GOOGLETEST_PATH}/lib/gcc-5.4)
+ else()
+ SET(LIB_PATH ${GOOGLETEST_PATH}/lib/gcc-4.8)
+ endif()
+ SET(CMAKE_FIND_LIBRARY_SUFFIXES ".a")
+ SET(CMAKE_FIND_LIBRARY_PREFIXES "lib")
+endif()
+
+MESSAGE("GTEst libpath:" ${LIB_PATH})
+
+if(TARGET_BUILD_PLATFORM STREQUAL "linux")
+ find_library(GTEST_LIB
+ NAMES gtest
+ PATHS ${LIB_PATH}
+ )
+
+ find_library(GTEST_MAIN_LIB
+ NAMES gtest_main
+ PATHS ${LIB_PATH}
+ )
+
+ SET(GTEST_LIB_DEBUG ${GTEST_LIB})
+ SET(GTEST_MAIN_LIB_DEBUG ${GTEST_MAIN_LIB})
+else()
+ find_library(GTEST_LIB
+ NAMES gtest
+ PATHS ${LIB_PATH}/Release
+ )
+
+ find_library(GTEST_LIB_DEBUG
+ NAMES gtest
+ PATHS ${LIB_PATH}/Debug
+ )
+
+ find_library(GTEST_MAIN_LIB
+ NAMES gtest_main
+ PATHS ${LIB_PATH}/Release
+ )
+
+ find_library(GTEST_MAIN_LIB_DEBUG
+ NAMES gtest_main
+ PATHS ${LIB_PATH}/Debug
+ )
+endif()
+
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(GOOGLETEST
+ DEFAULT_MSG
+ GOOGLETEST_PATH
+
+ GTEST_LIB
+ GTEST_MAIN_LIB
+ GTEST_LIB_DEBUG
+ GTEST_MAIN_LIB_DEBUG
+)
+
+if (GOOGLETEST_FOUND)
+ # NOTE: This include list is way too long and reaches into too many internals.
+ # Also may not be good enough for all users.
+ SET(GOOGLETEST_INCLUDE_DIRS
+ ${GOOGLETEST_PATH}/include
+ ${GOOGLETEST_PATH}/include/gtest
+ )
+
+ SET(GOOGLETEST_LIBS_RELEASE ${GTEST_LIB} ${GTEST_MAIN_LIB}
+ CACHE STRING ""
+ )
+ SET(GOOGLETEST_LIBS_DEBUG ${GTEST_LIB_DEBUG} ${GTEST_MAIN_LIB_DEBUG}
+ CACHE STRING ""
+ )
+
+ SET(GOOGLETEST_LIBRARIES "" CACHE STRING "")
+
+ foreach(x ${GOOGLETEST_LIBS_RELEASE})
+ list(APPEND GOOGLETEST_LIBRARIES optimized ${x})
+ endforeach()
+
+ foreach(x ${GOOGLETEST_LIBS_DEBUG})
+ list(APPEND GOOGLETEST_LIBRARIES debug ${x})
+ endforeach()
+endif()
diff --git a/sdk/compiler/cmake/modules/FindPhysXSDK.cmake b/sdk/compiler/cmake/modules/FindPhysXSDK.cmake
new file mode 100644
index 0000000..830e6c5
--- /dev/null
+++ b/sdk/compiler/cmake/modules/FindPhysXSDK.cmake
@@ -0,0 +1,566 @@
+# - Try to find PhysX binary SDK
+# - Sets PHYSXSDK_LIBS_DEBUG, PHYSXSDK_LIBS_RELEASE, PHYSXSDK_LIBS_CHECKED, PHYSXSDK_LIBS_PROFILE - lists of the libraries found
+# - Sets PHYSXSDK_INCLUDE_DIRS
+# - Sets PHYSXSDK_DLLS - List of the DLLs to copy to the bin directory of projects that depend on this
+
+include(FindPackageHandleStandardArgs)
+
+MESSAGE("Looking for PhysXSDK ${PhysXSDK_FIND_VERSION} Cached path: ${PHYSXSDK_PATH}")
+# TODO: Do the version stuff properly!
+find_path(PHYSXSDK_PATH Include/PxActor.h
+ PATHS
+ ${GW_DEPS_ROOT}/$ENV{PM_PhysX_NAME}/${PhysXSDK_FIND_VERSION}
+ ${GW_DEPS_ROOT}/PhysX/${PhysXSDK_FIND_VERSION}
+)
+
+if (TARGET_BUILD_PLATFORM STREQUAL "Windows")
+ # If the project pulling in this dependency needs the static crt, then append that to the path.
+ if (STATIC_WINCRT)
+ SET(PXSHARED_CRT_SUFFIX "-staticcrt")
+ else()
+ SET(PXSHARED_CRT_SUFFIX "")
+ endif()
+
+ if (CMAKE_CL_64)
+ SET(PHYSX_ARCH_FOLDER "win64")
+ SET(PHYSX_ARCH_FILE "_x64")
+ else()
+ SET(PHYSX_ARCH_FOLDER "win32")
+ SET(PHYSX_ARCH_FILE "_x86")
+ endif()
+
+ # What compiler version do we want?
+
+ if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 18.0.0.0 AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 19.0.0.0)
+ SET(VS_STR "vc12")
+ elseif(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 19.0.0.0)
+ SET(VS_STR "vc14")
+ else()
+ MESSAGE(FATAL_ERROR "Failed to find compatible PxSharedSDK - Only supporting VS2013 and VS2015")
+ endif()
+
+ SET(LIB_PATH ${PHYSXSDK_PATH}/lib/${VS_STR}${PHYSX_ARCH_FOLDER}-cmake${PHYSX_CRT_SUFFIX})
+ SET(CMAKE_FIND_LIBRARY_SUFFIXES ".lib" ".dll")
+
+elseif(TARGET_BUILD_PLATFORM STREQUAL "PS4")
+ SET(LIB_PATH ${PHYSXSDK_PATH}/lib/vc14ps4-cmake)
+ SET(CMAKE_FIND_LIBRARY_SUFFIXES ".a")
+ SET(CMAKE_FIND_LIBRARY_PREFIXES "lib")
+elseif(TARGET_BUILD_PLATFORM STREQUAL "XboxOne")
+ SET(LIB_PATH ${PHYSXSDK_PATH}/lib/vc14xboxone-cmake)
+ SET(CMAKE_FIND_LIBRARY_SUFFIXES ".a")
+ SET(CMAKE_FIND_LIBRARY_PREFIXES "lib")
+elseif(TARGET_BUILD_PLATFORM STREQUAL "linux")
+ SET(LIB_PATH ${PHYSXSDK_PATH}/lib/linux64-cmake)
+ SET(CMAKE_FIND_LIBRARY_SUFFIXES ".a")
+ SET(CMAKE_FIND_LIBRARY_PREFIXES "lib")
+ SET(PHYSX_ARCH_FILE "_x64")
+endif()
+
+# Now find all of the PhysX libs in the lib directory
+
+find_library(PHYSX3_LIB
+ NAMES PhysX3${PHYSX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(PHYSX3EXTENSIONS_LIB
+ NAMES PhysX3Extensions${PHYSX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(PHYSX3CHARACTERKINEMATIC_LIB
+ NAMES PhysX3CharacterKinematic${PHYSX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(PHYSX3COMMON_LIB
+ NAMES PhysX3Common${PHYSX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(PHYSX3COOKING_LIB
+ NAMES PhysX3Cooking${PHYSX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(LOWLEVEL_LIB
+ NAMES LowLevel${PHYSX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(LOWLEVELAABB_LIB
+ NAMES LowLevelAABB${PHYSX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(LOWLEVELCLOTH_LIB
+ NAMES LowLevelCloth${PHYSX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(LOWLEVELDYNAMICS_LIB
+ NAMES LowLevelDynamics${PHYSX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(LOWLEVELPARTICLES_LIB
+ NAMES LowLevelParticles${PHYSX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(SCENEQUERY_LIB
+ NAMES SceneQuery${PHYSX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(SIMULATIONCONTROLLER_LIB
+ NAMES SimulationController${PHYSX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+
+
+find_library(PHYSX3_LIB_DEBUG
+ NAMES PhysX3DEBUG${PHYSX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(PHYSX3EXTENSIONS_LIB_DEBUG
+ NAMES PhysX3ExtensionsDEBUG${PHYSX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(PHYSX3CHARACTERKINEMATIC_LIB_DEBUG
+ NAMES PhysX3CharacterKinematicDEBUG${PHYSX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(PHYSX3COMMON_LIB_DEBUG
+ NAMES PhysX3CommonDEBUG${PHYSX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(PHYSX3COOKING_LIB_DEBUG
+ NAMES PhysX3CookingDEBUG${PHYSX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(LOWLEVEL_LIB_DEBUG
+ NAMES LowLevelDEBUG${PHYSX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(LOWLEVELAABB_LIB_DEBUG
+ NAMES LowLevelAABBDEBUG${PHYSX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(LOWLEVELCLOTH_LIB_DEBUG
+ NAMES LowLevelClothDEBUG${PHYSX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(LOWLEVELDYNAMICS_LIB_DEBUG
+ NAMES LowLevelDynamicsDEBUG${PHYSX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(LOWLEVELPARTICLES_LIB_DEBUG
+ NAMES LowLevelParticlesDEBUG${PHYSX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(SCENEQUERY_LIB_DEBUG
+ NAMES SceneQueryDEBUG${PHYSX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(SIMULATIONCONTROLLER_LIB_DEBUG
+ NAMES SimulationControllerDEBUG${PHYSX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+
+find_library(PHYSX3_LIB_CHECKED
+ NAMES PhysX3CHECKED${PHYSX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(PHYSX3EXTENSIONS_LIB_CHECKED
+ NAMES PhysX3ExtensionsCHECKED${PHYSX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(PHYSX3CHARACTERKINEMATIC_LIB_CHECKED
+ NAMES PhysX3CharacterKinematicCHECKED${PHYSX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(PHYSX3COMMON_LIB_CHECKED
+ NAMES PhysX3CommonCHECKED${PHYSX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(PHYSX3COOKING_LIB_CHECKED
+ NAMES PhysX3CookingCHECKED${PHYSX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(LOWLEVEL_LIB_CHECKED
+ NAMES LowLevelCHECKED${PHYSX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(LOWLEVELAABB_LIB_CHECKED
+ NAMES LowLevelAABBCHECKED${PHYSX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(LOWLEVELCLOTH_LIB_CHECKED
+ NAMES LowLevelClothCHECKED${PHYSX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(LOWLEVELDYNAMICS_LIB_CHECKED
+ NAMES LowLevelDynamicsCHECKED${PHYSX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(LOWLEVELPARTICLES_LIB_CHECKED
+ NAMES LowLevelParticlesCHECKED${PHYSX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(SCENEQUERY_LIB_CHECKED
+ NAMES SceneQueryCHECKED${PHYSX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(SIMULATIONCONTROLLER_LIB_CHECKED
+ NAMES SimulationControllerCHECKED${PHYSX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+
+find_library(PHYSX3_LIB_PROFILE
+ NAMES PhysX3PROFILE${PHYSX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(PHYSX3EXTENSIONS_LIB_PROFILE
+ NAMES PhysX3ExtensionsPROFILE${PHYSX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(PHYSX3CHARACTERKINEMATIC_LIB_PROFILE
+ NAMES PhysX3CharacterKinematicPROFILE${PHYSX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(PHYSX3COMMON_LIB_PROFILE
+ NAMES PhysX3CommonPROFILE${PHYSX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(PHYSX3COOKING_LIB_PROFILE
+ NAMES PhysX3CookingPROFILE${PHYSX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(LOWLEVEL_LIB_PROFILE
+ NAMES LowLevelPROFILE${PHYSX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(LOWLEVELAABB_LIB_PROFILE
+ NAMES LowLevelAABBPROFILE${PHYSX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(LOWLEVELCLOTH_LIB_PROFILE
+ NAMES LowLevelClothPROFILE${PHYSX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(LOWLEVELDYNAMICS_LIB_PROFILE
+ NAMES LowLevelDynamicsPROFILE${PHYSX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(LOWLEVELPARTICLES_LIB_PROFILE
+ NAMES LowLevelParticlesPROFILE${PHYSX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(SCENEQUERY_LIB_PROFILE
+ NAMES SceneQueryPROFILE${PHYSX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(SIMULATIONCONTROLLER_LIB_PROFILE
+ NAMES SimulationControllerPROFILE${PHYSX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+
+if (TARGET_BUILD_PLATFORM STREQUAL "Windows")
+
+ find_library(PHYSX3GPU_LIB
+ NAMES PhysX3Gpu${PHYSX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+ )
+ find_library(PHYSX3GPU_LIB_DEBUG
+ NAMES PhysX3GpuDEBUG${PHYSX_ARCH_FILE}
+ PATHS ${LIB_PATH}
+ )
+
+
+ SET(DLL_PATH ${PHYSXSDK_PATH}/bin/${VS_STR}${PHYSX_ARCH_FOLDER}-cmake${PHYSX_CRT_SUFFIX})
+
+ find_library(PHYSX3_DLL
+ NAMES PhysX3${PHYSX_ARCH_FILE}
+ PATHS ${DLL_PATH}
+ )
+ find_library(PHYSX3CHARACTERKINEMATIC_DLL
+ NAMES PhysX3CharacterKinematic${PHYSX_ARCH_FILE}
+ PATHS ${DLL_PATH}
+ )
+ find_library(PHYSX3COMMON_DLL
+ NAMES PhysX3Common${PHYSX_ARCH_FILE}
+ PATHS ${DLL_PATH}
+ )
+ find_library(PHYSX3COOKING_DLL
+ NAMES PhysX3Cooking${PHYSX_ARCH_FILE}
+ PATHS ${DLL_PATH}
+ )
+ find_library(PHYSX3GPU_DLL
+ NAMES PhysX3Gpu${PHYSX_ARCH_FILE}
+ PATHS ${DLL_PATH}
+ )
+
+
+ find_library(PHYSX3_DLL_DEBUG
+ NAMES PhysX3DEBUG${PHYSX_ARCH_FILE}
+ PATHS ${DLL_PATH}
+ )
+ find_library(PHYSX3CHARACTERKINEMATIC_DLL_DEBUG
+ NAMES PhysX3CharacterKinematicDEBUG${PHYSX_ARCH_FILE}
+ PATHS ${DLL_PATH}
+ )
+ find_library(PHYSX3COMMON_DLL_DEBUG
+ NAMES PhysX3CommonDEBUG${PHYSX_ARCH_FILE}
+ PATHS ${DLL_PATH}
+ )
+ find_library(PHYSX3COOKING_DLL_DEBUG
+ NAMES PhysX3CookingDEBUG${PHYSX_ARCH_FILE}
+ PATHS ${DLL_PATH}
+ )
+ # NOTE - GPU dlls not included in required dlls or libs as they're optional.
+ find_library(PHYSX3GPU_DLL_DEBUG
+ NAMES PhysX3GpuDEBUG${PHYSX_ARCH_FILE}
+ PATHS ${DLL_PATH}
+ )
+
+ find_library(PHYSX3_DLL_PROFILE
+ NAMES PhysX3PROFILE${PHYSX_ARCH_FILE}
+ PATHS ${DLL_PATH}
+ )
+ find_library(PHYSX3CHARACTERKINEMATIC_DLL_PROFILE
+ NAMES PhysX3CharacterKinematicPROFILE${PHYSX_ARCH_FILE}
+ PATHS ${DLL_PATH}
+ )
+ find_library(PHYSX3COMMON_DLL_PROFILE
+ NAMES PhysX3CommonPROFILE${PHYSX_ARCH_FILE}
+ PATHS ${DLL_PATH}
+ )
+ find_library(PHYSX3COOKING_DLL_PROFILE
+ NAMES PhysX3CookingPROFILE${PHYSX_ARCH_FILE}
+ PATHS ${DLL_PATH}
+ )
+ # NOTE - GPU dlls not included in required dlls or libs as they're optional.
+ find_library(PHYSX3GPU_DLL_PROFILE
+ NAMES PhysX3GpuPROFILE${PHYSX_ARCH_FILE}
+ PATHS ${DLL_PATH}
+ )
+
+ find_library(PHYSX3_DLL_CHECKED
+ NAMES PhysX3CHECKED${PHYSX_ARCH_FILE}
+ PATHS ${DLL_PATH}
+ )
+ find_library(PHYSX3CHARACTERKINEMATIC_DLL_CHECKED
+ NAMES PhysX3CharacterKinematicCHECKED${PHYSX_ARCH_FILE}
+ PATHS ${DLL_PATH}
+ )
+ find_library(PHYSX3COMMON_DLL_CHECKED
+ NAMES PhysX3CommonCHECKED${PHYSX_ARCH_FILE}
+ PATHS ${DLL_PATH}
+ )
+ find_library(PHYSX3COOKING_DLL_CHECKED
+ NAMES PhysX3CookingCHECKED${PHYSX_ARCH_FILE}
+ PATHS ${DLL_PATH}
+ )
+ # NOTE - GPU dlls not included in required dlls or libs as they're optional.
+ find_library(PHYSX3GPU_DLL_CHECKED
+ NAMES PhysX3GpuCHECKED${PHYSX_ARCH_FILE}
+ PATHS ${DLL_PATH}
+ )
+
+ # Create this list to check for found dlls below
+ SET(DLL_VAR_LIST
+ PHYSX3_DLL
+ PHYSX3CHARACTERKINEMATIC_DLL
+ PHYSX3COMMON_DLL
+ PHYSX3COOKING_DLL
+
+ PHYSX3_DLL_DEBUG
+ PHYSX3CHARACTERKINEMATIC_DLL_DEBUG
+ PHYSX3COMMON_DLL_DEBUG
+ PHYSX3COOKING_DLL_DEBUG
+
+ PHYSX3_DLL_PROFILE
+ PHYSX3CHARACTERKINEMATIC_DLL_PROFILE
+ PHYSX3COMMON_DLL_PROFILE
+ PHYSX3COOKING_DLL_PROFILE
+
+ PHYSX3_DLL_CHECKED
+ PHYSX3CHARACTERKINEMATIC_DLL_CHECKED
+ PHYSX3COMMON_DLL_CHECKED
+ PHYSX3COOKING_DLL_CHECKED
+
+ )
+endif()
+
+if (TARGET_BUILD_PLATFORM STREQUAL "linux")
+ SET(BIN_PATH ${PHYSXSDK_PATH}/bin/linux64-cmake)
+ SET(CMAKE_FIND_LIBRARY_SUFFIXES ".so")
+
+ find_library(PHYSX3_LIB
+ NAMES PhysX3${PHYSX_ARCH_FILE}
+ PATHS ${BIN_PATH}
+ )
+ find_library(PHYSX3COOKING_LIB
+ NAMES PhysX3Cooking${PHYSX_ARCH_FILE}
+ PATHS ${BIN_PATH}
+ )
+ find_library(PHYSX3CHARACTERKINEMATIC_LIB
+ NAMES PhysX3CharacterKinematic${PHYSX_ARCH_FILE}
+ PATHS ${BIN_PATH}
+ )
+ find_library(PHYSX3COMMON_LIB
+ NAMES PhysX3Common${PHYSX_ARCH_FILE}
+ PATHS ${BIN_PATH}
+ )
+
+ find_library(PHYSX3_LIB_DEBUG
+ NAMES PhysX3DEBUG${PHYSX_ARCH_FILE}
+ PATHS ${BIN_PATH}
+ )
+ find_library(PHYSX3COOKING_LIB_DEBUG
+ NAMES PhysX3CookingDEBUG${PHYSX_ARCH_FILE}
+ PATHS ${BIN_PATH}
+ )
+ find_library(PHYSX3CHARACTERKINEMATIC_LIB_DEBUG
+ NAMES PhysX3CharacterKinematicDEBUG${PHYSX_ARCH_FILE}
+ PATHS ${BIN_PATH}
+ )
+ find_library(PHYSX3COMMON_LIB_DEBUG
+ NAMES PhysX3CommonDEBUG${PHYSX_ARCH_FILE}
+ PATHS ${BIN_PATH}
+ )
+
+ find_library(PHYSX3_LIB_CHECKED
+ NAMES PhysX3CHECKED${PHYSX_ARCH_FILE}
+ PATHS ${BIN_PATH}
+ )
+ find_library(PHYSX3COOKING_LIB_CHECKED
+ NAMES PhysX3CookingCHECKED${PHYSX_ARCH_FILE}
+ PATHS ${BIN_PATH}
+ )
+ find_library(PHYSX3CHARACTERKINEMATIC_LIB_CHECKED
+ NAMES PhysX3CharacterKinematicCHECKED${PHYSX_ARCH_FILE}
+ PATHS ${BIN_PATH}
+ )
+ find_library(PHYSX3COMMON_LIB_CHECKED
+ NAMES PhysX3CommonCHECKED${PHYSX_ARCH_FILE}
+ PATHS ${BIN_PATH}
+ )
+
+ find_library(PHYSX3_LIB_PROFILE
+ NAMES PhysX3PROFILE${PHYSX_ARCH_FILE}
+ PATHS ${BIN_PATH}
+ )
+ find_library(PHYSX3COOKING_LIB_PROFILE
+ NAMES PhysX3CookingPROFILE${PHYSX_ARCH_FILE}
+ PATHS ${BIN_PATH}
+ )
+ find_library(PHYSX3CHARACTERKINEMATIC_LIB_PROFILE
+ NAMES PhysX3CharacterKinematicPROFILE${PHYSX_ARCH_FILE}
+ PATHS ${BIN_PATH}
+ )
+ find_library(PHYSX3COMMON_LIB_PROFILE
+ NAMES PhysX3CommonPROFILE${PHYSX_ARCH_FILE}
+ PATHS ${BIN_PATH}
+ )
+
+endif()
+
+
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(PHYSXSDK
+ DEFAULT_MSG
+ PHYSXSDK_PATH
+
+ PHYSX3_LIB
+ PHYSX3EXTENSIONS_LIB
+ PHYSX3CHARACTERKINEMATIC_LIB
+ PHYSX3COMMON_LIB
+ PHYSX3COOKING_LIB
+ LOWLEVEL_LIB
+ LOWLEVELAABB_LIB
+ LOWLEVELCLOTH_LIB
+ LOWLEVELDYNAMICS_LIB
+ LOWLEVELPARTICLES_LIB
+ SCENEQUERY_LIB
+ SIMULATIONCONTROLLER_LIB
+
+ PHYSX3_LIB_DEBUG
+ PHYSX3EXTENSIONS_LIB_DEBUG
+ PHYSX3CHARACTERKINEMATIC_LIB_DEBUG
+ PHYSX3COMMON_LIB_DEBUG
+ PHYSX3COOKING_LIB_DEBUG
+ LOWLEVEL_LIB_DEBUG
+ LOWLEVELAABB_LIB_DEBUG
+ LOWLEVELCLOTH_LIB_DEBUG
+ LOWLEVELDYNAMICS_LIB_DEBUG
+ LOWLEVELPARTICLES_LIB_DEBUG
+ SCENEQUERY_LIB_DEBUG
+ SIMULATIONCONTROLLER_LIB_DEBUG
+
+# PHYSX3_LIB_CHECKED
+# PHYSX3EXTENSIONS_LIB_CHECKED
+# PHYSX3CHARACTERKINEMATIC_LIB_CHECKED
+# PHYSX3COMMON_LIB_CHECKED
+# PHYSX3COOKING_LIB_CHECKED
+# LOWLEVEL_LIB_CHECKED
+# LOWLEVELAABB_LIB_CHECKED
+# LOWLEVELCLOTH_LIB_CHECKED
+# LOWLEVELDYNAMICS_LIB_CHECKED
+# LOWLEVELPARTICLES_LIB_CHECKED
+# SCENEQUERY_LIB_CHECKED
+# SIMULATIONCONTROLLER_LIB_CHECKED
+#
+# PHYSX3_LIB_PROFILE
+# PHYSX3EXTENSIONS_LIB_PROFILE
+# PHYSX3CHARACTERKINEMATIC_LIB_PROFILE
+# PHYSX3COMMON_LIB_PROFILE
+# PHYSX3COOKING_LIB_PROFILE
+# LOWLEVEL_LIB_PROFILE
+# LOWLEVELAABB_LIB_PROFILE
+# LOWLEVELCLOTH_LIB_PROFILE
+# LOWLEVELDYNAMICS_LIB_PROFILE
+# LOWLEVELPARTICLES_LIB_PROFILE
+# SCENEQUERY_LIB_PROFILE
+# SIMULATIONCONTROLLER_LIB_PROFILE
+
+ ${DLL_VAR_LIST}
+)
+
+if (PHYSXSDK_FOUND)
+
+ SET(PHYSXSDK_INCLUDE_DIRS
+ ${PHYSXSDK_PATH}/Include
+ ${PHYSXSDK_PATH}/Include/common
+ ${PHYSXSDK_PATH}/Include/cooking
+ ${PHYSXSDK_PATH}/Include/extensions
+ ${PHYSXSDK_PATH}/Include/geometry
+ ${PHYSXSDK_PATH}/Include/gpu
+ ${PHYSXSDK_PATH}/Include/deformable
+ ${PHYSXSDK_PATH}/Include/particles
+ ${PHYSXSDK_PATH}/Include/characterkinematic
+ ${PHYSXSDK_PATH}/Include/characterdynamic
+ ${PHYSXSDK_PATH}/Include/vehicle
+ )
+
+ SET(PHYSXSDK_LIBS_RELEASE ${PHYSX3_LIB} ${PHYSX3EXTENSIONS_LIB} ${PHYSX3CHARACTERKINEMATIC_LIB} ${PHYSX3COMMON_LIB} ${PHYSX3COOKING_LIB} ${PHYSX3GPU_LIB} ${LOWLEVEL_LIB} ${LOWLEVELAABB_LIB} ${LOWLEVELCLOTH_LIB} ${LOWLEVELDYNAMICS_LIB} ${LOWLEVELPARTICLES_LIB} ${SCENEQUERY_LIB} ${SIMULATIONCONTROLLER_LIB}
+ CACHE STRING ""
+ )
+ SET(PHYSXSDK_LIBS_DEBUG ${PHYSX3_LIB_DEBUG} ${PHYSX3EXTENSIONS_LIB_DEBUG} ${PHYSX3CHARACTERKINEMATIC_LIB_DEBUG} ${PHYSX3COMMON_LIB_DEBUG} ${PHYSX3COOKING_LIB_DEBUG} ${PHYSX3GPU_LIB_DEBUG} ${LOWLEVEL_LIB_DEBUG} ${LOWLEVELAABB_LIB_DEBUG} ${LOWLEVELCLOTH_LIB_DEBUG} ${LOWLEVELDYNAMICS_LIB_DEBUG} ${LOWLEVELPARTICLES_LIB_DEBUG} ${SCENEQUERY_LIB_DEBUG} ${SIMULATIONCONTROLLER_LIB_DEBUG}
+ CACHE STRING ""
+ )
+ SET(PHYSXSDK_LIBS_CHECKED ${PHYSX3_LIB_CHECKED} ${PHYSX3EXTENSIONS_LIB_CHECKED} ${PHYSX3CHARACTERKINEMATIC_LIB_CHECKED} ${PHYSX3COMMON_LIB_CHECKED} ${PHYSX3COOKING_LIB_CHECKED} ${PHYSX3GPU_LIB_CHECKED} ${LOWLEVEL_LIB_CHECKED} ${LOWLEVELAABB_LIB_CHECKED} ${LOWLEVELCLOTH_LIB_CHECKED} ${LOWLEVELDYNAMICS_LIB_CHECKED} ${LOWLEVELPARTICLES_LIB_CHECKED} ${SCENEQUERY_LIB_CHECKED} ${SIMULATIONCONTROLLER_LIB_CHECKED}
+ CACHE STRING ""
+ )
+ SET(PHYSXSDK_LIBS_PROFILE ${PHYSX3_LIB_PROFILE} ${PHYSX3EXTENSIONS_LIB_PROFILE} ${PHYSX3CHARACTERKINEMATIC_LIB_PROFILE} ${PHYSX3COMMON_LIB_PROFILE} ${PHYSX3COOKING_LIB_PROFILE} ${PHYSX3GPU_LIB_PROFILE} ${LOWLEVEL_LIB_PROFILE} ${LOWLEVELAABB_LIB_PROFILE} ${LOWLEVELCLOTH_LIB_PROFILE} ${LOWLEVELDYNAMICS_LIB_PROFILE} ${LOWLEVELPARTICLES_LIB_PROFILE} ${SCENEQUERY_LIB_PROFILE} ${SIMULATIONCONTROLLER_LIB_PROFILE}
+ CACHE STRING ""
+ )
+
+ #NOTE: This is all dll configs, might need to be split.
+ SET(PHYSXSDK_DLLS
+ ${PHYSX3_DLL} ${PHYSX3CHARACTERKINEMATIC_DLL} ${PHYSX3COMMON_DLL} ${PHYSX3COOKING_DLL} ${PHYSX3GPU_DLL}
+ ${PHYSX3_DLL_DEBUG} ${PHYSX3CHARACTERKINEMATIC_DLL_DEBUG} ${PHYSX3COMMON_DLL_DEBUG} ${PHYSX3COOKING_DLL_DEBUG} ${PHYSX3GPU_DLL_DEBUG}
+ ${PHYSX3_DLL_PROFILE} ${PHYSX3CHARACTERKINEMATIC_DLL_PROFILE} ${PHYSX3COMMON_DLL_PROFILE} ${PHYSX3COOKING_DLL_PROFILE} ${PHYSX3GPU_DLL_PROFILE}
+ ${PHYSX3_DLL_CHECKED} ${PHYSX3CHARACTERKINEMATIC_DLL_CHECKED} ${PHYSX3COMMON_DLL_CHECKED} ${PHYSX3COOKING_DLL_CHECKED} ${PHYSX3GPU_DLL_CHECKED}
+ )
+
+ SET(PHYSXSDK_LIBRARIES "" CACHE STRING "")
+
+ foreach(x ${PHYSXSDK_LIBS_RELEASE})
+ list(APPEND PHYSXSDK_LIBRARIES optimized ${x})
+ endforeach()
+
+ foreach(x ${PHYSXSDK_LIBS_DEBUG})
+ list(APPEND PHYSXSDK_LIBRARIES debug ${x})
+ endforeach()
+endif()
diff --git a/sdk/compiler/cmake/modules/FindPxSharedSDK.cmake b/sdk/compiler/cmake/modules/FindPxSharedSDK.cmake
new file mode 100644
index 0000000..0f67f5c
--- /dev/null
+++ b/sdk/compiler/cmake/modules/FindPxSharedSDK.cmake
@@ -0,0 +1,293 @@
+# - Try to find PxShared binary SDK
+# - Sets PXSHAREDSDK_LIBS_DEBUG and PXSHAREDSDK_LIBS_RELEASE - lists of the libraries found
+# - Sets PXSHAREDSDK_INCLUDE_DIRS
+# - Sets PXSHAREDSDK_DLLS - List of the DLLs to copy to the bin directory of projects that depend on this
+
+include(FindPackageHandleStandardArgs)
+
+# Find the includes
+
+# TODO: Do the version stuff properly!
+find_path(PXSHAREDSDK_PATH include/foundation/Px.h
+ PATHS
+ ${GW_DEPS_ROOT}/$ENV{PM_PxShared_NAME}/${PxSharedSDK_FIND_VERSION}
+ ${GW_DEPS_ROOT}/PxShared/${PxSharedSDK_FIND_VERSION}
+)
+
+if (TARGET_BUILD_PLATFORM STREQUAL "Windows")
+ # If the project pulling in this dependency needs the static crt, then append that to the path.
+ if (STATIC_WINCRT)
+ SET(PXSHARED_CRT_SUFFIX "-staticcrt")
+ else()
+ SET(PXSHARED_CRT_SUFFIX "")
+ endif()
+
+ if (CMAKE_CL_64)
+ SET(PXSHARED_ARCH_FOLDER "win64")
+ SET(PXSHARED_ARCH_FILE "_x64")
+ else()
+ SET(PXSHARED_ARCH_FOLDER "win32")
+ SET(PXSHARED_ARCH_FILE "_x86")
+ endif()
+
+ # What compiler version do we want?
+
+ if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 18.0.0.0 AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 19.0.0.0)
+ SET(VS_STR "vc12")
+ elseif(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 19.0.0.0)
+ SET(VS_STR "vc14")
+ else()
+ MESSAGE(FATAL_ERROR "Failed to find compatible PxSharedSDK - Only supporting VS2013 and VS2015")
+ endif()
+
+ SET(LIB_PATH ${PXSHAREDSDK_PATH}/lib/${VS_STR}${PXSHARED_ARCH_FOLDER}-cmake${PXSHARED_CRT_SUFFIX})
+ SET(CMAKE_FIND_LIBRARY_SUFFIXES ".lib" ".dll")
+
+elseif(TARGET_BUILD_PLATFORM STREQUAL "PS4")
+ SET(LIB_PATH ${PXSHAREDSDK_PATH}/lib/vc14ps4-cmake)
+ SET(CMAKE_FIND_LIBRARY_SUFFIXES ".a")
+ SET(CMAKE_FIND_LIBRARY_PREFIXES "lib")
+elseif(TARGET_BUILD_PLATFORM STREQUAL "XboxOne")
+ SET(LIB_PATH ${PXSHAREDSDK_PATH}/lib/vc14xboxone-cmake)
+ SET(CMAKE_FIND_LIBRARY_SUFFIXES ".a")
+ SET(CMAKE_FIND_LIBRARY_PREFIXES "lib")
+elseif(TARGET_BUILD_PLATFORM STREQUAL "linux")
+ SET(LIB_PATH ${PXSHAREDSDK_PATH}/lib/linux64-cmake)
+ SET(CMAKE_FIND_LIBRARY_SUFFIXES ".a")
+ SET(CMAKE_FIND_LIBRARY_PREFIXES "lib")
+ SET(PXSHARED_ARCH_FILE "_x64")
+endif()
+
+
+# Now find all of the PhysX libs in the lib directory
+
+
+find_library(PSFASTXML_LIB
+ NAMES PsFastXml${PXSHARED_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(PXFOUNDATION_LIB
+ NAMES PxFoundation${PXSHARED_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(PXPVDSDK_LIB
+ NAMES PxPvdSDK${PXSHARED_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(PXTASK_LIB
+ NAMES PxTask${PXSHARED_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+
+find_library(PSFASTXML_LIB_DEBUG
+ NAMES PsFastXmlDEBUG${PXSHARED_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(PXFOUNDATION_LIB_DEBUG
+ NAMES PxFoundationDEBUG${PXSHARED_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(PXPVDSDK_LIB_DEBUG
+ NAMES PxPvdSDKDEBUG${PXSHARED_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(PXTASK_LIB_DEBUG
+ NAMES PxTaskDEBUG${PXSHARED_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+
+find_library(PSFASTXML_LIB_CHECKED
+ NAMES PsFastXmlCHECKED${PXSHARED_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(PXFOUNDATION_LIB_CHECKED
+ NAMES PxFoundationCHECKED${PXSHARED_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(PXPVDSDK_LIB_CHECKED
+ NAMES PxPvdSDKCHECKED${PXSHARED_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(PXTASK_LIB_CHECKED
+ NAMES PxTaskCHECKED${PXSHARED_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+
+find_library(PSFASTXML_LIB_PROFILE
+ NAMES PsFastXmlPROFILE${PXSHARED_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(PXFOUNDATION_LIB_PROFILE
+ NAMES PxFoundationPROFILE${PXSHARED_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(PXPVDSDK_LIB_PROFILE
+ NAMES PxPvdSDKPROFILE${PXSHARED_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+find_library(PXTASK_LIB_PROFILE
+ NAMES PxTaskPROFILE${PXSHARED_ARCH_FILE}
+ PATHS ${LIB_PATH}
+)
+
+if (TARGET_BUILD_PLATFORM STREQUAL "Windows")
+ SET(DLL_PATH ${PXSHAREDSDK_PATH}/bin/${VS_STR}${PXSHARED_ARCH_FOLDER}-cmake${PXSHARED_CRT_SUFFIX})
+
+ find_library(PXFOUNDATION_DLL
+ NAMES PxFoundation${PXSHARED_ARCH_FILE}
+ PATHS ${DLL_PATH}
+ )
+ find_library(PXPVDSDK_DLL
+ NAMES PxPvdSDK${PXSHARED_ARCH_FILE}
+ PATHS ${DLL_PATH}
+ )
+
+ find_library(PXFOUNDATION_DLL_DEBUG
+ NAMES PxFoundationDEBUG${PXSHARED_ARCH_FILE}
+ PATHS ${DLL_PATH}
+ )
+ find_library(PXPVDSDK_DLL_DEBUG
+ NAMES PxPvdSDKDEBUG${PXSHARED_ARCH_FILE}
+ PATHS ${DLL_PATH}
+ )
+
+ find_library(PXFOUNDATION_DLL_CHECKED
+ NAMES PxFoundationCHECKED${PXSHARED_ARCH_FILE}
+ PATHS ${DLL_PATH}
+ )
+ find_library(PXPVDSDK_DLL_CHECKED
+ NAMES PxPvdSDKCHECKED${PXSHARED_ARCH_FILE}
+ PATHS ${DLL_PATH}
+ )
+
+ find_library(PXFOUNDATION_DLL_PROFILE
+ NAMES PxFoundationPROFILE${PXSHARED_ARCH_FILE}
+ PATHS ${DLL_PATH}
+ )
+ find_library(PXPVDSDK_DLL_PROFILE
+ NAMES PxPvdSDKPROFILE${PXSHARED_ARCH_FILE}
+ PATHS ${DLL_PATH}
+ )
+
+ #Put the found dll variables in a list if we actually looked for them (windows)
+ SET(DLL_VAR_LIST
+ PXFOUNDATION_DLL
+ PXPVDSDK_DLL
+
+ PXFOUNDATION_DLL_DEBUG
+ PXPVDSDK_DLL_DEBUG
+
+ PXFOUNDATION_DLL_CHECKED
+ PXPVDSDK_DLL_CHECKED
+
+ PXFOUNDATION_DLL_PROFILE
+ PXPVDSDK_DLL_PROFILE
+
+ )
+endif()
+
+if (TARGET_BUILD_PLATFORM STREQUAL "linux")
+ SET(BIN_PATH ${PXSHAREDSDK_PATH}/bin/linux64-cmake)
+ SET(CMAKE_FIND_LIBRARY_SUFFIXES ".so")
+
+ find_library(PXFOUNDATION_LIB
+ NAMES PxFoundation${PXSHARED_ARCH_FILE}
+ PATHS ${BIN_PATH}
+ )
+ find_library(PXPVDSDK_LIB
+ NAMES PxPvdSDK${PXSHARED_ARCH_FILE}
+ PATHS ${BIN_PATH}
+ )
+
+ find_library(PXFOUNDATION_LIB_DEBUG
+ NAMES PxFoundationDEBUG${PXSHARED_ARCH_FILE}
+ PATHS ${BIN_PATH}
+ )
+ find_library(PXPVDSDK_LIB_DEBUG
+ NAMES PxPvdSDKDEBUG${PXSHARED_ARCH_FILE}
+ PATHS ${BIN_PATH}
+ )
+endif()
+
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(PXSHAREDSDK
+ DEFAULT_MSG
+ PXSHAREDSDK_PATH
+
+ PSFASTXML_LIB
+ PXFOUNDATION_LIB
+ PXPVDSDK_LIB
+ PXTASK_LIB
+
+ PSFASTXML_LIB_DEBUG
+ PXFOUNDATION_LIB_DEBUG
+ PXPVDSDK_LIB_DEBUG
+ PXTASK_LIB_DEBUG
+
+# PSFASTXML_LIB_CHECKED
+# PXFOUNDATION_LIB_CHECKED
+# PXPVDSDK_LIB_CHECKED
+# PXTASK_LIB_CHECKED
+#
+# PSFASTXML_LIB_PROFILE
+# PXFOUNDATION_LIB_PROFILE
+# PXPVDSDK_LIB_PROFILE
+# PXTASK_LIB_PROFILE
+
+
+ ${DLL_VAR_LIST}
+)
+
+if (PXSHAREDSDK_FOUND)
+
+ # NOTE: This include list is way too long and reaches into too many internals.
+ # Also may not be good enough for all users.
+ SET(PXSHAREDSDK_INCLUDE_DIRS
+ ${PXSHAREDSDK_PATH}/include
+ ${PXSHAREDSDK_PATH}/include/pvd
+ ${PXSHAREDSDK_PATH}/include/task
+ ${PXSHAREDSDK_PATH}/include/filebuf
+ ${PXSHAREDSDK_PATH}/include/foundation
+ ${PXSHAREDSDK_PATH}/src/foundation/include
+ ${PXSHAREDSDK_PATH}/src/filebuf/include
+ ${PXSHAREDSDK_PATH}/src/fastxml/include
+ )
+
+ SET(PXSHAREDSDK_LIBS_RELEASE ${PSFASTXML_LIB} ${PXFOUNDATION_LIB} ${PXPVDSDK_LIB} ${PXTASK_LIB}
+ CACHE STRING ""
+ )
+ SET(PXSHAREDSDK_LIBS_DEBUG ${PSFASTXML_LIB_DEBUG} ${PXFOUNDATION_LIB_DEBUG} ${PXPVDSDK_LIB_DEBUG} ${PXTASK_LIB_DEBUG}
+ CACHE STRING ""
+ )
+
+ SET(PXSHAREDSDK_LIBS_CHECKED ${PSFASTXML_LIB_CHECKED} ${PXFOUNDATION_LIB_CHECKED} ${PXPVDSDK_LIB_CHECKED} ${PXTASK_LIB_CHECKED}
+ CACHE STRING ""
+ )
+
+ SET(PXSHAREDSDK_LIBS_PROFILE ${PSFASTXML_LIB_PROFILE} ${PXFOUNDATION_LIB_PROFILE} ${PXPVDSDK_LIB_PROFILE} ${PXTASK_LIB_PROFILE}
+ CACHE STRING ""
+ )
+
+ SET(PXSHAREDSDK_DLLS
+ ${PXFOUNDATION_DLL}
+ ${PXPVDSDK_DLL}
+
+ ${PXFOUNDATION_DLL_DEBUG}
+ ${PXPVDSDK_DLL_DEBUG}
+
+ ${PXFOUNDATION_DLL_CHECKED}
+ ${PXPVDSDK_DLL_CHECKED}
+
+ ${PXFOUNDATION_DLL_PROFILE}
+ ${PXPVDSDK_DLL_PROFILE}
+ )
+
+ SET(PXSHAREDSDK_LIBRARIES "" CACHE STRING "")
+
+ foreach(x ${PXSHAREDSDK_LIBS_RELEASE})
+ list(APPEND PXSHAREDSDK_LIBRARIES optimized ${x})
+ endforeach()
+
+ foreach(x ${PXSHAREDSDK_LIBS_DEBUG})
+ list(APPEND PXSHAREDSDK_LIBRARIES debug ${x})
+ endforeach()
+endif()
diff --git a/sdk/compiler/cmake/modules/FindXDK.cmake b/sdk/compiler/cmake/modules/FindXDK.cmake
new file mode 100644
index 0000000..601dd8f
--- /dev/null
+++ b/sdk/compiler/cmake/modules/FindXDK.cmake
@@ -0,0 +1,257 @@
+# - Try to find XDLK
+# - Sets XDK_LIBRARIES - list of the libraries found
+# - Sets XDK_INCLUDE_DIRS
+
+include(FindPackageHandleStandardArgs)
+
+# Find the includes
+
+# TODO: Do the version stuff properly!
+# TODO: Handle a binary dep version of the XDK
+find_path(XDK_PATH include/winrt/Windows.Xbox.UI.h
+ PATHS
+ $ENV{XboxOneXDKLatest}/xdk
+)
+
+SET(LIB_PATH ${XDK_PATH}/Lib/amd64/)
+SET(CMAKE_FIND_LIBRARY_PREFIXES "")
+SET(CMAKE_FIND_LIBRARY_SUFFIXES ".lib")
+
+MESSAGE("XDK LIB PATH: ${LIB_PATH}")
+
+find_library(ACPHAL_LIB
+ NAMES acphal
+ PATHS ${LIB_PATH}
+)
+
+find_library(APPMODEL_LIB
+ NAMES appmodel
+ PATHS ${LIB_PATH}
+)
+
+find_library(BCRYPT_LIB
+ NAMES bcrypt
+ PATHS ${LIB_PATH}
+)
+
+find_library(COMBASE_LIB
+ NAMES combase
+ PATHS ${LIB_PATH}
+)
+
+find_library(CONSOLEID_LIB
+ NAMES consoleid
+ PATHS ${LIB_PATH}
+)
+
+find_library(D3D11_X_LIB
+ NAMES d3d11_x
+ PATHS ${LIB_PATH}
+)
+
+find_library(D3D12_X_LIB
+ NAMES d3d12_x
+ PATHS ${LIB_PATH}
+)
+
+find_library(D3DCOMPILER_LIB
+ NAMES d3dcompiler
+ PATHS ${LIB_PATH}
+)
+
+find_library(DXGUID_LIB
+ NAMES dxguid
+ PATHS ${LIB_PATH}
+)
+
+find_library(ETWPLUS_LIB
+ NAMES etwplus
+ PATHS ${LIB_PATH}
+)
+
+find_library(IXMLHTTPREQUEST2_LIB
+ NAMES ixmlhttprequest2
+ PATHS ${LIB_PATH}
+)
+
+find_library(KERNELX_LIB
+ NAMES kernelx
+ PATHS ${LIB_PATH}
+)
+
+find_library(KSTUDIOCLIENT_LIB
+ NAMES kstudioclient
+ PATHS ${LIB_PATH}
+)
+
+find_library(MFPLAT_LIB
+ NAMES mfplat
+ PATHS ${LIB_PATH}
+)
+
+find_library(MFREADWRITE_LIB
+ NAMES mfreadwrite
+ PATHS ${LIB_PATH}
+)
+
+find_library(MFUUID_LIB
+ NAMES mfuuid
+ PATHS ${LIB_PATH}
+)
+
+find_library(MMDEVAPI_LIB
+ NAMES mmdevapi
+ PATHS ${LIB_PATH}
+)
+
+find_library(PIXEVT_LIB
+ NAMES PIXEvt
+ PATHS ${LIB_PATH}
+)
+
+find_library(RPCRT4_LIB
+ NAMES rpcrt4
+ PATHS ${LIB_PATH}
+)
+
+find_library(SMARTGLASSINTEROP_LIB
+ NAMES smartglassinterop
+ PATHS ${LIB_PATH}
+)
+
+find_library(STRMIIDS_LIB
+ NAMES strmiids
+ PATHS ${LIB_PATH}
+)
+
+find_library(TOOLHELPX_LIB
+ NAMES toolhelpx
+ PATHS ${LIB_PATH}
+)
+
+find_library(UUID_LIB
+ NAMES uuid
+ PATHS ${LIB_PATH}
+)
+
+find_library(WINDOWSCODECS_LIB
+ NAMES windowscodecs
+ PATHS ${LIB_PATH}
+)
+
+find_library(WMCODECDSPUUID_LIB
+ NAMES wmcodecdspuuid
+ PATHS ${LIB_PATH}
+)
+
+find_library(WS2_32_LIB
+ NAMES ws2_32
+ PATHS ${LIB_PATH}
+)
+
+find_library(XAPOBASE_LIB
+ NAMES xapobase
+ PATHS ${LIB_PATH}
+)
+
+find_library(XAUDIO2_LIB
+ NAMES xaudio2
+ PATHS ${LIB_PATH}
+)
+
+find_library(XG_X_LIB
+ NAMES xg_x
+ PATHS ${LIB_PATH}
+)
+
+find_library(XI_LIB
+ NAMES xi
+ PATHS ${LIB_PATH}
+)
+
+find_library(XSTUDIOCLIENT_LIB
+ NAMES xstudioclient
+ PATHS ${LIB_PATH}
+)
+
+
+
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(XDK
+ DEFAULT_MSG
+ XDK_PATH
+
+ ACPHAL_LIB
+ APPMODEL_LIB
+ BCRYPT_LIB
+ COMBASE_LIB
+ CONSOLEID_LIB
+ D3D11_X_LIB
+ D3D12_X_LIB
+ D3DCOMPILER_LIB
+ DXGUID_LIB
+ ETWPLUS_LIB
+ IXMLHTTPREQUEST2_LIB
+ KERNELX_LIB
+ KSTUDIOCLIENT_LIB
+ MFPLAT_LIB
+ MFREADWRITE_LIB
+ MFUUID_LIB
+ MMDEVAPI_LIB
+ PIXEVT_LIB
+ RPCRT4_LIB
+ SMARTGLASSINTEROP_LIB
+ STRMIIDS_LIB
+ TOOLHELPX_LIB
+ UUID_LIB
+ WINDOWSCODECS_LIB
+ WMCODECDSPUUID_LIB
+ WS2_32_LIB
+ XAPOBASE_LIB
+ XAUDIO2_LIB
+ XG_X_LIB
+ XI_LIB
+ XSTUDIOCLIENT_LIB
+)
+
+if (XDK_FOUND)
+ SET(XDK_INCLUDE_DIRS
+ ${XDK_PATH}/Include
+ ${XDK_PATH}/Include/shared
+ ${XDK_PATH}/Include/um
+ ${XDK_PATH}/Include/winrt
+ )
+
+ SET(XDK_LIBRARIES
+ ${ACPHAL_LIB}
+ ${APPMODEL_LIB}
+ ${BCRYPT_LIB}
+ ${COMBASE_LIB}
+ ${CONSOLEID_LIB}
+ ${D3D11_X_LIB}
+ ${D3D12_X_LIB}
+ ${D3DCOMPILER_LIB}
+ ${DXGUID_LIB}
+ ${ETWPLUS_LIB}
+ ${IXMLHTTPREQUEST2_LIB}
+ ${KERNELX_LIB}
+ ${KSTUDIOCLIENT_LIB}
+ ${MFPLAT_LIB}
+ ${MFREADWRITE_LIB}
+ ${MFUUID_LIB}
+ ${MMDEVAPI_LIB}
+ ${PIXEVT_LIB}
+ ${RPCRT4_LIB}
+ ${SMARTGLASSINTEROP_LIB}
+ ${STRMIIDS_LIB}
+ ${TOOLHELPX_LIB}
+ ${UUID_LIB}
+ ${WINDOWSCODECS_LIB}
+ ${WMCODECDSPUUID_LIB}
+ ${WS2_32_LIB}
+ ${XAPOBASE_LIB}
+ ${XAUDIO2_LIB}
+ ${XG_X_LIB}
+ ${XI_LIB}
+ ${XSTUDIOCLIENT_LIB}
+ )
+endif()
diff --git a/sdk/compiler/cmake/windows/CMakeLists.txt b/sdk/compiler/cmake/windows/CMakeLists.txt
new file mode 100644
index 0000000..ac8b186
--- /dev/null
+++ b/sdk/compiler/cmake/windows/CMakeLists.txt
@@ -0,0 +1,67 @@
+#Platform specific compile flags and project includes
+
+SET(CMAKE_CXX_FLAGS "/GR- /GF /MP /Gy /d2Zi+ /errorReport:prompt /fp:fast /Gd /Gm- /GS- /nologo /W4 /WX /Zc:forScope /Zc:inline /Zc:wchar_t /Zi")
+
+OPTION(STATIC_WINCRT "Use static WinCRT" OFF)
+
+# Are we using the static or dynamic RT library? Whatever we use, it needs to be the same in any dependencies
+# we pull in or we're potentially having mismatch issues.
+IF(STATIC_WINCRT)
+ SET(WINCRT_NDEBUG "/MT")
+ SET(WINCRT_DEBUG "/MTd")
+ELSE()
+ SET(WINCRT_NDEBUG "/MD")
+ SET(WINCRT_DEBUG "/MDd")
+ENDIF()
+
+SET(CMAKE_CXX_FLAGS_DEBUG "/Od /RTCsu ${WINCRT_DEBUG}")
+SET(CMAKE_CXX_FLAGS_CHECKED "/Ox ${WINCRT_NDEBUG}")
+SET(CMAKE_CXX_FLAGS_PROFILE "/Ox ${WINCRT_NDEBUG}")
+SET(CMAKE_CXX_FLAGS_RELEASE "/Ox ${WINCRT_NDEBUG}")
+
+MESSAGE("STATIC OR DYN: ${WINCRT_DEBUG}")
+
+# Build PDBs for all configurations
+SET(CMAKE_SHARED_LINKER_FLAGS "/DEBUG")
+
+IF(CMAKE_CL_64)
+ ADD_DEFINITIONS(-DWIN64)
+ENDIF(CMAKE_CL_64)
+
+SET(BLAST_SLN_COMPILE_DEFS _HAS_EXCEPTIONS=0;WIN32;WIN64;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;)
+#NvBlastExt doesn't have the _CONSOLE flag
+
+SET(BLAST_SLN_DEBUG_COMPILE_DEFS _DEBUG;NV_DEBUG=1;)
+SET(BLAST_SLN_CHECKED_COMPILE_DEFS NDEBUG;NV_CHECKED=1;)
+SET(BLAST_SLN_PROFILE_COMPILE_DEFS NDEBUG;NV_PROFILE=1;)
+SET(BLAST_SLN_RELEASE_COMPILE_DEFS NDEBUG;)
+
+IF(CMAKE_CL_64)
+ SET(LIBPATH_SUFFIX "x64")
+ELSE(CMAKE_CL_64)
+ SET(LIBPATH_SUFFIX "x86")
+ENDIF(CMAKE_CL_64)
+
+SET(CMAKE_DEBUG_POSTFIX "${CMAKE_DEBUG_POSTFIX}_${LIBPATH_SUFFIX}")
+SET(CMAKE_PROFILE_POSTFIX "${CMAKE_PROFILE_POSTFIX}_${LIBPATH_SUFFIX}")
+SET(CMAKE_CHECKED_POSTFIX "${CMAKE_CHECKED_POSTFIX}_${LIBPATH_SUFFIX}")
+SET(CMAKE_RELEASE_POSTFIX "${CMAKE_RELEASE_POSTFIX}_${LIBPATH_SUFFIX}")
+
+
+# Include all of the projects
+INCLUDE(${PROJECT_CMAKE_FILES_DIR}/NvBlast.cmake)
+INCLUDE(${PROJECT_CMAKE_FILES_DIR}/NvBlastTk.cmake)
+INCLUDE(${PROJECT_CMAKE_FILES_DIR}/NvBlastExtConverterLL.cmake)
+INCLUDE(${PROJECT_CMAKE_FILES_DIR}/NvBlastExtShaders.cmake)
+INCLUDE(${PROJECT_CMAKE_FILES_DIR}/NvBlastExtPhysX.cmake)
+INCLUDE(${PROJECT_CMAKE_FILES_DIR}/NvBlastExtAuthoring.cmake)
+INCLUDE(${PROJECT_CMAKE_FILES_DIR}/NvBlastExtImport.cmake)
+
+#Sadly, CapnProto won't compile on anything less than VS2015.
+if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 19.0.0.0)
+ SET(SERIALIZATION_INCLUDED 1 PARENT_SCOPE)
+ INCLUDE(${PROJECT_CMAKE_FILES_DIR}/NvBlastExtSerialization.cmake)
+ INCLUDE(${PROJECT_CMAKE_FILES_DIR}/NvBlastExtSerializationLL.cmake)
+else()
+ SET(SERIALIZATION_INCLUDED 0)
+endif()
diff --git a/sdk/compiler/cmake/windows/NvBlast.cmake b/sdk/compiler/cmake/windows/NvBlast.cmake
new file mode 100644
index 0000000..64b6b02
--- /dev/null
+++ b/sdk/compiler/cmake/windows/NvBlast.cmake
@@ -0,0 +1,22 @@
+#
+# Build NvBlast Windows
+#
+
+SET(BLAST_PLATFORM_COMMON_FILES
+ ${COMMON_SOURCE_DIR}/NvBlastIncludeWindows.h
+)
+
+SET(BLAST_PLATFORM_INCLUDES
+)
+
+SET(BLAST_COMPILE_DEFS
+ # Common to all configurations
+ ${BLAST_SLN_COMPILE_DEFS};_CONSOLE
+
+ $<$<CONFIG:debug>:${BLAST_SLN_DEBUG_COMPILE_DEFS}>
+ $<$<CONFIG:checked>:${BLAST_SLN_CHECKED_COMPILE_DEFS}>
+ $<$<CONFIG:profile>:${BLAST_SLN_PROFILE_COMPILE_DEFS}>
+ $<$<CONFIG:release>:${BLAST_SLN_RELEASE_COMPILE_DEFS}>
+)
+
+SET(BLAST_LIB_TYPE SHARED)
diff --git a/sdk/compiler/cmake/windows/NvBlastExtAuthoring.cmake b/sdk/compiler/cmake/windows/NvBlastExtAuthoring.cmake
new file mode 100644
index 0000000..7406d74
--- /dev/null
+++ b/sdk/compiler/cmake/windows/NvBlastExtAuthoring.cmake
@@ -0,0 +1,24 @@
+#
+# Build NvBlastExt Windows
+#
+
+SET(BLASTEXT_PLATFORM_COMMON_FILES
+ ${COMMON_SOURCE_DIR}/NvBlastIncludeWindows.h
+)
+
+SET(BLASTEXT_PLATFORM_INCLUDES
+)
+
+SET(BLASTEXT_COMPILE_DEFS
+ # Common to all configurations
+ ${BLAST_SLN_COMPILE_DEFS};_CONSOLE;
+
+ $<$<CONFIG:debug>:${BLAST_SLN_DEBUG_COMPILE_DEFS}>
+ $<$<CONFIG:checked>:${BLAST_SLN_CHECKED_COMPILE_DEFS}>
+ $<$<CONFIG:profile>:${BLAST_SLN_PROFILE_COMPILE_DEFS}>
+ $<$<CONFIG:release>:${BLAST_SLN_RELEASE_COMPILE_DEFS}>
+)
+
+SET(BLAST_EXT_SHARED_LIB_TYPE SHARED)
+
+SET(BLASTEXT_PLATFORM_COMPILE_OPTIONS "/wd4100;/wd4239;/wd4244;/wd4245;/wd4267;/EHsc")
diff --git a/sdk/compiler/cmake/windows/NvBlastExtConverterLL.cmake b/sdk/compiler/cmake/windows/NvBlastExtConverterLL.cmake
new file mode 100644
index 0000000..7406d74
--- /dev/null
+++ b/sdk/compiler/cmake/windows/NvBlastExtConverterLL.cmake
@@ -0,0 +1,24 @@
+#
+# Build NvBlastExt Windows
+#
+
+SET(BLASTEXT_PLATFORM_COMMON_FILES
+ ${COMMON_SOURCE_DIR}/NvBlastIncludeWindows.h
+)
+
+SET(BLASTEXT_PLATFORM_INCLUDES
+)
+
+SET(BLASTEXT_COMPILE_DEFS
+ # Common to all configurations
+ ${BLAST_SLN_COMPILE_DEFS};_CONSOLE;
+
+ $<$<CONFIG:debug>:${BLAST_SLN_DEBUG_COMPILE_DEFS}>
+ $<$<CONFIG:checked>:${BLAST_SLN_CHECKED_COMPILE_DEFS}>
+ $<$<CONFIG:profile>:${BLAST_SLN_PROFILE_COMPILE_DEFS}>
+ $<$<CONFIG:release>:${BLAST_SLN_RELEASE_COMPILE_DEFS}>
+)
+
+SET(BLAST_EXT_SHARED_LIB_TYPE SHARED)
+
+SET(BLASTEXT_PLATFORM_COMPILE_OPTIONS "/wd4100;/wd4239;/wd4244;/wd4245;/wd4267;/EHsc")
diff --git a/sdk/compiler/cmake/windows/NvBlastExtImport.cmake b/sdk/compiler/cmake/windows/NvBlastExtImport.cmake
new file mode 100644
index 0000000..7406d74
--- /dev/null
+++ b/sdk/compiler/cmake/windows/NvBlastExtImport.cmake
@@ -0,0 +1,24 @@
+#
+# Build NvBlastExt Windows
+#
+
+SET(BLASTEXT_PLATFORM_COMMON_FILES
+ ${COMMON_SOURCE_DIR}/NvBlastIncludeWindows.h
+)
+
+SET(BLASTEXT_PLATFORM_INCLUDES
+)
+
+SET(BLASTEXT_COMPILE_DEFS
+ # Common to all configurations
+ ${BLAST_SLN_COMPILE_DEFS};_CONSOLE;
+
+ $<$<CONFIG:debug>:${BLAST_SLN_DEBUG_COMPILE_DEFS}>
+ $<$<CONFIG:checked>:${BLAST_SLN_CHECKED_COMPILE_DEFS}>
+ $<$<CONFIG:profile>:${BLAST_SLN_PROFILE_COMPILE_DEFS}>
+ $<$<CONFIG:release>:${BLAST_SLN_RELEASE_COMPILE_DEFS}>
+)
+
+SET(BLAST_EXT_SHARED_LIB_TYPE SHARED)
+
+SET(BLASTEXT_PLATFORM_COMPILE_OPTIONS "/wd4100;/wd4239;/wd4244;/wd4245;/wd4267;/EHsc")
diff --git a/sdk/compiler/cmake/windows/NvBlastExtPhysX.cmake b/sdk/compiler/cmake/windows/NvBlastExtPhysX.cmake
new file mode 100644
index 0000000..9bf7614
--- /dev/null
+++ b/sdk/compiler/cmake/windows/NvBlastExtPhysX.cmake
@@ -0,0 +1,24 @@
+#
+# Build NvBlastExt Windows
+#
+
+SET(BLASTEXT_PLATFORM_COMMON_FILES
+ ${COMMON_SOURCE_DIR}/NvBlastIncludeWindows.h
+)
+
+SET(BLASTEXT_PLATFORM_INCLUDES
+)
+
+SET(BLASTEXT_COMPILE_DEFS
+ # Common to all configurations
+ ${BLAST_SLN_COMPILE_DEFS};_CONSOLE;
+
+ $<$<CONFIG:debug>:${BLAST_SLN_DEBUG_COMPILE_DEFS}>
+ $<$<CONFIG:checked>:${BLAST_SLN_CHECKED_COMPILE_DEFS}>
+ $<$<CONFIG:profile>:${BLAST_SLN_PROFILE_COMPILE_DEFS}>
+ $<$<CONFIG:release>:${BLAST_SLN_RELEASE_COMPILE_DEFS}>
+)
+
+SET(BLASTEXT_PHYSX_LIBTYPE SHARED)
+
+SET(BLASTEXT_PLATFORM_COMPILE_OPTIONS "/wd4100;/wd4239;/wd4244;/wd4245;/wd4267;/EHsc")
diff --git a/sdk/compiler/cmake/windows/NvBlastExtSerialization.cmake b/sdk/compiler/cmake/windows/NvBlastExtSerialization.cmake
new file mode 100644
index 0000000..20910be
--- /dev/null
+++ b/sdk/compiler/cmake/windows/NvBlastExtSerialization.cmake
@@ -0,0 +1,26 @@
+#
+# Build NvBlastExtSerialization Windows
+#
+
+SET(BLASTEXTSERIALIZATION_PLATFORM_COMMON_FILES
+ ${COMMON_SOURCE_DIR}/NvBlastIncludeWindows.h
+)
+
+SET(BLASTEXTSERIALIZATION_PLATFORM_INCLUDES
+)
+
+SET(BLASTEXTSERIALIZATION_COMPILE_DEFS
+ # Common to all configurations
+ ${BLAST_SLN_COMPILE_DEFS};_CONSOLE;
+
+ $<$<CONFIG:debug>:${BLAST_SLN_DEBUG_COMPILE_DEFS}>
+ $<$<CONFIG:checked>:${BLAST_SLN_CHECKED_COMPILE_DEFS}>
+ $<$<CONFIG:profile>:${BLAST_SLN_PROFILE_COMPILE_DEFS}>
+ $<$<CONFIG:release>:${BLAST_SLN_RELEASE_COMPILE_DEFS}>
+)
+
+SET(BLASTEXTSERIALIZATION_LIB_TYPE SHARED)
+
+
+SET(BLASTEXTSERIALIZATION_COMPILE_OPTIONS "/wd4100;/wd4239;/wd4244;/wd4245;/wd4267;/EHsc")
+
diff --git a/sdk/compiler/cmake/windows/NvBlastExtSerializationLL.cmake b/sdk/compiler/cmake/windows/NvBlastExtSerializationLL.cmake
new file mode 100644
index 0000000..20910be
--- /dev/null
+++ b/sdk/compiler/cmake/windows/NvBlastExtSerializationLL.cmake
@@ -0,0 +1,26 @@
+#
+# Build NvBlastExtSerialization Windows
+#
+
+SET(BLASTEXTSERIALIZATION_PLATFORM_COMMON_FILES
+ ${COMMON_SOURCE_DIR}/NvBlastIncludeWindows.h
+)
+
+SET(BLASTEXTSERIALIZATION_PLATFORM_INCLUDES
+)
+
+SET(BLASTEXTSERIALIZATION_COMPILE_DEFS
+ # Common to all configurations
+ ${BLAST_SLN_COMPILE_DEFS};_CONSOLE;
+
+ $<$<CONFIG:debug>:${BLAST_SLN_DEBUG_COMPILE_DEFS}>
+ $<$<CONFIG:checked>:${BLAST_SLN_CHECKED_COMPILE_DEFS}>
+ $<$<CONFIG:profile>:${BLAST_SLN_PROFILE_COMPILE_DEFS}>
+ $<$<CONFIG:release>:${BLAST_SLN_RELEASE_COMPILE_DEFS}>
+)
+
+SET(BLASTEXTSERIALIZATION_LIB_TYPE SHARED)
+
+
+SET(BLASTEXTSERIALIZATION_COMPILE_OPTIONS "/wd4100;/wd4239;/wd4244;/wd4245;/wd4267;/EHsc")
+
diff --git a/sdk/compiler/cmake/windows/NvBlastExtShaders.cmake b/sdk/compiler/cmake/windows/NvBlastExtShaders.cmake
new file mode 100644
index 0000000..7406d74
--- /dev/null
+++ b/sdk/compiler/cmake/windows/NvBlastExtShaders.cmake
@@ -0,0 +1,24 @@
+#
+# Build NvBlastExt Windows
+#
+
+SET(BLASTEXT_PLATFORM_COMMON_FILES
+ ${COMMON_SOURCE_DIR}/NvBlastIncludeWindows.h
+)
+
+SET(BLASTEXT_PLATFORM_INCLUDES
+)
+
+SET(BLASTEXT_COMPILE_DEFS
+ # Common to all configurations
+ ${BLAST_SLN_COMPILE_DEFS};_CONSOLE;
+
+ $<$<CONFIG:debug>:${BLAST_SLN_DEBUG_COMPILE_DEFS}>
+ $<$<CONFIG:checked>:${BLAST_SLN_CHECKED_COMPILE_DEFS}>
+ $<$<CONFIG:profile>:${BLAST_SLN_PROFILE_COMPILE_DEFS}>
+ $<$<CONFIG:release>:${BLAST_SLN_RELEASE_COMPILE_DEFS}>
+)
+
+SET(BLAST_EXT_SHARED_LIB_TYPE SHARED)
+
+SET(BLASTEXT_PLATFORM_COMPILE_OPTIONS "/wd4100;/wd4239;/wd4244;/wd4245;/wd4267;/EHsc")
diff --git a/sdk/compiler/cmake/windows/NvBlastTk.cmake b/sdk/compiler/cmake/windows/NvBlastTk.cmake
new file mode 100644
index 0000000..d12f78f
--- /dev/null
+++ b/sdk/compiler/cmake/windows/NvBlastTk.cmake
@@ -0,0 +1,27 @@
+#
+# Build NvBlastTk Windows
+#
+
+FIND_PACKAGE(nvToolsExt $ENV{PM_nvToolsExt_VERSION} REQUIRED)
+
+SET(BLASTTK_PLATFORM_COMMON_FILES
+ ${COMMON_SOURCE_DIR}/NvBlastIncludeWindows.h
+)
+
+SET(BLASTTK_PLATFORM_INCLUDES
+ PRIVATE $<$<OR:$<CONFIG:debug>,$<CONFIG:checked>,$<CONFIG:profile>>:${NVTOOLSEXT_INCLUDE_DIRS}>
+)
+
+SET(BLASTTK_COMPILE_DEFS
+ # Common to all configurations
+ ${BLAST_SLN_COMPILE_DEFS};_CONSOLE
+
+ $<$<CONFIG:debug>:${BLAST_SLN_DEBUG_COMPILE_DEFS}>
+ $<$<CONFIG:checked>:${BLAST_SLN_CHECKED_COMPILE_DEFS}>
+ $<$<CONFIG:profile>:${BLAST_SLN_PROFILE_COMPILE_DEFS}>
+ $<$<CONFIG:release>:${BLAST_SLN_RELEASE_COMPILE_DEFS}>
+)
+
+SET(BLASTTK_LIBTYPE "SHARED")
+
+SET(BLASTTK_PLATFORM_LINKED_LIBS Rpcrt4 $<$<OR:$<CONFIG:debug>,$<CONFIG:checked>,$<CONFIG:profile>>:${NVTOOLSEXT_LIB}>)