From a1cf9e4183d8759dd6a1ff83dcad8e3543f5eed8 Mon Sep 17 00:00:00 2001 From: Jonathan Bentz Date: Wed, 8 Jan 2025 17:05:45 -0600 Subject: [PATCH] Changes for building for aarch64, specifically jetson orin nano --- .../simpleCUDA2GL/CMakeLists.txt | 26 +++++---- .../0_Introduction/simpleIPC/CMakeLists.txt | 16 +++--- .../0_Introduction/simpleP2P/CMakeLists.txt | 12 +++-- .../systemWideAtomics/CMakeLists.txt | 28 +++++----- .../vectorAddMMAP/CMakeLists.txt | 48 +++++++++-------- .../1_Utilities/topologyQuery/CMakeLists.txt | 16 +++--- .../streamOrderedAllocationIPC/CMakeLists.txt | 18 ++++--- .../StreamPriorities/CMakeLists.txt | 12 +++-- .../cdpAdvancedQuicksort/CMakeLists.txt | 7 ++- .../cdpBezierTessellation/CMakeLists.txt | 7 ++- .../cdpQuadtree/CMakeLists.txt | 7 ++- .../cdpSimplePrint/CMakeLists.txt | 7 ++- .../cdpSimpleQuicksort/CMakeLists.txt | 7 ++- .../4_CUDA_Libraries/nvJPEG/CMakeLists.txt | 44 ++++++++------- .../nvJPEG_encoder/CMakeLists.txt | 54 ++++++++++--------- 15 files changed, 189 insertions(+), 120 deletions(-) diff --git a/Samples/0_Introduction/simpleCUDA2GL/CMakeLists.txt b/Samples/0_Introduction/simpleCUDA2GL/CMakeLists.txt index 85929564..53497b78 100644 --- a/Samples/0_Introduction/simpleCUDA2GL/CMakeLists.txt +++ b/Samples/0_Introduction/simpleCUDA2GL/CMakeLists.txt @@ -20,25 +20,29 @@ find_package(GLUT) # Source file if(${OpenGL_FOUND}) if (${GLUT_FOUND}) - # Add target for simpleCUDA2GL - add_executable(simpleCUDA2GL simpleCUDA2GL.cu main.cpp) + if(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64") + message(STATUS "Will not build sample simpleCUDA2GL - not supported on aarch64") + else() + # Add target for simpleCUDA2GL + add_executable(simpleCUDA2GL simpleCUDA2GL.cu main.cpp) -target_compile_options(simpleCUDA2GL PRIVATE $<$:--extended-lambda>) + target_compile_options(simpleCUDA2GL PRIVATE $<$:--extended-lambda>) -target_compile_features(simpleCUDA2GL PRIVATE cxx_std_17 cuda_std_17) + target_compile_features(simpleCUDA2GL PRIVATE cxx_std_17 cuda_std_17) - set_target_properties(simpleCUDA2GL PROPERTIES CUDA_SEPARABLE_COMPILATION ON) - - target_include_directories(simpleCUDA2GL PUBLIC - ${OPENGL_INCLUDE_DIR} - ${CUDAToolkit_INCLUDE_DIRS} - ${GLUT_INCLUDE_DIRS} - ) + set_target_properties(simpleCUDA2GL PROPERTIES CUDA_SEPARABLE_COMPILATION ON) + target_include_directories(simpleCUDA2GL PUBLIC + ${OPENGL_INCLUDE_DIR} + ${CUDAToolkit_INCLUDE_DIRS} + ${GLUT_INCLUDE_DIRS} + ) + target_link_libraries(simpleCUDA2GL ${OPENGL_LIBRARIES} ${GLUT_LIBRARIES} ) + endif() else() message(STATUS "GLUT not found - will not build sample 'simpleCUDA2GL'") endif() diff --git a/Samples/0_Introduction/simpleIPC/CMakeLists.txt b/Samples/0_Introduction/simpleIPC/CMakeLists.txt index 546de001..8ec5f8b1 100644 --- a/Samples/0_Introduction/simpleIPC/CMakeLists.txt +++ b/Samples/0_Introduction/simpleIPC/CMakeLists.txt @@ -14,12 +14,16 @@ endif() # Include directories and libraries include_directories(../../../Common) -# Source file -# Add target for simpleIPC -add_executable(simpleIPC simpleIPC.cu ../../../Common/helper_multiprocess.cpp) +if(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64") + message(STATUS "Will not build sample simpleIPC - not supported on aarch64") +else() + # Source file + # Add target for simpleIPC + add_executable(simpleIPC simpleIPC.cu ../../../Common/helper_multiprocess.cpp) -target_compile_options(simpleIPC PRIVATE $<$:--extended-lambda>) + target_compile_options(simpleIPC PRIVATE $<$:--extended-lambda>) -target_compile_features(simpleIPC PRIVATE cxx_std_17 cuda_std_17) + target_compile_features(simpleIPC PRIVATE cxx_std_17 cuda_std_17) -set_target_properties(simpleIPC PROPERTIES CUDA_SEPARABLE_COMPILATION ON) + set_target_properties(simpleIPC PROPERTIES CUDA_SEPARABLE_COMPILATION ON) +endif() \ No newline at end of file diff --git a/Samples/0_Introduction/simpleP2P/CMakeLists.txt b/Samples/0_Introduction/simpleP2P/CMakeLists.txt index 767c353b..af8c30a0 100644 --- a/Samples/0_Introduction/simpleP2P/CMakeLists.txt +++ b/Samples/0_Introduction/simpleP2P/CMakeLists.txt @@ -16,10 +16,14 @@ include_directories(../../../Common) # Source file # Add target for simpleP2P -add_executable(simpleP2P simpleP2P.cu) +if(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64") + message(STATUS "Will not build sample simpleP2P - not supported on aarch64") +else() + add_executable(simpleP2P simpleP2P.cu) -target_compile_options(simpleP2P PRIVATE $<$:--extended-lambda>) + target_compile_options(simpleP2P PRIVATE $<$:--extended-lambda>) -target_compile_features(simpleP2P PRIVATE cxx_std_17 cuda_std_17) + target_compile_features(simpleP2P PRIVATE cxx_std_17 cuda_std_17) -set_target_properties(simpleP2P PROPERTIES CUDA_SEPARABLE_COMPILATION ON) + set_target_properties(simpleP2P PROPERTIES CUDA_SEPARABLE_COMPILATION ON) +endif() \ No newline at end of file diff --git a/Samples/0_Introduction/systemWideAtomics/CMakeLists.txt b/Samples/0_Introduction/systemWideAtomics/CMakeLists.txt index da4e588a..23ce1316 100644 --- a/Samples/0_Introduction/systemWideAtomics/CMakeLists.txt +++ b/Samples/0_Introduction/systemWideAtomics/CMakeLists.txt @@ -14,17 +14,21 @@ endif() # Include directories and libraries include_directories(../../../Common) -if(CMAKE_SYSTEM_NAME STREQUAL "Linux") -# Source file -# Add target for systemWideAtomics - add_executable(systemWideAtomics systemWideAtomics.cu) - - target_compile_options(systemWideAtomics PRIVATE $<$:--extended-lambda>) - - target_compile_features(systemWideAtomics PRIVATE cxx_std_17 cuda_std_17) - - set_target_properties(systemWideAtomics PROPERTIES CUDA_SEPARABLE_COMPILATION ON) - +if(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64") + message(STATUS "Will not build sample systemWideAtomics - not supported on aarch64") else() - message(STATUS "Will not build sample systemWideAtomics - requires Linux OS") + if(CMAKE_SYSTEM_NAME STREQUAL "Linux") + # Source file + # Add target for systemWideAtomics + add_executable(systemWideAtomics systemWideAtomics.cu) + + target_compile_options(systemWideAtomics PRIVATE $<$:--extended-lambda>) + + target_compile_features(systemWideAtomics PRIVATE cxx_std_17 cuda_std_17) + + set_target_properties(systemWideAtomics PROPERTIES CUDA_SEPARABLE_COMPILATION ON) + + else() + message(STATUS "Will not build sample systemWideAtomics - requires Linux OS") + endif() endif() diff --git a/Samples/0_Introduction/vectorAddMMAP/CMakeLists.txt b/Samples/0_Introduction/vectorAddMMAP/CMakeLists.txt index b4748485..0b5f0f09 100644 --- a/Samples/0_Introduction/vectorAddMMAP/CMakeLists.txt +++ b/Samples/0_Introduction/vectorAddMMAP/CMakeLists.txt @@ -16,33 +16,37 @@ include_directories(../../../Common) # Source file # Add target for vectorAddMMAP -add_executable(vectorAddMMAP vectorAddMMAP.cpp multidevicealloc_memmap.cpp) +if(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64") + message(STATUS "Will not build sample vectorAddMMAP - not supported on aarch64") +else() + add_executable(vectorAddMMAP vectorAddMMAP.cpp multidevicealloc_memmap.cpp) -target_compile_options(vectorAddMMAP PRIVATE $<$:--extended-lambda>) + target_compile_options(vectorAddMMAP PRIVATE $<$:--extended-lambda>) -target_compile_features(vectorAddMMAP PRIVATE cxx_std_17 cuda_std_17) + target_compile_features(vectorAddMMAP PRIVATE cxx_std_17 cuda_std_17) -set_target_properties(vectorAddMMAP PROPERTIES CUDA_SEPARABLE_COMPILATION ON) -target_include_directories(vectorAddMMAP PRIVATE - ${CUDAToolkit_INCLUDE_DIRS} -) + set_target_properties(vectorAddMMAP PROPERTIES CUDA_SEPARABLE_COMPILATION ON) + target_include_directories(vectorAddMMAP PRIVATE + ${CUDAToolkit_INCLUDE_DIRS} + ) -target_link_libraries(vectorAddMMAP PUBLIC - CUDA::cuda_driver -) + target_link_libraries(vectorAddMMAP PUBLIC + CUDA::cuda_driver + ) -set(CUDA_FATBIN_FILE "${CMAKE_CURRENT_BINARY_DIR}/vectorAdd_kernel64.fatbin") -set(CUDA_KERNEL_SOURCE "${CMAKE_CURRENT_SOURCE_DIR}/vectorAdd_kernel.cu") + set(CUDA_FATBIN_FILE "${CMAKE_CURRENT_BINARY_DIR}/vectorAdd_kernel64.fatbin") + set(CUDA_KERNEL_SOURCE "${CMAKE_CURRENT_SOURCE_DIR}/vectorAdd_kernel.cu") -add_custom_command( - OUTPUT ${CUDA_FATBIN_FILE} - COMMAND ${CMAKE_CUDA_COMPILER} ${INCLUDES} ${ALL_CCFLAGS} ${GENCODE_FLAGS} -o ${CUDA_FATBIN_FILE} -fatbin ${CUDA_KERNEL_SOURCE} - DEPENDS ${CUDA_KERNEL_SOURCE} - COMMENT "Building CUDA fatbin: ${CUDA_FATBIN_FILE}" -) + add_custom_command( + OUTPUT ${CUDA_FATBIN_FILE} + COMMAND ${CMAKE_CUDA_COMPILER} ${INCLUDES} ${ALL_CCFLAGS} ${GENCODE_FLAGS} -o ${CUDA_FATBIN_FILE} -fatbin ${CUDA_KERNEL_SOURCE} + DEPENDS ${CUDA_KERNEL_SOURCE} + COMMENT "Building CUDA fatbin: ${CUDA_FATBIN_FILE}" + ) -# Create a dummy target for fatbin generation -add_custom_target(generate_fatbin_vectorAddMMAP ALL DEPENDS ${CUDA_FATBIN_FILE}) + # Create a dummy target for fatbin generation + add_custom_target(generate_fatbin_vectorAddMMAP ALL DEPENDS ${CUDA_FATBIN_FILE}) -# Ensure matrixMulDrv depends on the fatbin -add_dependencies(vectorAddMMAP generate_fatbin_vectorAddMMAP) + # Ensure matrixMulDrv depends on the fatbin + add_dependencies(vectorAddMMAP generate_fatbin_vectorAddMMAP) +endif() \ No newline at end of file diff --git a/Samples/1_Utilities/topologyQuery/CMakeLists.txt b/Samples/1_Utilities/topologyQuery/CMakeLists.txt index fd8bde0a..59f854e5 100644 --- a/Samples/1_Utilities/topologyQuery/CMakeLists.txt +++ b/Samples/1_Utilities/topologyQuery/CMakeLists.txt @@ -14,12 +14,16 @@ endif() # Include directories and libraries include_directories(../../../Common) -# Source file -# Add target for topologyQuery -add_executable(topologyQuery topologyQuery.cu) +if(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64") + message(STATUS "Will not build sample topologyQuery - not supported on aarch64") +else() + # Source file + # Add target for topologyQuery + add_executable(topologyQuery topologyQuery.cu) -target_compile_options(topologyQuery PRIVATE $<$:--extended-lambda>) + target_compile_options(topologyQuery PRIVATE $<$:--extended-lambda>) -target_compile_features(topologyQuery PRIVATE cxx_std_17 cuda_std_17) + target_compile_features(topologyQuery PRIVATE cxx_std_17 cuda_std_17) -set_target_properties(topologyQuery PROPERTIES CUDA_SEPARABLE_COMPILATION ON) + set_target_properties(topologyQuery PROPERTIES CUDA_SEPARABLE_COMPILATION ON) +endif() \ No newline at end of file diff --git a/Samples/2_Concepts_and_Techniques/streamOrderedAllocationIPC/CMakeLists.txt b/Samples/2_Concepts_and_Techniques/streamOrderedAllocationIPC/CMakeLists.txt index 4d147b83..66e82530 100644 --- a/Samples/2_Concepts_and_Techniques/streamOrderedAllocationIPC/CMakeLists.txt +++ b/Samples/2_Concepts_and_Techniques/streamOrderedAllocationIPC/CMakeLists.txt @@ -17,17 +17,21 @@ include_directories(../../../Common) if(CMAKE_SYSTEM_NAME STREQUAL "Linux") # Source file # Add target for streamOrderedAllocationIPC - add_executable(streamOrderedAllocationIPC streamOrderedAllocationIPC.cu ../../../Common/helper_multiprocess.cpp) + if(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64") + message(STATUS "Will not build sample streamOrderedAllocationIPC - not supported on aarch64") + else() + add_executable(streamOrderedAllocationIPC streamOrderedAllocationIPC.cu ../../../Common/helper_multiprocess.cpp) - target_compile_options(streamOrderedAllocationIPC PRIVATE $<$:--extended-lambda>) + target_compile_options(streamOrderedAllocationIPC PRIVATE $<$:--extended-lambda>) - target_compile_features(streamOrderedAllocationIPC PRIVATE cxx_std_17 cuda_std_17) + target_compile_features(streamOrderedAllocationIPC PRIVATE cxx_std_17 cuda_std_17) - set_target_properties(streamOrderedAllocationIPC PROPERTIES CUDA_SEPARABLE_COMPILATION ON) + set_target_properties(streamOrderedAllocationIPC PROPERTIES CUDA_SEPARABLE_COMPILATION ON) - target_link_libraries(streamOrderedAllocationIPC PUBLIC - CUDA::cuda_driver -) + target_link_libraries(streamOrderedAllocationIPC PUBLIC + CUDA::cuda_driver + ) + endif() else() message(STATUS "Will not build sample streamOrderedAllocationIPC - requires Linux OS") endif() diff --git a/Samples/3_CUDA_Features/StreamPriorities/CMakeLists.txt b/Samples/3_CUDA_Features/StreamPriorities/CMakeLists.txt index 70fb9de1..c30749b1 100644 --- a/Samples/3_CUDA_Features/StreamPriorities/CMakeLists.txt +++ b/Samples/3_CUDA_Features/StreamPriorities/CMakeLists.txt @@ -17,13 +17,17 @@ include_directories(../../../Common) if(CMAKE_SYSTEM_NAME STREQUAL "Linux") # Source file # Add target for StreamPriorities - add_executable(StreamPriorities StreamPriorities.cu) + if(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64") + message(STATUS "Will not build sample streamPriorities - not supported on aarch64") + else() + add_executable(StreamPriorities StreamPriorities.cu) - target_compile_options(StreamPriorities PRIVATE $<$:--extended-lambda>) + target_compile_options(StreamPriorities PRIVATE $<$:--extended-lambda>) - target_compile_features(StreamPriorities PRIVATE cxx_std_17 cuda_std_17) + target_compile_features(StreamPriorities PRIVATE cxx_std_17 cuda_std_17) - set_target_properties(StreamPriorities PROPERTIES CUDA_SEPARABLE_COMPILATION ON) + set_target_properties(StreamPriorities PROPERTIES CUDA_SEPARABLE_COMPILATION ON) + endif() else() message(STATUS "Will not build sample StreamPriorities - requires Linux OS") endif() diff --git a/Samples/3_CUDA_Features/cdpAdvancedQuicksort/CMakeLists.txt b/Samples/3_CUDA_Features/cdpAdvancedQuicksort/CMakeLists.txt index 8cf8eee7..24510c57 100644 --- a/Samples/3_CUDA_Features/cdpAdvancedQuicksort/CMakeLists.txt +++ b/Samples/3_CUDA_Features/cdpAdvancedQuicksort/CMakeLists.txt @@ -6,7 +6,12 @@ project(cdpAdvancedQuicksort LANGUAGES C CXX CUDA) find_package(CUDAToolkit REQUIRED) -set(CMAKE_CUDA_ARCHITECTURES 50 52 60 61 70 75 80 86 89 90) +if(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64") + set(CMAKE_CUDA_ARCHITECTURES 61 70 75 80 86 87 90) +else() + set(CMAKE_CUDA_ARCHITECTURES 50 52 60 61 70 75 80 86 89 90) +endif() + if(CMAKE_BUILD_TYPE STREQUAL "Debug") # set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -G") # enable cuda-gdb (expensive) endif() diff --git a/Samples/3_CUDA_Features/cdpBezierTessellation/CMakeLists.txt b/Samples/3_CUDA_Features/cdpBezierTessellation/CMakeLists.txt index c2d4cedb..0eaa2e23 100644 --- a/Samples/3_CUDA_Features/cdpBezierTessellation/CMakeLists.txt +++ b/Samples/3_CUDA_Features/cdpBezierTessellation/CMakeLists.txt @@ -6,7 +6,12 @@ project(cdpBezierTessellation LANGUAGES C CXX CUDA) find_package(CUDAToolkit REQUIRED) -set(CMAKE_CUDA_ARCHITECTURES 50 52 60 61 70 75 80 86 89 90) +if(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64") + set(CMAKE_CUDA_ARCHITECTURES 61 70 75 80 86 87 90) +else() + set(CMAKE_CUDA_ARCHITECTURES 50 52 60 61 70 75 80 86 89 90) +endif() + if(CMAKE_BUILD_TYPE STREQUAL "Debug") # set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -G") # enable cuda-gdb (expensive) endif() diff --git a/Samples/3_CUDA_Features/cdpQuadtree/CMakeLists.txt b/Samples/3_CUDA_Features/cdpQuadtree/CMakeLists.txt index e93e86ab..8fa2cc38 100644 --- a/Samples/3_CUDA_Features/cdpQuadtree/CMakeLists.txt +++ b/Samples/3_CUDA_Features/cdpQuadtree/CMakeLists.txt @@ -6,7 +6,12 @@ project(cdpQuadtree LANGUAGES C CXX CUDA) find_package(CUDAToolkit REQUIRED) -set(CMAKE_CUDA_ARCHITECTURES 50 52 60 61 70 75 80 86 89 90) +if(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64") + set(CMAKE_CUDA_ARCHITECTURES 61 70 75 80 86 87 90) +else() + set(CMAKE_CUDA_ARCHITECTURES 50 52 60 61 70 75 80 86 89 90) +endif() + if(CMAKE_BUILD_TYPE STREQUAL "Debug") # set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -G") # enable cuda-gdb (expensive) endif() diff --git a/Samples/3_CUDA_Features/cdpSimplePrint/CMakeLists.txt b/Samples/3_CUDA_Features/cdpSimplePrint/CMakeLists.txt index 40dd9cd8..97fa543d 100644 --- a/Samples/3_CUDA_Features/cdpSimplePrint/CMakeLists.txt +++ b/Samples/3_CUDA_Features/cdpSimplePrint/CMakeLists.txt @@ -6,7 +6,12 @@ project(cdpSimplePrint LANGUAGES C CXX CUDA) find_package(CUDAToolkit REQUIRED) -set(CMAKE_CUDA_ARCHITECTURES 50 52 60 61 70 75 80 86 89 90) +if(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64") + set(CMAKE_CUDA_ARCHITECTURES 61 70 75 80 86 87 90) +else() + set(CMAKE_CUDA_ARCHITECTURES 50 52 60 61 70 75 80 86 89 90) +endif() + if(CMAKE_BUILD_TYPE STREQUAL "Debug") # set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -G") # enable cuda-gdb (expensive) endif() diff --git a/Samples/3_CUDA_Features/cdpSimpleQuicksort/CMakeLists.txt b/Samples/3_CUDA_Features/cdpSimpleQuicksort/CMakeLists.txt index f6835ba0..ae81d58b 100644 --- a/Samples/3_CUDA_Features/cdpSimpleQuicksort/CMakeLists.txt +++ b/Samples/3_CUDA_Features/cdpSimpleQuicksort/CMakeLists.txt @@ -6,7 +6,12 @@ project(cdpSimpleQuicksort LANGUAGES C CXX CUDA) find_package(CUDAToolkit REQUIRED) -set(CMAKE_CUDA_ARCHITECTURES 50 52 60 61 70 75 80 86 89 90) +if(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64") + set(CMAKE_CUDA_ARCHITECTURES 61 70 75 80 86 87 90) +else() + set(CMAKE_CUDA_ARCHITECTURES 50 52 60 61 70 75 80 86 89 90) +endif() + if(CMAKE_BUILD_TYPE STREQUAL "Debug") # set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -G") # enable cuda-gdb (expensive) endif() diff --git a/Samples/4_CUDA_Libraries/nvJPEG/CMakeLists.txt b/Samples/4_CUDA_Libraries/nvJPEG/CMakeLists.txt index d36b6006..92383953 100644 --- a/Samples/4_CUDA_Libraries/nvJPEG/CMakeLists.txt +++ b/Samples/4_CUDA_Libraries/nvJPEG/CMakeLists.txt @@ -14,28 +14,34 @@ endif() # Include directories and libraries include_directories(../../../Common) -# Source file -# Add target for nvJPEG -add_executable(nvJPEG nvJPEG.cpp) +if(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64") + message(STATUS "Will not build sample nvJPEG - not supported on aarch64") +else() -target_compile_options(nvJPEG PRIVATE $<$:--extended-lambda>) + # Source file + # Add target for nvJPEG + add_executable(nvJPEG nvJPEG.cpp) -target_compile_features(nvJPEG PRIVATE cxx_std_17 cuda_std_17) + target_compile_options(nvJPEG PRIVATE $<$:--extended-lambda>) -set_target_properties(nvJPEG PROPERTIES CUDA_SEPARABLE_COMPILATION ON) + target_compile_features(nvJPEG PRIVATE cxx_std_17 cuda_std_17) -target_include_directories(nvJPEG PRIVATE - ${CUDAToolkit_INCLUDE_DIRS} -) + set_target_properties(nvJPEG PROPERTIES CUDA_SEPARABLE_COMPILATION ON) -target_link_libraries(nvJPEG PRIVATE - CUDA::cudart - CUDA::nvjpeg -) + target_include_directories(nvJPEG PRIVATE + ${CUDAToolkit_INCLUDE_DIRS} + ) -# Copy data to the output directory -add_custom_command(TARGET nvJPEG POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_directory - ${CMAKE_CURRENT_SOURCE_DIR}/images - ${CMAKE_CURRENT_BINARY_DIR}/images -) + target_link_libraries(nvJPEG PRIVATE + CUDA::cudart + CUDA::nvjpeg + ) + + # Copy data to the output directory + add_custom_command(TARGET nvJPEG POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy_directory + ${CMAKE_CURRENT_SOURCE_DIR}/images + ${CMAKE_CURRENT_BINARY_DIR}/images + ) + +endif() diff --git a/Samples/4_CUDA_Libraries/nvJPEG_encoder/CMakeLists.txt b/Samples/4_CUDA_Libraries/nvJPEG_encoder/CMakeLists.txt index 0ff68146..99134164 100644 --- a/Samples/4_CUDA_Libraries/nvJPEG_encoder/CMakeLists.txt +++ b/Samples/4_CUDA_Libraries/nvJPEG_encoder/CMakeLists.txt @@ -14,34 +14,40 @@ endif() # Include directories and libraries include_directories(../../../Common) -# Source file -# Add target for nvJPEG_encoder -add_executable(nvJPEG_encoder nvJPEG_encoder.cpp) +if(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64") + message(STATUS "Will not build sample nvJPEG_encoder - not supported on aarch64") +else() -target_compile_options(nvJPEG_encoder PRIVATE $<$:--extended-lambda>) + # Source file + # Add target for nvJPEG_encoder + add_executable(nvJPEG_encoder nvJPEG_encoder.cpp) -target_compile_features(nvJPEG_encoder PRIVATE cxx_std_17 cuda_std_17) + target_compile_options(nvJPEG_encoder PRIVATE $<$:--extended-lambda>) -set_target_properties(nvJPEG_encoder PROPERTIES CUDA_SEPARABLE_COMPILATION ON) + target_compile_features(nvJPEG_encoder PRIVATE cxx_std_17 cuda_std_17) -target_include_directories(nvJPEG_encoder PRIVATE - ${CUDAToolkit_INCLUDE_DIRS} -) + set_target_properties(nvJPEG_encoder PROPERTIES CUDA_SEPARABLE_COMPILATION ON) -target_link_libraries(nvJPEG_encoder PRIVATE - CUDA::cudart - CUDA::nvjpeg -) + target_include_directories(nvJPEG_encoder PRIVATE + ${CUDAToolkit_INCLUDE_DIRS} + ) -# Copy data to the output directory -add_custom_command(TARGET nvJPEG_encoder POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_directory - ${CMAKE_CURRENT_SOURCE_DIR}/images - ${CMAKE_CURRENT_BINARY_DIR}/images -) + target_link_libraries(nvJPEG_encoder PRIVATE + CUDA::cudart + CUDA::nvjpeg + ) -add_custom_command(TARGET nvJPEG_encoder POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_directory - ${CMAKE_CURRENT_SOURCE_DIR}/encode_output - ${CMAKE_CURRENT_BINARY_DIR}/encode_output -) + # Copy data to the output directory + add_custom_command(TARGET nvJPEG_encoder POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy_directory + ${CMAKE_CURRENT_SOURCE_DIR}/images + ${CMAKE_CURRENT_BINARY_DIR}/images + ) + + add_custom_command(TARGET nvJPEG_encoder POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy_directory + ${CMAKE_CURRENT_SOURCE_DIR}/encode_output + ${CMAKE_CURRENT_BINARY_DIR}/encode_output + ) + +endif()