diff --git a/cmake/Modules/ExternalCMakeProject.cmake b/cmake/Modules/ExternalCMakeProject.cmake index 026e3c393b..fdccdee6fb 100644 --- a/cmake/Modules/ExternalCMakeProject.cmake +++ b/cmake/Modules/ExternalCMakeProject.cmake @@ -7,40 +7,27 @@ function(ExternalCMakeProject target url hash basedir cmakedir cmakefile) set(BUILD_SHARED_LIBS OFF) set(CMAKE_POSITION_INDEPENDENT_CODE ON) - if(CMAKE_VERSION VERSION_LESS 3.14) - get_filename_component(archive ${url} NAME) - file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/_deps/src) - message(STATUS "Downloading ${url}") - file(DOWNLOAD ${url} ${CMAKE_BINARY_DIR}/_deps/${archive} EXPECTED_HASH MD5=${hash} SHOW_PROGRESS) - message(STATUS "Unpacking and configuring ${archive}") - execute_process(COMMAND ${CMAKE_COMMAND} -E tar xzf ${CMAKE_BINARY_DIR}/_deps/${archive} - WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/_deps/src) - file(GLOB TARGET_SOURCE "${CMAKE_BINARY_DIR}/_deps/src/${basedir}*") - list(LENGTH TARGET_SOURCE _num) - if(_num GREATER 1) - message(FATAL_ERROR "Inconsistent ${target} library sources. " - "Please delete ${CMAKE_BINARY_DIR}/_deps/src and re-run cmake") - endif() - file(REMOVE_RECURSE ${CMAKE_BINARY_DIR}/_deps/${target}-src) - file(RENAME ${TARGET_SOURCE} ${CMAKE_BINARY_DIR}/_deps/${target}-src) - if(NOT (cmakefile STREQUAL "")) - file(COPY ${cmakefile} ${CMAKE_BINARY_DIR}/_deps/${target}-src/${cmakedir}/CMakeLists.txt) - endif() - add_subdirectory("${CMAKE_BINARY_DIR}/_deps/${target}-src/${cmakedir}" - "${CMAKE_BINARY_DIR}/_deps/${target}-build") - else() - include(FetchContent) - message(STATUS "Downloading ${url}") - FetchContent_Declare(${target} URL ${url} URL_HASH MD5=${hash} SOURCE_SUBDIR ${cmakedir}) - message(STATUS "Unpacking and configuring ${archive}") - FetchContent_GetProperties(${target}) - FetchContent_Populate(${target}) - if(NOT (cmakefile STREQUAL "")) - file(COPY "${cmakefile}" DESTINATION "${${target}_SOURCE_DIR}/${cmakedir}/") - get_filename_component(_cmakefile "${cmakefile}" NAME) - file(RENAME "${${target}_SOURCE_DIR}/${cmakedir}/${_cmakefile}" - "${${target}_SOURCE_DIR}/${cmakedir}/CMakeLists.txt") - endif() - add_subdirectory("${${target}_SOURCE_DIR}/${cmakedir}" "${${target}_BINARY_DIR}") + get_filename_component(archive ${url} NAME) + file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/_deps/src) + message(STATUS "Downloading ${url}") + file(DOWNLOAD ${url} ${CMAKE_BINARY_DIR}/_deps/${archive} EXPECTED_HASH MD5=${hash} SHOW_PROGRESS) + message(STATUS "Unpacking and configuring ${archive}") + execute_process(COMMAND ${CMAKE_COMMAND} -E tar xzf ${CMAKE_BINARY_DIR}/_deps/${archive} + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/_deps/src) + file(GLOB TARGET_SOURCE "${CMAKE_BINARY_DIR}/_deps/src/${basedir}*") + list(LENGTH TARGET_SOURCE _num) + if(_num GREATER 1) + message(FATAL_ERROR "Inconsistent ${target} library sources. " + "Please delete ${CMAKE_BINARY_DIR}/_deps/src and re-run cmake") endif() + file(REMOVE_RECURSE ${CMAKE_BINARY_DIR}/_deps/${target}-src) + file(RENAME ${TARGET_SOURCE} ${CMAKE_BINARY_DIR}/_deps/${target}-src) + if(NOT (cmakefile STREQUAL "")) + file(COPY ${cmakefile} DESTINATION ${CMAKE_BINARY_DIR}/_deps/${target}-src/${cmakedir}/) + get_filename_component(_cmakefile ${cmakefile} NAME) + file(RENAME "${CMAKE_BINARY_DIR}/_deps/${target}-src/${cmakedir}/${_cmakefile}" + "${CMAKE_BINARY_DIR}/_deps/${target}-src/${cmakedir}/CMakeLists.txt") + endif() + add_subdirectory("${CMAKE_BINARY_DIR}/_deps/${target}-src/${cmakedir}" + "${CMAKE_BINARY_DIR}/_deps/${target}-build") endfunction(ExternalCMakeProject)