diff --git a/CMakeExternals/ExternalProjectList.cmake b/CMakeExternals/ExternalProjectList.cmake index fcd4fbf35a..ec089a198d 100644 --- a/CMakeExternals/ExternalProjectList.cmake +++ b/CMakeExternals/ExternalProjectList.cmake @@ -1,32 +1,32 @@ mitkFunctionAddExternalProject(NAME Poco ON COMPONENTS Foundation Net Util XML Zip) mitkFunctionAddExternalProject(NAME DCMTK ON DOC "EXPERIMENTAL, superbuild only: Use DCMTK in MITK") mitkFunctionAddExternalProject(NAME OpenIGTLink OFF) mitkFunctionAddExternalProject(NAME tinyxml2 ON ADVANCED) mitkFunctionAddExternalProject(NAME Eigen ON ADVANCED DOC "Use the Eigen library") mitkFunctionAddExternalProject(NAME ANN ON ADVANCED DOC "Use Approximate Nearest Neighbor Library") mitkFunctionAddExternalProject(NAME CppUnit ON ADVANCED DOC "Use CppUnit for unit tests") mitkFunctionAddExternalProject(NAME HDF5 ON ADVANCED) mitkFunctionAddExternalProject(NAME OpenCV OFF) mitkFunctionAddExternalProject(NAME Vigra OFF DEPENDS HDF5) mitkFunctionAddExternalProject(NAME ITK ON NO_CACHE DEPENDS HDF5) mitkFunctionAddExternalProject(NAME VTK ON NO_CACHE) mitkFunctionAddExternalProject(NAME Boost ON NO_CACHE) mitkFunctionAddExternalProject(NAME ZLIB OFF ADVANCED) mitkFunctionAddExternalProject(NAME lz4 ON ADVANCED) mitkFunctionAddExternalProject(NAME cpprestsdk OFF DEPENDS Boost ZLIB ADVANCED) mitkFunctionAddExternalProject(NAME ACVD OFF DOC "Use Approximated Centroidal Voronoi Diagrams") mitkFunctionAddExternalProject(NAME CTK ON DEPENDS Qt5 DCMTK DOC "Use CTK in MITK") mitkFunctionAddExternalProject(NAME DCMQI ON DEPENDS DCMTK ITK DOC "Use dcmqi in MITK") mitkFunctionAddExternalProject(NAME MatchPoint OFF ADVANCED DEPENDS Boost ITK DOC "Use the MatchPoint translation image registration library") mitkFunctionAddExternalProject(NAME nlohmann_json ON ADVANCED) if(MITK_USE_Qt5) mitkFunctionAddExternalProject(NAME Qwt ON ADVANCED DEPENDS Qt5) endif() if(UNIX AND NOT APPLE) - mitkFunctionAddExternalProject(NAME PCRE2 OFF ADVANCED NO_PACKAGE) - mitkFunctionAddExternalProject(NAME SWIG OFF ADVANCED NO_PACKAGE DEPENDS PCRE2) + mitkFunctionAddExternalProject(NAME PCRE OFF ADVANCED NO_PACKAGE) + mitkFunctionAddExternalProject(NAME SWIG OFF ADVANCED NO_PACKAGE DEPENDS PCRE) elseif(WIN32) mitkFunctionAddExternalProject(NAME SWIG OFF ADVANCED NO_PACKAGE) endif() diff --git a/CMakeExternals/PCRE.cmake b/CMakeExternals/PCRE.cmake new file mode 100644 index 0000000000..c8a37b69c9 --- /dev/null +++ b/CMakeExternals/PCRE.cmake @@ -0,0 +1,69 @@ +#-------------------------------------------------------------------------- +# PCRE (Perl Compatible Regular Expressions) +#-------------------------------------------------------------------------- +if(MITK_USE_PCRE) + if(DEFINED PCRE_DIR AND NOT EXISTS ${PCRE_DIR}) + message(FATAL_ERROR "PCRE_DIR variable is defined but corresponds to non-existing directory") + endif() + + set(proj PCRE) + set(${proj}_DEPENDENCIES "") + set(${proj}_DEPENDS ${proj}) + + if(NOT PCRE_DIR) + + if(UNIX) + # Some other projects (e.g. Swig) require a pcre-config script which is not + # generated when using the CMake build system. + set(configure_cmd + CONFIGURE_COMMAND /./configure + CC=${CMAKE_C_COMPILER}${CMAKE_C_COMPILER_ARG1} + CFLAGS=-fPIC + "CXXFLAGS=-fPIC ${MITK_CXX${MITK_CXX_STANDARD}_FLAG} ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_RELEASE}" + "LDFLAGS=${CMAKE_LINKER_FLAGS} ${CMAKE_LINKER_FLAGS_RELEASE} ${_install_rpath_linkflag}" + CXX=${CMAKE_CXX_COMPILER}${CMAKE_CXX_COMPILER_ARG1} + --prefix= + --disable-shared + --enable-jit + ) + else() + + set(additional_cmake_args ) + if(CTEST_USE_LAUNCHERS) + list(APPEND additional_cmake_args + "-DCMAKE_PROJECT_${proj}_INCLUDE:FILEPATH=${CMAKE_ROOT}/Modules/CTestUseLaunchers.cmake" + ) + endif() + + set(configure_cmd + CMAKE_GENERATOR ${gen} + CMAKE_GENERATOR_PLATFORM ${gen_platform} + CMAKE_ARGS + ${ep_common_args} + ${additional_cmake_args} + "-DCMAKE_C_FLAGS:STRING=${CMAKE_C_FLAGS} -fPIC" + -DBUILD_SHARED_LIBS:BOOL=OFF + -DPCRE_BUILD_PCREGREP:BOOL=OFF + -DPCRE_BUILD_TESTS:BOOL=OFF + -DPCRE_SUPPORT_JIT:BOOL=ON + CMAKE_CACHE_ARGS + ${ep_common_cache_args} + CMAKE_CACHE_DEFAULT_ARGS + ${ep_common_cache_default_args} + ) + endif() + + ExternalProject_add(${proj} + LIST_SEPARATOR ${sep} + URL ${MITK_THIRDPARTY_DOWNLOAD_PREFIX_URL}/pcre-8.35.tar.gz + URL_MD5 "ed58bcbe54d3b1d59e9f5415ef45ce1c" + ${configure_cmd} + DEPENDS "${${proj}_DEPENDENCIES}" + ) + + set(PCRE_DIR ${ep_prefix}) + + else() + mitkMacroEmptyExternalProject(${proj} "${${proj}_DEPENDENCIES}") + endif() +endif() diff --git a/CMakeExternals/PCRE2.cmake b/CMakeExternals/PCRE2.cmake deleted file mode 100644 index 5bc979f327..0000000000 --- a/CMakeExternals/PCRE2.cmake +++ /dev/null @@ -1,50 +0,0 @@ -#----------------------------------------------------------------------------- -# PCRE (Perl Compatible Regular Expressions) -#----------------------------------------------------------------------------- - -if(MITK_USE_PCRE2) - if(DEFINED PCRE2_DIR AND NOT EXISTS "${PCRE2_DIR}") - message(FATAL_ERROR "PCRE_DIR variable is defined but corresponds to non-existing directory") - endif() - - set(proj PCRE2) - set(proj_DEPENDENCIES ) - set(${proj}_DEPENDS ${proj}) - - if(NOT DEFINED ${proj}_DIR) - - set(additional_args ) - - if(CTEST_USE_LAUNCHERS) - list(APPEND additional_args - "-DCMAKE_PROJECT_${proj}_INCLUDE:FILEPATH=${CMAKE_ROOT}/Modules/CTestUseLaunchers.cmake" - ) - endif() - - ExternalProject_Add(${proj} - LIST_SEPARATOR ${sep} - GIT_REPOSITORY https://github.com/PCRE2Project/pcre2.git - GIT_TAG pcre2-10.40 - CMAKE_GENERATOR ${gen} - CMAKE_GENERATOR_PLATFORM ${gen_platform} - CMAKE_ARGS - ${ep_common_args} - ${additional_args} - CMAKE_CACHE_ARGS - ${ep_common_cache_args} - -DPCRE2_BUILD_PCREGREP:BOOL=OFF - -DPCRE2_BUILD_TESTS:BOOL=OFF - -DPCRE2_STATIC_PIC:BOOL=ON - -DPCRE2_SUPPORT_JIT:BOOL=ON - CMAKE_CACHE_DEFAULT_ARGS - ${ep_common_cache_default_args} - DEPENDS ${proj_DEPENDENCIES} - ) - - set(${proj}_DIR "${ep_prefix}") - mitkFunctionInstallExternalCMakeProject(${proj}) - - else() - mitkMacroEmptyExternalProject(${proj} "${proj_DEPENDENCIES}") - endif() -endif()