diff options
| author | Bryan Galdrikian <[email protected]> | 2017-02-24 09:32:20 -0800 |
|---|---|---|
| committer | Bryan Galdrikian <[email protected]> | 2017-02-24 09:32:20 -0800 |
| commit | e1bf674c16e3c8472b29574159c789cd3f0c64e0 (patch) | |
| tree | 9f0cfce09c71a2c27ff19589fcad6cd83504477c /sdk/compiler | |
| parent | first commit (diff) | |
| download | blast-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')
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}>) |