From 973532d779035655b226b9bd36dd7062e06ef85b Mon Sep 17 00:00:00 2001 From: Khang Tran Date: Sat, 13 Jul 2024 19:36:11 +0700 Subject: [PATCH 1/2] Allow linking to extra libs static when not using find_package() --- CMake/3rdparty.cmake | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/CMake/3rdparty.cmake b/CMake/3rdparty.cmake index 50935bb44b..3f0afcfb51 100644 --- a/CMake/3rdparty.cmake +++ b/CMake/3rdparty.cmake @@ -248,7 +248,7 @@ else() if(WITH_LIBXMLINC) set(LIBXML_INCDIR "${WITH_LIBXMLINC}/include") set(LIBXML_LIBDIR "${WITH_LIBXMLINC}/lib") - set(LIBXML_LIBS debug "${LIBXML_LIBDIR}/libxml2_d.lib" optimized "${LIBXML_LIBDIR}/libxml2_o.lib") + set(LIBXML_LIBS debug "${LIBXML_LIBDIR}/libxml2_d.lib" optimized "${LIBXML_LIBDIR}/libxml2_o.lib" ${LIBXML2_EXTRA_LIBS_STATIC}) if (EXISTS "${LIBXML_LIBDIR}/iconv_o.lib") set(LIBXML_LIBS ${LIBXML_LIBS} debug "${LIBXML_LIBDIR}/iconv_d.lib" optimized "${LIBXML_LIBDIR}/iconv_o.lib") endif() @@ -283,7 +283,7 @@ else() if(WITH_LIBTIFFINC) set(LIBTIFF_INCDIR "${WITH_LIBTIFFINC}/include") set(LIBTIFF_LIBDIR "${WITH_LIBTIFFINC}/lib") - set(LIBTIFF_LIBS debug "${LIBTIFF_LIBDIR}/libtiff_d.lib" optimized "${LIBTIFF_LIBDIR}/libtiff_o.lib") + set(LIBTIFF_LIBS debug "${LIBTIFF_LIBDIR}/libtiff_d.lib" optimized "${LIBTIFF_LIBDIR}/libtiff_o.lib" ${TIFF_EXTRA_LIBS_STATIC}) message(STATUS "Info: DCMTK TIFF support will be enabled") set(WITH_LIBTIFF 1) else() # turn off library if library path not set @@ -301,7 +301,7 @@ else() set(OPENSSL_INCDIR "${WITH_OPENSSLINC}/include") set(OPENSSL_LIBDIR "${WITH_OPENSSLINC}/lib") # starting with OpenSSL 1.1.0, the Windows crypt32 library is needed for a static link of OpenSSL. - set(OPENSSL_LIBS "crypt32" debug "${OPENSSL_LIBDIR}/dcmtkssl_d.lib" optimized "${OPENSSL_LIBDIR}/dcmtkssl_o.lib" debug "${OPENSSL_LIBDIR}/dcmtkcrypto_d.lib" optimized "${OPENSSL_LIBDIR}/dcmtkcrypto_o.lib") + set(OPENSSL_LIBS "crypt32" debug "${OPENSSL_LIBDIR}/dcmtkssl_d.lib" optimized "${OPENSSL_LIBDIR}/dcmtkssl_o.lib" debug "${OPENSSL_LIBDIR}/dcmtkcrypto_d.lib" optimized "${OPENSSL_LIBDIR}/dcmtkcrypto_o.lib" ${OPENSSL_EXTRA_LIBS_STATIC}) set(TEMP_INCLUDES "${CMAKE_REQUIRED_INCLUDES}") list(APPEND CMAKE_REQUIRED_INCLUDES "${OPENSSL_INCDIR}") CHECK_CXX_SOURCE_COMPILES("extern \"C\" {\n#include \n}\nint main(){\n#if OPENSSL_VERSION_NUMBER < 0x10001000L\n#error OpenSSL too old\n#endif\n}\n" OPENSSL_VERSION_CHECK) @@ -341,7 +341,7 @@ else() if(WITH_SNDFILEINC) set(SNDFILE_INCDIR "${WITH_SNDFILEINC}/include") set(SNDFILE_LIBDIR "${WITH_SNDFILEINC}/lib") - set(SNDFILE_LIBS debug "${SNDFILE_LIBDIR}/libsndfile_d.lib" optimized "${SNDFILE_LIBDIR}/libsndfile_o.lib") + set(SNDFILE_LIBS debug "${SNDFILE_LIBDIR}/libsndfile_d.lib" optimized "${SNDFILE_LIBDIR}/libsndfile_o.lib" ${SNDFILE_EXTRA_LIBS_STATIC}) message(STATUS "Info: DCMTK SNDFILE support will be enabled") set(WITH_SNDFILE 1) else() # turn off library if library path not set @@ -379,7 +379,7 @@ else() else() set(OPENJPEG_INCDIR "${WITH_OPENJPEGINC1}") set(OPENJPEG_LIBDIR "${WITH_OPENJPEGINC}/lib") - set(OPENJPEG_LIBS debug "${OPENJPEG_LIBDIR}/openjp2_d.lib" optimized "${OPENJPEG_LIBDIR}/openjp2_o.lib") + set(OPENJPEG_LIBS debug "${OPENJPEG_LIBDIR}/openjp2_d.lib" optimized "${OPENJPEG_LIBDIR}/openjp2_o.lib" ${OPENJPEG_EXTRA_LIBS_STATIC}) message(STATUS "Info: DCMTK OpenJPEG support will be enabled") set(WITH_OPENJPEG 1) endif() From 1028f9c98e6ca33f3b0f10a7940e323b70eb7859 Mon Sep 17 00:00:00 2001 From: Khang Tran Date: Tue, 23 Jul 2024 13:11:04 +0700 Subject: [PATCH 2/2] Support additional lib links for libpng --- CMake/3rdparty.cmake | 4 ++-- CMake/dcmtkPrepare.cmake | 4 +++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/CMake/3rdparty.cmake b/CMake/3rdparty.cmake index 3f0afcfb51..7fdd724594 100644 --- a/CMake/3rdparty.cmake +++ b/CMake/3rdparty.cmake @@ -58,7 +58,7 @@ if(DCMTK_USE_FIND_PACKAGE) message(STATUS "Info: DCMTK PNG support will be enabled") set(WITH_LIBPNG 1) include_directories(${PNG_INCLUDE_DIR}) - set(LIBPNG_LIBS ${PNG_LIBRARY}) + set(LIBPNG_LIBS ${PNG_LIBRARY} ${LIBPNG_EXTRA_LIBS_STATIC}) endif() endif() @@ -268,7 +268,7 @@ else() if(WITH_LIBPNGINC) set(LIBPNG_INCDIR "${WITH_LIBPNGINC}/include") set(LIBPNG_LIBDIR "${WITH_LIBPNGINC}/lib") - set(LIBPNG_LIBS debug "${LIBPNG_LIBDIR}/libpng_d.lib" optimized "${LIBPNG_LIBDIR}/libpng_o.lib") + set(LIBPNG_LIBS debug "${LIBPNG_LIBDIR}/libpng_d.lib" optimized "${LIBPNG_LIBDIR}/libpng_o.lib" ${LIBPNG_EXTRA_LIBS_STATIC}) message(STATUS "Info: DCMTK PNG support will be enabled") set(WITH_LIBPNG 1) else() # turn off library if library path not set diff --git a/CMake/dcmtkPrepare.cmake b/CMake/dcmtkPrepare.cmake index 9cfb0006a6..384ed6ea05 100644 --- a/CMake/dcmtkPrepare.cmake +++ b/CMake/dcmtkPrepare.cmake @@ -107,9 +107,10 @@ endfunction() # This should possibly be enhanced by using find_package() at some point. The best solution # would probably be to compile all third-party libraries ourself. if(DCMTK_LINK_STATIC OR DCMTK_PORTABLE_LINUX_BINARIES) + get_static_library("STATIC_ZLIB" "libz.a") + set(LIBPNG_EXTRA_LIBS_STATIC "${STATIC_ZLIB}") get_static_library("STATIC_DL" "libdl.a") get_static_library("STATIC_LZMA" "liblzma.a") - get_static_library("STATIC_ZLIB" "libz.a") set(LIBXML2_EXTRA_LIBS_STATIC "${STATIC_LZMA}" "${STATIC_ZLIB}" "${STATIC_DL}") get_static_library("STATIC_PTHREAD" "libpthread.a") set(OPENJPEG_EXTRA_LIBS_STATIC "${STATIC_PTHREAD}") @@ -129,6 +130,7 @@ if(DCMTK_LINK_STATIC OR DCMTK_PORTABLE_LINUX_BINARIES) get_static_library("STATIC_NSL" "libnsl.a") set(WRAP_EXTRA_LIBS_STATIC "${STATIC_NSL}") else() + set(LIBPNG_EXTRA_LIBS_STATIC) set(LIBXML2_EXTRA_LIBS_STATIC) set(OPENJPEG_EXTRA_LIBS_STATIC) set(OPENSSL_EXTRA_LIBS_STATIC)