0
|
1 macro(GetUrlFilename TargetVariable Url)
|
|
2 string(REGEX REPLACE "^.*/" "" ${TargetVariable} "${Url}")
|
|
3 endmacro()
|
|
4
|
|
5
|
|
6 macro(GetUrlExtension TargetVariable Url)
|
|
7 #string(REGEX REPLACE "^.*/[^.]*\\." "" TMP "${Url}")
|
|
8 string(REGEX REPLACE "^.*\\." "" TMP "${Url}")
|
|
9 string(TOLOWER "${TMP}" "${TargetVariable}")
|
|
10 endmacro()
|
|
11
|
|
12
|
|
13 macro(DownloadPackage Url TargetDirectory PreloadedVariable UncompressArguments)
|
|
14 if (NOT IS_DIRECTORY "${TargetDirectory}")
|
|
15 GetUrlFilename(TMP_FILENAME "${Url}")
|
|
16 if ("${PreloadedVariable}" STREQUAL "")
|
|
17 set(TMP_PATH "${CMAKE_SOURCE_DIR}/ThirdPartyDownloads/${TMP_FILENAME}")
|
|
18 if (NOT EXISTS "${TMP_PATH}")
|
|
19 message("Downloading ${Url}")
|
|
20 file(DOWNLOAD "${Url}" "${TMP_PATH}" SHOW_PROGRESS)
|
|
21 else()
|
|
22 message("Already downloaded ${Url}")
|
|
23 endif()
|
|
24 else()
|
|
25 message("Using preloaded archive ${PreloadedVariable} for ${Url}")
|
|
26 set(TMP_PATH "${PreloadedVariable}")
|
|
27 endif()
|
|
28
|
|
29 GetUrlExtension(TMP_EXTENSION "${Url}")
|
|
30 #message(${TMP_EXTENSION})
|
|
31
|
|
32 if ("${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "Linux")
|
|
33 if ("${TMP_EXTENSION}" STREQUAL "zip")
|
|
34 execute_process(
|
|
35 COMMAND sh -c "unzip ${TMP_PATH} ${UncompressArguments}"
|
|
36 WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
|
37 )
|
|
38 elseif (("${TMP_EXTENSION}" STREQUAL "gz") OR ("${TMP_EXTENSION}" STREQUAL "tgz"))
|
|
39 #message("tar xvfz ${TMP_PATH} ${UncompressArguments}")
|
|
40 execute_process(
|
|
41 COMMAND sh -c "tar xvfz ${TMP_PATH} ${UncompressArguments}"
|
|
42 WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
|
43 )
|
|
44 elseif ("${TMP_EXTENSION}" STREQUAL "bz2")
|
|
45 execute_process(
|
|
46 COMMAND sh -c "tar xvfj ${TMP_PATH} ${UncompressArguments}"
|
|
47 WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
|
48 )
|
|
49 else()
|
|
50 message(FATAL_ERROR "Unknown package format.")
|
|
51 endif()
|
|
52 else()
|
|
53 message(FATAL_ERROR "Support your platform here")
|
|
54 endif()
|
|
55
|
|
56 if (NOT IS_DIRECTORY "${TargetDirectory}")
|
|
57 message(FATAL_ERROR "The package was not uncompressed at the proper location. Check the CMake instructions.")
|
|
58 endif()
|
|
59 endif()
|
|
60 endmacro()
|
|
61
|