summaryrefslogtreecommitdiff
path: root/indra/cmake/00-Common.cmake
diff options
context:
space:
mode:
authorBryan O'Sullivan <bos@lindenlab.com>2008-06-02 21:14:31 +0000
committerBryan O'Sullivan <bos@lindenlab.com>2008-06-02 21:14:31 +0000
commit9db949eec327df4173fde3de934a87bedb0db13c (patch)
treeaeffa0f0e68b1d2ceb74d460cbbd22652c9cd159 /indra/cmake/00-Common.cmake
parent419e13d0acaabf5e1e02e9b64a07648bce822b2f (diff)
svn merge -r88066:88786 svn+ssh://svn.lindenlab.com/svn/linden/branches/cmake-9-merge
dataserver-is-deprecated for-fucks-sake-whats-with-these-commit-markers
Diffstat (limited to 'indra/cmake/00-Common.cmake')
-rw-r--r--indra/cmake/00-Common.cmake199
1 files changed, 199 insertions, 0 deletions
diff --git a/indra/cmake/00-Common.cmake b/indra/cmake/00-Common.cmake
new file mode 100644
index 0000000000..58f06075a8
--- /dev/null
+++ b/indra/cmake/00-Common.cmake
@@ -0,0 +1,199 @@
+# -*- cmake -*-
+#
+# Compilation options shared by all Second Life components.
+
+include(Variables)
+
+
+# Portable compilation flags.
+
+set(CMAKE_CXX_FLAGS_DEBUG "-D_DEBUG -DLL_DEBUG=1")
+set(CMAKE_CXX_FLAGS_RELEASE
+ "-DLL_RELEASE=1 -DLL_RELEASE_FOR_DOWNLOAD=1 -DLL_SEND_CRASH_REPORTS=1 -DNDEBUG")
+set(CMAKE_CXX_FLAGS_RELWITHDEBINFO
+ "-DLL_RELEASE=1 -DLL_SEND_CRASH_REPORTS=0 -DNDEBUG -DLL_RELEASE_WITH_DEBUG_INFO=1")
+
+
+# Don't bother with a MinSizeRel build.
+
+set(CMAKE_CONFIGURATION_TYPES "RelWithDebInfo;Release;Debug" CACHE STRING
+ "Supported build types." FORCE)
+
+
+# Platform-specific compilation flags.
+
+if (WINDOWS)
+ # Don't build DLLs.
+ set(BUILD_SHARED_LIBS OFF)
+
+ set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /Od /Zi /MTd"
+ CACHE STRING "C++ compiler debug options" FORCE)
+ set(CMAKE_CXX_FLAGS_RELWITHDEBINFO
+ "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /Od /Zi /MT"
+ CACHE STRING "C++ compiler release-with-debug options" FORCE)
+ set(CMAKE_CXX_FLAGS_RELEASE
+ "${CMAKE_CXX_FLAGS_RELEASE} ${LL_CXX_FLAGS} /O2 /MT"
+ CACHE STRING "C++ compiler release options" FORCE)
+
+ add_definitions(
+ /DLL_WINDOWS=1
+ /DUNICODE
+ /D_UNICODE
+ /GS
+ /TP
+ /W3
+ /c
+ /Zc:forScope
+ /nologo
+ )
+
+ if(MSVC80 OR MSVC90)
+ add_definitions(
+ /Zc:wchar_t-
+ )
+ endif (MSVC80 OR MSVC90)
+
+ # Are we using the crummy Visual Studio KDU build workaround?
+ if (NOT VS_DISABLE_FATAL_WARNINGS)
+ add_definitions(/WX)
+ endif (NOT VS_DISABLE_FATAL_WARNINGS)
+endif (WINDOWS)
+
+
+if (LINUX)
+ set(CMAKE_SKIP_RPATH TRUE)
+
+ # Here's a giant hack for Fedora 8, where we can't use
+ # _FORTIFY_SOURCE if we're using a compiler older than gcc 4.1.
+
+ find_program(GXX g++)
+ mark_as_advanced(GXX)
+
+ if (GXX)
+ execute_process(
+ COMMAND ${GXX} --version
+ COMMAND sed "s/^[gc+ ]*//"
+ COMMAND head -1
+ OUTPUT_VARIABLE GXX_VERSION
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ )
+ else (GXX)
+ set(GXX_VERSION x)
+ endif (GXX)
+
+ # The quoting hack here is necessary in case we're using distcc or
+ # ccache as our compiler. CMake doesn't pass the command line
+ # through the shell by default, so we end up trying to run "distcc"
+ # " g++" - notice the leading space. Ugh.
+
+ execute_process(
+ COMMAND sh -c "${CMAKE_CXX_COMPILER} ${CMAKE_CXX_COMPILER_ARG1} --version"
+ COMMAND sed "s/^[gc+ ]*//"
+ COMMAND head -1
+ OUTPUT_VARIABLE CXX_VERSION
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
+
+ if (${GXX_VERSION} STREQUAL ${CXX_VERSION})
+ add_definitions(-D_FORTIFY_SOURCE=2)
+ else (${GXX_VERSION} STREQUAL ${CXX_VERSION})
+ if (NOT ${GXX_VERSION} MATCHES " 4.1.*Red Hat")
+ add_definitions(-D_FORTIFY_SOURCE=2)
+ endif (NOT ${GXX_VERSION} MATCHES " 4.1.*Red Hat")
+ endif (${GXX_VERSION} STREQUAL ${CXX_VERSION})
+
+ # GCC 4.3 introduces a pile of obnoxious new warnings, which we
+ # treat as errors due to -Werror. Quiet the most offensive and
+ # widespread of them.
+
+ if (${GXX_VERSION} MATCHES "4.3")
+ add_definitions(-Wno-deprecated -Wno-parentheses)
+ endif (${GXX_VERSION} MATCHES "4.3")
+
+ # End of hacks.
+
+ add_definitions(
+ -DLL_LINUX=1
+ -D_REENTRANT
+ -fexceptions
+ -fno-math-errno
+ -fno-strict-aliasing
+ -fsigned-char
+ -g
+ -pthread
+ )
+
+ if (SERVER)
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ftemplate-depth-60")
+ if (EXISTS /etc/debian_version)
+ FILE(READ /etc/debian_version DEBIAN_VERSION)
+ else (EXISTS /etc/debian_version)
+ set(DEBIAN_VERSION "")
+ endif (EXISTS /etc/debian_version)
+
+ if (NOT DEBIAN_VERSION STREQUAL "3.1")
+ add_definitions(-DCTYPE_WORKAROUND)
+ endif (NOT DEBIAN_VERSION STREQUAL "3.1")
+
+ if (EXISTS /usr/lib/mysql4/mysql)
+ link_directories(/usr/lib/mysql4/mysql)
+ endif (EXISTS /usr/lib/mysql4/mysql)
+
+ add_definitions(
+ -msse2
+ -mfpmath=sse
+ )
+ endif (SERVER)
+
+ if (VIEWER)
+ add_definitions(-DAPPID=secondlife)
+ endif (VIEWER)
+
+ set(CMAKE_CXX_FLAGS_DEBUG "-fno-inline ${CMAKE_CXX_FLAGS_DEBUG}")
+ set(CMAKE_CXX_FLAGS_RELEASE "-O2 ${CMAKE_CXX_FLAGS_RELEASE}")
+endif (LINUX)
+
+
+if (DARWIN)
+ add_definitions(-DLL_DARWIN=1)
+ set(CMAKE_LD_FLAGS "-headerpad_max_install_names")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mlong-branch")
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mlong-branch")
+endif (DARWIN)
+
+
+if (LINUX OR DARWIN)
+ set(GCC_WARNINGS "-Wall -Wno-sign-compare -Wno-trigraphs")
+
+ if (NOT GCC_DISABLE_FATAL_WARNINGS)
+ set(GCC_WARNINGS "${GCC_WARNINGS} -Werror")
+ endif (NOT GCC_DISABLE_FATAL_WARNINGS)
+
+ set(GCC_CXX_WARNINGS "${GCC_WARNINGS} -Wno-reorder")
+
+ set(CMAKE_C_FLAGS "${GCC_WARNINGS} ${CMAKE_C_FLAGS}")
+ set(CMAKE_CXX_FLAGS "${GCC_CXX_WARNINGS} ${CMAKE_CXX_FLAGS}")
+endif (LINUX OR DARWIN)
+
+
+if (STANDALONE)
+ add_definitions(-DLL_STANDALONE=1)
+
+ if (LINUX AND ${ARCH} STREQUAL "i686")
+ add_definitions(-march=pentiumpro)
+ endif (LINUX AND ${ARCH} STREQUAL "i686")
+
+else (STANDALONE)
+ set(${ARCH}_linux_INCLUDES
+ ELFIO
+ atk-1.0
+ glib-2.0
+ gstreamer-0.10
+ gtk-2.0
+ llfreetype2
+ pango-1.0
+ )
+endif (STANDALONE)
+
+if(SERVER)
+ include_directories(${LIBS_PREBUILT_DIR}/include/havok)
+endif(SERVER)