From 7813359e20cf15d71c22bc3cee59befb45bcff9e Mon Sep 17 00:00:00 2001 From: gralkapk Date: Fri, 5 Jul 2024 23:44:32 +0200 Subject: [PATCH] fixed optix compile --- plugins/optix_hpg/CMakeLists.txt | 79 ++++++++++++++++--- plugins/optix_hpg/cmake/configure_optix.cmake | 4 +- 2 files changed, 72 insertions(+), 11 deletions(-) diff --git a/plugins/optix_hpg/CMakeLists.txt b/plugins/optix_hpg/CMakeLists.txt index 9dc3f84980..80d9a71dee 100644 --- a/plugins/optix_hpg/CMakeLists.txt +++ b/plugins/optix_hpg/CMakeLists.txt @@ -34,23 +34,82 @@ if (optix_hpg_PLUGIN_ENABLED) find_package(CUDAToolkit) include(configure_optix) - get_target_property(GLM_INCLUDES glm::glm INTERFACE_INCLUDE_DIRECTORIES) + #get_target_property(GLM_INCLUDES glm::glm INTERFACE_INCLUDE_DIRECTORIES) # Collect source files file(GLOB_RECURSE cuda_resource_include_files RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "cuda_resources/*.h" "cuda_resources/*.cuh") #include_directories(${GLM_INCLUDES} "${CMAKE_CURRENT_SOURCE_DIR}/src" "${CMAKE_CURRENT_SOURCE_DIR}/cuda_resources") - embed_ptx(OUTPUT_TARGET embedded_raygen_programs SOURCES cuda_resources/raygen.cu) - embed_ptx(OUTPUT_TARGET embedded_miss_programs SOURCES cuda_resources/miss.cu) - embed_ptx(OUTPUT_TARGET embedded_miss_occlusion_programs SOURCES cuda_resources/miss_occlusion.cu) - embed_ptx(OUTPUT_TARGET embedded_sphere_programs SOURCES cuda_resources/sphere.cu) - embed_ptx(OUTPUT_TARGET embedded_sphere_occlusion_programs SOURCES cuda_resources/sphere_occlusion.cu) - embed_ptx(OUTPUT_TARGET embedded_mesh_programs SOURCES cuda_resources/mesh.cu) - embed_ptx(OUTPUT_TARGET embedded_transitioncalculator_programs SOURCES cuda_resources/transitioncalculator.cu) + set(ptx_include_dirs "${CMAKE_CURRENT_SOURCE_DIR}/src" "${CMAKE_CURRENT_SOURCE_DIR}/cuda_resources" "${OptiX_INCLUDE}") + embed_ptx( + OUTPUT_TARGET + embedded_raygen_programs + PTX_LINK_LIBRARIES + glm::glm + PTX_INCLUDE_DIRECTORIES + ${ptx_include_dirs} + SOURCES + cuda_resources/raygen.cu) + embed_ptx( + OUTPUT_TARGET + embedded_miss_programs + PTX_LINK_LIBRARIES + glm::glm + PTX_INCLUDE_DIRECTORIES + ${ptx_include_dirs} + SOURCES + cuda_resources/miss.cu) + embed_ptx( + OUTPUT_TARGET + embedded_miss_occlusion_programs + PTX_LINK_LIBRARIES + glm::glm + PTX_INCLUDE_DIRECTORIES + ${ptx_include_dirs} + SOURCES + cuda_resources/miss_occlusion.cu) + embed_ptx( + OUTPUT_TARGET + embedded_sphere_programs + PTX_LINK_LIBRARIES + glm::glm + PTX_INCLUDE_DIRECTORIES + ${ptx_include_dirs} + SOURCES + cuda_resources/sphere.cu) + embed_ptx( + OUTPUT_TARGET + embedded_sphere_occlusion_programs + PTX_LINK_LIBRARIES + glm::glm + PTX_INCLUDE_DIRECTORIES + ${ptx_include_dirs} + SOURCES + cuda_resources/sphere_occlusion.cu) + embed_ptx( + OUTPUT_TARGET + embedded_mesh_programs + PTX_LINK_LIBRARIES + glm::glm + PTX_INCLUDE_DIRECTORIES + ${ptx_include_dirs} + SOURCES + cuda_resources/mesh.cu) + embed_ptx( + OUTPUT_TARGET + embedded_transitioncalculator_programs + PTX_LINK_LIBRARIES + glm::glm + PTX_INCLUDE_DIRECTORIES + ${ptx_include_dirs} + SOURCES + cuda_resources/transitioncalculator.cu) - target_sources(optix_hpg PRIVATE ${cuda_resource_include_files} ${embedded_raygen_programs} ${embedded_miss_programs} ${embedded_miss_occlusion_programs} ${embedded_sphere_programs} ${embedded_sphere_occlusion_programs} ${embedded_mesh_programs} ${embedded_transitioncalculator_programs}) + target_sources(optix_hpg PRIVATE ${cuda_resource_include_files}) + #target_sources(optix_hpg PRIVATE ${cuda_resource_include_files} ${embedded_raygen_programs} ${embedded_miss_programs} ${embedded_miss_occlusion_programs} ${embedded_sphere_programs} ${embedded_sphere_occlusion_programs} ${embedded_mesh_programs} ${embedded_transitioncalculator_programs}) + target_link_libraries(optix_hpg PRIVATE $ $ $ $ $ $ $) - target_include_directories(optix_hpg PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/cuda_resources/") + target_include_directories(optix_hpg PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/cuda_resources/" "${OptiX_INCLUDE}") target_link_libraries(optix_hpg PRIVATE CUDA::cuda_driver) if (MEGAMOL_USE_OPENGL) target_link_libraries(optix_hpg PRIVATE mmstd_gl) diff --git a/plugins/optix_hpg/cmake/configure_optix.cmake b/plugins/optix_hpg/cmake/configure_optix.cmake index 8572dd98f4..31e7b836ec 100644 --- a/plugins/optix_hpg/cmake/configure_optix.cmake +++ b/plugins/optix_hpg/cmake/configure_optix.cmake @@ -39,7 +39,7 @@ find_program(BIN2C bin2c ## SPDX-License-Identifier: Apache-2.0 function(embed_ptx) set(oneArgs OUTPUT_TARGET) - set(multiArgs PTX_LINK_LIBRARIES SOURCES) + set(multiArgs PTX_LINK_LIBRARIES PTX_INCLUDE_DIRECTORIES SOURCES) cmake_parse_arguments(EMBED_PTX "" "${oneArgs}" "${multiArgs}" ${ARGN}) if (NOT ${NUM_SOURCES} EQUAL 1) @@ -52,8 +52,10 @@ function(embed_ptx) add_library(${PTX_TARGET} OBJECT) target_sources(${PTX_TARGET} PRIVATE ${EMBED_PTX_SOURCES}) target_link_libraries(${PTX_TARGET} PRIVATE ${EMBED_PTX_PTX_LINK_LIBRARIES}) + target_include_directories(${PTX_TARGET} PRIVATE ${EMBED_PTX_PTX_INCLUDE_DIRECTORIES}) set_property(TARGET ${PTX_TARGET} PROPERTY CUDA_PTX_COMPILATION ON) set_property(TARGET ${PTX_TARGET} PROPERTY CUDA_ARCHITECTURES OFF) + set_property(TARGET ${PTX_TARGET} PROPERTY CXX_STANDARD 17) set(EMBED_PTX_C_FILE ${CMAKE_CURRENT_BINARY_DIR}/${EMBED_PTX_OUTPUT_TARGET}.c) get_filename_component(OUTPUT_FILE_NAME ${EMBED_PTX_C_FILE} NAME)