summaryrefslogtreecommitdiff
path: root/infra/nncc/cmake/modules/ExternalSourceTools.cmake
diff options
context:
space:
mode:
authorChunseok Lee <chunseok.lee@samsung.com>2020-03-05 15:10:09 +0900
committerChunseok Lee <chunseok.lee@samsung.com>2020-03-05 15:22:53 +0900
commitd91a039e0eda6fd70dcd22672b8ce1817c1ca50e (patch)
tree62668ec548cf31fadbbf4e99522999ad13434a25 /infra/nncc/cmake/modules/ExternalSourceTools.cmake
parentbd11b24234d7d43dfe05a81c520aa01ffad06e42 (diff)
downloadnnfw-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.cmake97
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)