From 032f27aaebc99b0ae4398ed40adc38cc295ba6c8 Mon Sep 17 00:00:00 2001
From: Nat Goodspeed <nat@lindenlab.com>
Date: Thu, 5 Mar 2015 19:17:21 -0500
Subject: [PATCH] Simplify CMake code to generate viewer_version.txt and
 summary.json. The quoting used for the cygwin printf command didn't work for
 'cmake -E echo'. The whole content was enclosed in single quotes, with
 individual string elements enclosed in double quotes. But we ended up with a
 summary.json containing (e.g.): '{Type:viewer,Version:3.7.26.33262}' instead
 of the desired: {"Type":"viewer","Version":"3.7.26.33262"} HOWEVER: I see no
 compelling reason why either of these files must be deferred to build time.
 It's simpler and more robust to generate them both directly from CMake at
 configure time.

---
 indra/newview/CMakeLists.txt | 19 ++++---------------
 1 file changed, 4 insertions(+), 15 deletions(-)

diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index 530699cfd94..e2c213389b5 100755
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -1307,18 +1307,14 @@ source_group("CMake Rules" FILES ViewerInstall.cmake)
 # the viewer_version.txt file created here is for passing to viewer_manifest and autobuild
 # the summary.json file is created for the benefit of the TeamCity builds, where
 #   it is used to provide descriptive information to the build results page
-add_custom_target(generate_viewer_version ALL
-                  COMMENT Generating '${CMAKE_CURRENT_BINARY_DIR}/viewer_version.txt' for manifest processing
-                  COMMAND ${CMAKE_COMMAND} -E echo '${VIEWER_SHORT_VERSION}.${VIEWER_VERSION_REVISION}' > ${CMAKE_CURRENT_BINARY_DIR}/viewer_version.txt
-
-                  COMMENT Generating '${CMAKE_BINARY_DIR}/summary.json' for TeamCity builds
-                  COMMAND ${CMAKE_COMMAND} -E echo '{"Type":"viewer","Version":"${VIEWER_SHORT_VERSION}.${VIEWER_VERSION_REVISION}"}' > ${CMAKE_BINARY_DIR}/summary.json
-                  )
+file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/viewer_version.txt"
+           "${VIEWER_SHORT_VERSION}.${VIEWER_VERSION_REVISION}\n")
+file(WRITE "${CMAKE_BINARY_DIR}/summary.json"
+           "{\"Type\":\"viewer\",\"Version\":\"${VIEWER_SHORT_VERSION}.${VIEWER_VERSION_REVISION}\"}\n")
 
 set_source_files_properties(
    llversioninfo.cpp tests/llversioninfo_test.cpp 
    PROPERTIES
-   DEPENDS generate_viewer_version  # dummy dependency to force recompile every time
    COMPILE_DEFINITIONS "${VIEWER_CHANNEL_VERSION_DEFINES}" # see BuildVersion.cmake
    )
 
@@ -1676,8 +1672,6 @@ if (WINDOWS)
         LINK_FLAGS_RELEASE "/FORCE:MULTIPLE /MAP\"secondlife-bin.MAP\" /OPT:REF /LARGEADDRESSAWARE"
         )
 
-    add_dependencies(${VIEWER_BINARY_NAME} generate_viewer_version)
-
     if(USE_PRECOMPILED_HEADERS)
         set_target_properties(
             ${VIEWER_BINARY_NAME}
@@ -2002,8 +1996,6 @@ if (LINUX)
     llcommon
     )
 
-  add_dependencies(${VIEWER_BINARY_NAME} generate_viewer_version)
-
   add_custom_command(
       OUTPUT ${product}.tar.bz2
       COMMAND ${PYTHON_EXECUTABLE}
@@ -2087,8 +2079,6 @@ if (DARWIN)
      "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/${product}.app/Contents/Info.plist"
     )
 
-  add_dependencies(${VIEWER_BINARY_NAME} generate_viewer_version)
-
   add_custom_command(
     TARGET ${VIEWER_BINARY_NAME} POST_BUILD
     COMMAND ${PYTHON_EXECUTABLE}
@@ -2121,7 +2111,6 @@ if (DARWIN)
 
   if (PACKAGE)
       add_custom_target(llpackage ALL DEPENDS ${VIEWER_BINARY_NAME})
-      add_dependencies(llpackage generate_viewer_version)
 
       add_custom_command(
         TARGET llpackage POST_BUILD
-- 
GitLab