1. simon_linden
  2. viewer-rabbit

Commits

VirLinden  committed 71b05c2

SH-2789 WIP - allow building with or without tcmalloc, default to tcmalloc enabled

  • Participants
  • Parent commits 1efd125
  • Branches default

Comments (0)

Files changed (3)

File indra/cmake/FindGooglePerfTools.cmake

View file
   PROFILER_LIBRARY
   GOOGLE_PERFTOOLS_INCLUDE_DIR
   )
-
-SET(GOOGLE_PERFTOOLS_FOUND "NO")

File indra/cmake/GooglePerfTools.cmake

View file
 # -*- cmake -*-
 include(Prebuilt)
 
+# If you want to enable or disable TCMALLOC in viewer builds, this is the place.
+# set ON or OFF as desired.
+set (USE_TCMALLOC ON)
+
 if (STANDALONE)
   include(FindGooglePerfTools)
 else (STANDALONE)
   if (WINDOWS)
-    use_prebuilt_binary(tcmalloc)
-    set(TCMALLOC_LIBRARIES 
-        debug libtcmalloc_minimal-debug
-        optimized libtcmalloc_minimal)
+    if (USE_TCMALLOC)
+       use_prebuilt_binary(tcmalloc)
+       set(TCMALLOC_LIBRARIES 
+         debug libtcmalloc_minimal-debug
+         optimized libtcmalloc_minimal)
+    else (USE_TCMALLOC)
+      set(TCMALLOC_LIBRARIES)
+    endif (USE_TCMALLOC)
     set(GOOGLE_PERFTOOLS_FOUND "YES")
   endif (WINDOWS)
   if (LINUX)
-    use_prebuilt_binary(tcmalloc)
-    set(TCMALLOC_LIBRARIES 
-    tcmalloc)
+    if (USE_TCMALLOC)
+      use_prebuilt_binary(tcmalloc)
+      set(TCMALLOC_LIBRARIES 
+        tcmalloc)
+    else (USE_TCMALLOC)
+      set(TCMALLOC_LIBRARIES)
+    endif (USE_TCMALLOC)
     set(PROFILER_LIBRARIES profiler)
     set(GOOGLE_PERFTOOLS_INCLUDE_DIR
         ${LIBS_PREBUILT_DIR}/include)
 endif (GOOGLE_PERFTOOLS_FOUND)
 
 if (WINDOWS)
-   set(USE_GOOGLE_PERFTOOLS OFF)
+   set(USE_GOOGLE_PERFTOOLS ON)
 endif (WINDOWS)
 
+# Apparently buggy - LL_USE_TCMALLOC never gets set. Fix when we have time to test the
+# corresponding source code.
+if (USE_TCMALLOC)
+  set(TCMALLOC_FLAG -ULL_USE_TCMALLOC=1)
+else (USE_TCMALLOC)
+  set(TCMALLOC_FLAG -ULL_USE_TCMALLOC)
+endif (USE_TCMALLOC)
+
 if (USE_GOOGLE_PERFTOOLS)
-  set(TCMALLOC_FLAG -ULL_USE_TCMALLOC=1)
   include_directories(${GOOGLE_PERFTOOLS_INCLUDE_DIR})
   set(GOOGLE_PERFTOOLS_LIBRARIES ${TCMALLOC_LIBRARIES} ${STACKTRACE_LIBRARIES} ${PROFILER_LIBRARIES})
 else (USE_GOOGLE_PERFTOOLS)
-  set(TCMALLOC_FLAG -ULL_USE_TCMALLOC)
 endif (USE_GOOGLE_PERFTOOLS)

File indra/newview/CMakeLists.txt

View file
     "Add a package target that builds an installer package.")
 
 if (WINDOWS)
+    if (USE_TCMALLOC)
+      set(TCMALLOC_INCLUDE_FLAGS  "/INCLUDE:__tcmalloc")
+    else (USE_TCMALLOC)
+      set(TCMALLOC_INCLUDE_FLAGS)
+    endif (USE_TCMALLOC)
+  
     set_target_properties(${VIEWER_BINARY_NAME}
         PROPERTIES
-        # *TODO -reenable this once we get server usage sorted out
-        #LINK_FLAGS "/debug /NODEFAULTLIB:LIBCMT /SUBSYSTEM:WINDOWS /INCLUDE:\"__tcmalloc\""
-#        LINK_FLAGS "/debug /NODEFAULTLIB:LIBCMT /SUBSYSTEM:WINDOWS /INCLUDE:__tcmalloc"
-        LINK_FLAGS "/debug /NODEFAULTLIB:LIBCMT /SUBSYSTEM:WINDOWS"
+        LINK_FLAGS "/debug /NODEFAULTLIB:LIBCMT /SUBSYSTEM:WINDOWS ${TCMALLOC_INCLUDE_FLAGS}"
         LINK_FLAGS_DEBUG "/NODEFAULTLIB:\"LIBCMT;LIBCMTD;MSVCRT\" /INCREMENTAL:NO"
         LINK_FLAGS_RELEASE ""
         )
     ${CRYPTO_LIBRARIES}
     ${LLLOGIN_LIBRARIES}
     ${LLCONVEXDECOMP_LIBRARY}
-#    ${TCMALLOC_LIBRARIES}
+    ${TCMALLOC_LIBRARIES}
     )
 
 if (USE_KDU)