aboutsummaryrefslogtreecommitdiff
path: root/NvCloth/compiler/cmake
diff options
context:
space:
mode:
authormtamis <[email protected]>2017-02-15 16:06:25 +0100
committermtamis <[email protected]>2017-02-15 16:06:25 +0100
commit85305930aeeb1d513e23522bd91f29ba81aa6d14 (patch)
tree45f1bb20a45a300d1fef107e436cac95602a0e57 /NvCloth/compiler/cmake
downloadnvcloth-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.txt55
-rw-r--r--NvCloth/compiler/cmake/Linux/NvCloth.cmake59
-rw-r--r--NvCloth/compiler/cmake/Mac/CMakeLists.txt57
-rw-r--r--NvCloth/compiler/cmake/Mac/NvCloth.cmake59
-rw-r--r--NvCloth/compiler/cmake/common/CMakeLists.txt89
-rw-r--r--NvCloth/compiler/cmake/common/NvCloth.cmake181
-rw-r--r--NvCloth/compiler/cmake/windows/CMakeLists.txt88
-rw-r--r--NvCloth/compiler/cmake/windows/NvCloth.cmake133
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