summaryrefslogtreecommitdiff
path: root/indra/cmake
diff options
context:
space:
mode:
Diffstat (limited to 'indra/cmake')
-rw-r--r--indra/cmake/00-Common.cmake4
-rw-r--r--indra/cmake/Copy3rdPartyLibs.cmake18
-rw-r--r--indra/cmake/Havok.cmake128
-rw-r--r--indra/cmake/LLSharedLibs.cmake59
4 files changed, 105 insertions, 104 deletions
diff --git a/indra/cmake/00-Common.cmake b/indra/cmake/00-Common.cmake
index f925fdda5d..f792280654 100644
--- a/indra/cmake/00-Common.cmake
+++ b/indra/cmake/00-Common.cmake
@@ -19,7 +19,9 @@ set(${CMAKE_CURRENT_LIST_FILE}_INCLUDED "YES")
include(Variables)
# We go to some trouble to set LL_BUILD to the set of relevant compiler flags.
-set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} $ENV{LL_BUILD}")
+set(CMAKE_CXX_FLAGS_RELEASE "$ENV{LL_BUILD_RELEASE}")
+set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "$ENV{LL_BUILD_RELWITHDEBINFO}")
+set(CMAKE_CXX_FLAGS_DEBUG "$ENV{LL_BUILD_DEBUG}")
# Given that, all the flags you see added below are flags NOT present in
# https://bitbucket.org/lindenlab/viewer-build-variables/src/tip/variables.
# Before adding new ones here, it's important to ask: can this flag really be
diff --git a/indra/cmake/Copy3rdPartyLibs.cmake b/indra/cmake/Copy3rdPartyLibs.cmake
index 14510d654f..43188673eb 100644
--- a/indra/cmake/Copy3rdPartyLibs.cmake
+++ b/indra/cmake/Copy3rdPartyLibs.cmake
@@ -67,8 +67,9 @@ if(WINDOWS)
endif (MSVC80)
# try to copy VS2010 redist independently of system version
- list(APPEND LMSVC_VER 100)
- list(APPEND LMSVC_VERDOT 10.0)
+ # maint-7360 CP
+ # list(APPEND LMSVC_VER 100)
+ # list(APPEND LMSVC_VERDOT 10.0)
list(LENGTH LMSVC_VER count)
math(EXPR count "${count}-1")
@@ -102,12 +103,17 @@ if(WINDOWS)
unset(debug_msvc_redist_path CACHE)
endif()
+ if(ADDRESS_SIZE EQUAL 32)
+ # this folder contains the 32bit DLLs.. (yes really!)
+ set(registry_find_path "[HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Windows;Directory]/SysWOW64")
+ else(ADDRESS_SIZE EQUAL 32)
+ # this folder contains the 64bit DLLs.. (yes really!)
+ set(registry_find_path "[HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Windows;Directory]/System32")
+ endif(ADDRESS_SIZE EQUAL 32)
+
FIND_PATH(release_msvc_redist_path NAME msvcr${MSVC_VER}.dll
PATHS
- [HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\${MSVC_VERDOT}\\Setup\\VC;ProductDir]/redist/x86/Microsoft.VC${MSVC_VER}.CRT
- [HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Windows;Directory]/SysWOW64
- [HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Windows;Directory]/System32
- ${MSVC_REDIST_PATH}
+ ${registry_find_path}
NO_DEFAULT_PATH
)
diff --git a/indra/cmake/Havok.cmake b/indra/cmake/Havok.cmake
index 99e7334118..811a126b8f 100644
--- a/indra/cmake/Havok.cmake
+++ b/indra/cmake/Havok.cmake
@@ -8,6 +8,11 @@ use_prebuilt_binary(havok-source)
set(Havok_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include/havok/Source)
list(APPEND Havok_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include/havok/Demo)
+# HK_DISABLE_IMPLICIT_VVECTOR3_CONVERSION suppresses an intended conversion
+# function which Xcode scolds us will unconditionally enter infinite
+# recursion if called. This hides that function.
+add_definitions("-DHK_DISABLE_IMPLICIT_VVECTOR3_CONVERSION")
+
set(HAVOK_DEBUG_LIBRARY_PATH ${LIBS_PREBUILT_DIR}/lib/debug/havok-fulldebug)
set(HAVOK_RELEASE_LIBRARY_PATH ${LIBS_PREBUILT_DIR}/lib/release/havok)
@@ -49,89 +54,74 @@ unset(HK_DEBUG_LIBRARIES)
unset(HK_RELEASE_LIBRARIES)
unset(HK_RELWITHDEBINFO_LIBRARIES)
+if (DEBUG_PREBUILT)
+ # DEBUG_MESSAGE() displays debugging message
+ function(DEBUG_MESSAGE)
+ # prints message args separated by semicolons rather than spaces,
+ # but making it pretty is a lot more work
+ message(STATUS "${ARGN}")
+ endfunction(DEBUG_MESSAGE)
+else (DEBUG_PREBUILT)
+ # without DEBUG_PREBUILT, DEBUG_MESSAGE() is a no-op
+ function(DEBUG_MESSAGE)
+ endfunction(DEBUG_MESSAGE)
+endif (DEBUG_PREBUILT)
+
+# DEBUG_EXEC() reports each execute_process() before invoking
+function(DEBUG_EXEC)
+ DEBUG_MESSAGE(${ARGN})
+ execute_process(COMMAND ${ARGN})
+endfunction(DEBUG_EXEC)
+
# *TODO: Figure out why we need to extract like this...
foreach(HAVOK_LIB ${HAVOK_LIBS})
- find_library(HAVOK_DEBUG_LIB_${HAVOK_LIB} ${HAVOK_LIB} PATHS ${HAVOK_DEBUG_LIBRARY_PATH})
- find_library(HAVOK_RELEASE_LIB_${HAVOK_LIB} ${HAVOK_LIB} PATHS ${HAVOK_RELEASE_LIBRARY_PATH})
- find_library(HAVOK_RELWITHDEBINFO_LIB_${HAVOK_LIB} ${HAVOK_LIB} PATHS ${HAVOK_RELWITHDEBINFO_LIBRARY_PATH})
-
- if(LINUX)
- set(debug_dir "${HAVOK_DEBUG_LIBRARY_PATH}/${HAVOK_LIB}")
- set(release_dir "${HAVOK_RELEASE_LIBRARY_PATH}/${HAVOK_LIB}")
- set(relwithdebinfo_dir "${HAVOK_RELWITHDEBINFO_LIBRARY_PATH}/${HAVOK_LIB}")
+ find_library(HAVOK_DEBUG_LIB_${HAVOK_LIB} ${HAVOK_LIB} PATHS ${HAVOK_DEBUG_LIBRARY_PATH})
+ find_library(HAVOK_RELEASE_LIB_${HAVOK_LIB} ${HAVOK_LIB} PATHS ${HAVOK_RELEASE_LIBRARY_PATH})
+ find_library(HAVOK_RELWITHDEBINFO_LIB_${HAVOK_LIB} ${HAVOK_LIB} PATHS ${HAVOK_RELWITHDEBINFO_LIBRARY_PATH})
+
+ if(LINUX)
+ set(debug_dir "${HAVOK_DEBUG_LIBRARY_PATH}/${HAVOK_LIB}")
+ set(release_dir "${HAVOK_RELEASE_LIBRARY_PATH}/${HAVOK_LIB}")
+ set(relwithdebinfo_dir "${HAVOK_RELWITHDEBINFO_LIBRARY_PATH}/${HAVOK_LIB}")
# Try to avoid extracting havok library each time we run cmake.
if("${havok_${HAVOK_LIB}_extracted}" STREQUAL "" AND EXISTS "${PREBUILD_TRACKING_DIR}/havok_${HAVOK_LIB}_extracted")
file(READ ${PREBUILD_TRACKING_DIR}/havok_${HAVOK_LIB}_extracted "havok_${HAVOK_LIB}_extracted")
- if(DEBUG_PREBUILT)
- message(STATUS "havok_${HAVOK_LIB}_extracted: \"${havok_${HAVOK_LIB}_extracted}\"")
- endif(DEBUG_PREBUILT)
+ DEBUG_MESSAGE("havok_${HAVOK_LIB}_extracted: \"${havok_${HAVOK_LIB}_extracted}\"")
endif("${havok_${HAVOK_LIB}_extracted}" STREQUAL "" AND EXISTS "${PREBUILD_TRACKING_DIR}/havok_${HAVOK_LIB}_extracted")
if(${PREBUILD_TRACKING_DIR}/havok_source_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/havok_${HAVOK_LIB}_extracted OR NOT ${havok_${HAVOK_LIB}_extracted} EQUAL 0)
- if(DEBUG_PREBUILT)
- MESSAGE(STATUS "Extracting ${HAVOK_LIB}...")
- endif(DEBUG_PREBUILT)
- set(cmd "mkdir")
-
- if(DEBUG_PREBUILT)
- MESSAGE(STATUS "${cmd} ${debug_dir}")
- endif(DEBUG_PREBUILT)
- exec_program( ${cmd} ${HAVOK_DEBUG_LIBRARY_PATH} ARGS ${debug_dir} OUTPUT_VARIABLE rv)
-
- if(DEBUG_PREBUILT)
- MESSAGE(STATUS "${cmd} ${release_dir}")
- endif(DEBUG_PREBUILT)
- exec_program( ${cmd} ${HAVOK_RELEASE_LIBRARY_PATH} ARGS ${release_dir} OUTPUT_VARIABLE rv)
-
- if(DEBUG_PREBUILT)
- MESSAGE(STATUS "${cmd} ${relwithdebinfo_dir}")
- endif(DEBUG_PREBUILT)
- exec_program( ${cmd} ${HAVOK_RELWITHDEBINFO_LIBRARY_PATH} ARGS ${relwithdebinfo_dir} OUTPUT_VARIABLE rv)
-
- set(cmd "ar")
- set(arg " -xv")
- set(arg "${arg} ../lib${HAVOK_LIB}.a")
- if(DEBUG_PREBUILT)
- MESSAGE(STATUS "cd ${debug_dir} && ${cmd} ${arg}")
- endif(DEBUG_PREBUILT)
- exec_program( ${cmd} ${debug_dir} ARGS ${arg} OUTPUT_VARIABLE rv)
-
- if(DEBUG_PREBUILT)
- MESSAGE(STATUS "cd ${release_dir} && ${cmd} ${arg}")
- endif(DEBUG_PREBUILT)
- exec_program( ${cmd} ${release_dir} ARGS ${arg} OUTPUT_VARIABLE rv)
-
- if(DEBUG_PREBUILT)
- MESSAGE(STATUS "cd ${relwithdebinfo_dir} && ${cmd} ${arg}")
- endif(DEBUG_PREBUILT)
- exec_program( ${cmd} ${relwithdebinfo_dir} ARGS ${arg} OUTPUT_VARIABLE rv)
+ DEBUG_MESSAGE("Extracting ${HAVOK_LIB}...")
+
+ foreach(lib ${debug_dir} ${release_dir} ${relwithdebinfo_dir})
+ DEBUG_EXEC("mkdir" ${lib})
+ DEBUG_EXEC("ar" "-xv" "../lib${HAVOK_LIB}.a"
+ WORKING_DIRECTORY ${lib})
+ endforeach(lib)
# Just assume success for now.
set(havok_${HAVOK_LIB}_extracted 0)
file(WRITE ${PREBUILD_TRACKING_DIR}/havok_${HAVOK_LIB}_extracted "${havok_${HAVOK_LIB}_extracted}")
- endif(${PREBUILD_TRACKING_DIR}/havok_source_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/havok_${HAVOK_LIB}_extracted OR NOT ${havok_${HAVOK_LIB}_extracted} EQUAL 0)
-
- file(GLOB extracted_debug "${debug_dir}/*.o")
- file(GLOB extracted_release "${release_dir}/*.o")
- file(GLOB extracted_relwithdebinfo "${relwithdebinfo_dir}/*.o")
-
- if(DEBUG_PREBUILT)
- MESSAGE(STATUS "extracted_debug ${debug_dir}/*.o")
- MESSAGE(STATUS "extracted_release ${release_dir}/*.o")
- MESSAGE(STATUS "extracted_relwithdebinfo ${relwithdebinfo_dir}/*.o")
- endif(DEBUG_PREBUILT)
-
- list(APPEND HK_DEBUG_LIBRARIES ${extracted_debug})
- list(APPEND HK_RELEASE_LIBRARIES ${extracted_release})
- list(APPEND HK_RELWITHDEBINFO_LIBRARIES ${extracted_relwithdebinfo})
- else(LINUX)
- # Win32
- list(APPEND HK_DEBUG_LIBRARIES ${HAVOK_DEBUG_LIB_${HAVOK_LIB}})
- list(APPEND HK_RELEASE_LIBRARIES ${HAVOK_RELEASE_LIB_${HAVOK_LIB}})
- list(APPEND HK_RELWITHDEBINFO_LIBRARIES ${HAVOK_RELWITHDEBINFO_LIB_${HAVOK_LIB}})
- endif (LINUX)
+ endif()
+
+ file(GLOB extracted_debug "${debug_dir}/*.o")
+ file(GLOB extracted_release "${release_dir}/*.o")
+ file(GLOB extracted_relwithdebinfo "${relwithdebinfo_dir}/*.o")
+
+ DEBUG_MESSAGE("extracted_debug ${debug_dir}/*.o")
+ DEBUG_MESSAGE("extracted_release ${release_dir}/*.o")
+ DEBUG_MESSAGE("extracted_relwithdebinfo ${relwithdebinfo_dir}/*.o")
+
+ list(APPEND HK_DEBUG_LIBRARIES ${extracted_debug})
+ list(APPEND HK_RELEASE_LIBRARIES ${extracted_release})
+ list(APPEND HK_RELWITHDEBINFO_LIBRARIES ${extracted_relwithdebinfo})
+ else(LINUX)
+ # Win32
+ list(APPEND HK_DEBUG_LIBRARIES ${HAVOK_DEBUG_LIB_${HAVOK_LIB}})
+ list(APPEND HK_RELEASE_LIBRARIES ${HAVOK_RELEASE_LIB_${HAVOK_LIB}})
+ list(APPEND HK_RELWITHDEBINFO_LIBRARIES ${HAVOK_RELWITHDEBINFO_LIB_${HAVOK_LIB}})
+ endif (LINUX)
endforeach(HAVOK_LIB)
endif(NOT DEFINED ${CMAKE_CURRENT_LIST_FILE}_INCLUDED)
diff --git a/indra/cmake/LLSharedLibs.cmake b/indra/cmake/LLSharedLibs.cmake
index a3c1c871aa..f69b45cd92 100644
--- a/indra/cmake/LLSharedLibs.cmake
+++ b/indra/cmake/LLSharedLibs.cmake
@@ -3,35 +3,38 @@
macro(ll_deploy_sharedlibs_command target_exe)
set(TARGET_LOCATION $<TARGET_FILE:${target_exe}>)
get_filename_component(OUTPUT_PATH ${TARGET_LOCATION} PATH)
-
- if(DARWIN)
- SET_TEST_PATH(SEARCH_DIRS)
- get_target_property(IS_BUNDLE ${target_exe} MACOSX_BUNDLE)
- if(IS_BUNDLE)
- # If its a bundle the exe is not in the target location, this should find it.
- get_filename_component(TARGET_FILE ${TARGET_LOCATION} NAME)
- set(OUTPUT_PATH ${TARGET_LOCATION}.app/Contents/MacOS)
- set(TARGET_LOCATION ${OUTPUT_PATH}/${TARGET_FILE})
- set(OUTPUT_PATH ${OUTPUT_PATH}/../Resources)
- endif(IS_BUNDLE)
- elseif(WINDOWS)
- SET_TEST_PATH(SEARCH_DIRS)
- LIST(APPEND SEARCH_DIRS "$ENV{SystemRoot}/system32")
- elseif(LINUX)
- SET_TEST_PATH(SEARCH_DIRS)
- set(OUTPUT_PATH ${OUTPUT_PATH}/lib)
- endif(DARWIN)
- add_custom_command(
- TARGET ${target_exe} POST_BUILD
- COMMAND ${CMAKE_COMMAND}
- ARGS
- "-DBIN_NAME=\"${TARGET_LOCATION}\""
- "-DSEARCH_DIRS=\"${SEARCH_DIRS}\""
- "-DDST_PATH=\"${OUTPUT_PATH}\""
- "-P"
- "${CMAKE_SOURCE_DIR}/cmake/DeploySharedLibs.cmake"
- )
+ # It's not clear that this does anything useful for us on Darwin. It has
+ # been broken for some time now; the BIN_NAME was being constructed as a
+ # ridiculous nonexistent path with duplicated segments. Fixing that only
+ # produces ominous spammy warnings: at the time the command below is run, we
+ # have not yet populated the nested mac-crash-logger.app/Contents/Resources
+ # with the .dylibs with which it was linked. Moreover, the form of the
+ # embedded @executable_path/../Resources/mumble.dylib pathname confuses the
+ # GetPrerequisites.cmake tool invoked by DeploySharedLibs.cmake. It seems
+ # clear that we have long since accomplished by other means what this was
+ # originally supposed to do. Skipping it only eliminates an annoying
+ # non-fatal error.
+ if(NOT DARWIN)
+ if(WINDOWS)
+ SET_TEST_PATH(SEARCH_DIRS)
+ LIST(APPEND SEARCH_DIRS "$ENV{SystemRoot}/system32")
+ elseif(LINUX)
+ SET_TEST_PATH(SEARCH_DIRS)
+ set(OUTPUT_PATH ${OUTPUT_PATH}/lib)
+ endif(WINDOWS)
+
+ add_custom_command(
+ TARGET ${target_exe} POST_BUILD
+ COMMAND ${CMAKE_COMMAND}
+ ARGS
+ "-DBIN_NAME=\"${TARGET_LOCATION}\""
+ "-DSEARCH_DIRS=\"${SEARCH_DIRS}\""
+ "-DDST_PATH=\"${OUTPUT_PATH}\""
+ "-P"
+ "${CMAKE_SOURCE_DIR}/cmake/DeploySharedLibs.cmake"
+ )
+ endif(NOT DARWIN)
endmacro(ll_deploy_sharedlibs_command)