1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
|
sight_add_target(io_bitmap TYPE LIBRARY)
target_link_libraries(io_bitmap PUBLIC core data io)
option(SIGHT_ENABLE_NVJPEG "Enable nvJPEG support." OFF)
option(SIGHT_ENABLE_NVJPEG2K "Enable nvJPEG2000 support." OFF)
if(SIGHT_ENABLE_NVJPEG2K)
set(SIGHT_ENABLE_NVJPEG ON FORCE)
endif()
if(SIGHT_ENABLE_NVJPEG)
# Search for CUDA as nvJPEG is bundled with it
if(NOT CUDAToolkit_FOUND)
find_package(CUDAToolkit)
endif()
if(CUDAToolkit_FOUND)
# We found CUDA, so we have nvJPEG
target_compile_definitions(io_bitmap PUBLIC SIGHT_ENABLE_NVJPEG)
target_link_libraries(io_bitmap PRIVATE CUDA::cudart CUDA::nvjpeg CUDA::cuda_driver CUDA::nppidei)
if(SIGHT_ENABLE_NVJPEG2K)
# Search for nvJPEG2000
if(UNIX)
find_library(
NVJPEG2K_LIB NAMES nvjpeg2k_static PATH_SUFFIXES "libnvjpeg2k/${CUDAToolkit_VERSION_MAJOR}"
)
else()
find_library(NVJPEG2K_LIB NAMES nvjpeg2k)
endif()
if("${NVJPEG2K_LIB}" STREQUAL "" OR "${NVJPEG2K_LIB}" STREQUAL "NVJPEG2K_LIB-NOTFOUND")
message(FATAL_ERROR "nvjpeg2k library was not found.")
else()
target_compile_definitions(io_bitmap PUBLIC SIGHT_ENABLE_NVJPEG2K)
message("-- Found nvJPEG2000: ${NVJPEG2K_LIB}")
target_link_libraries(io_bitmap PRIVATE "${NVJPEG2K_LIB}")
if(UNIX)
find_file(NVJPEG2K_HEADER NAMES nvjpeg2k.h PATH_SUFFIXES "libnvjpeg2k/${CUDAToolkit_VERSION_MAJOR}"
REQUIRED
)
cmake_path(GET NVJPEG2K_HEADER PARENT_PATH NVJPEG2K_INCLUDE_DIR)
target_include_directories(io_bitmap PRIVATE "${NVJPEG2K_INCLUDE_DIR}")
endif()
endif()
endif()
else()
message(FATAL_ERROR "CUDA library was not found.")
endif()
endif()
# Use libjpeg-turbo as a fallback
find_package(JPEG QUIET REQUIRED)
target_link_libraries(io_bitmap PRIVATE JPEG::JPEG)
# Use libtiff as fast lossless cpu alternative
find_package(TIFF QUIET REQUIRED)
target_link_libraries(io_bitmap PRIVATE TIFF::TIFF)
# Use libPNG for good mixed capability and maximum compatibility
find_package(PNG QUIET REQUIRED)
target_link_libraries(io_bitmap PRIVATE PNG::PNG)
# Use openJPEG as a fallback for JPEG2K
find_package(OpenJPEG QUIET REQUIRED)
target_link_libraries(io_bitmap PRIVATE openjp2)
# This is needed on Linux because the OpenJPEGConfig.cmake seems to be faulty...
target_include_directories(io_bitmap PRIVATE ${OPENJPEG_INCLUDE_DIRS})
if(SIGHT_BUILD_TESTS)
add_subdirectory(test/ut)
endif(SIGHT_BUILD_TESTS)
|