Extract StampTools module (#4268)
author박종현/On-Device Lab(SR)/Staff Engineer/삼성전자 <jh1302.park@samsung.com>
Mon, 15 Jul 2019 09:07:18 +0000 (18:07 +0900)
committerGitHub Enterprise <noreply-CODE@samsung.com>
Mon, 15 Jul 2019 09:07:18 +0000 (18:07 +0900)
This commit extracts StampTools module from ExternalSourceTools.

Signed-off-by: Jonghyun Park <jh1302.park@samsung.com>
cmake/modules/ExternalSourceTools.cmake
cmake/modules/StampTools.cmake [new file with mode: 0644]

index 2bc77c3..3baaeba 100644 (file)
@@ -3,6 +3,7 @@
 #
 function(ExternalSource_Download PREFIX)
   include(CMakeParseArguments)
+  nncc_include(StampTools)
 
   cmake_parse_arguments(ARG "" "DIRNAME;URL;CHECKSUM" "" ${ARGN})
 
@@ -36,16 +37,10 @@ function(ExternalSource_Download PREFIX)
   endif(NOT EXISTS "${CACHE_DIR}")
 
   # Compare URL in STAMP file and the given URL
-  # - Remove STAMP if they are unmatched
-  if(EXISTS "${STAMP_PATH}")
-    file(READ ${STAMP_PATH} PREV_URL)
+  Stamp_Check(URL_CHECK "${STAMP_PATH}" "${URL}")
 
-    if(NOT URL STREQUAL PREV_URL)
-      file(REMOVE "${STAMP_PATH}")
-    endif(NOT URL STREQUAL PREV_URL)
-  endif(EXISTS "${STAMP_PATH}")
-
-  if(NOT EXISTS "${STAMP_PATH}")
+  if(NOT URL_CHECK)
+    file(REMOVE "${STAMP_PATH}")
     file(REMOVE_RECURSE "${OUT_DIR}")
     file(REMOVE_RECURSE "${TMP_DIR}")
 
diff --git a/cmake/modules/StampTools.cmake b/cmake/modules/StampTools.cmake
new file mode 100644 (file)
index 0000000..d38e033
--- /dev/null
@@ -0,0 +1,18 @@
+# Stamp_Check(VARNAME PATH CONTENT)
+#  Stamp_Check sets VARNAME as TRUE if a file exists at "PATH", and its content is same as "CONTENT"
+#  Stamp_Check sets VARNAME as FALSE otherwise
+function(Stamp_Check VARNAME PATH EXPECTED_CONTENT)
+  if(NOT EXISTS "${PATH}")
+    set(${VARNAME} FALSE PARENT_SCOPE)
+    return()
+  endif(NOT EXISTS "${PATH}")
+
+  file(READ ${PATH} OBTAINED_CONTENT)
+
+  if(NOT EXPECTED_CONTENT STREQUAL OBTAINED_CONTENT)
+    set(${VARNAME} FALSE PARENT_SCOPE)
+    return()
+  endif(NOT EXPECTED_CONTENT STREQUAL OBTAINED_CONTENT)
+
+  set(${VARNAME} TRUE PARENT_SCOPE)
+endfunction(Stamp_Check)