diff options
| -rw-r--r-- | autobuild.xml | 3 | ||||
| -rwxr-xr-x | build.sh | 1 | ||||
| -rw-r--r-- | indra/CMakeLists.txt | 6 | ||||
| -rw-r--r-- | indra/cmake/00-Common.cmake | 7 | ||||
| -rw-r--r-- | indra/cmake/Prebuilt.cmake | 56 | ||||
| -rw-r--r-- | indra/cmake/Variables.cmake | 2 | 
6 files changed, 47 insertions, 28 deletions
| diff --git a/autobuild.xml b/autobuild.xml index 7686b48cf5..5ced928668 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -2125,7 +2125,6 @@                    <string>-G</string>                    <string>"Visual Studio 10"</string>                    <string>-DUNATTENDED:BOOL=ON</string> -                  <string>-DUSE_PRECOMPILED_HEADERS=ON</string>                    <string>-DINSTALL_PROPRIETARY=TRUE</string>                    <string>-DUSE_KDU=FALSE</string>                    <string>-DFMOD=FALSE</string> @@ -2203,7 +2202,6 @@                    <string>-G</string>                    <string>"Visual Studio 10"</string>                    <string>-DUNATTENDED:BOOL=ON</string> -                  <string>-DUSE_PRECOMPILED_HEADERS=ON</string>                    <string>-DINSTALL_PROPRIETARY=TRUE</string>                    <string>-DUSE_KDU=FALSE</string>                    <string>-DFMOD=FALSE</string> @@ -2280,7 +2278,6 @@                    <string>-G</string>                    <string>"Visual Studio 10"</string>                    <string>-DUNATTENDED:BOOL=ON</string> -                  <string>-DUSE_PRECOMPILED_HEADERS=ON</string>                    <string>-DINSTALL_PROPRIETARY=TRUE</string>                    <string>-DUSE_KDU=FALSE</string>                    <string>-DFMOD=FALSE</string> @@ -58,7 +58,6 @@ pre_build()      "$AUTOBUILD" configure -c $variant -- \       -DPACKAGE:BOOL=ON \       -DRELEASE_CRASH_REPORTING:BOOL=ON \ -     -DUSE_PRECOMPILED_HEADERS=FALSE \       -DVIEWER_CHANNEL:STRING="\"$viewer_channel\"" \       -DVIEWER_LOGIN_CHANNEL:STRING="\"$viewer_login_channel\"" \       -DGRID:STRING="\"$viewer_grid\"" \ diff --git a/indra/CMakeLists.txt b/indra/CMakeLists.txt index 310e6cbdd4..d1042d6e86 100644 --- a/indra/CMakeLists.txt +++ b/indra/CMakeLists.txt @@ -35,8 +35,10 @@ 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") +if ("${CMAKE_SOURCE_DIR}/../autobuild.xml" IS_NEWER_THAN "${CMAKE_BINARY_DIR}/temp/sentinel_installed") +  file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/temp) +  file(WRITE ${CMAKE_BINARY_DIR}/temp/sentinel_installed "0") +endif ("${CMAKE_SOURCE_DIR}/../autobuild.xml" IS_NEWER_THAN "${CMAKE_BINARY_DIR}/temp/sentinel_installed")  add_subdirectory(cmake)  add_subdirectory(${LIBS_OPEN_PREFIX}llaudio) diff --git a/indra/cmake/00-Common.cmake b/indra/cmake/00-Common.cmake index 15b827b217..faffdc8ccd 100644 --- a/indra/cmake/00-Common.cmake +++ b/indra/cmake/00-Common.cmake @@ -36,6 +36,13 @@ if (WINDOWS)    # Don't build DLLs.    set(BUILD_SHARED_LIBS OFF) +  # for "backwards compatibility", cmake sneaks in the Zm1000 option which royally +  # screws incredibuild. this hack disables it. +  # for details see: http://connect.microsoft.com/VisualStudio/feedback/details/368107/clxx-fatal-error-c1027-inconsistent-values-for-ym-between-creation-and-use-of-precompiled-headers +  # http://www.ogre3d.org/forums/viewtopic.php?f=2&t=60015 +  # http://www.cmake.org/pipermail/cmake/2009-September/032143.html +  string(REPLACE "/Zm1000" " " CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}) +    set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /Od /Zi /MDd /MP -D_SCL_SECURE_NO_WARNINGS=1"        CACHE STRING "C++ compiler debug options" FORCE)    set(CMAKE_CXX_FLAGS_RELWITHDEBINFO  diff --git a/indra/cmake/Prebuilt.cmake b/indra/cmake/Prebuilt.cmake index 1b60d176f1..dbb4dfc46c 100644 --- a/indra/cmake/Prebuilt.cmake +++ b/indra/cmake/Prebuilt.cmake @@ -1,35 +1,49 @@  # -*- cmake -*-  include(FindAutobuild) +if(INSTALL_PROPRIETARY) +  include(FindSCP) +endif(INSTALL_PROPRIETARY) +# The use_prebuilt_binary macro handles automated installation of package +# dependencies using autobuild.  The goal is that 'autobuild install' should +# only be run when we know we need to install a new package.  This should be +# the case in a clean checkout, or if autobuild.xml has been updated since the +# last run (encapsulated by the file ${CMAKE_BINARY_DIR}/temp/sentinel_installed), +# or if a previous attempt to install the package has failed (the exit status +# of previous attempts is serialized in the file +# ${CMAKE_BINARY_DIR}/temp/${_binary}_installed)  macro (use_prebuilt_binary _binary)    if (NOT DEFINED STANDALONE_${_binary})      set(STANDALONE_${_binary} ${STANDALONE})    endif (NOT DEFINED STANDALONE_${_binary})    if (NOT STANDALONE_${_binary}) -    if(${CMAKE_BINARY_DIR}/temp/sentinel_installed IS_NEWER_THAN ${CMAKE_BINARY_DIR}/temp/${_binary}_installed) -      if(INSTALL_PROPRIETARY) -        include(FindSCP) -      endif(INSTALL_PROPRIETARY) -	  if(DEBUG_PREBUILT) -		message("cd ${CMAKE_SOURCE_DIR} && ${AUTOBUILD_EXECUTABLE} install -		--install-dir=${AUTOBUILD_INSTALL_DIR} -		--skip-license-check -		${_binary} ") -	  endif(DEBUG_PREBUILT) -	  execute_process(COMMAND "${AUTOBUILD_EXECUTABLE}" -		install -		--install-dir=${AUTOBUILD_INSTALL_DIR} -		--skip-license-check -		${_binary} -		WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" -		RESULT_VARIABLE ${_binary}_installed -		) +    if("${${_binary}_installed}" STREQUAL "" AND EXISTS "${CMAKE_BINARY_DIR}/temp/${_binary}_installed") +      file(READ ${CMAKE_BINARY_DIR}/temp/${_binary}_installed "${_binary}_installed") +      if(DEBUG_PREBUILT) +        message(STATUS "${_binary}_installed: \"${${_binary}_installed}\"") +      endif(DEBUG_PREBUILT) +    endif("${${_binary}_installed}" STREQUAL "" AND EXISTS "${CMAKE_BINARY_DIR}/temp/${_binary}_installed") + +    if(${CMAKE_BINARY_DIR}/temp/sentinel_installed IS_NEWER_THAN ${CMAKE_BINARY_DIR}/temp/${_binary}_installed OR NOT ${${_binary}_installed} EQUAL 0) +      if(DEBUG_PREBUILT) +        message("cd ${CMAKE_SOURCE_DIR} && ${AUTOBUILD_EXECUTABLE} install +        --install-dir=${AUTOBUILD_INSTALL_DIR} +        --skip-license-check +        ${_binary} ") +      endif(DEBUG_PREBUILT) +      execute_process(COMMAND "${AUTOBUILD_EXECUTABLE}" +        install +        --install-dir=${AUTOBUILD_INSTALL_DIR} +        --skip-license-check +        ${_binary} +        WORKING_DIRECTORY "${CMAKE_SOURCE_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) +    endif(${CMAKE_BINARY_DIR}/temp/sentinel_installed IS_NEWER_THAN ${CMAKE_BINARY_DIR}/temp/${_binary}_installed OR NOT ${${_binary}_installed} EQUAL 0) +      if(NOT ${_binary}_installed EQUAL 0)        message(FATAL_ERROR                "Failed to download or unpack prebuilt '${_binary}'." diff --git a/indra/cmake/Variables.cmake b/indra/cmake/Variables.cmake index 03428691cf..2f23e7c307 100644 --- a/indra/cmake/Variables.cmake +++ b/indra/cmake/Variables.cmake @@ -151,7 +151,7 @@ For more information, please see JIRA DEV-14943 - Cmake Linux cannot build both  endif (LINUX AND SERVER AND VIEWER) -set(USE_PRECOMPILED_HEADERS OFF CACHE BOOL "Enable use of precompiled header directives where supported.") +set(USE_PRECOMPILED_HEADERS ON CACHE BOOL "Enable use of precompiled header directives where supported.")  source_group("CMake Rules" FILES CMakeLists.txt) | 
