comparison Resources/CMake/DownloadPackage.cmake @ 603:49945044b06d

check the presence of external software in CMake
author Sebastien Jodogne <s.jodogne@gmail.com>
date Tue, 15 Oct 2013 16:23:42 +0200
parents 27d32fc6209a
children d775a3cb5a06
comparison
equal deleted inserted replaced
602:d5043ff68d58 603:49945044b06d
6 macro(GetUrlExtension TargetVariable Url) 6 macro(GetUrlExtension TargetVariable Url)
7 #string(REGEX REPLACE "^.*/[^.]*\\." "" TMP "${Url}") 7 #string(REGEX REPLACE "^.*/[^.]*\\." "" TMP "${Url}")
8 string(REGEX REPLACE "^.*\\." "" TMP "${Url}") 8 string(REGEX REPLACE "^.*\\." "" TMP "${Url}")
9 string(TOLOWER "${TMP}" "${TargetVariable}") 9 string(TOLOWER "${TMP}" "${TargetVariable}")
10 endmacro() 10 endmacro()
11
12
13 ##
14 ## Check the existence of the required decompression tools
15 ##
16
17 if ("${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "Windows")
18 find_program(ZIP_EXECUTABLE 7z PATHS "$ENV{ProgramFiles}/7-Zip")
19 if (${ZIP_EXECUTABLE} MATCHES "ZIP_EXECUTABLE-NOTFOUND")
20 message(FATAL_ERROR "Please install the '7-zip' software (http://www.7-zip.org/)")
21 endif()
22
23 else()
24 find_program(UNZIP_EXECUTABLE unzip)
25 if (${UNZIP_EXECUTABLE} MATCHES "UNZIP_EXECUTABLE-NOTFOUND")
26 message(FATAL_ERROR "Please install the 'unzip' package")
27 endif()
28
29 find_program(TAR_EXECUTABLE tar)
30 if (${TAR_EXECUTABLE} MATCHES "TAR_EXECUTABLE-NOTFOUND")
31 message(FATAL_ERROR "Please install the 'tar' package")
32 endif()
33 endif()
11 34
12 35
13 macro(DownloadPackage MD5 Url TargetDirectory) 36 macro(DownloadPackage MD5 Url TargetDirectory)
14 if (NOT IS_DIRECTORY "${TargetDirectory}") 37 if (NOT IS_DIRECTORY "${TargetDirectory}")
15 GetUrlFilename(TMP_FILENAME "${Url}") 38 GetUrlFilename(TMP_FILENAME "${Url}")
27 message("Uncompressing ${TMP_FILENAME}") 50 message("Uncompressing ${TMP_FILENAME}")
28 51
29 if ("${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "Windows") 52 if ("${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "Windows")
30 # How to silently extract files using 7-zip 53 # How to silently extract files using 7-zip
31 # http://superuser.com/questions/331148/7zip-command-line-extract-silently-quietly 54 # http://superuser.com/questions/331148/7zip-command-line-extract-silently-quietly
32
33 FIND_PROGRAM(ZIP_EXECUTABLE 7z PATHS "$ENV{ProgramFiles}/7-Zip")
34 55
35 if (("${TMP_EXTENSION}" STREQUAL "gz") OR ("${TMP_EXTENSION}" STREQUAL "tgz")) 56 if (("${TMP_EXTENSION}" STREQUAL "gz") OR ("${TMP_EXTENSION}" STREQUAL "tgz"))
36 execute_process( 57 execute_process(
37 COMMAND ${ZIP_EXECUTABLE} e -y ${TMP_PATH} 58 COMMAND ${ZIP_EXECUTABLE} e -y ${TMP_PATH}
38 WORKING_DIRECTORY ${CMAKE_BINARY_DIR} 59 WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
68 endif() 89 endif()
69 90
70 else() 91 else()
71 if ("${TMP_EXTENSION}" STREQUAL "zip") 92 if ("${TMP_EXTENSION}" STREQUAL "zip")
72 execute_process( 93 execute_process(
73 COMMAND sh -c "unzip -q ${TMP_PATH}" 94 COMMAND sh -c "${UNZIP_EXECUTABLE} -q ${TMP_PATH}"
74 WORKING_DIRECTORY ${CMAKE_BINARY_DIR} 95 WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
75 RESULT_VARIABLE Failure 96 RESULT_VARIABLE Failure
76 ) 97 )
77 elseif (("${TMP_EXTENSION}" STREQUAL "gz") OR ("${TMP_EXTENSION}" STREQUAL "tgz")) 98 elseif (("${TMP_EXTENSION}" STREQUAL "gz") OR ("${TMP_EXTENSION}" STREQUAL "tgz"))
78 #message("tar xvfz ${TMP_PATH}") 99 #message("tar xvfz ${TMP_PATH}")
79 execute_process( 100 execute_process(
80 COMMAND sh -c "tar xfz ${TMP_PATH}" 101 COMMAND sh -c "${TAR_EXECUTABLE} xfz ${TMP_PATH}"
81 WORKING_DIRECTORY ${CMAKE_BINARY_DIR} 102 WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
82 RESULT_VARIABLE Failure 103 RESULT_VARIABLE Failure
83 ) 104 )
84 elseif ("${TMP_EXTENSION}" STREQUAL "bz2") 105 elseif ("${TMP_EXTENSION}" STREQUAL "bz2")
85 execute_process( 106 execute_process(
86 COMMAND sh -c "tar xfj ${TMP_PATH}" 107 COMMAND sh -c "${TAR_EXECUTABLE} xfj ${TMP_PATH}"
87 WORKING_DIRECTORY ${CMAKE_BINARY_DIR} 108 WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
88 RESULT_VARIABLE Failure 109 RESULT_VARIABLE Failure
89 ) 110 )
90 else() 111 else()
91 message(FATAL_ERROR "Unknown package format.") 112 message(FATAL_ERROR "Unknown package format.")