summaryrefslogtreecommitdiff
path: root/compiler/cmake/NvWaveWorks.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/cmake/NvWaveWorks.cmake')
-rw-r--r--compiler/cmake/NvWaveWorks.cmake232
1 files changed, 232 insertions, 0 deletions
diff --git a/compiler/cmake/NvWaveWorks.cmake b/compiler/cmake/NvWaveWorks.cmake
new file mode 100644
index 0000000..387dc84
--- /dev/null
+++ b/compiler/cmake/NvWaveWorks.cmake
@@ -0,0 +1,232 @@
+#
+# Build NvWaveWorks (PROJECT not SOLUTION)
+#
+
+SET(GW_DEPS_ROOT $ENV{GW_DEPS_ROOT})
+
+FIND_PACKAGE(CUDA REQUIRED)
+
+
+SET(WW_SOURCE_DIR ${PROJECT_SOURCE_DIR}/src)
+SET(SHADER_SRC_DIR ${WW_SOURCE_DIR}/shader)
+SET(DISTRO_INCLUDE_DIR ${PROJECT_SOURCE_DIR}/include)
+SET(GEN_SRC_DIR ${WW_SOURCE_DIR}/generated)
+
+IF(TARGET_BUILD_PLATFORM STREQUAL "Windows")
+
+ FIND_PACKAGE(DirectX REQUIRED)
+
+ SET(WW_PLATFORM_INCLUDES
+ )
+
+ SET(WW_PLATFORM_SRC_FILES
+ )
+
+
+ # Use generator expressions to set config specific preprocessor definitions
+ SET(WW_COMPILE_DEFS
+ # Common to all configurations
+ _LIB;NVWAVEWORKS_LIB_DLL_EXPORTS;WIN32;
+
+ $<$<CONFIG:debug>:PROFILE;_DEV;>
+ $<$<CONFIG:release>:NDEBUG;>
+ )
+
+ SET(WW_LIBTYPE SHARED)
+
+ELSEIF(TARGET_BUILD_PLATFORM STREQUAL "PS4")
+
+ SET(WW_PLATFORM_INCLUDES
+ $ENV{SCE_ORBIS_SDK_DIR}/target/include
+ )
+
+ SET(WW_COMPILE_DEFS
+
+ # Common to all configurations
+ _LIB;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;PX_PHYSX_STATIC_LIB;
+
+ $<$<CONFIG:debug>:_DEBUG;PX_DEBUG=1;PX_CHECKED=1;PX_SUPPORT_PVD=1;>
+ $<$<CONFIG:release>:NDEBUG;PX_SUPPORT_PVD=0;>
+ )
+
+ SET(WW_LIBTYPE STATIC)
+
+ELSEIF(TARGET_BUILD_PLATFORM STREQUAL "XBoxOne")
+ SET(WW_PLATFORM_INCLUDES
+ )
+
+ # Use generator expressions to set config specific preprocessor definitions
+ SET(WW_COMPILE_DEFS
+
+ # Common to all configurations
+ PX_PHYSX_CORE_EXPORTS;_LIB;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;WINAPI_FAMILY=WINAPI_FAMILY_TV_TITLE;PX_PHYSX_STATIC_LIB;
+
+ $<$<CONFIG:debug>:_DEBUG;PX_DEBUG=1;PX_CHECKED=1;PX_SUPPORT_PVD=1;>
+ $<$<CONFIG:release>:NDEBUG;PX_SUPPORT_PVD=0;>
+ )
+
+ SET(WW_LIBTYPE STATIC)
+
+
+ELSEIF(TARGET_BUILD_PLATFORM STREQUAL "Unix")
+ENDIF()
+
+SET(CPP_FILES
+ ${WW_SOURCE_DIR}/CustomMemory.cpp
+ ${WW_SOURCE_DIR}/D3DX_Replacement_code.cpp
+ ${WW_SOURCE_DIR}/Entrypoints.cpp
+
+ ${WW_SOURCE_DIR}/FFT_Simulation_CPU.cpp
+ ${WW_SOURCE_DIR}/FFT_Simulation_CUDA.cpp
+ ${WW_SOURCE_DIR}/FFT_Simulation_DirectCompute.cpp
+ ${WW_SOURCE_DIR}/FFT_Simulation_Manager_CPU.cpp
+ ${WW_SOURCE_DIR}/FFT_Simulation_Manager_CUDA.cpp
+ ${WW_SOURCE_DIR}/FFT_Simulation_Manager_DirectCompute.cpp
+
+ ${WW_SOURCE_DIR}/GFX_Timer.cpp
+ ${WW_SOURCE_DIR}/GLFunctions.cpp
+ ${WW_SOURCE_DIR}/Mesh.cpp
+ ${WW_SOURCE_DIR}/Quadtree.cpp
+ ${WW_SOURCE_DIR}/Savestate.cpp
+ ${WW_SOURCE_DIR}/Simulation.cpp
+ ${WW_SOURCE_DIR}/Simulation_Util.cpp
+)
+
+SET(H_FILES
+ ${WW_SOURCE_DIR}/CustomMemory.h
+ ${WW_SOURCE_DIR}/D3DX_Replacement_code.h
+ ${WW_SOURCE_DIR}/FFT_API_Support.h
+ ${WW_SOURCE_DIR}/FFT_Simulation.h
+ ${WW_SOURCE_DIR}/FFT_Simulation_CPU_impl.h
+ ${WW_SOURCE_DIR}/FFT_Simulation_CUDA_impl.h
+ ${WW_SOURCE_DIR}/FFT_Simulation_DirectCompute_impl.h
+ ${WW_SOURCE_DIR}/FFT_Simulation_Manager.h
+ ${WW_SOURCE_DIR}/FFT_Simulation_Manager_CPU_impl.h
+ ${WW_SOURCE_DIR}/FFT_Simulation_Manager_CUDA_impl.h
+ ${WW_SOURCE_DIR}/FFT_Simulation_Manager_DirectCompute_impl.h
+ ${WW_SOURCE_DIR}/Float16_Util.h
+ ${WW_SOURCE_DIR}/GFX_Timer_impl.h
+ ${WW_SOURCE_DIR}/Graphics_Context.h
+ ${WW_SOURCE_DIR}/internal.h
+ ${WW_SOURCE_DIR}/Mesh.h
+ ${WW_SOURCE_DIR}/Quadtree_impl.h
+ ${WW_SOURCE_DIR}/Savestate_impl.h
+ ${WW_SOURCE_DIR}/Simulation_impl.h
+ ${WW_SOURCE_DIR}/Simulation_Util.h
+ ${WW_SOURCE_DIR}/Spectrum_Util.h
+)
+
+SET(DISTRO_INCLUDE_FILES
+ ${DISTRO_INCLUDE_DIR}/GFSDK_WaveWorks.h
+ ${DISTRO_INCLUDE_DIR}/GFSDK_WaveWorks_Common.h
+ ${DISTRO_INCLUDE_DIR}/GFSDK_WaveWorks_D3D_Util.h
+ ${DISTRO_INCLUDE_DIR}/GFSDK_WaveWorks_GUID.h
+ ${DISTRO_INCLUDE_DIR}/GFSDK_WaveWorks_Types.h
+)
+
+SET(HLSL_FILES
+ ${SHADER_SRC_DIR}/Attributes.fxh
+ ${SHADER_SRC_DIR}/Common.fxh
+ ${SHADER_SRC_DIR}/Quadtree.fxh
+
+ ${SHADER_SRC_DIR}/CalcGradient.fx
+ ${SHADER_SRC_DIR}/CalcGradient_SM3.fx
+ ${SHADER_SRC_DIR}/CalcGradient_SM4.fx
+
+ ${SHADER_SRC_DIR}/FoamGeneration.fx
+ ${SHADER_SRC_DIR}/FoamGeneration_SM3.fx
+ ${SHADER_SRC_DIR}/FoamGeneration_SM4.fx
+
+ ${SHADER_SRC_DIR}/Quadtree_SM4_sig.fx
+ ${SHADER_SRC_DIR}/Quadtree_SM5_sig.fx
+
+ ${WW_SOURCE_DIR}/FFT_Simulation_DirectCompute_shader.hlsl
+)
+
+SET(CUDA_FILES
+ ${WW_SOURCE_DIR}/FFT_Simulation_CUDA_kernel.cu
+)
+
+
+INCLUDE(cmake/CompileFXToH.cmake)
+
+#ADD_CUSTOM_TARGET(fx ALL)
+
+#FUNCTION(CompileFXToH FILE OUTPUT_DIR TARGET INCLUDE_DIR ENTRYPOINT OPTIONS)
+
+CompileFXToH(${SHADER_SRC_DIR}/Quadtree_SM4_sig.fx ${GEN_SRC_DIR} fx1 ${SHADER_SRC_DIR} ${DISTRO_INCLUDE_DIR} GFSDK_WAVEWORKS_VERTEX_INPUT_Sig /Tvs_4_0)
+CompileFXToH(${SHADER_SRC_DIR}/Quadtree_SM5_sig.fx ${GEN_SRC_DIR} fx2 ${SHADER_SRC_DIR} ${DISTRO_INCLUDE_DIR} GFSDK_WAVEWORKS_VERTEX_INPUT_Sig /Tvs_5_0)
+
+ADD_LIBRARY(WaveWorks ${WW_LIBTYPE}
+ ${WW_PLATFORM_SRC_FILES}
+
+ ${CPP_FILES}
+ ${H_FILES}
+ ${DISTRO_INCLUDE_FILES}
+
+ ${WW_SOURCE_DIR}/generated/Quadtree_SM4_sig.h
+ ${SHADER_SRC_DIR}/Quadtree_SM4_sig.fx
+
+ ${WW_SOURCE_DIR}/generated/Quadtree_SM5_sig.h
+ ${SHADER_SRC_DIR}/Quadtree_SM5_sig.fx
+
+# ${HLSL_FILES}
+# ${CUDA_FILES}
+)
+
+SOURCE_GROUP("src" FILES ${CPP_FILES} ${H_FILES})
+SOURCE_GROUP("include" FILES ${DISTRO_INCLUDE_FILES})
+#SOURCE_GROUP("header" FILES ${H_FILES})
+#SOURCE_GROUP("hlsl" FILES ${HLSL_FILES})
+#SOURCE_GROUP("cuda" FILES ${CUDA_FILES})
+
+
+
+# Target specific compile options
+
+
+TARGET_INCLUDE_DIRECTORIES(WaveWorks
+ PRIVATE ${WW_PLATFORM_INCLUDES}
+ PRIVATE ${CUDA_INCLUDE_DIRS}
+ PRIVATE ${GEN_SRC_DIR}
+
+ PRIVATE ${PROJECT_SOURCE_DIR}/include
+ PRIVATE ${SHADER_SRC_DIR}
+)
+
+TARGET_COMPILE_DEFINITIONS(WaveWorks
+
+ # Common to all configurations
+ PRIVATE ${WW_COMPILE_DEFS}
+)
+
+
+
+#TODO: Link flags
+
+IF(TARGET_BUILD_PLATFORM STREQUAL "Windows")
+ # Add linked libraries
+# TARGET_LINK_LIBRARIES(WaveWorks PUBLIC ${NVTOOLSEXT_LIBRARIES} LowLevel LowLevelAABB LowLevelCloth LowLevelDynamics LowLevelParticles WaveWorksCommon WaveWorksGpu PxFoundation PxPvdSDK PxTask SceneQuery SimulationController)
+
+ IF(CMAKE_CL_64)
+ SET(LIBPATH_SUFFIX "win64")
+ ELSE(CMAKE_CL_64)
+ SET(LIBPATH_SUFFIX "Win32")
+ ENDIF(CMAKE_CL_64)
+
+ SET_TARGET_PROPERTIES(WaveWorks PROPERTIES
+ LINK_FLAGS_DEBUG "/DELAYLOAD:nvcuda.dll /MAP /DELAYLOAD:PxFoundationDEBUG_${LIBPATH_SUFFIX}.dll /DELAYLOAD:WaveWorks3CommonDEBUG_${LIBPATH_SUFFIX}.dll /DEBUG"
+ LINK_FLAGS_RELEASE "/DELAYLOAD:nvcuda.dll /MAP /DELAYLOAD:WaveWorks3Common_${LIBPATH_SUFFIX}.dll /DELAYLOAD:PxFoundation_${LIBPATH_SUFFIX}.dll /INCREMENTAL:NO"
+ )
+
+ELSEIF(TARGET_BUILD_PLATFORM STREQUAL "PS4")
+# TARGET_LINK_LIBRARIES(WaveWorks PUBLIC LowLevel LowLevelAABB LowLevelCloth LowLevelDynamics LowLevelParticles WaveWorksCommon PxFoundation PxPvdSDK PxTask SceneQuery SimulationController)
+
+ELSEIF(TARGET_BUILD_PLATFORM STREQUAL "XBoxOne")
+
+# TARGET_LINK_LIBRARIES(WaveWorks PUBLIC LowLevel LowLevelAABB LowLevelCloth LowLevelDynamics LowLevelParticles WaveWorksCommon PxFoundation PxPvdSDK PxTask SceneQuery SimulationController)
+
+ELSEIF(TARGET_BUILD_PLATFORM STREQUAL "Unix")
+ENDIF()
+
+