2020-04-24 23:52:27 +02:00
|
|
|
|
|
|
|
function(external_dependency)
|
|
|
|
cmake_parse_arguments(ARG "EXCLUDE_FROM_ALL" "VERSION;GIT_REPO;TAG" "" ${ARGN})
|
|
|
|
|
|
|
|
# Was dependency already found?
|
|
|
|
if(${ARGV0}_FOUND)
|
|
|
|
message(STATUS "Dependency ${ARGV0} was already resolved")
|
|
|
|
else()
|
2020-04-28 16:51:06 +02:00
|
|
|
if(NOT Build_Deps)
|
|
|
|
find_package(${ARGV0} ${${ARGV0}_VERSION} QUIET)
|
2020-04-24 23:52:27 +02:00
|
|
|
endif()
|
2020-04-28 16:51:06 +02:00
|
|
|
if(${ARGV0}_FOUND)
|
|
|
|
message(STATUS "Found dependency ${ARGV0} with find_package command")
|
2020-04-24 23:52:27 +02:00
|
|
|
else()
|
2020-04-28 16:51:06 +02:00
|
|
|
message(STATUS " =============== Configuring Dependency ${ARGV0} =============== ")
|
|
|
|
if(ARG_EXCLUDE_FROM_ALL)
|
|
|
|
set(subdir_opts EXCLUDE_FROM_ALL)
|
|
|
|
endif()
|
|
|
|
if(IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/${ARGV0})
|
|
|
|
message(STATUS "Found sources for dependency ${ARGV0} at ${CMAKE_CURRENT_SOURCE_DIR}/${ARGV0}.")
|
|
|
|
add_subdirectory(${ARGV0} ${subdir_opts})
|
|
|
|
elseif(ARG_GIT_REPO)
|
|
|
|
set(bin_dir ${CMAKE_CURRENT_BINARY_DIR}/${ARGV0})
|
|
|
|
set(src_dir ${bin_dir}_src)
|
|
|
|
if(NOT IS_DIRECTORY ${src_dir})
|
|
|
|
if(ARG_TAG)
|
|
|
|
set(clone_opts --branch ${ARG_TAG} -c advice.detachedHead=false)
|
|
|
|
endif()
|
|
|
|
execute_process(COMMAND git clone ${ARG_GIT_REPO} --depth 1 ${clone_opts} ${src_dir})
|
|
|
|
endif()
|
|
|
|
add_subdirectory(${src_dir} ${bin_dir} ${subdir_opts})
|
|
|
|
else()
|
|
|
|
message(FATAL_ERROR "Could not find dependency ${ARGV0}")
|
|
|
|
endif()
|
|
|
|
set(${ARGV0}_FOUND TRUE PARENT_SCOPE)
|
2020-04-24 23:52:27 +02:00
|
|
|
endif()
|
|
|
|
endif()
|
|
|
|
endfunction()
|