/indra/cmake/Variables.cmake

https://bitbucket.org/NickyD/firestorm · CMake · 202 lines · 134 code · 37 blank · 31 comment · 33 complexity · 8dfccdda496236f6cb16613c64df652a MD5 · raw file

  1. # -*- cmake -*-
  2. #
  3. # Definitions of variables used throughout the build
  4. # process.
  5. #
  6. # Platform variables:
  7. #
  8. # DARWIN - Mac OS X
  9. # LINUX - Linux
  10. # WINDOWS - Windows
  11. # Relative and absolute paths to subtrees.
  12. if(NOT DEFINED ${CMAKE_CURRENT_LIST_FILE}_INCLUDED)
  13. set(${CMAKE_CURRENT_LIST_FILE}_INCLUDED "YES")
  14. if(NOT DEFINED COMMON_CMAKE_DIR)
  15. set(COMMON_CMAKE_DIR "${CMAKE_SOURCE_DIR}/cmake")
  16. endif(NOT DEFINED COMMON_CMAKE_DIR)
  17. set(LIBS_CLOSED_PREFIX)
  18. set(LIBS_OPEN_PREFIX)
  19. set(SCRIPTS_PREFIX ../scripts)
  20. set(VIEWER_PREFIX)
  21. set(INTEGRATION_TESTS_PREFIX)
  22. set(LL_TESTS OFF CACHE BOOL "Build and run unit and integration tests (disable for build timing runs to reduce variation")
  23. set(INCREMENTAL_LINK OFF CACHE BOOL "Use incremental linking on win32 builds (enable for faster links on some machines)")
  24. if(LIBS_CLOSED_DIR)
  25. file(TO_CMAKE_PATH "${LIBS_CLOSED_DIR}" LIBS_CLOSED_DIR)
  26. else(LIBS_CLOSED_DIR)
  27. set(LIBS_CLOSED_DIR ${CMAKE_SOURCE_DIR}/${LIBS_CLOSED_PREFIX})
  28. endif(LIBS_CLOSED_DIR)
  29. if(LIBS_COMMON_DIR)
  30. file(TO_CMAKE_PATH "${LIBS_COMMON_DIR}" LIBS_COMMON_DIR)
  31. else(LIBS_COMMON_DIR)
  32. set(LIBS_COMMON_DIR ${CMAKE_SOURCE_DIR}/${LIBS_OPEN_PREFIX})
  33. endif(LIBS_COMMON_DIR)
  34. set(LIBS_OPEN_DIR ${LIBS_COMMON_DIR})
  35. set(SCRIPTS_DIR ${CMAKE_SOURCE_DIR}/${SCRIPTS_PREFIX})
  36. set(VIEWER_DIR ${CMAKE_SOURCE_DIR}/${VIEWER_PREFIX})
  37. set(AUTOBUILD_INSTALL_DIR ${CMAKE_BINARY_DIR}/packages)
  38. set(LIBS_PREBUILT_DIR ${AUTOBUILD_INSTALL_DIR} CACHE PATH
  39. "Location of prebuilt libraries.")
  40. if (EXISTS ${CMAKE_SOURCE_DIR}/Server.cmake)
  41. # We use this as a marker that you can try to use the proprietary libraries.
  42. set(INSTALL_PROPRIETARY ON CACHE BOOL "Install proprietary binaries")
  43. endif (EXISTS ${CMAKE_SOURCE_DIR}/Server.cmake)
  44. set(TEMPLATE_VERIFIER_OPTIONS "" CACHE STRING "Options for scripts/template_verifier.py")
  45. set(TEMPLATE_VERIFIER_MASTER_URL "http://bitbucket.org/lindenlab/master-message-template/raw/tip/message_template.msg" CACHE STRING "Location of the master message template")
  46. if (NOT CMAKE_BUILD_TYPE)
  47. set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING
  48. "Build type. One of: Debug Release RelWithDebInfo" FORCE)
  49. endif (NOT CMAKE_BUILD_TYPE)
  50. if (${CMAKE_SYSTEM_NAME} MATCHES "Windows")
  51. set(WINDOWS ON BOOL FORCE)
  52. set(ARCH i686)
  53. set(LL_ARCH ${ARCH}_win32)
  54. set(LL_ARCH_DIR ${ARCH}-win32)
  55. set(WORD_SIZE 32)
  56. endif (${CMAKE_SYSTEM_NAME} MATCHES "Windows")
  57. if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
  58. set(LINUX ON BOOl FORCE)
  59. # If someone has specified a word size, use that to determine the
  60. # architecture. Otherwise, let the architecture specify the word size.
  61. if (WORD_SIZE EQUAL 32)
  62. #message(STATUS "WORD_SIZE is 32")
  63. set(ARCH i686)
  64. elseif (WORD_SIZE EQUAL 64)
  65. #message(STATUS "WORD_SIZE is 64")
  66. set(ARCH x86_64)
  67. else (WORD_SIZE EQUAL 32)
  68. #message(STATUS "WORD_SIZE is UNDEFINED")
  69. execute_process(COMMAND uname -m COMMAND sed s/i.86/i686/
  70. OUTPUT_VARIABLE ARCH OUTPUT_STRIP_TRAILING_WHITESPACE)
  71. if (ARCH STREQUAL x86_64)
  72. #message(STATUS "ARCH is detected as 64; ARCH is ${ARCH}")
  73. set(WORD_SIZE 64)
  74. else (ARCH STREQUAL x86_64)
  75. #message(STATUS "ARCH is detected as 32; ARCH is ${ARCH}")
  76. set(WORD_SIZE 32)
  77. endif (ARCH STREQUAL x86_64)
  78. endif (WORD_SIZE EQUAL 32)
  79. if (WORD_SIZE EQUAL 32)
  80. set(DEB_ARCHITECTURE i386)
  81. set(FIND_LIBRARY_USE_LIB64_PATHS OFF)
  82. set(CMAKE_SYSTEM_LIBRARY_PATH /usr/lib32 ${CMAKE_SYSTEM_LIBRARY_PATH})
  83. else (WORD_SIZE EQUAL 32)
  84. set(DEB_ARCHITECTURE amd64)
  85. set(FIND_LIBRARY_USE_LIB64_PATHS ON)
  86. endif (WORD_SIZE EQUAL 32)
  87. execute_process(COMMAND dpkg-architecture -a${DEB_ARCHITECTURE} -qDEB_HOST_MULTIARCH
  88. RESULT_VARIABLE DPKG_RESULT
  89. OUTPUT_VARIABLE DPKG_ARCH
  90. OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET)
  91. #message (STATUS "DPKG_RESULT ${DPKG_RESULT}, DPKG_ARCH ${DPKG_ARCH}")
  92. if (DPKG_RESULT EQUAL 0)
  93. set(CMAKE_LIBRARY_ARCHITECTURE ${DPKG_ARCH})
  94. set(CMAKE_SYSTEM_LIBRARY_PATH /usr/lib/${DPKG_ARCH} /usr/local/lib/${DPKG_ARCH} ${CMAKE_SYSTEM_LIBRARY_PATH})
  95. endif (DPKG_RESULT EQUAL 0)
  96. include(ConfigurePkgConfig)
  97. set(LL_ARCH ${ARCH}_linux)
  98. set(LL_ARCH_DIR ${ARCH}-linux)
  99. if (INSTALL_PROPRIETARY)
  100. # Only turn on headless if we can find osmesa libraries.
  101. include(FindPkgConfig)
  102. pkg_check_modules(OSMESA osmesa)
  103. if (OSMESA_FOUND)
  104. set(BUILD_HEADLESS ON CACHE BOOL "Build headless libraries.")
  105. endif (OSMESA_FOUND)
  106. endif (INSTALL_PROPRIETARY)
  107. endif (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
  108. if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
  109. set(DARWIN 1)
  110. execute_process(
  111. COMMAND sh -c "xcodebuild -version | grep Xcode | cut -d ' ' -f2 | cut -d'.' -f1-2"
  112. OUTPUT_VARIABLE XCODE_VERSION )
  113. # To support a different SDK update these Xcode settings:
  114. if (XCODE_VERSION GREATER 4.2)
  115. set(CMAKE_OSX_DEPLOYMENT_TARGET 10.6)
  116. else (XCODE_VERSION GREATER 4.2)
  117. set(CMAKE_OSX_DEPLOYMENT_TARGET 10.5)
  118. endif (XCODE_VERSION GREATER 4.2)
  119. set(CMAKE_OSX_SYSROOT macosx10.6)
  120. set(CMAKE_XCODE_ATTRIBUTE_GCC_VERSION "com.apple.compilers.llvmgcc42")
  121. set(CMAKE_XCODE_ATTRIBUTE_DEBUG_INFORMATION_FORMAT dwarf-with-dsym)
  122. # NOTE: To attempt an i386/PPC Universal build, add this on the configure line:
  123. # -DCMAKE_OSX_ARCHITECTURES:STRING='i386;ppc'
  124. # Build only for i386 by default, system default on MacOSX 10.6 is x86_64
  125. if (NOT CMAKE_OSX_ARCHITECTURES)
  126. set(CMAKE_OSX_ARCHITECTURES i386)
  127. endif (NOT CMAKE_OSX_ARCHITECTURES)
  128. if (CMAKE_OSX_ARCHITECTURES MATCHES "i386" AND CMAKE_OSX_ARCHITECTURES MATCHES "ppc")
  129. set(ARCH universal)
  130. else (CMAKE_OSX_ARCHITECTURES MATCHES "i386" AND CMAKE_OSX_ARCHITECTURES MATCHES "ppc")
  131. if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "ppc")
  132. set(ARCH ppc)
  133. else (${CMAKE_SYSTEM_PROCESSOR} MATCHES "ppc")
  134. set(ARCH i386)
  135. endif (${CMAKE_SYSTEM_PROCESSOR} MATCHES "ppc")
  136. endif (CMAKE_OSX_ARCHITECTURES MATCHES "i386" AND CMAKE_OSX_ARCHITECTURES MATCHES "ppc")
  137. set(LL_ARCH ${ARCH}_darwin)
  138. set(LL_ARCH_DIR universal-darwin)
  139. set(WORD_SIZE 32)
  140. endif (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
  141. # Default deploy grid
  142. set(GRID agni CACHE STRING "Target Grid")
  143. #set(VIEWER_CHANNEL "Firestorm-Private" CACHE STRING "Viewer Channel Name")
  144. #set(VIEWER_LOGIN_CHANNEL ${VIEWER_CHANNEL} CACHE STRING "Fake login channel for A/B Testing")
  145. # Flickr API keys.
  146. set(FLICKR_API_KEY "daaabff93a967e0f37fa18863bb43b29")
  147. set(FLICKR_API_SECRET "846f0958020b553e")
  148. if (XCODE_VERSION GREATER 4.2)
  149. set(ENABLE_SIGNING OFF CACHE BOOL "Enable signing the viewer")
  150. set(SIGNING_IDENTITY "" CACHE STRING "Specifies the signing identity to use, if necessary.")
  151. endif (XCODE_VERSION GREATER 4.2)
  152. set(VERSION_BUILD "0" CACHE STRING "Revision number passed in from the outside")
  153. set(STANDALONE OFF CACHE BOOL "Do not use Linden-supplied prebuilt libraries.")
  154. set(UNATTENDED OFF CACHE BOOL "Should be set to ON for building with VC Express editions.")
  155. set(USE_PRECOMPILED_HEADERS ON CACHE BOOL "Enable use of precompiled header directives where supported.")
  156. # <FS:ND> When using Havok, we have to turn OpenSim support off
  157. if( HAVOK_TPV )
  158. if( OPENSIM )
  159. message( "Compiling with Havok libraries, disabling OpenSim support" )
  160. endif( OPENSIM )
  161. set( OPENSIM OFF )
  162. endif( HAVOK_TPV )
  163. # </FS:ND>
  164. source_group("CMake Rules" FILES CMakeLists.txt)
  165. endif(NOT DEFINED ${CMAKE_CURRENT_LIST_FILE}_INCLUDED)