Annotation of /linden_release/linden/indra/cmake/00-Common.cmake
Parent Directory
|
Revision Log
Revision 100 - (view) (download)
| 1 : | mjm | 57 | # -*- cmake -*- |
| 2 : | # | ||
| 3 : | # Compilation options shared by all Second Life components. | ||
| 4 : | |||
| 5 : | include(Variables) | ||
| 6 : | |||
| 7 : | |||
| 8 : | # Portable compilation flags. | ||
| 9 : | |||
| 10 : | set(CMAKE_CXX_FLAGS_DEBUG "-D_DEBUG -DLL_DEBUG=1") | ||
| 11 : | set(CMAKE_CXX_FLAGS_RELEASE | ||
| 12 : | "-DLL_RELEASE=1 -DLL_RELEASE_FOR_DOWNLOAD=1 -DNDEBUG") | ||
| 13 : | set(CMAKE_CXX_FLAGS_RELWITHDEBINFO | ||
| 14 : | "-DLL_RELEASE=1 -DNDEBUG -DLL_RELEASE_WITH_DEBUG_INFO=1") | ||
| 15 : | |||
| 16 : | |||
| 17 : | # Don't bother with a MinSizeRel build. | ||
| 18 : | |||
| 19 : | set(CMAKE_CONFIGURATION_TYPES "RelWithDebInfo;Release;Debug" CACHE STRING | ||
| 20 : | "Supported build types." FORCE) | ||
| 21 : | |||
| 22 : | |||
| 23 : | # Platform-specific compilation flags. | ||
| 24 : | |||
| 25 : | if (WINDOWS) | ||
| 26 : | # Don't build DLLs. | ||
| 27 : | set(BUILD_SHARED_LIBS OFF) | ||
| 28 : | |||
| 29 : | set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /Od /Zi /MTd" | ||
| 30 : | CACHE STRING "C++ compiler debug options" FORCE) | ||
| 31 : | set(CMAKE_CXX_FLAGS_RELWITHDEBINFO | ||
| 32 : | "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /Od /Zi /MT" | ||
| 33 : | CACHE STRING "C++ compiler release-with-debug options" FORCE) | ||
| 34 : | set(CMAKE_CXX_FLAGS_RELEASE | ||
| 35 : | "${CMAKE_CXX_FLAGS_RELEASE} ${LL_CXX_FLAGS} /O2 /Zi /MT" | ||
| 36 : | CACHE STRING "C++ compiler release options" FORCE) | ||
| 37 : | |||
| 38 : | add_definitions( | ||
| 39 : | /DLL_WINDOWS=1 | ||
| 40 : | /DUNICODE | ||
| 41 : | /D_UNICODE | ||
| 42 : | /GS | ||
| 43 : | /TP | ||
| 44 : | /W3 | ||
| 45 : | /c | ||
| 46 : | /Zc:forScope | ||
| 47 : | /nologo | ||
| 48 : | /Oy- | ||
| 49 : | ) | ||
| 50 : | |||
| 51 : | if(MSVC80 OR MSVC90) | ||
| 52 : | mjm | 100 | set(CMAKE_CXX_FLAGS_RELEASE |
| 53 : | "${CMAKE_CXX_FLAGS_RELEASE} -D_SECURE_STL=0 -D_HAS_ITERATOR_DEBUGGING=0" | ||
| 54 : | CACHE STRING "C++ compiler release options" FORCE) | ||
| 55 : | |||
| 56 : | mjm | 57 | add_definitions( |
| 57 : | /Zc:wchar_t- | ||
| 58 : | ) | ||
| 59 : | endif (MSVC80 OR MSVC90) | ||
| 60 : | |||
| 61 : | # Are we using the crummy Visual Studio KDU build workaround? | ||
| 62 : | if (NOT VS_DISABLE_FATAL_WARNINGS) | ||
| 63 : | add_definitions(/WX) | ||
| 64 : | endif (NOT VS_DISABLE_FATAL_WARNINGS) | ||
| 65 : | endif (WINDOWS) | ||
| 66 : | |||
| 67 : | |||
| 68 : | if (LINUX) | ||
| 69 : | set(CMAKE_SKIP_RPATH TRUE) | ||
| 70 : | |||
| 71 : | # Here's a giant hack for Fedora 8, where we can't use | ||
| 72 : | # _FORTIFY_SOURCE if we're using a compiler older than gcc 4.1. | ||
| 73 : | |||
| 74 : | find_program(GXX g++) | ||
| 75 : | mark_as_advanced(GXX) | ||
| 76 : | |||
| 77 : | if (GXX) | ||
| 78 : | execute_process( | ||
| 79 : | COMMAND ${GXX} --version | ||
| 80 : | COMMAND sed "s/^[gc+ ]*//" | ||
| 81 : | COMMAND head -1 | ||
| 82 : | OUTPUT_VARIABLE GXX_VERSION | ||
| 83 : | OUTPUT_STRIP_TRAILING_WHITESPACE | ||
| 84 : | ) | ||
| 85 : | else (GXX) | ||
| 86 : | set(GXX_VERSION x) | ||
| 87 : | endif (GXX) | ||
| 88 : | |||
| 89 : | # The quoting hack here is necessary in case we're using distcc or | ||
| 90 : | # ccache as our compiler. CMake doesn't pass the command line | ||
| 91 : | # through the shell by default, so we end up trying to run "distcc" | ||
| 92 : | # " g++" - notice the leading space. Ugh. | ||
| 93 : | |||
| 94 : | execute_process( | ||
| 95 : | COMMAND sh -c "${CMAKE_CXX_COMPILER} ${CMAKE_CXX_COMPILER_ARG1} --version" | ||
| 96 : | COMMAND sed "s/^[gc+ ]*//" | ||
| 97 : | COMMAND head -1 | ||
| 98 : | OUTPUT_VARIABLE CXX_VERSION | ||
| 99 : | OUTPUT_STRIP_TRAILING_WHITESPACE) | ||
| 100 : | |||
| 101 : | if (${GXX_VERSION} STREQUAL ${CXX_VERSION}) | ||
| 102 : | add_definitions(-D_FORTIFY_SOURCE=2) | ||
| 103 : | else (${GXX_VERSION} STREQUAL ${CXX_VERSION}) | ||
| 104 : | if (NOT ${GXX_VERSION} MATCHES " 4.1.*Red Hat") | ||
| 105 : | add_definitions(-D_FORTIFY_SOURCE=2) | ||
| 106 : | endif (NOT ${GXX_VERSION} MATCHES " 4.1.*Red Hat") | ||
| 107 : | endif (${GXX_VERSION} STREQUAL ${CXX_VERSION}) | ||
| 108 : | |||
| 109 : | # GCC 4.3 introduces a pile of obnoxious new warnings, which we | ||
| 110 : | # treat as errors due to -Werror. Quiet the most offensive and | ||
| 111 : | # widespread of them. | ||
| 112 : | |||
| 113 : | if (${CXX_VERSION} MATCHES "4.3") | ||
| 114 : | add_definitions(-Wno-deprecated -Wno-parentheses) | ||
| 115 : | endif (${CXX_VERSION} MATCHES "4.3") | ||
| 116 : | |||
| 117 : | # End of hacks. | ||
| 118 : | |||
| 119 : | add_definitions( | ||
| 120 : | -DLL_LINUX=1 | ||
| 121 : | -D_REENTRANT | ||
| 122 : | -fexceptions | ||
| 123 : | -fno-math-errno | ||
| 124 : | -fno-strict-aliasing | ||
| 125 : | -fsigned-char | ||
| 126 : | -g | ||
| 127 : | -pthread | ||
| 128 : | ) | ||
| 129 : | |||
| 130 : | if (SERVER) | ||
| 131 : | set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ftemplate-depth-60") | ||
| 132 : | if (EXISTS /etc/debian_version) | ||
| 133 : | FILE(READ /etc/debian_version DEBIAN_VERSION) | ||
| 134 : | else (EXISTS /etc/debian_version) | ||
| 135 : | set(DEBIAN_VERSION "") | ||
| 136 : | endif (EXISTS /etc/debian_version) | ||
| 137 : | |||
| 138 : | if (NOT DEBIAN_VERSION STREQUAL "3.1") | ||
| 139 : | add_definitions(-DCTYPE_WORKAROUND) | ||
| 140 : | endif (NOT DEBIAN_VERSION STREQUAL "3.1") | ||
| 141 : | |||
| 142 : | if (EXISTS /usr/lib/mysql4/mysql) | ||
| 143 : | link_directories(/usr/lib/mysql4/mysql) | ||
| 144 : | endif (EXISTS /usr/lib/mysql4/mysql) | ||
| 145 : | |||
| 146 : | add_definitions( | ||
| 147 : | -msse2 | ||
| 148 : | -mfpmath=sse | ||
| 149 : | ) | ||
| 150 : | endif (SERVER) | ||
| 151 : | |||
| 152 : | if (VIEWER) | ||
| 153 : | add_definitions(-DAPPID=secondlife) | ||
| 154 : | add_definitions(-fvisibility=hidden) | ||
| 155 : | if (NOT STANDALONE) | ||
| 156 : | # this stops us requiring a really recent glibc at runtime | ||
| 157 : | add_definitions(-fno-stack-protector) | ||
| 158 : | endif (NOT STANDALONE) | ||
| 159 : | endif (VIEWER) | ||
| 160 : | |||
| 161 : | set(CMAKE_CXX_FLAGS_DEBUG "-fno-inline ${CMAKE_CXX_FLAGS_DEBUG}") | ||
| 162 : | set(CMAKE_CXX_FLAGS_RELEASE "-O2 ${CMAKE_CXX_FLAGS_RELEASE}") | ||
| 163 : | endif (LINUX) | ||
| 164 : | |||
| 165 : | |||
| 166 : | if (DARWIN) | ||
| 167 : | add_definitions(-DLL_DARWIN=1) | ||
| 168 : | set(CMAKE_CXX_LINK_FLAGS "-Wl,-headerpad_max_install_names,-search_paths_first") | ||
| 169 : | set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_CXX_LINK_FLAGS}") | ||
| 170 : | set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mlong-branch") | ||
| 171 : | set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mlong-branch") | ||
| 172 : | mjm | 100 | # NOTE: it's critical that the optimization flag is put in front. |
| 173 : | # NOTE: it's critical to have both CXX_FLAGS and C_FLAGS covered. | ||
| 174 : | set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O0 ${CMAKE_CXX_FLAGS_RELWITHDEBINFO}") | ||
| 175 : | set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O0 ${CMAKE_C_FLAGS_RELWITHDEBINFO}") | ||
| 176 : | mjm | 57 | endif (DARWIN) |
| 177 : | |||
| 178 : | |||
| 179 : | if (LINUX OR DARWIN) | ||
| 180 : | set(GCC_WARNINGS "-Wall -Wno-sign-compare -Wno-trigraphs") | ||
| 181 : | |||
| 182 : | if (NOT GCC_DISABLE_FATAL_WARNINGS) | ||
| 183 : | set(GCC_WARNINGS "${GCC_WARNINGS} -Werror") | ||
| 184 : | endif (NOT GCC_DISABLE_FATAL_WARNINGS) | ||
| 185 : | |||
| 186 : | set(GCC_CXX_WARNINGS "${GCC_WARNINGS} -Wno-reorder") | ||
| 187 : | |||
| 188 : | set(CMAKE_C_FLAGS "${GCC_WARNINGS} ${CMAKE_C_FLAGS}") | ||
| 189 : | set(CMAKE_CXX_FLAGS "${GCC_CXX_WARNINGS} ${CMAKE_CXX_FLAGS}") | ||
| 190 : | endif (LINUX OR DARWIN) | ||
| 191 : | |||
| 192 : | |||
| 193 : | if (STANDALONE) | ||
| 194 : | add_definitions(-DLL_STANDALONE=1) | ||
| 195 : | |||
| 196 : | if (LINUX AND ${ARCH} STREQUAL "i686") | ||
| 197 : | add_definitions(-march=pentiumpro) | ||
| 198 : | endif (LINUX AND ${ARCH} STREQUAL "i686") | ||
| 199 : | |||
| 200 : | else (STANDALONE) | ||
| 201 : | set(${ARCH}_linux_INCLUDES | ||
| 202 : | ELFIO | ||
| 203 : | atk-1.0 | ||
| 204 : | glib-2.0 | ||
| 205 : | gstreamer-0.10 | ||
| 206 : | gtk-2.0 | ||
| 207 : | llfreetype2 | ||
| 208 : | pango-1.0 | ||
| 209 : | ) | ||
| 210 : | endif (STANDALONE) | ||
| 211 : | |||
| 212 : | if(SERVER) | ||
| 213 : | include_directories(${LIBS_PREBUILT_DIR}/include/havok) | ||
| 214 : | endif(SERVER) |
| ViewVC Help | |
| Powered by ViewVC 1.0.0 |

