simplify by not trying to use fetchcontent but do all steps manually

as it turns out, fetchcontent is calling external_project internally at
some point which to avoid is why this function was started in the first place
This commit is contained in:
Axel Kohlmeyer
2021-11-03 14:43:18 -04:00
parent 35ff47411b
commit 37dfc9e141

View File

@ -7,7 +7,6 @@ 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}")
@ -24,23 +23,11 @@ function(ExternalCMakeProject target url hash basedir cmakedir cmakefile)
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)
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")
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}")
endif()
endfunction(ExternalCMakeProject)