blob: ed4db2c18de21ef012ddbf130be6311b57d76bd9 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
# Copyright 2018 Google
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
include(CMakeParseArguments)
# Assemble the git-related arguments to an external project making use of the
# latest features where available but avoiding them when run under CMake
# versions that don't support them.
#
# The complete set of git-related arguments are stored as a list in the
# variable named by RESULT_VAR in the calling scope.
#
# Currently this handles:
# * GIT_SUBMODULES -- added on CMake 3.0 or later. Earlier CMakes will
# check out all submodules.
# * GIT_SHALLOW -- added by default on CMake 3.6 or later. Disable by passing
# GIT_SHALLOW OFF
# * GIT_PROGRESS -- added by default on CMake 3.8 or later. Disable by
# passing GIT_PROGRESS OFF
function(ExternalProject_GitSource RESULT_VAR)
# Parse arguments
set(options "")
set(single_value GIT_REPOSITORY GIT_TAG GIT_PROGRESS GIT_SHALLOW)
set(multi_value GIT_SUBMODULES)
cmake_parse_arguments(EP "${options}" "${single_value}" "${multi_value}" ${ARGN})
set(
result
GIT_REPOSITORY ${EP_GIT_REPOSITORY}
GIT_TAG ${EP_GIT_TAG}
${EP_UNPARSED_ARGUMENTS}
)
# CMake 3.0 added support for constraining the set of submodules to clone
if(NOT (CMAKE_VERSION VERSION_LESS "3.0") AND EP_GIT_SUBMODULES)
list(APPEND result GIT_SUBMODULES ${EP_GIT_SUBMODULES})
endif()
# CMake 3.6 added support for shallow git clones. Use a shallow clone if
# available
if(NOT (CMAKE_VERSION VERSION_LESS "3.6"))
if(NOT EP_GIT_SHALLOW)
set(EP_GIT_SHALLOW ON)
endif()
list(APPEND result GIT_SHALLOW ${EP_GIT_SHALLOW})
endif()
# CMake 3.8 added support for showing progress for large downloads
if(NOT (CMAKE_VERSION VERSION_LESS "3.8"))
if(NOT EP_GIT_PROGRESS)
set(EP_GIT_PROGRESS ON)
endif()
list(APPEND result GIT_PROGRESS ${EP_GIT_PROGRESS})
endif()
set(${RESULT_VAR} ${result} PARENT_SCOPE)
endfunction()
|