diff options
| author | mtamis <[email protected]> | 2017-02-15 16:06:25 +0100 |
|---|---|---|
| committer | mtamis <[email protected]> | 2017-02-15 16:06:25 +0100 |
| commit | 85305930aeeb1d513e23522bd91f29ba81aa6d14 (patch) | |
| tree | 45f1bb20a45a300d1fef107e436cac95602a0e57 /NvCloth/compiler/cmake | |
| download | nvcloth-85305930aeeb1d513e23522bd91f29ba81aa6d14.tar.xz nvcloth-85305930aeeb1d513e23522bd91f29ba81aa6d14.zip | |
NvCloth library v1.0.0
Diffstat (limited to 'NvCloth/compiler/cmake')
| -rw-r--r-- | NvCloth/compiler/cmake/Linux/CMakeLists.txt | 55 | ||||
| -rw-r--r-- | NvCloth/compiler/cmake/Linux/NvCloth.cmake | 59 | ||||
| -rw-r--r-- | NvCloth/compiler/cmake/Mac/CMakeLists.txt | 57 | ||||
| -rw-r--r-- | NvCloth/compiler/cmake/Mac/NvCloth.cmake | 59 | ||||
| -rw-r--r-- | NvCloth/compiler/cmake/common/CMakeLists.txt | 89 | ||||
| -rw-r--r-- | NvCloth/compiler/cmake/common/NvCloth.cmake | 181 | ||||
| -rw-r--r-- | NvCloth/compiler/cmake/windows/CMakeLists.txt | 88 | ||||
| -rw-r--r-- | NvCloth/compiler/cmake/windows/NvCloth.cmake | 133 |
8 files changed, 721 insertions, 0 deletions
diff --git a/NvCloth/compiler/cmake/Linux/CMakeLists.txt b/NvCloth/compiler/cmake/Linux/CMakeLists.txt new file mode 100644 index 0000000..4d8d85a --- /dev/null +++ b/NvCloth/compiler/cmake/Linux/CMakeLists.txt @@ -0,0 +1,55 @@ +cmake_minimum_required(VERSION 3.3) +MESSAGE("[NvCloth]cmake/Linux/CMakeList.txt") +include(../common/CMakeLists.txt) + + +IF(NOT DEFINED TARGET_BUILD_PLATFORM) # Not defined, default to Linux + SET(TARGET_BUILD_PLATFORM "Linux") +ENDIF() + +SET(PLATFORM_LIST Linux) + +IF (NOT ${TARGET_BUILD_PLATFORM} IN_LIST PLATFORM_LIST) + MESSAGE(FATAL_ERROR "Invalid platform:" ${TARGET_BUILD_PLATFORM}) +ENDIF() + +IF (DEFINED PX_32BIT) +SET(CMAKE_CXX_FLAGS "-arch i386 -msse2 -std=c++11 -fno-rtti -fno-exceptions -ffast-math -ffunction-sections -fdata-sections -Werror -ferror-limit=0 -Wall -Wextra -fstrict-aliasing -Wstrict-aliasing=2 -Weverything -Wno-documentation-deprecated-sync -Wno-documentation-unknown-command -Wno-float-equal -Wno-padded -Wno-weak-vtables -Wno-cast-align -Wno-conversion -Wno-missing-noreturn -Wno-missing-variable-declarations -Wno-shift-sign-overflow -Wno-covered-switch-default -Wno-exit-time-destructors -Wno-global-constructors -Wno-missing-prototypes -Wno-unreachable-code -Wno-unused-macros -Wno-unused-member-function -Wno-used-but-marked-unused -Wno-weak-template-vtables -Wno-deprecated -Wno-non-virtual-dtor -Wno-invalid-noreturn -Wno-return-type-c-linkage -Wno-reserved-id-macro -Wno-c++98-compat-pedantic -Wno-unused-local-typedef -Wno-old-style-cast -Wno-newline-eof -Wno-unused-private-field -Wno-undefined-reinterpret-cast -Wno-invalid-offsetof -gdwarf-2 -Wno-unused-value -Wno-format-nonliteral -Wno-undef") +ELSEIF() +SET(CMAKE_CXX_FLAGS "-arch x86_64 -msse2 -std=c++11 -fno-rtti -fno-exceptions -ffast-math -ffunction-sections -fdata-sections -Werror -ferror-limit=0 -Wall -Wextra -fstrict-aliasing -Wstrict-aliasing=2 -Weverything -Wno-documentation-deprecated-sync -Wno-documentation-unknown-command -Wno-float-equal -Wno-padded -Wno-weak-vtables -Wno-cast-align -Wno-conversion -Wno-missing-noreturn -Wno-missing-variable-declarations -Wno-shift-sign-overflow -Wno-covered-switch-default -Wno-exit-time-destructors -Wno-global-constructors -Wno-missing-prototypes -Wno-unreachable-code -Wno-unused-macros -Wno-unused-member-function -Wno-used-but-marked-unused -Wno-weak-template-vtables -Wno-deprecated -Wno-non-virtual-dtor -Wno-invalid-noreturn -Wno-return-type-c-linkage -Wno-reserved-id-macro -Wno-c++98-compat-pedantic -Wno-unused-local-typedef -Wno-old-style-cast -Wno-newline-eof -Wno-unused-private-field -Wno-undefined-reinterpret-cast -Wno-invalid-offsetof -gdwarf-2 -Wno-unused-value -Wno-format-nonliteral -Wno-undef") +ENDIF() + +SET(CMAKE_SHARED_LINKER_FLAGS "") + +# Build debug info for all configurations +SET(CMAKE_CXX_FLAGS_DEBUG "-std=c++11 -O0 -g3 -gdwarf-2") +SET(CMAKE_CXX_FLAGS_CHECKED "-std=c++11 -g3 -gdwarf-2 -O3") +SET(CMAKE_CXX_FLAGS_PROFILE "-std=c++11 -O3 -g") +SET(CMAKE_CXX_FLAGS_RELEASE "-std=c++11 -O3 -g") + + +#set(CMAKE_XCODE_ATTRIBUTE_DEBUG_INFORMATION_FORMAT "dwarf-with-dsym") + +# Controls PX_NVTX for all projects on linux +SET(PHYSX_LINUX_ENABLE_NVTX 0) + +# Disable cuda and dx for all projects on Linux +SET(PHYSX_LINUX_COMPILE_DEFS DISABLE_COMPUTE_PHYSX) +SET(PHYSX_LINUX_DEBUG_COMPILE_DEFS _DEBUG;PX_DEBUG=1;PX_CHECKED=1;PX_NVTX=${PHYSX_MAC_ENABLE_NVTX};PX_SUPPORT_PVD=0) +SET(PHYSX_LINUX_CHECKED_COMPILE_DEFS NDEBUG;PX_CHECKED=1;PX_NVTX=${PHYSX_MAC_ENABLE_NVTX};PX_SUPPORT_PVD=0) +SET(PHYSX_LINUX_PROFILE_COMPILE_DEFS NDEBUG;PX_PROFILE=1;PX_NVTX=${PHYSX_MAC_ENABLE_NVTX};PX_SUPPORT_PVD=0) +SET(PHYSX_LINUX_RELEASE_COMPILE_DEFS NDEBUG;PX_SUPPORT_PVD=0) + +SET(PX_SELECT_COMPONENTS PxFoundation) +FIND_PACKAGE(PxShared REQUIRED) + +# Include the PxShared-exports.cmake file that PxShared created. There's other ways to do this, but there's a bunch of issues with it in a CI environment +# such as - we don't want to be installing any built artifacts on this server, etc. So for now we hack it. + +# Add PxShared as a dependency so that we can use project references +ADD_SUBDIRECTORY(${PXSHARED_ROOT_DIR}/src/compiler/cmake/Linux "${CMAKE_CURRENT_BINARY_DIR}/pxshared_bin") + +# Include all of the projects +INCLUDE(NvCloth.cmake) + + diff --git a/NvCloth/compiler/cmake/Linux/NvCloth.cmake b/NvCloth/compiler/cmake/Linux/NvCloth.cmake new file mode 100644 index 0000000..f1b19d0 --- /dev/null +++ b/NvCloth/compiler/cmake/Linux/NvCloth.cmake @@ -0,0 +1,59 @@ +# +# Build NvCloth (PROJECT not SOLUTION) +# + +MESSAGE("[NvCloth]cmake/Linux/NvCloth.cmake") + +SET(GW_DEPS_ROOT $ENV{GW_DEPS_ROOT}) +FIND_PACKAGE(PxShared REQUIRED) + + +#FIND_PACKAGE(nvToolsExt REQUIRED) + +SET(NVCLOTH_PLATFORM_INCLUDES + ${NVTOOLSEXT_INCLUDE_DIRS} +) + +SET(NVCLOTH_PLATFORM_SOURCE_FILES + #${PROJECT_ROOT_DIR}/src/neon/NeonCollision.cpp + #${PROJECT_ROOT_DIR}/src/neon/NeonSelfCollision.cpp + #${PROJECT_ROOT_DIR}/src/neon/NeonSolverKernel.cpp + #${PROJECT_ROOT_DIR}/src/neon/SwCollisionHelpers.h +) + +# Use generator expressions to set config specific preprocessor definitions +SET(NVCLOTH_COMPILE_DEFS + NV_CLOTH_IMPORT=PX_DLL_EXPORT + NV_CLOTH_ENABLE_DX11=0 + NV_CLOTH_ENABLE_CUDA=0 + + # Common to all configurations + ${PHYSX_LINUX_COMPILE_DEFS};PX_PHYSX_CORE_EXPORTS + + $<$<CONFIG:debug>:${PHYSX_LINUX_DEBUG_COMPILE_DEFS};PX_PHYSX_DLL_NAME_POSTFIX=DEBUG;> + $<$<CONFIG:checked>:${PHYSX_LINUX_CHECKED_COMPILE_DEFS};PX_PHYSX_DLL_NAME_POSTFIX=CHECKED;> + $<$<CONFIG:profile>:${PHYSX_LINUX_PROFILE_COMPILE_DEFS};PX_PHYSX_DLL_NAME_POSTFIX=PROFILE;> + $<$<CONFIG:release>:${PHYSX_LINUX_RELEASE_COMPILE_DEFS};> +) + +SET(NVCLOTH_LIBTYPE SHARED) + +# include common NvCloth settings +INCLUDE(../common/NvCloth.cmake) + + +# Add linked libraries +# TARGET_LINK_LIBRARIES(NvCloth PUBLIC ${NVTOOLSEXT_LIBRARIES} LowLevel LowLevelAABB LowLevelCloth LowLevelDynamics LowLevelParticles PhysXCommon PhysXGpu PxFoundation PxPvdSDK PxTask SceneQuery SimulationController) + +TARGET_LINK_LIBRARIES(NvCloth PUBLIC PxFoundation) + +SET_TARGET_PROPERTIES(NvCloth PROPERTIES + LINK_FLAGS_DEBUG "" + LINK_FLAGS_CHECKED "" + LINK_FLAGS_PROFILE "" + LINK_FLAGS_RELEASE "" +) + +# enable -fPIC so we can link static libs with the editor +SET_TARGET_PROPERTIES(NvCloth PROPERTIES POSITION_INDEPENDENT_CODE TRUE) +MESSAGE("[NvCloth]cmake/Linux/NvCloth.cmake END")
\ No newline at end of file diff --git a/NvCloth/compiler/cmake/Mac/CMakeLists.txt b/NvCloth/compiler/cmake/Mac/CMakeLists.txt new file mode 100644 index 0000000..05a42ff --- /dev/null +++ b/NvCloth/compiler/cmake/Mac/CMakeLists.txt @@ -0,0 +1,57 @@ +cmake_minimum_required(VERSION 3.3) +MESSAGE("[NvCloth]cmake/Mac/CMakeList.txt") +include(../common/CMakeLists.txt) + + +IF(NOT DEFINED TARGET_BUILD_PLATFORM) # Not defined, default to Mac + SET(TARGET_BUILD_PLATFORM "Mac") +ENDIF() + +SET(PLATFORM_LIST Mac) + +IF (NOT ${TARGET_BUILD_PLATFORM} IN_LIST PLATFORM_LIST) + MESSAGE(FATAL_ERROR "Invalid platform:" ${TARGET_BUILD_PLATFORM}) +ENDIF() + +IF (DEFINED PX_32BIT) +SET(CMAKE_CXX_FLAGS "-arch i386 -msse2 -std=c++11 -fno-rtti -fno-exceptions -ffast-math -ffunction-sections -fdata-sections -Werror -ferror-limit=0 -Wall -Wextra -fstrict-aliasing -Wstrict-aliasing=2 -Weverything -Wno-documentation-deprecated-sync -Wno-documentation-unknown-command -Wno-float-equal -Wno-padded -Wno-weak-vtables -Wno-cast-align -Wno-conversion -Wno-missing-noreturn -Wno-missing-variable-declarations -Wno-shift-sign-overflow -Wno-covered-switch-default -Wno-exit-time-destructors -Wno-global-constructors -Wno-missing-prototypes -Wno-unreachable-code -Wno-unused-macros -Wno-unused-member-function -Wno-used-but-marked-unused -Wno-weak-template-vtables -Wno-deprecated -Wno-non-virtual-dtor -Wno-invalid-noreturn -Wno-return-type-c-linkage -Wno-reserved-id-macro -Wno-c++98-compat-pedantic -Wno-unused-local-typedef -Wno-old-style-cast -Wno-newline-eof -Wno-unused-private-field -Wno-undefined-reinterpret-cast -Wno-invalid-offsetof -gdwarf-2 -Wno-unused-value -Wno-format-nonliteral -Wno-undef") +ELSEIF() +SET(CMAKE_CXX_FLAGS "-arch x86_64 -msse2 -std=c++11 -fno-rtti -fno-exceptions -ffast-math -ffunction-sections -fdata-sections -Werror -ferror-limit=0 -Wall -Wextra -fstrict-aliasing -Wstrict-aliasing=2 -Weverything -Wno-documentation-deprecated-sync -Wno-documentation-unknown-command -Wno-float-equal -Wno-padded -Wno-weak-vtables -Wno-cast-align -Wno-conversion -Wno-missing-noreturn -Wno-missing-variable-declarations -Wno-shift-sign-overflow -Wno-covered-switch-default -Wno-exit-time-destructors -Wno-global-constructors -Wno-missing-prototypes -Wno-unreachable-code -Wno-unused-macros -Wno-unused-member-function -Wno-used-but-marked-unused -Wno-weak-template-vtables -Wno-deprecated -Wno-non-virtual-dtor -Wno-invalid-noreturn -Wno-return-type-c-linkage -Wno-reserved-id-macro -Wno-c++98-compat-pedantic -Wno-unused-local-typedef -Wno-old-style-cast -Wno-newline-eof -Wno-unused-private-field -Wno-undefined-reinterpret-cast -Wno-invalid-offsetof -gdwarf-2 -Wno-unused-value -Wno-format-nonliteral -Wno-undef") +ENDIF() + +SET(CMAKE_SHARED_LINKER_FLAGS "") + +# Build debug info for all configurations +SET(CMAKE_CXX_FLAGS_DEBUG "-O0 -g") +SET(CMAKE_CXX_FLAGS_CHECKED "-O3 -g") +SET(CMAKE_CXX_FLAGS_PROFILE "-O3 -g") +SET(CMAKE_CXX_FLAGS_RELEASE "-O3 -g") + +# Build libs compatible with OS X 10.9 +SET(CMAKE_OSX_DEPLOYMENT_TARGET "10.9") + +#set(CMAKE_XCODE_ATTRIBUTE_DEBUG_INFORMATION_FORMAT "dwarf-with-dsym") + +# Controls PX_NVTX for all projects on Mac +SET(PHYSX_MAC_ENABLE_NVTX 0) + +# Disable cuda and dx for all projects on Mac +SET(PHYSX_MAC_COMPILE_DEFS DISABLE_COMPUTE_PHYSX) +SET(PHYSX_MAC_DEBUG_COMPILE_DEFS _DEBUG;PX_DEBUG=1;PX_CHECKED=1;PX_NVTX=${PHYSX_MAC_ENABLE_NVTX};PX_SUPPORT_PVD=0) +SET(PHYSX_MAC_CHECKED_COMPILE_DEFS NDEBUG;PX_CHECKED=1;PX_NVTX=${PHYSX_MAC_ENABLE_NVTX};PX_SUPPORT_PVD=0) +SET(PHYSX_MAC_PROFILE_COMPILE_DEFS NDEBUG;PX_PROFILE=1;PX_NVTX=${PHYSX_MAC_ENABLE_NVTX};PX_SUPPORT_PVD=0) +SET(PHYSX_MAC_RELEASE_COMPILE_DEFS NDEBUG;PX_SUPPORT_PVD=0) + +SET(PX_SELECT_COMPONENTS PxFoundation) +FIND_PACKAGE(PxShared REQUIRED) + +# Include the PxShared-exports.cmake file that PxShared created. There's other ways to do this, but there's a bunch of issues with it in a CI environment +# such as - we don't want to be installing any built artifacts on this server, etc. So for now we hack it. + +# Add PxShared as a dependency so that we can use project references +ADD_SUBDIRECTORY(${PXSHARED_ROOT_DIR}/src/compiler/cmake/Mac "${CMAKE_CURRENT_BINARY_DIR}/pxshared_bin") + +# Include all of the projects +INCLUDE(NvCloth.cmake) + + diff --git a/NvCloth/compiler/cmake/Mac/NvCloth.cmake b/NvCloth/compiler/cmake/Mac/NvCloth.cmake new file mode 100644 index 0000000..fc10992 --- /dev/null +++ b/NvCloth/compiler/cmake/Mac/NvCloth.cmake @@ -0,0 +1,59 @@ +# +# Build NvCloth (PROJECT not SOLUTION) +# + +MESSAGE("[NvCloth]cmake/Mac/NvCloth.cmake") + +SET(GW_DEPS_ROOT $ENV{GW_DEPS_ROOT}) +FIND_PACKAGE(PxShared REQUIRED) + + +#FIND_PACKAGE(nvToolsExt REQUIRED) + +SET(NVCLOTH_PLATFORM_INCLUDES + ${NVTOOLSEXT_INCLUDE_DIRS} +) + +SET(NVCLOTH_PLATFORM_SOURCE_FILES + #${PROJECT_ROOT_DIR}/src/neon/NeonCollision.cpp + #${PROJECT_ROOT_DIR}/src/neon/NeonSelfCollision.cpp + #${PROJECT_ROOT_DIR}/src/neon/NeonSolverKernel.cpp + #${PROJECT_ROOT_DIR}/src/neon/SwCollisionHelpers.h +) + +# Use generator expressions to set config specific preprocessor definitions +SET(NVCLOTH_COMPILE_DEFS + NV_CLOTH_IMPORT=PX_DLL_EXPORT + NV_CLOTH_ENABLE_DX11=0 + NV_CLOTH_ENABLE_CUDA=0 + + # Common to all configurations + ${PHYSX_MAC_COMPILE_DEFS};PX_PHYSX_CORE_EXPORTS + + $<$<CONFIG:debug>:${PHYSX_MAC_DEBUG_COMPILE_DEFS};PX_PHYSX_DLL_NAME_POSTFIX=DEBUG;> + $<$<CONFIG:checked>:${PHYSX_MAC_CHECKED_COMPILE_DEFS};PX_PHYSX_DLL_NAME_POSTFIX=CHECKED;> + $<$<CONFIG:profile>:${PHYSX_MAC_PROFILE_COMPILE_DEFS};PX_PHYSX_DLL_NAME_POSTFIX=PROFILE;> + $<$<CONFIG:release>:${PHYSX_MAC_RELEASE_COMPILE_DEFS};> +) + +SET(NVCLOTH_LIBTYPE SHARED) + +# include common PhysX settings +INCLUDE(../common/NvCloth.cmake) + + +# Add linked libraries +# TARGET_LINK_LIBRARIES(NvCloth PUBLIC ${NVTOOLSEXT_LIBRARIES} LowLevel LowLevelAABB LowLevelCloth LowLevelDynamics LowLevelParticles PhysXCommon PhysXGpu PxFoundation PxPvdSDK PxTask SceneQuery SimulationController) + +TARGET_LINK_LIBRARIES(NvCloth PUBLIC PxFoundation) + +SET_TARGET_PROPERTIES(NvCloth PROPERTIES + LINK_FLAGS_DEBUG "" + LINK_FLAGS_CHECKED "" + LINK_FLAGS_PROFILE "" + LINK_FLAGS_RELEASE "" +) + +# enable -fPIC so we can link static libs with the editor +SET_TARGET_PROPERTIES(NvCloth PROPERTIES POSITION_INDEPENDENT_CODE TRUE) +MESSAGE("[NvCloth]cmake/Mac/NvCloth.cmake END")
\ No newline at end of file diff --git a/NvCloth/compiler/cmake/common/CMakeLists.txt b/NvCloth/compiler/cmake/common/CMakeLists.txt new file mode 100644 index 0000000..eddb1d9 --- /dev/null +++ b/NvCloth/compiler/cmake/common/CMakeLists.txt @@ -0,0 +1,89 @@ +cmake_minimum_required(VERSION 3.3) + +MESSAGE("[NvCloth]cmake/common/CMakeList.txt") + +project(NvCloth CXX) + +CMAKE_POLICY(SET CMP0057 NEW) # Enable IN_LIST + +SET(GW_DEPS_ROOT $ENV{GW_DEPS_ROOT}) + +SET(CMAKE_MODULE_PATH $ENV{GW_DEPS_ROOT}/sw/physx/tools/CMakeModules) + +IF(EXISTS $ENV{GW_DEPS_ROOT}/Externals/CMakeModules) + SET(CMAKE_MODULE_PATH $ENV{GW_DEPS_ROOT}/Externals/CMakeModules) +ENDIF() + +MESSAGE( "[NvCloth]cmake/common CMAKE_MODULE_PATH = ${CMAKE_MODULE_PATH}") + +IF(EXISTS $ENV{GW_DEPS_ROOT}/Externals/CMakeModules) + SET(CMAKE_MODULE_PATH $ENV{GW_DEPS_ROOT}/Externals/CMakeModules) +ENDIF() + +# Add find modules to the path +IF(NOT EXISTS ${CMAKE_MODULE_PATH}) + MESSAGE(FATAL_ERROR "Could not find CMakeModules at ${CMAKE_MODULE_PATH}") +ENDIF() + +MESSAGE("NvCloth Build Platform: " ${TARGET_BUILD_PLATFORM}) +MESSAGE("Using CXX Compiler: " ${CMAKE_CXX_COMPILER}) + +# TODO: Fail if we didn't find deps + +IF(CMAKE_CONFIGURATION_TYPES) + SET(CMAKE_CONFIGURATION_TYPES debug checked profile release) + SET(CMAKE_CONFIGURATION_TYPES "${CMAKE_CONFIGURATION_TYPES}" CACHE STRING + "Reset config to what we need" + FORCE) + + SET(CMAKE_SHARED_LINKER_FLAGS_CHECKED "") + SET(CMAKE_SHARED_LINKER_FLAGS_PROFILE "") + + # Build PDBs for all configurations + SET(CMAKE_SHARED_LINKER_FLAGS "/DEBUG") + +ENDIF() + +# Default to appending "DEBUG", "PROFILE", etc to produced artifacts +IF(NOT DEFINED APPEND_CONFIG_NAME) + SET(APPEND_CONFIG_NAME ON) +ENDIF() + +IF (APPEND_CONFIG_NAME) + MESSAGE("Appending config to output names") + + SET(CMAKE_DEBUG_POSTFIX "DEBUG") + SET(CMAKE_PROFILE_POSTFIX "PROFILE") + SET(CMAKE_CHECKED_POSTFIX "CHECKED") + SET(CMAKE_RELEASE_POSTFIX "") +ENDIF() + +#SET(PHYSX_ROOT_DIR ${PROJECT_SOURCE_DIR}/../../../../) +SET(PROJECT_ROOT_DIR ${PROJECT_SOURCE_DIR}/../../../) + +INCLUDE(SetOutputPaths) + +IF(DEFINED PX_OUTPUT_EXE_DIR) + SetExeOutputPath(${PX_OUTPUT_EXE_DIR}) +ENDIF() +IF(DEFINED PX_OUTPUT_DLL_DIR) + SetDllOutputPath(${PX_OUTPUT_DLL_DIR}) +ENDIF() +IF(DEFINED PX_OUTPUT_LIB_DIR) + SetLibOutputPath(${PX_OUTPUT_LIB_DIR}) +ENDIF() +# All EXE/DLL/LIB output will be overwritten if PX_OUTPUT_ALL_DIR is defined +IF(DEFINED PX_OUTPUT_ALL_DIR) + SetSingleOutputPath(${PX_OUTPUT_ALL_DIR}) +ENDIF() + +# Prevent failure due to command line limitations +IF(USE_RESPONSE_FILES) + SET(CMAKE_C_USE_RESPONSE_FILE_FOR_OBJECTS 1) + SET(CMAKE_C_USE_RESPONSE_FILE_FOR_INCLUDES 1) + SET(CMAKE_C_USE_RESPONSE_FILE_FOR_LIBRARIES 1) + SET(CMAKE_CXX_USE_RESPONSE_FILE_FOR_OBJECTS 1) + SET(CMAKE_CXX_USE_RESPONSE_FILE_FOR_INCLUDES 1) + SET(CMAKE_CXX_USE_RESPONSE_FILE_FOR_LIBRARIES 1) +ENDIF() +MESSAGE("[NvCloth]cmake/common/CMakeList.txt END")
\ No newline at end of file diff --git a/NvCloth/compiler/cmake/common/NvCloth.cmake b/NvCloth/compiler/cmake/common/NvCloth.cmake new file mode 100644 index 0000000..94b7e79 --- /dev/null +++ b/NvCloth/compiler/cmake/common/NvCloth.cmake @@ -0,0 +1,181 @@ +# +# Build NvCloth common +# + +MESSAGE("[NvCloth]cmake/common/NvCloth.cmake") + +#run +#> dir /a-d /b /s +#in /src, /include, /extensions to list files + +SET( NV_CLOTH_SOURCE_LIST + ${NVCLOTH_PLATFORM_SOURCE_FILES} + ${PROJECT_ROOT_DIR}/include/NvCloth/Allocator.h + ${PROJECT_ROOT_DIR}/include/NvCloth/Callbacks.h + ${PROJECT_ROOT_DIR}/include/NvCloth/Cloth.h + ${PROJECT_ROOT_DIR}/include/NvCloth/DxContextManagerCallback.h + ${PROJECT_ROOT_DIR}/include/NvCloth/Fabric.h + ${PROJECT_ROOT_DIR}/include/NvCloth/Factory.h + ${PROJECT_ROOT_DIR}/include/NvCloth/PhaseConfig.h + ${PROJECT_ROOT_DIR}/include/NvCloth/Range.h + ${PROJECT_ROOT_DIR}/include/NvCloth/Solver.h + + ${PROJECT_ROOT_DIR}/src/Allocator.cpp + ${PROJECT_ROOT_DIR}/src/BoundingBox.h + ${PROJECT_ROOT_DIR}/src/Callbacks.cpp + ${PROJECT_ROOT_DIR}/src/ClothBase.h + ${PROJECT_ROOT_DIR}/src/ClothClone.h + ${PROJECT_ROOT_DIR}/src/ClothImpl.h + ${PROJECT_ROOT_DIR}/src/Factory.cpp + ${PROJECT_ROOT_DIR}/src/IndexPair.h + ${PROJECT_ROOT_DIR}/src/IterationState.h + ${PROJECT_ROOT_DIR}/src/MovingAverage.h + ${PROJECT_ROOT_DIR}/src/PhaseConfig.cpp + ${PROJECT_ROOT_DIR}/src/PointInterpolator.h + ${PROJECT_ROOT_DIR}/src/Simd.h + ${PROJECT_ROOT_DIR}/src/StackAllocator.h + ${PROJECT_ROOT_DIR}/src/SwCloth.cpp + ${PROJECT_ROOT_DIR}/src/SwCloth.h + ${PROJECT_ROOT_DIR}/src/SwClothData.cpp + ${PROJECT_ROOT_DIR}/src/SwClothData.h + ${PROJECT_ROOT_DIR}/src/SwCollision.cpp + ${PROJECT_ROOT_DIR}/src/SwCollision.h + ${PROJECT_ROOT_DIR}/src/SwCollisionHelpers.h + ${PROJECT_ROOT_DIR}/src/SwFabric.cpp + ${PROJECT_ROOT_DIR}/src/SwFabric.h + ${PROJECT_ROOT_DIR}/src/SwFactory.cpp + ${PROJECT_ROOT_DIR}/src/SwFactory.h + ${PROJECT_ROOT_DIR}/src/SwInterCollision.cpp + ${PROJECT_ROOT_DIR}/src/SwInterCollision.h + ${PROJECT_ROOT_DIR}/src/SwSelfCollision.cpp + ${PROJECT_ROOT_DIR}/src/SwSelfCollision.h + ${PROJECT_ROOT_DIR}/src/SwSolver.cpp + ${PROJECT_ROOT_DIR}/src/SwSolver.h + ${PROJECT_ROOT_DIR}/src/SwSolverKernel.cpp + ${PROJECT_ROOT_DIR}/src/SwSolverKernel.h + ${PROJECT_ROOT_DIR}/src/TripletScheduler.cpp + ${PROJECT_ROOT_DIR}/src/TripletScheduler.h + ${PROJECT_ROOT_DIR}/src/Vec4T.h + #${PROJECT_ROOT_DIR}/src/avx/SwSolveConstraints.cpp + #${PROJECT_ROOT_DIR}/src/cuda/CuCheckSuccess.h + #${PROJECT_ROOT_DIR}/src/cuda/CuCloth.cpp + #${PROJECT_ROOT_DIR}/src/cuda/CuCloth.h + #${PROJECT_ROOT_DIR}/src/cuda/CuClothClone.cpp + #${PROJECT_ROOT_DIR}/src/cuda/CuClothData.cpp + #${PROJECT_ROOT_DIR}/src/cuda/CuClothData.h + #${PROJECT_ROOT_DIR}/src/cuda/CuCollision.h + #${PROJECT_ROOT_DIR}/src/cuda/CuContextLock.cpp + #${PROJECT_ROOT_DIR}/src/cuda/CuContextLock.h + #${PROJECT_ROOT_DIR}/src/cuda/CuDevicePointer.h + #${PROJECT_ROOT_DIR}/src/cuda/CuDeviceVector.h + #${PROJECT_ROOT_DIR}/src/cuda/CuFabric.cpp + #${PROJECT_ROOT_DIR}/src/cuda/CuFabric.h + #${PROJECT_ROOT_DIR}/src/cuda/CuFactory.cpp + #${PROJECT_ROOT_DIR}/src/cuda/CuFactory.h + #${PROJECT_ROOT_DIR}/src/cuda/CuPhaseConfig.h + #${PROJECT_ROOT_DIR}/src/cuda/CuPinnedAllocator.h + #${PROJECT_ROOT_DIR}/src/cuda/CuSelfCollision.h + #${PROJECT_ROOT_DIR}/src/cuda/CuSolver.cpp + #${PROJECT_ROOT_DIR}/src/cuda/CuSolver.h + #${PROJECT_ROOT_DIR}/src/cuda/CuSolverKernel.cu + #${PROJECT_ROOT_DIR}/src/cuda/CuSolverKernel.h + #${PROJECT_ROOT_DIR}/src/cuda/CuSolverKernelBlob.h + #${PROJECT_ROOT_DIR}/src/dx/DxBatchedVector.h + #${PROJECT_ROOT_DIR}/src/dx/DxCheckSuccess.h + #${PROJECT_ROOT_DIR}/src/dx/DxCloth.cpp + #${PROJECT_ROOT_DIR}/src/dx/DxCloth.h + #${PROJECT_ROOT_DIR}/src/dx/DxClothClone.cpp + #${PROJECT_ROOT_DIR}/src/dx/DxClothData.cpp + #${PROJECT_ROOT_DIR}/src/dx/DxClothData.h + #${PROJECT_ROOT_DIR}/src/dx/DxContextLock.cpp + #${PROJECT_ROOT_DIR}/src/dx/DxContextLock.h + #${PROJECT_ROOT_DIR}/src/dx/DxDeviceVector.h + #${PROJECT_ROOT_DIR}/src/dx/DxFabric.cpp + #${PROJECT_ROOT_DIR}/src/dx/DxFabric.h + #${PROJECT_ROOT_DIR}/src/dx/DxFactory.cpp + #${PROJECT_ROOT_DIR}/src/dx/DxFactory.h + #${PROJECT_ROOT_DIR}/src/dx/DxSolver.cpp + #${PROJECT_ROOT_DIR}/src/dx/DxSolver.h + #${PROJECT_ROOT_DIR}/src/dx/DxSolverKernel.hlsl + #${PROJECT_ROOT_DIR}/src/dx/DxSolverKernelBlob.h + #${PROJECT_ROOT_DIR}/src/dx/DxSortKernel.inc + #${PROJECT_ROOT_DIR}/src/neon/NeonCollision.cpp + #${PROJECT_ROOT_DIR}/src/neon/NeonSelfCollision.cpp + #${PROJECT_ROOT_DIR}/src/neon/NeonSolverKernel.cpp + #${PROJECT_ROOT_DIR}/src/neon/SwCollisionHelpers.h + ${PROJECT_ROOT_DIR}/src/NvSimd/NvSimd4f.h + ${PROJECT_ROOT_DIR}/src/NvSimd/NvSimd4i.h + ${PROJECT_ROOT_DIR}/src/NvSimd/NvSimdTypes.h + ${PROJECT_ROOT_DIR}/src/NvSimd/neon/NvNeonSimd4f.h + ${PROJECT_ROOT_DIR}/src/NvSimd/neon/NvNeonSimd4i.h + ${PROJECT_ROOT_DIR}/src/NvSimd/neon/NvNeonSimdTypes.h + ${PROJECT_ROOT_DIR}/src/NvSimd/scalar/NvScalarSimd4f.h + ${PROJECT_ROOT_DIR}/src/NvSimd/scalar/NvScalarSimd4i.h + ${PROJECT_ROOT_DIR}/src/NvSimd/scalar/NvScalarSimdTypes.h + ${PROJECT_ROOT_DIR}/src/NvSimd/sse2/NvSse2Simd4f.h + ${PROJECT_ROOT_DIR}/src/NvSimd/sse2/NvSse2Simd4i.h + ${PROJECT_ROOT_DIR}/src/NvSimd/sse2/NvSse2SimdTypes.h + ${PROJECT_ROOT_DIR}/src/scalar/SwCollisionHelpers.h + ${PROJECT_ROOT_DIR}/src/sse2/SwCollisionHelpers.h + ${PROJECT_ROOT_DIR}/src/sse2/SwSolveConstraints.h + + ${PROJECT_ROOT_DIR}/extensions/include/NvClothExt/ClothFabricCooker.h + ${PROJECT_ROOT_DIR}/extensions/include/NvClothExt/ClothMeshDesc.h + ${PROJECT_ROOT_DIR}/extensions/include/NvClothExt/ClothMeshQuadifier.h + ${PROJECT_ROOT_DIR}/extensions/include/NvClothExt/ClothTetherCooker.h + ${PROJECT_ROOT_DIR}/extensions/src/ClothFabricCooker.cpp + ${PROJECT_ROOT_DIR}/extensions/src/ClothGeodesicTetherCooker.cpp + ${PROJECT_ROOT_DIR}/extensions/src/ClothMeshQuadifier.cpp + ${PROJECT_ROOT_DIR}/extensions/src/ClothSimpleTetherCooker.cpp +) + +ADD_LIBRARY(NvCloth ${NVCLOTH_LIBTYPE} ${NV_CLOTH_SOURCE_LIST}) + +foreach(source IN LISTS NV_CLOTH_SOURCE_LIST) + string(LENGTH ${PROJECT_ROOT_DIR} strlen) + string(SUBSTRING ${source} ${strlen} -1 timmedSource) + #MESSAGE("${source} -> ${timmedSource}") + get_filename_component(source_path "${timmedSource}" PATH) + string(REPLACE "/" "\\" source_path_msvc "${source_path}") + source_group("${source_path_msvc}" FILES "${source}") +endforeach() + +# Target specific compile options + + +TARGET_INCLUDE_DIRECTORIES(NvCloth + PRIVATE ${NVCLOTH_PLATFORM_INCLUDES} + + PRIVATE ${PXSHARED_ROOT_DIR}/include + PRIVATE ${PXSHARED_ROOT_DIR}/src/foundation/include + + PRIVATE ${PROJECT_ROOT_DIR}/include + PRIVATE ${PROJECT_ROOT_DIR}/extensions/include + PRIVATE ${PROJECT_ROOT_DIR}/src + PRIVATE ${PROJECT_ROOT_DIR}/extensions/src +) + +SET(NVCLOTH_COMPILE_DEFS + ${NVCLOTH_COMPILE_DEFS}; + + + # Common to all configurations + +) + +# Use generator expressions to set config specific preprocessor definitions +TARGET_COMPILE_DEFINITIONS(NvCloth + + # Common to all configurations + PRIVATE ${NVCLOTH_COMPILE_DEFS} +) + +IF(NOT ${NVCLOTH_LIBTYPE} STREQUAL "OBJECT") + SET_TARGET_PROPERTIES(NvCloth PROPERTIES + COMPILE_PDB_NAME_DEBUG "NvCloth${CMAKE_DEBUG_POSTFIX}" + COMPILE_PDB_NAME_CHECKED "NvCloth${CMAKE_CHECKED_POSTFIX}" + COMPILE_PDB_NAME_PROFILE "NvCloth${CMAKE_PROFILE_POSTFIX}" + COMPILE_PDB_NAME_RELEASE "NvCloth${CMAKE_RELEASE_POSTFIX}" + ) +ENDIF() +MESSAGE("[NvCloth]cmake/common/NvCloth.cmake END")
\ No newline at end of file diff --git a/NvCloth/compiler/cmake/windows/CMakeLists.txt b/NvCloth/compiler/cmake/windows/CMakeLists.txt new file mode 100644 index 0000000..79b0236 --- /dev/null +++ b/NvCloth/compiler/cmake/windows/CMakeLists.txt @@ -0,0 +1,88 @@ +cmake_minimum_required(VERSION 3.3) +MESSAGE("[NvCloth]cmake/windows/CMakeList.txt") +include(../common/CMakeLists.txt) + + +IF(NOT DEFINED TARGET_BUILD_PLATFORM) # Not defined, default to Windows + SET(TARGET_BUILD_PLATFORM "Windows") +ENDIF() + +SET(PLATFORM_LIST Windows) + +IF (NOT ${TARGET_BUILD_PLATFORM} IN_LIST PLATFORM_LIST) + MESSAGE(FATAL_ERROR "Invalid platform:" ${TARGET_BUILD_PLATFORM}) +ENDIF() + +IF(CMAKE_CL_64) + SET(WIN32_CXX_FLAGS "") +ELSE() + SET(WIN32_CXX_FLAGS "/arch:SSE2") +ENDIF() + +SET(CMAKE_CXX_FLAGS "/Wall /wd4514 /wd4820 /wd4127 /wd4710 /wd4711 /wd4577 /wd4530 /d2Zi+ /MP /WX /W4 /GF /GS- /GR- /Gd /fp:fast /fp:except- /Zi ${WIN32_CXX_FLAGS}") +SET(CMAKE_SHARED_LINKER_FLAGS "/INCREMENTAL:NO") +SET(CMAKE_SHARED_LINKER_FLAGS_RELEASE " /LTCG") +SET(CMAKE_SHARED_LINKER_FLAGS_PROFILE " /LTCG") +SET(CMAKE_SHARED_LINKER_FLAGS_CHECKED " /LTCG") + +IF(DEFINED 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 ${WINCRT_DEBUG} /RTCsu /Zi /Zo") +SET(CMAKE_CXX_FLAGS_CHECKED "/Ox ${WINCRT_NDEBUG} /Zi /GL") +SET(CMAKE_CXX_FLAGS_PROFILE "/Ox ${WINCRT_NDEBUG} /Zi /GL") +SET(CMAKE_CXX_FLAGS_RELEASE "/Ox ${WINCRT_NDEBUG} /Zi /GL") + + +# Build PDBs for all configurations +SET(CMAKE_SHARED_LINKER_FLAGS "/DEBUG") + +IF(CMAKE_CL_64) + ADD_DEFINITIONS(-DWIN64) +ENDIF(CMAKE_CL_64) + +# Controls PX_NVTX for all projects on windows +SET(PHYSX_WINDOWS_ENABLE_NVTX 0) + +IF(DEFINED PX_GENERATE_GPU_PROJECTS) +SET(NVCLOTH_WINDOWS_COMPILE_DEFS WIN32;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS) +ELSE() +# Disable cuda and dx for all projects on windows +SET(NVCLOTH_WINDOWS_COMPILE_DEFS DISABLE_COMPUTE_PHYSX;WIN32;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS) +ENDIF() +SET(NVCLOTH_WINDOWS_DEBUG_COMPILE_DEFS _DEBUG;PX_DEBUG=1;PX_CHECKED=1;PX_NVTX=${PHYSX_WINDOWS_ENABLE_NVTX};) +SET(NVCLOTH_WINDOWS_CHECKED_COMPILE_DEFS NDEBUG;PX_CHECKED=1;PX_NVTX=${PHYSX_WINDOWS_ENABLE_NVTX};) +SET(NVCLOTH_WINDOWS_PROFILE_COMPILE_DEFS NDEBUG;PX_PROFILE=1;PX_NVTX=${PHYSX_WINDOWS_ENABLE_NVTX};) +SET(NVCLOTH_WINDOWS_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}") + +SET(PX_SELECT_COMPONENTS PxFoundation) +FIND_PACKAGE(PxShared REQUIRED) + +# Include the PxShared-exports.cmake file that PxShared created. There's other ways to do this, but there's a bunch of issues with it in a CI environment +# such as - we don't want to be installing any built artifacts on this server, etc. So for now we hack it. + +# Add PxShared as a dependency so that we can use project references +ADD_SUBDIRECTORY(${PXSHARED_ROOT_DIR}/src/compiler/cmake/windows "${CMAKE_CURRENT_BINARY_DIR}/pxshared_bin") + +# Include all of the projects +INCLUDE(NvCloth.cmake) +IF(DEFINED PX_GENERATE_GPU_PROJECTS) +# INCLUDE(NVCLOTHGpu.cmake) +ENDIF() +MESSAGE("[NvCloth]cmake/windows/CMakeList.txt END")
\ No newline at end of file diff --git a/NvCloth/compiler/cmake/windows/NvCloth.cmake b/NvCloth/compiler/cmake/windows/NvCloth.cmake new file mode 100644 index 0000000..c71c974 --- /dev/null +++ b/NvCloth/compiler/cmake/windows/NvCloth.cmake @@ -0,0 +1,133 @@ +# +# Build NvCloth +# + +MESSAGE("[NvCloth]cmake/windows/NvCloth.cmake") + +SET(GW_DEPS_ROOT $ENV{GW_DEPS_ROOT}) +#FIND_PACKAGE(PxShared REQUIRED) +FIND_PACKAGE(CUDA 8 REQUIRED) +MESSAGE("Found CUDA:" ${CUDA_INCLUDE_DIRS}) + + +SET(NVCLOTH_PLATFORM_INCLUDES PRIVATE ${CUDA_INCLUDE_DIRS}) + +SET(NVCLOTH_PLATFORM_SOURCE_FILES + ${PROJECT_ROOT_DIR}/src/cuda/CuCheckSuccess.h + ${PROJECT_ROOT_DIR}/src/cuda/CuCloth.cpp + ${PROJECT_ROOT_DIR}/src/cuda/CuCloth.h + ${PROJECT_ROOT_DIR}/src/cuda/CuClothClone.cpp + ${PROJECT_ROOT_DIR}/src/cuda/CuClothData.cpp + ${PROJECT_ROOT_DIR}/src/cuda/CuClothData.h + ${PROJECT_ROOT_DIR}/src/cuda/CuCollision.h + ${PROJECT_ROOT_DIR}/src/cuda/CuContextLock.cpp + ${PROJECT_ROOT_DIR}/src/cuda/CuContextLock.h + ${PROJECT_ROOT_DIR}/src/cuda/CuDevicePointer.h + ${PROJECT_ROOT_DIR}/src/cuda/CuDeviceVector.h + ${PROJECT_ROOT_DIR}/src/cuda/CuFabric.cpp + ${PROJECT_ROOT_DIR}/src/cuda/CuFabric.h + ${PROJECT_ROOT_DIR}/src/cuda/CuFactory.cpp + ${PROJECT_ROOT_DIR}/src/cuda/CuFactory.h + ${PROJECT_ROOT_DIR}/src/cuda/CuPhaseConfig.h + ${PROJECT_ROOT_DIR}/src/cuda/CuPinnedAllocator.h + ${PROJECT_ROOT_DIR}/src/cuda/CuSelfCollision.h + ${PROJECT_ROOT_DIR}/src/cuda/CuSolver.cpp + ${PROJECT_ROOT_DIR}/src/cuda/CuSolver.h + + ${PROJECT_ROOT_DIR}/src/cuda/CuSolverKernel.h + ${PROJECT_ROOT_DIR}/src/cuda/CuSolverKernelBlob.h + ${PROJECT_ROOT_DIR}/src/dx/DxBatchedVector.h + ${PROJECT_ROOT_DIR}/src/dx/DxCheckSuccess.h + ${PROJECT_ROOT_DIR}/src/dx/DxCloth.cpp + ${PROJECT_ROOT_DIR}/src/dx/DxCloth.h + ${PROJECT_ROOT_DIR}/src/dx/DxClothClone.cpp + ${PROJECT_ROOT_DIR}/src/dx/DxClothData.cpp + ${PROJECT_ROOT_DIR}/src/dx/DxClothData.h + ${PROJECT_ROOT_DIR}/src/dx/DxContextLock.cpp + ${PROJECT_ROOT_DIR}/src/dx/DxContextLock.h + ${PROJECT_ROOT_DIR}/src/dx/DxDeviceVector.h + ${PROJECT_ROOT_DIR}/src/dx/DxFabric.cpp + ${PROJECT_ROOT_DIR}/src/dx/DxFabric.h + ${PROJECT_ROOT_DIR}/src/dx/DxFactory.cpp + ${PROJECT_ROOT_DIR}/src/dx/DxFactory.h + ${PROJECT_ROOT_DIR}/src/dx/DxSolver.cpp + ${PROJECT_ROOT_DIR}/src/dx/DxSolver.h + + ${PROJECT_ROOT_DIR}/src/dx/DxSolverKernelBlob.h + ${PROJECT_ROOT_DIR}/src/dx/DxSortKernel.inc + #${PROJECT_ROOT_DIR}/src/neon/NeonCollision.cpp + #${PROJECT_ROOT_DIR}/src/neon/NeonSelfCollision.cpp + #${PROJECT_ROOT_DIR}/src/neon/NeonSolverKernel.cpp + #${PROJECT_ROOT_DIR}/src/neon/SwCollisionHelpers.h +) + +SET(NVCLOTH_AVX_SOURCE_FILES + ${PROJECT_ROOT_DIR}/src/avx/SwSolveConstraints.cpp +) + +set_source_files_properties(${NVCLOTH_AVX_SOURCE_FILES} PROPERTIES COMPILE_FLAGS "/arch:AVX") + + + + +SET(NVCLOTH_HLSL_FILES + ${PROJECT_ROOT_DIR}/src/dx/DxSolverKernel.hlsl +) +set_source_files_properties(${NVCLOTH_HLSL_FILES} PROPERTIES VS_SHADER_TYPE Compute VS_SHADER_MODEL 5.0 VS_SHADER_FLAGS "/Vn gDxSolverKernel /Fh ${PROJECT_ROOT_DIR}/src/dx/DxSolverKernelBlob.h") +SET(NVCLOTH_PLATFORM_SOURCE_FILES ${NVCLOTH_PLATFORM_SOURCE_FILES} ${NVCLOTH_HLSL_FILES} ${NVCLOTH_AVX_SOURCE_FILES}) + +set( + CUDA_NVCC_FLAGS + ${CUDA_NVCC_FLAGS}; + -use_fast_math -ftz=true -prec-div=false -prec-sqrt=false -lineinfo -gencode arch=compute_20,code=sm_20 -gencode arch=compute_30,code=sm_30 -gencode arch=compute_35,code=sm_35 -gencode arch=compute_50,code=sm_50 -gencode arch=compute_50,code=compute_50 -D_USE_MATH_DEFINES -DNDEBUG -DPX_PROFILE=1 +) +SET(NVCLOTH_CUDA_FILES + ${PROJECT_ROOT_DIR}/src/cuda/CuSolverKernel.cu +) +set(CUDA_BLOB "${PROJECT_ROOT_DIR}/src/cuda/CuSolverKernelBlob.h") +cuda_include_directories( + ${PXSHARED_ROOT_DIR}/include + ${PXSHARED_ROOT_DIR}/src/foundation/include + ${PROJECT_ROOT_DIR}/include/NvCloth +) +cuda_compile_fatbin(CUDA_FATBIN ${NVCLOTH_CUDA_FILES}) +SET(NVCLOTH_PLATFORM_SOURCE_FILES ${NVCLOTH_PLATFORM_SOURCE_FILES} ${CUDA_BLOB} ${NVCLOTH_CUDA_FILES}) +add_custom_command( + OUTPUT ${CUDA_BLOB} +COMMAND ${CUDA_TOOLKIT_ROOT_DIR}/bin/bin2c.exe --name kCuSolverKernel ${CUDA_FATBIN} > ${CUDA_BLOB} + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} +DEPENDS ${CUDA_FATBIN} + VERBATIM +) + +SET(NVCLOTH_COMPILE_DEFS + + NV_CLOTH_IMPORT=PX_DLL_EXPORT + NV_CLOTH_ENABLE_DX11=1 + NV_CLOTH_ENABLE_CUDA=1 + + $<$<CONFIG:debug>:${NVCLOTH_WINDOWS_DEBUG_COMPILE_DEFS};PX_PHYSX_DLL_NAME_POSTFIX=DEBUG;> + $<$<CONFIG:checked>:${NVCLOTH_WINDOWS_CHECKED_COMPILE_DEFS};PX_PHYSX_DLL_NAME_POSTFIX=CHECKED;> + $<$<CONFIG:profile>:${NVCLOTH_WINDOWS_PROFILE_COMPILE_DEFS};PX_PHYSX_DLL_NAME_POSTFIX=PROFILE;> + $<$<CONFIG:release>:${NVCLOTH_WINDOWS_RELEASE_COMPILE_DEFS};> +) + + + +SET(NVCLOTH_LIBTYPE SHARED) + +# include common NvCloth settings +INCLUDE(../common/NvCloth.cmake) + +# Add linked libraries + +TARGET_LINK_LIBRARIES(NvCloth PUBLIC PxFoundation) +TARGET_LINK_LIBRARIES(NvCloth PUBLIC ${CUDA_CUDA_LIBRARY}) + +SET_TARGET_PROPERTIES(NvCloth PROPERTIES + LINK_FLAGS_DEBUG "/DELAYLOAD:nvcuda.dll /MAP /DELAYLOAD:PxFoundationDEBUG_${LIBPATH_SUFFIX}.dll /DEBUG" + LINK_FLAGS_CHECKED "/DELAYLOAD:nvcuda.dll /MAP /DELAYLOAD:PxFoundationCHECKED_${LIBPATH_SUFFIX}.dll" + LINK_FLAGS_PROFILE "/DELAYLOAD:nvcuda.dll /MAP /DELAYLOAD:PxFoundationPROFILE_${LIBPATH_SUFFIX}.dll /INCREMENTAL:NO /DEBUG" + LINK_FLAGS_RELEASE "/DELAYLOAD:nvcuda.dll /MAP /DELAYLOAD:PxFoundation_${LIBPATH_SUFFIX}.dll /INCREMENTAL:NO" +) +MESSAGE("[NvCloth]cmake/windows/NvCloth.cmake END")
\ No newline at end of file |