1- cmake_minimum_required ( VERSION 3.9.2 FATAL_ERROR )
1+ set (GDCM_MAX_VALIDATED_CMAKE_VERSION "3.13.4" )
22
3- set (GDCM_MAX_VALIDATED_CMAKE_VERSION "3.13.1" )
4- if ("${CMAKE_VERSION} " VERSION_LESS_EQUAL "${GDCM_MAX_VALIDATED_CMAKE_VERSION} " )
5- # As of 2018-12-04 GDCM has been validated to build with cmake version 3.13.1 new policies.
6- # Set and use the newest cmake policies that are validated to work
7- set (GDCM_CMAKE_POLICY_VERSION "${CMAKE_VERSION} " )
8- else ()
9- set (GDCM_CMAKE_POLICY_VERSION "${GDCM_MAX_VALIDATED_CMAKE_VERSION} " )
10- endif ()
11- cmake_policy (VERSION ${GDCM_CMAKE_POLICY_VERSION} )
3+ # Set minimum required version of CMake, and policy version
4+ cmake_minimum_required (VERSION 3.9.2...${GDCM_MAX_VALIDATED_CMAKE_VERSION} FATAL_ERROR ) # travis-ci wants 3.9.2
125
136# GDCM version 3.0.0 will only support C++11 and greater
147if (CMAKE_CXX_STANDARD EQUAL "98" )
@@ -17,7 +10,7 @@ endif()
1710#----------------------------------------------------------------------------
1811
1912project (GDCM
20- VERSION 3.0.24
13+ VERSION 3.2.5
2114 LANGUAGES CXX C
2215)
2316## NOTE: the "DESCRIPTION" feature of project() was introduced in cmake 3.10.0
@@ -125,20 +118,39 @@ if(BUILD_SHARED_LIBS)
125118endif ()
126119
127120#-----------------------------------------------------------------------------
128- if (NOT EXECUTABLE_OUTPUT_PATH )
129- set (EXECUTABLE_OUTPUT_PATH ${GDCM_BINARY_DIR} /bin CACHE PATH "Single output directory for building all executables." )
130- mark_as_advanced (EXECUTABLE_OUTPUT_PATH )
121+ # Compatibility with older usage of EXECUTABLE_OUTPUT_PATH and LIBRARY_OUTPUT_PATH.
122+ # This should be removed in the future.
123+ if (EXECUTABLE_OUTPUT_PATH )
124+ set (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${EXECUTABLE_OUTPUT_PATH} )
125+ message (WARNING "EXECUTABLE_OUTPUT_PATH is deprecated. Use CMAKE_RUNTIME_OUTPUT_DIRECTORY instead." )
131126endif ()
132- if (NOT LIBRARY_OUTPUT_PATH )
133- set (LIBRARY_OUTPUT_PATH ${GDCM_BINARY_DIR} /bin CACHE PATH "Single output directory for building all libraries." )
134- mark_as_advanced (LIBRARY_OUTPUT_PATH )
127+ if (LIBRARY_OUTPUT_PATH )
128+ set (CMAKE_LIBRARY_OUTPUT_DIRECTORY ${LIBRARY_OUTPUT_PATH} )
129+ set (CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${LIBRARY_OUTPUT_PATH} )
130+ message (WARNING "LIBRARY_OUTPUT_PATH is deprecated. Use CMAKE_LIBRARY_OUTPUT_DIRECTORY and CMAKE_ARCHIVE_OUTPUT_DIRECTORY instead." )
135131endif ()
136132
137- # TODO: The following should be used for CMake 3 and beyond,
138- # EXECUTABLE_OUTPUT_PATH and LIBRARY_OUTPUT_PATH are deprecated
139- set (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${EXECUTABLE_OUTPUT_PATH} )
140- set (CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${LIBRARY_OUTPUT_PATH} )
141- set (CMAKE_LIBRARY_OUTPUT_DIRECTORY ${LIBRARY_OUTPUT_PATH} )
133+ if (NOT CMAKE_RUNTIME_OUTPUT_DIRECTORY )
134+ set (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} /bin)
135+ endif ()
136+ if (NOT CMAKE_LIBRARY_OUTPUT_DIRECTORY )
137+ set (CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} /bin)
138+ endif ()
139+ if (NOT CMAKE_ARCHIVE_OUTPUT_DIRECTORY )
140+ set (CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} /bin)
141+ endif ()
142+
143+ # Set for legacy internal usage of EXECUTABLE_OUTPUT_PATH and LIBRARY_OUTPUT_PATH
144+ if (NOT EXECUTABLE_OUTPUT_PATH )
145+ set (EXECUTABLE_OUTPUT_PATH ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} )
146+ endif ()
147+ if (NOT LIBRARY_OUTPUT_PATH )
148+ if (BUILD_SHARED_LIBS )
149+ set (LIBRARY_OUTPUT_PATH ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} )
150+ else ()
151+ set (LIBRARY_OUTPUT_PATH ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY} )
152+ endif ()
153+ endif ()
142154
143155#-----------------------------------------------------------------------------
144156# Adding GDCM_DATA_ROOT
@@ -187,6 +199,10 @@ macro(CHECK_INCLUDE_FILE_CONCAT FILE VARIABLE)
187199 endif ()
188200endmacro ()
189201
202+ if (UNIX )
203+ include (GNUInstallDirs )
204+ endif ()
205+
190206#include(${GDCM_SOURCE_DIR}/CMake/gdcmPlatformCxxTests.cmake)
191207#
192208#GDCM_PLATFORM_CXX_TEST(GDCM_CXX_HAS_FUNCTION
@@ -524,7 +540,7 @@ if(GDCM_STANDALONE)
524540 endif ()
525541 if (NOT DEFINED GDCM_DEFAULT_JAVA_VERSION)
526542 # override with cmake -DGDCM_DEFAULT_JAVA_VERSION:STRING=1.5 if you dare
527- set (GDCM_DEFAULT_JAVA_VERSION 1.7 )
543+ set (GDCM_DEFAULT_JAVA_VERSION 1.8 )
528544 endif ()
529545 if (GDCM_WRAP_JAVA)
530546 set (GDCM_JAVA_SOURCE_VERSION "${GDCM_DEFAULT_JAVA_VERSION} " CACHE STRING "javac source version" )
@@ -696,23 +712,45 @@ if(GDCM_STANDALONE)
696712 )
697713
698714 # documented at https://vtk.org/doc/nightly/html/group__module.html
699- vtk_module_build (
700- MODULES ${vtkgdcm_modules}
701- INSTALL_EXPORT GDCM
702- ARCHIVE_DESTINATION "${GDCM_INSTALL_LIB_DIR} "
703- HEADERS_DESTINATION "${GDCM_INSTALL_INCLUDE_DIR} /vtk${vtk_version_suffix} "
704- CMAKE_DESTINATION "${GDCM_INSTALL_PACKAGE_DIR} "
705- LICENSE_DESTINATION "${GDCM_INSTALL_DATA_DIR} /vtkgdcm-${GDCM_SHORT_VERSION} "
706- HIERARCHY_DESTINATION "${GDCM_INSTALL_LIB_DIR} /vtk${vtk_version_suffix} /hierarchy/vtkgdcm"
707- LIBRARY_NAME_SUFFIX "${vtkgdcm_library_suffix} "
708- VERSION "${GDCM_VERSION} "
709- SOVERSION "1"
710- # TODO: these are probably not set as they should be
711- #USE_EXTERNAL "${GDCM_USE_EXTERNAL}"
712- #TEST_DATA_TARGET vtkgdcmData
713- #TEST_INPUT_DATA_DIRECTORY "${vtkgdcm_test_data_directory_input}"
714- #TEST_OUTPUT_DATA_DIRECTORY "${vtkgdcm_test_data_directory_output}"
715- )
715+ if (VTK_VERSION VERSION_LESS 9.3)
716+ vtk_module_build (
717+ MODULES ${vtkgdcm_modules}
718+ INSTALL_EXPORT GDCM
719+ ARCHIVE_DESTINATION "${GDCM_INSTALL_LIB_DIR} "
720+ HEADERS_DESTINATION "${GDCM_INSTALL_INCLUDE_DIR} /vtk${vtk_version_suffix} "
721+ CMAKE_DESTINATION "${GDCM_INSTALL_PACKAGE_DIR} "
722+ LICENSE_DESTINATION "${GDCM_INSTALL_DATA_DIR} /vtkgdcm-${GDCM_SHORT_VERSION} "
723+ #SPDX_DESTINATION "${GDCM_INSTALL_DATA_DIR}/vtkgdcm-${GDCM_SHORT_VERSION}"
724+ HIERARCHY_DESTINATION "${GDCM_INSTALL_LIB_DIR} /vtk${vtk_version_suffix} /hierarchy/vtkgdcm"
725+ LIBRARY_NAME_SUFFIX "${vtkgdcm_library_suffix} "
726+ VERSION "${GDCM_VERSION} "
727+ SOVERSION "1"
728+ # TODO: these are probably not set as they should be
729+ #USE_EXTERNAL "${GDCM_USE_EXTERNAL}"
730+ #TEST_DATA_TARGET vtkgdcmData
731+ #TEST_INPUT_DATA_DIRECTORY "${vtkgdcm_test_data_directory_input}"
732+ #TEST_OUTPUT_DATA_DIRECTORY "${vtkgdcm_test_data_directory_output}"
733+ )
734+ else ()
735+ vtk_module_build (
736+ MODULES ${vtkgdcm_modules}
737+ INSTALL_EXPORT GDCM
738+ ARCHIVE_DESTINATION "${GDCM_INSTALL_LIB_DIR} "
739+ HEADERS_DESTINATION "${GDCM_INSTALL_INCLUDE_DIR} /vtk${vtk_version_suffix} "
740+ CMAKE_DESTINATION "${GDCM_INSTALL_PACKAGE_DIR} "
741+ LICENSE_DESTINATION "${GDCM_INSTALL_DATA_DIR} /vtkgdcm-${GDCM_SHORT_VERSION} "
742+ SPDX_DESTINATION "${GDCM_INSTALL_DATA_DIR} /vtkgdcm-${GDCM_SHORT_VERSION} "
743+ HIERARCHY_DESTINATION "${GDCM_INSTALL_LIB_DIR} /vtk${vtk_version_suffix} /hierarchy/vtkgdcm"
744+ LIBRARY_NAME_SUFFIX "${vtkgdcm_library_suffix} "
745+ VERSION "${GDCM_VERSION} "
746+ SOVERSION "1"
747+ # TODO: these are probably not set as they should be
748+ #USE_EXTERNAL "${GDCM_USE_EXTERNAL}"
749+ #TEST_DATA_TARGET vtkgdcmData
750+ #TEST_INPUT_DATA_DIRECTORY "${vtkgdcm_test_data_directory_input}"
751+ #TEST_OUTPUT_DATA_DIRECTORY "${vtkgdcm_test_data_directory_output}"
752+ )
753+ endif ()
716754
717755 if (VTKGDCM_WRAP_PYTHON)
718756 find_package (PythonInterp ${VTK_PYTHON_VERSION} QUIET )
0 commit comments