From cf96fcb509641eed260093a7d7feb3816475c3a7 Mon Sep 17 00:00:00 2001 From: Gigon Bae Date: Mon, 31 Mar 2025 15:13:31 -0700 Subject: [PATCH 01/18] Update fmt library version to 10.1.1 Signed-off-by: Gigon Bae --- cpp/cmake/deps/fmt.cmake | 2 +- cpp/plugins/cucim.kit.cumed/cmake/deps/fmt.cmake | 2 +- cpp/plugins/cucim.kit.cuslide/cmake/deps/fmt.cmake | 2 +- python/cmake/deps/fmt.cmake | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/cpp/cmake/deps/fmt.cmake b/cpp/cmake/deps/fmt.cmake index 2e08bc3bb..9710143ea 100644 --- a/cpp/cmake/deps/fmt.cmake +++ b/cpp/cmake/deps/fmt.cmake @@ -17,7 +17,7 @@ if (NOT TARGET deps::fmt) FetchContent_Declare( deps-fmt GIT_REPOSITORY https://github.com/fmtlib/fmt.git - GIT_TAG 7.0.1 + GIT_TAG 10.1.1 GIT_SHALLOW TRUE EXCLUDE_FROM_ALL ) diff --git a/cpp/plugins/cucim.kit.cumed/cmake/deps/fmt.cmake b/cpp/plugins/cucim.kit.cumed/cmake/deps/fmt.cmake index 965e21530..468e684d3 100644 --- a/cpp/plugins/cucim.kit.cumed/cmake/deps/fmt.cmake +++ b/cpp/plugins/cucim.kit.cumed/cmake/deps/fmt.cmake @@ -17,7 +17,7 @@ if (NOT TARGET deps::fmt) FetchContent_Declare( deps-fmt GIT_REPOSITORY https://github.com/fmtlib/fmt.git - GIT_TAG 7.0.1 + GIT_TAG 10.1.1 GIT_SHALLOW TRUE EXCLUDE_FROM_ALL ) diff --git a/cpp/plugins/cucim.kit.cuslide/cmake/deps/fmt.cmake b/cpp/plugins/cucim.kit.cuslide/cmake/deps/fmt.cmake index 2e08bc3bb..9710143ea 100644 --- a/cpp/plugins/cucim.kit.cuslide/cmake/deps/fmt.cmake +++ b/cpp/plugins/cucim.kit.cuslide/cmake/deps/fmt.cmake @@ -17,7 +17,7 @@ if (NOT TARGET deps::fmt) FetchContent_Declare( deps-fmt GIT_REPOSITORY https://github.com/fmtlib/fmt.git - GIT_TAG 7.0.1 + GIT_TAG 10.1.1 GIT_SHALLOW TRUE EXCLUDE_FROM_ALL ) diff --git a/python/cmake/deps/fmt.cmake b/python/cmake/deps/fmt.cmake index 2e08bc3bb..9710143ea 100644 --- a/python/cmake/deps/fmt.cmake +++ b/python/cmake/deps/fmt.cmake @@ -17,7 +17,7 @@ if (NOT TARGET deps::fmt) FetchContent_Declare( deps-fmt GIT_REPOSITORY https://github.com/fmtlib/fmt.git - GIT_TAG 7.0.1 + GIT_TAG 10.1.1 GIT_SHALLOW TRUE EXCLUDE_FROM_ALL ) From 40e5d0fc242be32285db50eb9a4139467664fe17 Mon Sep 17 00:00:00 2001 From: Gigon Bae Date: Mon, 31 Mar 2025 15:37:48 -0700 Subject: [PATCH 02/18] Update googletest version to v1.16.0 Signed-off-by: Gigon Bae --- cpp/cmake/deps/googletest.cmake | 2 +- cpp/plugins/cucim.kit.cumed/cmake/deps/googletest.cmake | 2 +- cpp/plugins/cucim.kit.cuslide/cmake/deps/googletest.cmake | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cpp/cmake/deps/googletest.cmake b/cpp/cmake/deps/googletest.cmake index c4acc3f51..7f0bc30b4 100644 --- a/cpp/cmake/deps/googletest.cmake +++ b/cpp/cmake/deps/googletest.cmake @@ -17,7 +17,7 @@ if (NOT TARGET deps::googletest) FetchContent_Declare( deps-googletest GIT_REPOSITORY https://github.com/google/googletest.git - GIT_TAG release-1.10.0 + GIT_TAG v1.16.0 GIT_SHALLOW TRUE EXCLUDE_FROM_ALL ) diff --git a/cpp/plugins/cucim.kit.cumed/cmake/deps/googletest.cmake b/cpp/plugins/cucim.kit.cumed/cmake/deps/googletest.cmake index e78f7fbd4..302e07107 100644 --- a/cpp/plugins/cucim.kit.cumed/cmake/deps/googletest.cmake +++ b/cpp/plugins/cucim.kit.cumed/cmake/deps/googletest.cmake @@ -17,7 +17,7 @@ if (NOT TARGET deps::googletest) FetchContent_Declare( deps-googletest GIT_REPOSITORY https://github.com/google/googletest.git - GIT_TAG release-1.10.0 + GIT_TAG v1.16.0 GIT_SHALLOW TRUE EXCLUDE_FROM_ALL ) diff --git a/cpp/plugins/cucim.kit.cuslide/cmake/deps/googletest.cmake b/cpp/plugins/cucim.kit.cuslide/cmake/deps/googletest.cmake index c4acc3f51..7f0bc30b4 100644 --- a/cpp/plugins/cucim.kit.cuslide/cmake/deps/googletest.cmake +++ b/cpp/plugins/cucim.kit.cuslide/cmake/deps/googletest.cmake @@ -17,7 +17,7 @@ if (NOT TARGET deps::googletest) FetchContent_Declare( deps-googletest GIT_REPOSITORY https://github.com/google/googletest.git - GIT_TAG release-1.10.0 + GIT_TAG v1.16.0 GIT_SHALLOW TRUE EXCLUDE_FROM_ALL ) From 7a6753bc4877dc8a45c6c0a5b14fb5681addfb2b Mon Sep 17 00:00:00 2001 From: Gigon Bae Date: Mon, 31 Mar 2025 15:49:41 -0700 Subject: [PATCH 03/18] Update CLI11 dependency version to v2.5.0 Signed-off-by: Gigon Bae --- cpp/cmake/deps/cli11.cmake | 2 +- cpp/plugins/cucim.kit.cumed/cmake/deps/cli11.cmake | 2 +- cpp/plugins/cucim.kit.cuslide/cmake/deps/cli11.cmake | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cpp/cmake/deps/cli11.cmake b/cpp/cmake/deps/cli11.cmake index b4d7b5e10..03370cf53 100644 --- a/cpp/cmake/deps/cli11.cmake +++ b/cpp/cmake/deps/cli11.cmake @@ -17,7 +17,7 @@ if (NOT TARGET deps::cli11) FetchContent_Declare( deps-cli11 GIT_REPOSITORY https://github.com/CLIUtils/CLI11.git - GIT_TAG v1.9.1 + GIT_TAG v2.5.0 GIT_SHALLOW TRUE EXCLUDE_FROM_ALL ) diff --git a/cpp/plugins/cucim.kit.cumed/cmake/deps/cli11.cmake b/cpp/plugins/cucim.kit.cumed/cmake/deps/cli11.cmake index 03c2888c6..389d27f34 100644 --- a/cpp/plugins/cucim.kit.cumed/cmake/deps/cli11.cmake +++ b/cpp/plugins/cucim.kit.cumed/cmake/deps/cli11.cmake @@ -17,7 +17,7 @@ if (NOT TARGET deps::cli11) FetchContent_Declare( deps-cli11 GIT_REPOSITORY https://github.com/CLIUtils/CLI11.git - GIT_TAG v1.9.1 + GIT_TAG v2.5.0 GIT_SHALLOW TRUE EXCLUDE_FROM_ALL ) diff --git a/cpp/plugins/cucim.kit.cuslide/cmake/deps/cli11.cmake b/cpp/plugins/cucim.kit.cuslide/cmake/deps/cli11.cmake index b4d7b5e10..03370cf53 100644 --- a/cpp/plugins/cucim.kit.cuslide/cmake/deps/cli11.cmake +++ b/cpp/plugins/cucim.kit.cuslide/cmake/deps/cli11.cmake @@ -17,7 +17,7 @@ if (NOT TARGET deps::cli11) FetchContent_Declare( deps-cli11 GIT_REPOSITORY https://github.com/CLIUtils/CLI11.git - GIT_TAG v1.9.1 + GIT_TAG v2.5.0 GIT_SHALLOW TRUE EXCLUDE_FROM_ALL ) From 5a0c2efafad91baca3c79d3c3328a0e97c960458 Mon Sep 17 00:00:00 2001 From: Gigon Bae Date: Mon, 31 Mar 2025 16:09:24 -0700 Subject: [PATCH 04/18] Update nlohmann/json dependency version to v3.11.3 Signed-off-by: Gigon Bae --- cpp/cmake/deps/json.cmake | 2 +- cpp/plugins/cucim.kit.cuslide/cmake/deps/json.cmake | 2 +- python/cmake/deps/json.cmake | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cpp/cmake/deps/json.cmake b/cpp/cmake/deps/json.cmake index a22f3c638..e164b6e40 100644 --- a/cpp/cmake/deps/json.cmake +++ b/cpp/cmake/deps/json.cmake @@ -17,7 +17,7 @@ if (NOT TARGET deps::json) FetchContent_Declare( deps-json GIT_REPOSITORY https://github.com/nlohmann/json.git - GIT_TAG v3.9.1 + GIT_TAG v3.11.3 GIT_SHALLOW TRUE EXCLUDE_FROM_ALL ) diff --git a/cpp/plugins/cucim.kit.cuslide/cmake/deps/json.cmake b/cpp/plugins/cucim.kit.cuslide/cmake/deps/json.cmake index a22f3c638..e164b6e40 100644 --- a/cpp/plugins/cucim.kit.cuslide/cmake/deps/json.cmake +++ b/cpp/plugins/cucim.kit.cuslide/cmake/deps/json.cmake @@ -17,7 +17,7 @@ if (NOT TARGET deps::json) FetchContent_Declare( deps-json GIT_REPOSITORY https://github.com/nlohmann/json.git - GIT_TAG v3.9.1 + GIT_TAG v3.11.3 GIT_SHALLOW TRUE EXCLUDE_FROM_ALL ) diff --git a/python/cmake/deps/json.cmake b/python/cmake/deps/json.cmake index a22f3c638..e164b6e40 100644 --- a/python/cmake/deps/json.cmake +++ b/python/cmake/deps/json.cmake @@ -17,7 +17,7 @@ if (NOT TARGET deps::json) FetchContent_Declare( deps-json GIT_REPOSITORY https://github.com/nlohmann/json.git - GIT_TAG v3.9.1 + GIT_TAG v3.11.3 GIT_SHALLOW TRUE EXCLUDE_FROM_ALL ) From aa396276d858595ae74ff3fdf30b580a86fab5ab Mon Sep 17 00:00:00 2001 From: Gigon Bae Date: Mon, 31 Mar 2025 16:41:12 -0700 Subject: [PATCH 05/18] Handle fmt version upgrade Updated error reporting in CUDA and NVJPEG functions to cast status codes to integers for clearer output. This change enhances the readability of error messages by ensuring that the status codes are displayed as integers rather than their default types. Without this changes, it causes error, demanding the template method for the custom types. Signed-off-by: Gigon Bae --- cpp/include/cucim/util/cuda.h | 8 ++++---- cpp/src/cache/image_cache_per_process.cpp | 4 ++-- cpp/src/cuimage.cpp | 6 +++--- cpp/src/loader/thread_batch_data_loader.cpp | 6 +++--- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/cpp/include/cucim/util/cuda.h b/cpp/include/cucim/util/cuda.h index 12f161f1e..08728fc4d 100644 --- a/cpp/include/cucim/util/cuda.h +++ b/cpp/include/cucim/util/cuda.h @@ -28,7 +28,7 @@ if (cudaSuccess != cuda_status) \ { \ fmt::print(stderr, "[Error] CUDA Runtime call {} in line {} of file {} failed with '{}' ({}).\n", #stmt, \ - __LINE__, __FILE__, cudaGetErrorString(cuda_status), cuda_status); \ + __LINE__, __FILE__, cudaGetErrorString(cuda_status), static_cast(cuda_status)); \ } \ } @@ -39,7 +39,7 @@ { \ throw std::runtime_error( \ fmt::format("[Error] CUDA Runtime call {} in line {} of file {} failed with '{}' ({}).\n", #stmt, \ - __LINE__, __FILE__, cudaGetErrorString(cuda_status), cuda_status)); \ + __LINE__, __FILE__, cudaGetErrorString(cuda_status), static_cast(cuda_status))); \ } \ } @@ -49,7 +49,7 @@ if (_nvjpeg_status != NVJPEG_STATUS_SUCCESS) \ { \ fmt::print("[Error] NVJPEG call {} in line {} of file {} failed with the error code {}.\n", #stmt, \ - __LINE__, __FILE__, _nvjpeg_status)); \ + __LINE__, __FILE__, static_cast(_nvjpeg_status)); \ } \ } @@ -60,7 +60,7 @@ { \ throw std::runtime_error( \ fmt::format("[Error] NVJPEG call {} in line {} of file {} failed with the error code {}.\n", #stmt, \ - __LINE__, __FILE__, _nvjpeg_status)); \ + __LINE__, __FILE__, static_cast(_nvjpeg_status))); \ } \ } diff --git a/cpp/src/cache/image_cache_per_process.cpp b/cpp/src/cache/image_cache_per_process.cpp index ca1b2f6f0..44f716d8b 100644 --- a/cpp/src/cache/image_cache_per_process.cpp +++ b/cpp/src/cache/image_cache_per_process.cpp @@ -79,7 +79,7 @@ PerProcessImageCacheValue::~PerProcessImageCacheValue() case io::DeviceType::kCUDAManaged: case io::DeviceType::kCPUShared: case io::DeviceType::kCUDAShared: - fmt::print(stderr, "Device type {} is not supported!\n", device_type); + fmt::print(stderr, "Device type {} is not supported!\n", static_cast(device_type)); break; } data = nullptr; @@ -134,7 +134,7 @@ void* PerProcessImageCache::allocate(std::size_t n) case io::DeviceType::kCUDAManaged: case io::DeviceType::kCPUShared: case io::DeviceType::kCUDAShared: - fmt::print(stderr, "Device type {} is not supported!\n", device_type_); + fmt::print(stderr, "Device type {} is not supported!\n", static_cast(device_type_)); break; } return nullptr; diff --git a/cpp/src/cuimage.cpp b/cpp/src/cuimage.cpp index e4dd435ea..c5c84fb06 100644 --- a/cpp/src/cuimage.cpp +++ b/cpp/src/cuimage.cpp @@ -299,7 +299,7 @@ CuImage::~CuImage() case io::DeviceType::kCUDAManaged: case io::DeviceType::kCPUShared: case io::DeviceType::kCUDAShared: - fmt::print(stderr, "Device type {} is not supported!\n", device_type); + fmt::print(stderr, "Device type {} is not supported!\n", static_cast(device_type)); break; } } @@ -1231,7 +1231,7 @@ bool CuImage::crop_image(const io::format::ImageReaderRegionRequestDesc& request case cucim::io::DeviceType::kCUDAManaged: case cucim::io::DeviceType::kCPUShared: case cucim::io::DeviceType::kCUDAShared: - throw std::runtime_error(fmt::format("Device type {} not supported!", in_device.type())); + throw std::runtime_error(fmt::format("Device type {} not supported!", static_cast(in_device.type()))); break; } @@ -1443,7 +1443,7 @@ void CuImageIterator::increase_index_() case io::DeviceType::kCUDAManaged: case io::DeviceType::kCPUShared: case io::DeviceType::kCUDAShared: - fmt::print(stderr, "Device type {} is not supported!\n", device_type); + fmt::print(stderr, "Device type {} is not supported!\n", static_cast(device_type)); break; } diff --git a/cpp/src/loader/thread_batch_data_loader.cpp b/cpp/src/loader/thread_batch_data_loader.cpp index 9aff2d88c..cba84b4a7 100644 --- a/cpp/src/loader/thread_batch_data_loader.cpp +++ b/cpp/src/loader/thread_batch_data_loader.cpp @@ -78,7 +78,7 @@ ThreadBatchDataLoader::ThreadBatchDataLoader(LoadFunc load_func, case io::DeviceType::kCUDAManaged: case io::DeviceType::kCPUShared: case io::DeviceType::kCUDAShared: - fmt::print(stderr, "Device type {} is not supported!\n", device_type); + fmt::print(stderr, "Device type {} is not supported!\n", static_cast(device_type)); break; } } @@ -112,7 +112,7 @@ ThreadBatchDataLoader::~ThreadBatchDataLoader() case io::DeviceType::kCUDAManaged: case io::DeviceType::kCPUShared: case io::DeviceType::kCUDAShared: - fmt::print(stderr, "Device type {} is not supported!", device_type); + fmt::print(stderr, "Device type {} is not supported!", static_cast(device_type)); break; } raster_ptr = nullptr; @@ -243,7 +243,7 @@ uint8_t* ThreadBatchDataLoader::next_data() case io::DeviceType::kCUDAManaged: case io::DeviceType::kCPUShared: case io::DeviceType::kCUDAShared: - fmt::print(stderr, "Device type {} is not supported!\n", device_type); + fmt::print(stderr, "Device type {} is not supported!\n", static_cast(device_type)); break; } From 523730fd842f2397edb490e94002ad2ff1b017de Mon Sep 17 00:00:00 2001 From: Gigon Bae Date: Mon, 31 Mar 2025 16:41:29 -0700 Subject: [PATCH 06/18] Update CMake minimum version to 3.30.0 in libcuckoo.patch This change ensures compatibility with newer features and improvements in CMake, enhancing the build process for the libcuckoo library. Signed-off-by: Gigon Bae --- cpp/cmake/deps/libcuckoo.patch | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/cpp/cmake/deps/libcuckoo.patch b/cpp/cmake/deps/libcuckoo.patch index 831b63f18..9177502cb 100644 --- a/cpp/cmake/deps/libcuckoo.patch +++ b/cpp/cmake/deps/libcuckoo.patch @@ -1,3 +1,14 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 787def5..db8dfc1 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -1,4 +1,5 @@ +-cmake_minimum_required(VERSION 3.1.0) ++# [cuCIM patch] Set minimum CMake version to 3.30.0 ++cmake_minimum_required(VERSION 3.30.0) + project(libcuckoo LANGUAGES C CXX) + + set(libcuckoo_VERSION_MAJOR 0) diff --git a/libcuckoo/cuckoohash_map.hh b/libcuckoo/cuckoohash_map.hh index 88f1f43..a36c273 100644 --- a/libcuckoo/cuckoohash_map.hh From fae91c70f9a338900deca77f156775ac90fb48a7 Mon Sep 17 00:00:00 2001 From: Gigon Bae Date: Mon, 31 Mar 2025 16:44:46 -0700 Subject: [PATCH 07/18] Do not call catch_discover_tests() in CMakeLists.txt Do not use catch_discover_tests() since it causes a test to be run at build time and somehow it causes a deadlock/segfault during the build. Signed-off-by: Gigon Bae --- cpp/plugins/cucim.kit.cumed/tests/CMakeLists.txt | 4 +++- cpp/plugins/cucim.kit.cuslide/tests/CMakeLists.txt | 4 +++- cpp/tests/CMakeLists.txt | 4 +++- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/cpp/plugins/cucim.kit.cumed/tests/CMakeLists.txt b/cpp/plugins/cucim.kit.cumed/tests/CMakeLists.txt index 262c02499..698dcf8d6 100644 --- a/cpp/plugins/cucim.kit.cumed/tests/CMakeLists.txt +++ b/cpp/plugins/cucim.kit.cumed/tests/CMakeLists.txt @@ -59,4 +59,6 @@ target_include_directories(cumed_tests include(Catch) # See https://github.com/catchorg/Catch2/blob/devel/docs/cmake-integration.md#catchcmake-and-catchaddtestscmake for other options -catch_discover_tests(cumed_tests) +# Do not use catch_discover_tests() since it causes a test to be run at build time +# and somehow it causes a deadlock during the build. +# catch_discover_tests(cumed_tests) diff --git a/cpp/plugins/cucim.kit.cuslide/tests/CMakeLists.txt b/cpp/plugins/cucim.kit.cuslide/tests/CMakeLists.txt index 3b9bde713..4b36677f1 100644 --- a/cpp/plugins/cucim.kit.cuslide/tests/CMakeLists.txt +++ b/cpp/plugins/cucim.kit.cuslide/tests/CMakeLists.txt @@ -62,4 +62,6 @@ target_include_directories(cuslide_tests include(Catch) # See https://github.com/catchorg/Catch2/blob/devel/docs/cmake-integration.md#catchcmake-and-catchaddtestscmake for other options -catch_discover_tests(cuslide_tests) +# Do not use catch_discover_tests() since it causes a test to be run at build time +# and somehow it causes a deadlock during the build. +# catch_discover_tests(cuslide_tests) diff --git a/cpp/tests/CMakeLists.txt b/cpp/tests/CMakeLists.txt index dfd619b24..8fc9afbd8 100644 --- a/cpp/tests/CMakeLists.txt +++ b/cpp/tests/CMakeLists.txt @@ -62,4 +62,6 @@ target_link_libraries(cucim_tests include(Catch) # See https://github.com/catchorg/Catch2/blob/devel/docs/cmake-integration.md#catchcmake-and-catchaddtestscmake for other options -catch_discover_tests(cucim_tests) +# Do not use catch_discover_tests() since it causes a test to be run at build time +# and somehow it causes a deadlock during the build. +# catch_discover_tests(cucim_tests) From b0fbdf6638446e0a81b0d8c8d86566496658a68c Mon Sep 17 00:00:00 2001 From: Gigon Bae Date: Mon, 31 Mar 2025 16:53:00 -0700 Subject: [PATCH 08/18] Add patch command for libjpeg-turbo and update CMake minimum version Signed-off-by: Gigon Bae --- .../cucim.kit.cuslide/cmake/deps/libjpeg-turbo.cmake | 1 + .../cucim.kit.cuslide/cmake/deps/libjpeg-turbo.patch | 11 +++++++++++ 2 files changed, 12 insertions(+) create mode 100644 cpp/plugins/cucim.kit.cuslide/cmake/deps/libjpeg-turbo.patch diff --git a/cpp/plugins/cucim.kit.cuslide/cmake/deps/libjpeg-turbo.cmake b/cpp/plugins/cucim.kit.cuslide/cmake/deps/libjpeg-turbo.cmake index 3067ee3d4..bc4998987 100644 --- a/cpp/plugins/cucim.kit.cuslide/cmake/deps/libjpeg-turbo.cmake +++ b/cpp/plugins/cucim.kit.cuslide/cmake/deps/libjpeg-turbo.cmake @@ -26,6 +26,7 @@ if (NOT TARGET deps::libjpeg-turbo) GIT_REPOSITORY https://github.com/libjpeg-turbo/libjpeg-turbo.git GIT_TAG 2.0.6 GIT_SHALLOW TRUE + PATCH_COMMAND ${GIT_EXECUTABLE} apply "${CMAKE_CURRENT_LIST_DIR}/libjpeg-turbo.patch" EXCLUDE_FROM_ALL ) diff --git a/cpp/plugins/cucim.kit.cuslide/cmake/deps/libjpeg-turbo.patch b/cpp/plugins/cucim.kit.cuslide/cmake/deps/libjpeg-turbo.patch new file mode 100644 index 000000000..a68bbce1d --- /dev/null +++ b/cpp/plugins/cucim.kit.cuslide/cmake/deps/libjpeg-turbo.patch @@ -0,0 +1,11 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index a8329097..f906d926 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -1,4 +1,5 @@ +-cmake_minimum_required(VERSION 2.8.12) ++# [cuCIM patch] Set minimum CMake version to 3.30.0 ++cmake_minimum_required(VERSION 3.30.0) + + if(CMAKE_EXECUTABLE_SUFFIX) + set(CMAKE_EXECUTABLE_SUFFIX_TMP ${CMAKE_EXECUTABLE_SUFFIX}) From 2823f327af783e9b704ed45b5cbb2430ec00399f Mon Sep 17 00:00:00 2001 From: Gigon Bae Date: Mon, 31 Mar 2025 17:01:01 -0700 Subject: [PATCH 09/18] Update libopenjpeg dependency version to v2.5.3 Signed-off-by: Gigon Bae --- cpp/plugins/cucim.kit.cuslide/cmake/deps/libopenjpeg.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpp/plugins/cucim.kit.cuslide/cmake/deps/libopenjpeg.cmake b/cpp/plugins/cucim.kit.cuslide/cmake/deps/libopenjpeg.cmake index 01d543f9e..98a457bb6 100644 --- a/cpp/plugins/cucim.kit.cuslide/cmake/deps/libopenjpeg.cmake +++ b/cpp/plugins/cucim.kit.cuslide/cmake/deps/libopenjpeg.cmake @@ -18,7 +18,7 @@ if (NOT TARGET deps::libopenjpeg) FetchContent_Declare( deps-libopenjpeg GIT_REPOSITORY https://github.com/uclouvain/openjpeg.git - GIT_TAG v2.5.0 + GIT_TAG v2.5.3 GIT_SHALLOW TRUE ) From 20f787498dbaeb9918dc02414bd9ed77227eb56b Mon Sep 17 00:00:00 2001 From: Gigon Bae Date: Mon, 31 Mar 2025 17:01:09 -0700 Subject: [PATCH 10/18] Update libtiff dependency version to v4.5.0 Signed-off-by: Gigon Bae --- cpp/plugins/cucim.kit.cuslide/cmake/deps/libtiff.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpp/plugins/cucim.kit.cuslide/cmake/deps/libtiff.cmake b/cpp/plugins/cucim.kit.cuslide/cmake/deps/libtiff.cmake index dedee740a..a28313a4b 100644 --- a/cpp/plugins/cucim.kit.cuslide/cmake/deps/libtiff.cmake +++ b/cpp/plugins/cucim.kit.cuslide/cmake/deps/libtiff.cmake @@ -24,7 +24,7 @@ if (NOT TARGET deps::libtiff) FetchContent_Declare( deps-libtiff GIT_REPOSITORY https://gitlab.com/libtiff/libtiff.git - GIT_TAG v4.1.0 + GIT_TAG v4.5.0 GIT_SHALLOW TRUE EXCLUDE_FROM_ALL ) From a1fc4dd60697b3ff2a33120641f02a723779ecb8 Mon Sep 17 00:00:00 2001 From: Gigon Bae Date: Mon, 31 Mar 2025 17:01:20 -0700 Subject: [PATCH 11/18] Update pugixml dependency version to v1.15 Signed-off-by: Gigon Bae --- cpp/plugins/cucim.kit.cuslide/cmake/deps/pugixml.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpp/plugins/cucim.kit.cuslide/cmake/deps/pugixml.cmake b/cpp/plugins/cucim.kit.cuslide/cmake/deps/pugixml.cmake index 7db330324..7237f0576 100644 --- a/cpp/plugins/cucim.kit.cuslide/cmake/deps/pugixml.cmake +++ b/cpp/plugins/cucim.kit.cuslide/cmake/deps/pugixml.cmake @@ -17,7 +17,7 @@ if (NOT TARGET deps::pugixml) FetchContent_Declare( deps-pugixml GIT_REPOSITORY https://github.com/zeux/pugixml.git - GIT_TAG v1.11.1 + GIT_TAG v1.15 GIT_SHALLOW TRUE EXCLUDE_FROM_ALL ) From a7e7bebd3b283ea792708ae937cedeeb5938b45a Mon Sep 17 00:00:00 2001 From: Gigon Bae Date: Mon, 31 Mar 2025 17:01:30 -0700 Subject: [PATCH 12/18] Update pybind11_json dependency version to v0.2.15 Signed-off-by: Gigon Bae --- python/cmake/deps/pybind11_json.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/cmake/deps/pybind11_json.cmake b/python/cmake/deps/pybind11_json.cmake index c7f16d5fa..3821cadbf 100644 --- a/python/cmake/deps/pybind11_json.cmake +++ b/python/cmake/deps/pybind11_json.cmake @@ -17,7 +17,7 @@ if (NOT TARGET deps::pybind11_json) FetchContent_Declare( deps-pybind11_json GIT_REPOSITORY https://github.com/pybind/pybind11_json.git - GIT_TAG 0.2.9 + GIT_TAG 0.2.15 GIT_SHALLOW TRUE EXCLUDE_FROM_ALL ) From 19f679ad66b7f9e0129166b6cbd399cd13642df2 Mon Sep 17 00:00:00 2001 From: Gigon Bae Date: Mon, 31 Mar 2025 17:06:58 -0700 Subject: [PATCH 13/18] Handle libtiff version upgrade (to v4.5.0) Refactor TIFF_SSIZE_T definition and update data types in IFD class - Added a check to ensure TIFF_SSIZE_T is only defined if not already defined, changing its type to int64_t. - Updated the data types of td_stripoffset_p and td_stripbytecount_p from uint64 to uint64_t for consistency in the IFD class. Signed-off-by: Gigon Bae --- cpp/plugins/cucim.kit.cuslide/src/cuslide/lzw/lzw_libtiff.h | 5 ++++- cpp/plugins/cucim.kit.cuslide/src/cuslide/tiff/ifd.cpp | 4 ++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/cpp/plugins/cucim.kit.cuslide/src/cuslide/lzw/lzw_libtiff.h b/cpp/plugins/cucim.kit.cuslide/src/cuslide/lzw/lzw_libtiff.h index 4b6dcc697..a3d35ce72 100644 --- a/cpp/plugins/cucim.kit.cuslide/src/cuslide/lzw/lzw_libtiff.h +++ b/cpp/plugins/cucim.kit.cuslide/src/cuslide/lzw/lzw_libtiff.h @@ -42,7 +42,10 @@ struct TIFF; #define COMPRESSION_LZW 5 /* Lempel-Ziv & Welch */ /* Signed size type */ -#define TIFF_SSIZE_T signed long +// Check if TIFF_SSIZE_T is already defined before defining it +#ifndef TIFF_SSIZE_T +#define TIFF_SSIZE_T int64_t +#endif typedef TIFF_SSIZE_T tmsize_t; typedef tmsize_t tsize_t; /* i/o size in bytes */ diff --git a/cpp/plugins/cucim.kit.cuslide/src/cuslide/tiff/ifd.cpp b/cpp/plugins/cucim.kit.cuslide/src/cuslide/tiff/ifd.cpp index 9bcacb25d..74647f465 100644 --- a/cpp/plugins/cucim.kit.cuslide/src/cuslide/tiff/ifd.cpp +++ b/cpp/plugins/cucim.kit.cuslide/src/cuslide/tiff/ifd.cpp @@ -118,8 +118,8 @@ IFD::IFD(TIFF* tiff, uint16_t index, ifd_offset_t offset) : tiff_(tiff), ifd_ind image_piece_count_ = tif_dir.td_stripoffset_entry.tdir_count; image_piece_offsets_.reserve(image_piece_count_); - uint64* td_stripoffset_p = tif_dir.td_stripoffset_p; - uint64* td_stripbytecount_p = tif_dir.td_stripbytecount_p; + uint64_t* td_stripoffset_p = tif_dir.td_stripoffset_p; + uint64_t* td_stripbytecount_p = tif_dir.td_stripbytecount_p; // Copy data to vector image_piece_offsets_.insert(image_piece_offsets_.end(), &td_stripoffset_p[0], &td_stripoffset_p[image_piece_count_]); From 8c88612aed54cf515a5b1336843c9beb83be1e3b Mon Sep 17 00:00:00 2001 From: Gigon Bae Date: Mon, 31 Mar 2025 17:25:02 -0700 Subject: [PATCH 14/18] Add patch command for libtiff and update minimum CMake version - Introduced a patch command in libtiff.cmake to apply custom modifications. - Updated the minimum required CMake version to 3.30.0 in the CMakeLists.txt file. Signed-off-by: Gigon Bae --- .../cmake/deps/libtiff.cmake | 1 + .../cmake/deps/libtiff.patch | 34 +++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 cpp/plugins/cucim.kit.cuslide/cmake/deps/libtiff.patch diff --git a/cpp/plugins/cucim.kit.cuslide/cmake/deps/libtiff.cmake b/cpp/plugins/cucim.kit.cuslide/cmake/deps/libtiff.cmake index a28313a4b..155963034 100644 --- a/cpp/plugins/cucim.kit.cuslide/cmake/deps/libtiff.cmake +++ b/cpp/plugins/cucim.kit.cuslide/cmake/deps/libtiff.cmake @@ -26,6 +26,7 @@ if (NOT TARGET deps::libtiff) GIT_REPOSITORY https://gitlab.com/libtiff/libtiff.git GIT_TAG v4.5.0 GIT_SHALLOW TRUE + PATCH_COMMAND ${GIT_EXECUTABLE} apply "${CMAKE_CURRENT_LIST_DIR}/libtiff.patch" EXCLUDE_FROM_ALL ) diff --git a/cpp/plugins/cucim.kit.cuslide/cmake/deps/libtiff.patch b/cpp/plugins/cucim.kit.cuslide/cmake/deps/libtiff.patch new file mode 100644 index 000000000..dca965b45 --- /dev/null +++ b/cpp/plugins/cucim.kit.cuslide/cmake/deps/libtiff.patch @@ -0,0 +1,34 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index af5b6bfe..7dcdaefd 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -24,10 +24,12 @@ + # LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE + # OF THIS SOFTWARE. + +-cmake_minimum_required(VERSION 3.9.0) ++# [cuCIM patch] Set minimum CMake version to 3.30.0 ++cmake_minimum_required(VERSION 3.30.0) + +-# Default policy is from 3.9.0 +-cmake_policy(VERSION 3.9.0) ++# [cuCIM patch] Set default policy to 3.30.0 ++# Default policy is from 3.30.0 ++cmake_policy(VERSION 3.30.0) + + # Find CMake modules in cmake/ + list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake") +diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt +index 6cc3d2e4..d26fece9 100644 +--- a/doc/CMakeLists.txt ++++ b/doc/CMakeLists.txt +@@ -24,7 +24,8 @@ + # LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE + # OF THIS SOFTWARE. + +-cmake_minimum_required(VERSION 3.2.0) ++# [cuCIM patch] Set minimum CMake version to 3.30.0 ++cmake_minimum_required(VERSION 3.30.0) + + include(Sphinx) + From 0bc56487b32438047d35eac27874189736663769 Mon Sep 17 00:00:00 2001 From: Gigon Bae Date: Mon, 31 Mar 2025 20:48:16 -0700 Subject: [PATCH 15/18] Add patch command for libopenjpeg and update minimum CMake version - Introduced a patch command in libopenjpeg.cmake to apply custom modifications. - Updated the minimum required CMake version to 3.30.0 in the CMakeLists.txt file. Signed-off-by: Gigon Bae --- .../cucim.kit.cuslide/cmake/deps/libopenjpeg.cmake | 1 + .../cucim.kit.cuslide/cmake/deps/libopenjpeg.patch | 14 ++++++++++++++ 2 files changed, 15 insertions(+) create mode 100644 cpp/plugins/cucim.kit.cuslide/cmake/deps/libopenjpeg.patch diff --git a/cpp/plugins/cucim.kit.cuslide/cmake/deps/libopenjpeg.cmake b/cpp/plugins/cucim.kit.cuslide/cmake/deps/libopenjpeg.cmake index 98a457bb6..727bd4ac1 100644 --- a/cpp/plugins/cucim.kit.cuslide/cmake/deps/libopenjpeg.cmake +++ b/cpp/plugins/cucim.kit.cuslide/cmake/deps/libopenjpeg.cmake @@ -19,6 +19,7 @@ if (NOT TARGET deps::libopenjpeg) deps-libopenjpeg GIT_REPOSITORY https://github.com/uclouvain/openjpeg.git GIT_TAG v2.5.3 + PATCH_COMMAND ${GIT_EXECUTABLE} apply "${CMAKE_CURRENT_LIST_DIR}/libopenjpeg.patch" GIT_SHALLOW TRUE ) diff --git a/cpp/plugins/cucim.kit.cuslide/cmake/deps/libopenjpeg.patch b/cpp/plugins/cucim.kit.cuslide/cmake/deps/libopenjpeg.patch new file mode 100644 index 000000000..87115f0b1 --- /dev/null +++ b/cpp/plugins/cucim.kit.cuslide/cmake/deps/libopenjpeg.patch @@ -0,0 +1,14 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index b04561f4..2392c14d 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -7,7 +7,8 @@ + # For this purpose you can define a CMake var: OPENJPEG_NAMESPACE to whatever you like + # e.g.: + # set(OPENJPEG_NAMESPACE "GDCMOPENJPEG") +-cmake_minimum_required(VERSION 3.5) ++# [cuCIM patch] Set minimum CMake version to 3.30.0 ++cmake_minimum_required(VERSION 3.30.0) + + if(NOT OPENJPEG_NAMESPACE) + set(OPENJPEG_NAMESPACE "OPENJPEG") From 7f9211275759c91ae5d8f995b053778e61864042 Mon Sep 17 00:00:00 2001 From: Gigon Bae Date: Mon, 31 Mar 2025 21:01:12 -0700 Subject: [PATCH 16/18] Refactor environment variable setting in jpeg_decode_buffer function - Change the way environment variables are set for SIMD flags by using static character arrays to improve memory management. - Update row pointer assignments to cast to JSAMPROW for better type safety. Signed-off-by: Gigon Bae --- .../src/cuslide/jpeg/libjpeg_turbo.cpp | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/cpp/plugins/cucim.kit.cuslide/src/cuslide/jpeg/libjpeg_turbo.cpp b/cpp/plugins/cucim.kit.cuslide/src/cuslide/jpeg/libjpeg_turbo.cpp index 78ac13d23..7aad07472 100644 --- a/cpp/plugins/cucim.kit.cuslide/src/cuslide/jpeg/libjpeg_turbo.cpp +++ b/cpp/plugins/cucim.kit.cuslide/src/cuslide/jpeg/libjpeg_turbo.cpp @@ -285,12 +285,18 @@ int jpeg_decode_buffer(const void* handle, THROW("tjDecompress2(): Invalid argument"); #ifndef NO_PUTENV - if (flags & TJFLAG_FORCEMMX) - putenv("JSIMD_FORCEMMX=1"); - else if (flags & TJFLAG_FORCESSE) - putenv("JSIMD_FORCESSE=1"); - else if (flags & TJFLAG_FORCESSE2) - putenv("JSIMD_FORCESSE2=1"); + if (flags & TJFLAG_FORCEMMX) { + static char mmx[] = "JSIMD_FORCEMMX=1"; + putenv(mmx); + } + else if (flags & TJFLAG_FORCESSE) { + static char sse[] = "JSIMD_FORCESSE=1"; + putenv(sse); + } + else if (flags & TJFLAG_FORCESSE2) { + static char sse2[] = "JSIMD_FORCESSE2=1"; + putenv(sse2); + } #endif if (setjmp(instance->jerr.setjmp_buffer)) @@ -350,9 +356,9 @@ int jpeg_decode_buffer(const void* handle, for (i = 0; i < (int)dinfo->output_height; i++) { if (flags & TJFLAG_BOTTOMUP) - row_pointer[i] = &dstBuf[(dinfo->output_height - i - 1) * (size_t)pitch]; + row_pointer[i] = (JSAMPROW)(&dstBuf[(dinfo->output_height - i - 1) * (size_t)pitch]); else - row_pointer[i] = &dstBuf[i * (size_t)pitch]; + row_pointer[i] = (JSAMPROW)(&dstBuf[i * (size_t)pitch]); } while (dinfo->output_scanline < dinfo->output_height) jpeg_read_scanlines(dinfo, &row_pointer[dinfo->output_scanline], dinfo->output_height - dinfo->output_scanline); From 18ccd3d4db5c3a062570110e46c536fddeef4620 Mon Sep 17 00:00:00 2001 From: Gigon Bae Date: Mon, 31 Mar 2025 21:52:01 -0700 Subject: [PATCH 17/18] Keep libtiff version to v4.1.0 Signed-off-by: Gigon Bae --- .../cmake/deps/libtiff.cmake | 2 +- .../cmake/deps/libtiff.patch | 30 +++++-------------- 2 files changed, 9 insertions(+), 23 deletions(-) diff --git a/cpp/plugins/cucim.kit.cuslide/cmake/deps/libtiff.cmake b/cpp/plugins/cucim.kit.cuslide/cmake/deps/libtiff.cmake index 155963034..fb080d5d9 100644 --- a/cpp/plugins/cucim.kit.cuslide/cmake/deps/libtiff.cmake +++ b/cpp/plugins/cucim.kit.cuslide/cmake/deps/libtiff.cmake @@ -24,7 +24,7 @@ if (NOT TARGET deps::libtiff) FetchContent_Declare( deps-libtiff GIT_REPOSITORY https://gitlab.com/libtiff/libtiff.git - GIT_TAG v4.5.0 + GIT_TAG v4.1.0 GIT_SHALLOW TRUE PATCH_COMMAND ${GIT_EXECUTABLE} apply "${CMAKE_CURRENT_LIST_DIR}/libtiff.patch" EXCLUDE_FROM_ALL diff --git a/cpp/plugins/cucim.kit.cuslide/cmake/deps/libtiff.patch b/cpp/plugins/cucim.kit.cuslide/cmake/deps/libtiff.patch index dca965b45..d4488287c 100644 --- a/cpp/plugins/cucim.kit.cuslide/cmake/deps/libtiff.patch +++ b/cpp/plugins/cucim.kit.cuslide/cmake/deps/libtiff.patch @@ -1,34 +1,20 @@ diff --git a/CMakeLists.txt b/CMakeLists.txt -index af5b6bfe..7dcdaefd 100644 +index 35b48770..7955fe73 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt -@@ -24,10 +24,12 @@ +@@ -23,10 +23,12 @@ # LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE # OF THIS SOFTWARE. --cmake_minimum_required(VERSION 3.9.0) +-cmake_minimum_required(VERSION 2.8.11) # b/c of use of BUILD_INTERFACE generator expression +# [cuCIM patch] Set minimum CMake version to 3.30.0 +cmake_minimum_required(VERSION 3.30.0) --# Default policy is from 3.9.0 --cmake_policy(VERSION 3.9.0) +-# Default policy is from 2.8.9 +-cmake_policy(VERSION 2.8.9) +# [cuCIM patch] Set default policy to 3.30.0 +# Default policy is from 3.30.0 +cmake_policy(VERSION 3.30.0) - - # Find CMake modules in cmake/ - list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake") -diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt -index 6cc3d2e4..d26fece9 100644 ---- a/doc/CMakeLists.txt -+++ b/doc/CMakeLists.txt -@@ -24,7 +24,8 @@ - # LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - # OF THIS SOFTWARE. - --cmake_minimum_required(VERSION 3.2.0) -+# [cuCIM patch] Set minimum CMake version to 3.30.0 -+cmake_minimum_required(VERSION 3.30.0) - - include(Sphinx) - + # Set MacOSX @rpath usage globally. + if (POLICY CMP0020) + cmake_policy(SET CMP0020 NEW) From 8196f035d937a470ee8188c2f9f7010e27963632 Mon Sep 17 00:00:00 2001 From: Gigon Bae Date: Wed, 2 Apr 2025 11:26:23 -0700 Subject: [PATCH 18/18] Update libtiff.patch to remove redundant lines Signed-off-by: Gigon Bae --- .../cmake/deps/libtiff.patch | 31 +++++++++++++------ 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/cpp/plugins/cucim.kit.cuslide/cmake/deps/libtiff.patch b/cpp/plugins/cucim.kit.cuslide/cmake/deps/libtiff.patch index d4488287c..e8ac5dc4c 100644 --- a/cpp/plugins/cucim.kit.cuslide/cmake/deps/libtiff.patch +++ b/cpp/plugins/cucim.kit.cuslide/cmake/deps/libtiff.patch @@ -1,20 +1,31 @@ diff --git a/CMakeLists.txt b/CMakeLists.txt -index 35b48770..7955fe73 100644 +index 35b48770..416377e7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt -@@ -23,10 +23,12 @@ +@@ -23,24 +23,8 @@ # LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE # OF THIS SOFTWARE. -cmake_minimum_required(VERSION 2.8.11) # b/c of use of BUILD_INTERFACE generator expression +- +-# Default policy is from 2.8.9 +-cmake_policy(VERSION 2.8.9) +-# Set MacOSX @rpath usage globally. +-if (POLICY CMP0020) +- cmake_policy(SET CMP0020 NEW) +-endif(POLICY CMP0020) +-if (POLICY CMP0042) +- cmake_policy(SET CMP0042 NEW) +-endif(POLICY CMP0042) +-# Use new variable expansion policy. +-if (POLICY CMP0053) +- cmake_policy(SET CMP0053 NEW) +-endif(POLICY CMP0053) +-if (POLICY CMP0054) +- cmake_policy(SET CMP0054 NEW) +-endif(POLICY CMP0054) +# [cuCIM patch] Set minimum CMake version to 3.30.0 +cmake_minimum_required(VERSION 3.30.0) --# Default policy is from 2.8.9 --cmake_policy(VERSION 2.8.9) -+# [cuCIM patch] Set default policy to 3.30.0 -+# Default policy is from 3.30.0 -+cmake_policy(VERSION 3.30.0) - # Set MacOSX @rpath usage globally. - if (POLICY CMP0020) - cmake_policy(SET CMP0020 NEW) + # Read version information from configure.ac. + FILE(READ "${CMAKE_CURRENT_SOURCE_DIR}/configure.ac" configure)