diff options
author | Chunseok Lee <chunseok.lee@samsung.com> | 2020-03-05 15:10:09 +0900 |
---|---|---|
committer | Chunseok Lee <chunseok.lee@samsung.com> | 2020-03-05 15:22:53 +0900 |
commit | d91a039e0eda6fd70dcd22672b8ce1817c1ca50e (patch) | |
tree | 62668ec548cf31fadbbf4e99522999ad13434a25 /infra/nncc/cmake/modules/ExternalSourceTools.cmake | |
parent | bd11b24234d7d43dfe05a81c520aa01ffad06e42 (diff) | |
download | nnfw-d91a039e0eda6fd70dcd22672b8ce1817c1ca50e.tar.gz nnfw-d91a039e0eda6fd70dcd22672b8ce1817c1ca50e.tar.bz2 nnfw-d91a039e0eda6fd70dcd22672b8ce1817c1ca50e.zip |
catch up to tizen_5.5 and remove unness dir
- update to tizen_5.5
- remove dirs
Diffstat (limited to 'infra/nncc/cmake/modules/ExternalSourceTools.cmake')
-rw-r--r-- | infra/nncc/cmake/modules/ExternalSourceTools.cmake | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/infra/nncc/cmake/modules/ExternalSourceTools.cmake b/infra/nncc/cmake/modules/ExternalSourceTools.cmake new file mode 100644 index 000000000..3baaeba8e --- /dev/null +++ b/infra/nncc/cmake/modules/ExternalSourceTools.cmake @@ -0,0 +1,97 @@ +# +# ExternalSource_Download(VAR ...) +# +function(ExternalSource_Download PREFIX) + include(CMakeParseArguments) + nncc_include(StampTools) + + cmake_parse_arguments(ARG "" "DIRNAME;URL;CHECKSUM" "" ${ARGN}) + + # Configure URL + if(ARG_URL) + set(URL ${ARG_URL}) + else() + # Use the first unparsed argument as URL (for backward compatibility) + list(GET ARG_UNPARSED_ARGUMENTS 0 URL) + endif(ARG_URL) + + # Configure DIRNAME + if(NOT ARG_DIRNAME) + # Use PREFIX as DIRNAME (for backward compatibility) + set(DIRNAME ${PREFIX}) + else() + set(DIRNAME ${ARG_DIRNAME}) + endif(NOT ARG_DIRNAME) + + get_filename_component(FILENAME ${URL} NAME) + + set(CACHE_DIR "${NNCC_EXTERNALS_DIR}") + set(OUT_DIR "${CACHE_DIR}/${DIRNAME}") + set(TMP_DIR "${CACHE_DIR}/${DIRNAME}-tmp") + + set(DOWNLOAD_PATH "${CACHE_DIR}/${DIRNAME}-${FILENAME}") + set(STAMP_PATH "${CACHE_DIR}/${DIRNAME}.stamp") + + if(NOT EXISTS "${CACHE_DIR}") + file(MAKE_DIRECTORY "${CACHE_DIR}") + endif(NOT EXISTS "${CACHE_DIR}") + + # Compare URL in STAMP file and the given URL + Stamp_Check(URL_CHECK "${STAMP_PATH}" "${URL}") + + if(NOT URL_CHECK) + file(REMOVE "${STAMP_PATH}") + file(REMOVE_RECURSE "${OUT_DIR}") + file(REMOVE_RECURSE "${TMP_DIR}") + + file(MAKE_DIRECTORY "${TMP_DIR}") + + message("-- Download ${PREFIX} from ${URL}") + file(DOWNLOAD ${URL} "${DOWNLOAD_PATH}" SHOW_PROGRESS) + message("-- Download ${PREFIX} from ${URL} - done") + + # Verify checksum + if(ARG_CHECKSUM) + message(STATUS "Verify ${PREFIX} archive") + string(REPLACE "=" ";" CHECKSUM_SPEC "${ARG_CHECKSUM}") + + list(GET CHECKSUM_SPEC 0 CHECKSUM_ALG) + list(GET CHECKSUM_SPEC 1 CHECKSUM_VAL) + string(STRIP "${CHECKSUM_VAL}" CHECKSUM_VAL) + + set(EXPECTED_CHECKSUM ${CHECKSUM_VAL}) + file(${CHECKSUM_ALG} "${DOWNLOAD_PATH}" OBTAINED_CHECKSUM) + + if(NOT (EXPECTED_CHECKSUM STREQUAL OBTAINED_CHECKSUM)) + message(STATUS "CHECKSUM MISMATCH") + message(STATUS " expected: ${EXPECTED_CHECKSUM}") + message(STATUS " obtained: ${OBTAINED_CHECKSUM}") + message(FATAL_ERROR "Verify ${PREFIX} archive - fail") + endif(NOT (EXPECTED_CHECKSUM STREQUAL OBTAINED_CHECKSUM)) + + message(STATUS "Verify ${PREFIX} archive - done") + endif(ARG_CHECKSUM) + + message("-- Extract ${PREFIX}") + execute_process(COMMAND ${CMAKE_COMMAND} -E tar xfz "${DOWNLOAD_PATH}" + WORKING_DIRECTORY "${TMP_DIR}") + file(REMOVE "${DOWNLOAD_PATH}") + message("-- Extract ${PREFIX} - done") + + message("-- Cleanup ${PREFIX}") + file(GLOB contents "${TMP_DIR}/*") + list(LENGTH contents n) + if(NOT n EQUAL 1 OR NOT IS_DIRECTORY "${contents}") + set(contents "${TMP_DIR}") + endif() + + get_filename_component(contents ${contents} ABSOLUTE) + + file(RENAME ${contents} "${OUT_DIR}") + file(REMOVE_RECURSE "${TMP_DIR}") + file(WRITE "${STAMP_PATH}" "${URL}") + message("-- Cleanup ${PREFIX} - done") + endif() + + set(${PREFIX}_SOURCE_DIR "${OUT_DIR}" PARENT_SCOPE) +endfunction(ExternalSource_Download) |