Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit23fe6eb

Browse files
committed
Add gate file
1 parent6045ad1 commit23fe6eb

File tree

2 files changed

+344
-1
lines changed

2 files changed

+344
-1
lines changed

‎CMakeLists.txt‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
cmake_minimum_required(VERSION 2.8)
77
project(CPP-NETLIB)
88

9-
include("cmake/HunterGate.cmake")
9+
include("HunterGate.cmake")
1010
include(hunter_add_package)
1111
hunter_add_package(OpenSSL)
1212
hunter_add_package(Sugar)

‎HunterGate.cmake‎

Lines changed: 343 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,343 @@
1+
# Copyright (c) 2013, Ruslan Baratov
2+
# All rights reserved.
3+
4+
# This is a gate file to Hunter package manager.
5+
# Usage: include this file using `include` command and add package you need:
6+
#
7+
# include("HunterGate.cmake")
8+
# hunter_add_package(Foo)
9+
# hunter_add_package(Boo COMPONENTS Bar Baz)
10+
#
11+
# Projects:
12+
# * https://github.com/hunter-packages/gate/
13+
# * https://github.com/ruslo/hunter
14+
15+
cmake_minimum_required(VERSION 2.8.10)
16+
17+
set(HUNTER_MINIMUM_VERSION"0.1.2")
18+
set(HUNTER_MINIMUM_VERSION_HASH b540acf9647261ee85ed84af5b552f38ec844191)
19+
20+
# Set HUNTER_ROOT cmake variable to suitable value.
21+
# Info about variable can be found in HUNTER_ROOT_INFO.
22+
function(hunter_gate_detect_root)
23+
# Check CMake variable
24+
if(HUNTER_ROOT)
25+
set(HUNTER_ROOT_INFO"HUNTER_ROOT detected by cmake variable" PARENT_SCOPE)
26+
return()
27+
endif()
28+
29+
# Check environment variable
30+
string(COMPARE NOTEQUAL"$ENV{HUNTER_ROOT}""" not_empty)
31+
if(not_empty)
32+
set(HUNTER_ROOT"$ENV{HUNTER_ROOT}" PARENT_SCOPE)
33+
set(
34+
HUNTER_ROOT_INFO
35+
"HUNTER_ROOT detected by environment variable"
36+
PARENT_SCOPE
37+
)
38+
return()
39+
endif()
40+
41+
# Check HOME environment variable
42+
string(COMPARE NOTEQUAL"$ENV{HOME}""" result)
43+
if(result)
44+
set(HUNTER_ROOT"$ENV{HOME}/HunterPackages" PARENT_SCOPE)
45+
set(
46+
HUNTER_ROOT_INFO
47+
"HUNTER_ROOT set using HOME environment variable"
48+
PARENT_SCOPE
49+
)
50+
return()
51+
endif()
52+
53+
# Check PROGRAMFILES environment variable (windows only)
54+
if(WIN32)
55+
string(COMPARE NOTEQUAL"$ENV{PROGRAMFILES}""" result)
56+
if(result)
57+
set(HUNTER_ROOT"$ENV{PROGRAMFILES}/HunterPackages" PARENT_SCOPE)
58+
set(
59+
HUNTER_ROOT_INFO
60+
"HUNTER_ROOT set using PROGRAMFILES environment variable"
61+
PARENT_SCOPE
62+
)
63+
return()
64+
endif()
65+
endif()
66+
67+
# Create in project
68+
if(NOTPROJECT_SOURCE_DIR)
69+
message(FATAL_ERROR"PROJECT_SOURCE_DIR is empty")
70+
endif()
71+
72+
set(HUNTER_ROOT"${PROJECT_SOURCE_DIR}/HunterPackages" PARENT_SCOPE)
73+
set(
74+
HUNTER_ROOT_INFO
75+
"HUNTER_ROOT set by project sources directory"
76+
PARENT_SCOPE
77+
)
78+
endfunction()
79+
80+
# Download project to HUNTER_ROOT
81+
function(hunter_gate_do_download)
82+
message(
83+
STATUS
84+
"[hunter] Hunter not found, start download to '${HUNTER_ROOT}' ..."
85+
)
86+
87+
if(NOTPROJECT_BINARY_DIR)
88+
message(
89+
FATAL_ERROR
90+
"PROJECT_BINARY_DIR is empty. "
91+
"Move HunterGate file **after** first project command"
92+
)
93+
endif()
94+
95+
set(URL_BASE"https://github.com/ruslo/hunter/archive")
96+
file(
97+
WRITE
98+
"${PROJECT_BINARY_DIR}/Hunter-prefix/CMakeLists.txt"
99+
"cmake_minimum_required(VERSION 2.8.10)\n"
100+
"include(ExternalProject)\n"
101+
"ExternalProject_Add(\n"
102+
" Hunter\n"
103+
" URL\n"
104+
"\"${URL_BASE}/v${HUNTER_MINIMUM_VERSION}.tar.gz\"\n"
105+
" URL_HASH\n"
106+
" SHA1=${HUNTER_MINIMUM_VERSION_HASH}\n"
107+
" DOWNLOAD_DIR\n"
108+
"\"${HUNTER_ROOT}/Download\"\n"
109+
" SOURCE_DIR\n"
110+
"\"${HUNTER_ROOT}/Source\"\n"
111+
" CONFIGURE_COMMAND\n"
112+
"\"\"\n"
113+
" BUILD_COMMAND\n"
114+
"\"\"\n"
115+
" INSTALL_COMMAND\n"
116+
"\"\"\n"
117+
")\n"
118+
)
119+
120+
execute_process(
121+
COMMAND
122+
"${CMAKE_COMMAND}" .
123+
WORKING_DIRECTORY
124+
"${PROJECT_BINARY_DIR}/Hunter-prefix"
125+
RESULT_VARIABLE
126+
HUNTER_DOWNLOAD_RESULT
127+
)
128+
129+
if(NOT HUNTER_DOWNLOAD_RESULTEQUAL 0)
130+
message(FATAL_ERROR"Configure download project failed")
131+
endif()
132+
133+
execute_process(
134+
COMMAND
135+
"${CMAKE_COMMAND}" --build .
136+
WORKING_DIRECTORY
137+
"${PROJECT_BINARY_DIR}/Hunter-prefix"
138+
RESULT_VARIABLE
139+
HUNTER_DOWNLOAD_RESULT
140+
)
141+
142+
if(NOT HUNTER_DOWNLOAD_RESULTEQUAL 0)
143+
message(FATAL_ERROR"Build download project failed")
144+
endif()
145+
146+
execute_process(
147+
COMMAND
148+
"${CMAKE_COMMAND}"
149+
-E
150+
touch
151+
"${HUNTER_ROOT}/installed.by.gate"
152+
)
153+
154+
message(STATUS"[hunter] downloaded to '${HUNTER_ROOT}'")
155+
endfunction()
156+
157+
hunter_gate_detect_root()# set HUNTER_ROOT and HUNTER_ROOT_INFO
158+
159+
if(NOT HUNTER_ROOT)
160+
message(
161+
FATAL_ERROR
162+
"Internal error in 'hunter_gate_detect_root': HUNTER_ROOT is not setted"
163+
)
164+
endif()
165+
166+
# Beautify path, fix probable problems with windows path slashes
167+
get_filename_component(HUNTER_ROOT"${HUNTER_ROOT}"ABSOLUTE)
168+
169+
if(NOTEXISTS"${HUNTER_ROOT}")
170+
hunter_gate_do_download()
171+
if(NOTEXISTS"${HUNTER_ROOT}")
172+
message(
173+
FATAL_ERROR
174+
"Internal error in 'hunter_gate_do_download': "
175+
"directory HUNTER_ROOT not found"
176+
)
177+
endif()
178+
endif()
179+
180+
# at this point: HUNTER_ROOT exists and is file or directory
181+
if(NOTIS_DIRECTORY"${HUNTER_ROOT}")
182+
message(
183+
FATAL_ERROR
184+
"HUNTER_ROOT is not directory (${HUNTER_ROOT})"
185+
"(${HUNTER_ROOT_INFO})"
186+
)
187+
endif()
188+
189+
# at this point: HUNTER_ROOT exists and is directory
190+
file(GLOB _hunter_result"${HUNTER_ROOT}/*")
191+
list(LENGTH _hunter_result _hunter_result_len)
192+
if(_hunter_result_lenEQUAL 0)
193+
# HUNTER_ROOT directory is empty, let's download it
194+
hunter_gate_do_download()
195+
endif()
196+
197+
unset(_hunter_result)
198+
unset(_hunter_result_len)
199+
200+
# at this point: HUNTER_ROOT exists and is not empty directory
201+
if(NOTEXISTS"${HUNTER_ROOT}/Source/cmake/Hunter")
202+
message(
203+
FATAL_ERROR
204+
"HUNTER_ROOT directory exists (${HUNTER_ROOT})"
205+
"but '${HUNTER_ROOT}/Source/cmake/Hunter' file not found"
206+
"(${HUNTER_ROOT_INFO})"
207+
)
208+
endif()
209+
210+
# check version
211+
if(NOTEXISTS"${HUNTER_ROOT}/Source/cmake/version.cmake")
212+
message(
213+
FATAL_ERROR
214+
"HUNTER_ROOT directory exists (${HUNTER_ROOT})"
215+
"but '${HUNTER_ROOT}/Source/cmake/version.cmake' file not found"
216+
"(${HUNTER_ROOT_INFO})"
217+
)
218+
endif()
219+
220+
unset(HUNTER_VERSION)
221+
include("${HUNTER_ROOT}/Source/cmake/version.cmake")
222+
if(NOT HUNTER_VERSION)
223+
message(
224+
FATAL_ERROR
225+
"Internal error: HUNTER_VERSION is not set in `version.cmake`"
226+
)
227+
endif()
228+
229+
if(HUNTER_VERSIONVERSION_LESS HUNTER_MINIMUM_VERSION)
230+
message(
231+
"Current version is${HUNTER_VERSION}. "
232+
"Minimum version is${HUNTER_MINIMUM_VERSION}. "
233+
"Try autoupdate..."
234+
)
235+
236+
if(NOTEXISTS"${HUNTER_ROOT}/installed.by.gate")
237+
message(
238+
FATAL_ERROR
239+
"Please update version manually or remove directory `${HUNTER_ROOT}`."
240+
)
241+
endif()
242+
243+
if(EXISTS"${HUNTER_ROOT}/Source/.git")
244+
message(
245+
FATAL_ERROR
246+
"Internal error: `installed.by.gate` and `.git`"
247+
)
248+
endif()
249+
# File `${HUNTER_ROOT}/installed.by.gate` exists, hence current version
250+
# installed by older gate file and can be auto-updated by current gate
251+
if(NOTEXISTS"${HUNTER_ROOT}/Source/scripts/sleep.cmake")
252+
message(FATAL_ERROR"Internal error: sleep.cmake not found")
253+
endif()
254+
255+
set(_hunter_timeout 10)
256+
message("")
257+
message("***** AUTO UPDATE *****")
258+
message("")
259+
message("Directories:")
260+
message(" * `${HUNTER_ROOT}/Base`")
261+
message(" * `${HUNTER_ROOT}/Source`")
262+
message("will be REMOVED")
263+
message("")
264+
265+
foreach(x RANGE${_hunter_timeout})
266+
math(EXPR _hunter_output"(${_hunter_timeout}) - (${x})")
267+
execute_process(
268+
COMMAND
269+
"${CMAKE_COMMAND}"
270+
-E
271+
echo_append
272+
"${_hunter_output} "
273+
)
274+
if(NOT _hunter_outputEQUAL 0)
275+
execute_process(
276+
COMMAND
277+
"${CMAKE_CTEST_COMMAND}"
278+
-S
279+
"${HUNTER_ROOT}/Source/scripts/sleep.cmake"
280+
)
281+
endif()
282+
endforeach()
283+
284+
# One more sanity check...
285+
string(COMPAREEQUAL"${HUNTER_ROOT}""" _hunter_root_is_empty)
286+
if(_hunter_root_is_empty)
287+
message(FATAL_ERROR"Internal error: HUNTER_ROOT is empty")
288+
endif()
289+
290+
# Remove old version
291+
if(EXISTS"${HUNTER_ROOT}/Base")
292+
execute_process(
293+
COMMAND
294+
"${CMAKE_COMMAND}"
295+
-E
296+
remove_directory
297+
"${HUNTER_ROOT}/Base"
298+
)
299+
endif()
300+
if(EXISTS"${HUNTER_ROOT}/Source")
301+
execute_process(
302+
COMMAND
303+
"${CMAKE_COMMAND}"
304+
-E
305+
remove_directory
306+
"${HUNTER_ROOT}/Source"
307+
)
308+
endif()
309+
310+
# Download new version
311+
hunter_gate_do_download()
312+
313+
# Sanity check: master file exists
314+
if(NOTEXISTS"${HUNTER_ROOT}/Source/cmake/Hunter")
315+
message(FATAL_ERROR"Broken download: master file not found")
316+
endif()
317+
318+
# Sanity check: version is not less than minimum
319+
if(NOTEXISTS"${HUNTER_ROOT}/Source/cmake/version.cmake")
320+
message(FATAL_ERROR"Broken download: version.cmake not found")
321+
endif()
322+
323+
unset(HUNTER_VERSION)
324+
include("${HUNTER_ROOT}/Source/cmake/version.cmake")
325+
if(NOT HUNTER_VERSION)
326+
message(
327+
FATAL_ERROR
328+
"Internal error: HUNTER_VERSION is not set in `version.cmake`"
329+
)
330+
endif()
331+
332+
if(HUNTER_VERSIONVERSION_LESS HUNTER_MINIMUM_VERSION)
333+
message(FATAL_ERROR"Broken download: version is less than minimum")
334+
endif()
335+
endif()
336+
337+
# HUNTER_ROOT found or downloaded if not exists, i.e. can be used now
338+
include("${HUNTER_ROOT}/Source/cmake/Hunter")
339+
340+
include(hunter_status_debug)
341+
hunter_status_debug("${HUNTER_ROOT_INFO}")
342+
343+
include(hunter_add_package)

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp