From cd21004bdae8c6e361e2d88404200ee2ae86e083 Mon Sep 17 00:00:00 2001
From: Paul Oppenheim <poppy@lindenlab.com>
Date: Mon, 16 Jun 2008 18:51:52 +0000
Subject: [PATCH] for "new lib install step is too slow!" problem mailed to
 cmake@. Reviewed by bos and cg.

---
 indra/CMakeLists.txt       |  4 ++++
 indra/cmake/Prebuilt.cmake | 25 +++++++++++++++----------
 2 files changed, 19 insertions(+), 10 deletions(-)

diff --git a/indra/CMakeLists.txt b/indra/CMakeLists.txt
index 5c2657ccbfb..dbc9436dcf6 100644
--- a/indra/CMakeLists.txt
+++ b/indra/CMakeLists.txt
@@ -14,6 +14,10 @@ if (NOT CMAKE_BUILD_TYPE)
       "Build type.  One of: Debug Release RelWithDebInfo" FORCE)
 endif (NOT CMAKE_BUILD_TYPE)
 
+# For the library installation process;
+# see cmake/Prebuild.cmake for the counterpart code.
+file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/temp)
+file(WRITE ${CMAKE_BINARY_DIR}/temp/sentinel_installed "0")
 add_subdirectory(cmake)
 
 add_subdirectory(${LIBS_OPEN_PREFIX}llaudio)
diff --git a/indra/cmake/Prebuilt.cmake b/indra/cmake/Prebuilt.cmake
index 33cdeeeed52..5eba28b66b9 100644
--- a/indra/cmake/Prebuilt.cmake
+++ b/indra/cmake/Prebuilt.cmake
@@ -4,17 +4,22 @@ include(Python)
 
 macro (use_prebuilt_binary _binary)
   if (NOT STANDALONE)
-    execute_process(COMMAND ${PYTHON_EXECUTABLE}
-                    install.py 
-                    --install-dir=${CMAKE_SOURCE_DIR}/..
-                    ${_binary}
-                    WORKING_DIRECTORY ${SCRIPTS_DIR}
-                    RESULT_VARIABLE _installed
-                    )
-    if (NOT _installed EQUAL 0)
+    if(${CMAKE_BINARY_DIR}/temp/sentinel_installed IS_NEWER_THAN ${CMAKE_BINARY_DIR}/temp/${_binary}_installed)
+      execute_process(COMMAND ${PYTHON_EXECUTABLE}
+        install.py 
+        --install-dir=${CMAKE_SOURCE_DIR}/..
+        ${_binary}
+        WORKING_DIRECTORY ${SCRIPTS_DIR}
+        RESULT_VARIABLE ${_binary}_installed
+        )
+      file(WRITE ${CMAKE_BINARY_DIR}/temp/${_binary}_installed "${${_binary}_installed}")
+    else(${CMAKE_BINARY_DIR}/temp/sentinel_installed IS_NEWER_THAN ${CMAKE_BINARY_DIR}/temp/${_binary}_installed)
+      set(${_binary}_installed 0)
+    endif(${CMAKE_BINARY_DIR}/temp/sentinel_installed IS_NEWER_THAN ${CMAKE_BINARY_DIR}/temp/${_binary}_installed)
+    if(NOT ${_binary}_installed EQUAL 0)
       message(FATAL_ERROR
               "Failed to download or unpack prebuilt '${_binary}'."
-              " Process returned ${_installed}.")
-    endif (NOT _installed EQUAL 0)
+              " Process returned ${${_binary}_installed}.")
+    endif (NOT ${_binary}_installed EQUAL 0)
   endif (NOT STANDALONE)
 endmacro (use_prebuilt_binary _binary)
-- 
GitLab