Mercurial > hg > orthanc
annotate Resources/CMake/Compiler.cmake @ 3103:81b58b549845
back to using 'var' instead of 'let' since let is not supported by many old browsers. All variables declaration have been moved to the top of the function to better show that their scope is the function
author | Alain Mazy <alain@mazy.be> |
---|---|
date | Thu, 10 Jan 2019 10:51:36 +0100 |
parents | 13038d638097 |
children | 077e1101d908 |
rev | line source |
---|---|
134 | 1 # This file sets all the compiler-related flags |
2 | |
2448
862d943115f9
working on linux standard base
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2406
diff
changeset
|
3 if (CMAKE_CROSSCOMPILING OR |
862d943115f9
working on linux standard base
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2406
diff
changeset
|
4 "${CMAKE_SYSTEM_VERSION}" STREQUAL "LinuxStandardBase") |
1414 | 5 # Cross-compilation necessarily implies standalone and static build |
6 SET(STATIC_BUILD ON) | |
7 SET(STANDALONE_BUILD ON) | |
8 endif() | |
9 | |
10 if (CMAKE_COMPILER_IS_GNUCXX) | |
2362
f47fd47b3c91
removal of -Wno-implicit-function-declaration compiler flag
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2175
diff
changeset
|
11 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wno-long-long") |
f47fd47b3c91
removal of -Wno-implicit-function-declaration compiler flag
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2175
diff
changeset
|
12 |
134 | 13 # --std=c99 makes libcurl not to compile |
14 # -pedantic gives a lot of warnings on OpenSSL | |
1951
01de36d949c3
Possibility to use forthcoming DCMTK 3.6.1 in static builds (instead of 3.6.0)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1901
diff
changeset
|
15 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wno-long-long -Wno-variadic-macros") |
571 | 16 |
17 if (CMAKE_CROSSCOMPILING) | |
18 # http://stackoverflow.com/a/3543845/881731 | |
19 set(CMAKE_RC_COMPILE_OBJECT "<CMAKE_RC_COMPILER> -O coff -I<CMAKE_CURRENT_SOURCE_DIR> <SOURCE> <OBJECT>") | |
20 endif() | |
21 | |
1414 | 22 elseif (MSVC) |
569 | 23 # Use static runtime under Visual Studio |
24 # http://www.cmake.org/Wiki/CMake_FAQ#Dynamic_Replace | |
134 | 25 # http://stackoverflow.com/a/6510446 |
26 foreach(flag_var | |
27 CMAKE_C_FLAGS_DEBUG | |
28 CMAKE_CXX_FLAGS_DEBUG | |
29 CMAKE_C_FLAGS_RELEASE | |
30 CMAKE_CXX_FLAGS_RELEASE | |
31 CMAKE_C_FLAGS_MINSIZEREL | |
32 CMAKE_CXX_FLAGS_MINSIZEREL | |
33 CMAKE_C_FLAGS_RELWITHDEBINFO | |
34 CMAKE_CXX_FLAGS_RELWITHDEBINFO) | |
35 string(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}") | |
36 string(REGEX REPLACE "/MDd" "/MTd" ${flag_var} "${${flag_var}}") | |
37 endforeach(flag_var) | |
569 | 38 |
1060 | 39 # Add /Zm256 compiler option to Visual Studio to fix PCH errors |
40 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Zm256") | |
41 | |
134 | 42 add_definitions( |
43 -D_CRT_SECURE_NO_WARNINGS=1 | |
44 -D_CRT_SECURE_NO_DEPRECATE=1 | |
45 ) | |
2148
e18023c2fdfb
fix visual studio 2015 build
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1969
diff
changeset
|
46 |
e18023c2fdfb
fix visual studio 2015 build
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1969
diff
changeset
|
47 if (MSVC_VERSION LESS 1600) |
e18023c2fdfb
fix visual studio 2015 build
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1969
diff
changeset
|
48 # Starting with Visual Studio >= 2010 (i.e. macro _MSC_VER >= |
e18023c2fdfb
fix visual studio 2015 build
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1969
diff
changeset
|
49 # 1600), Microsoft ships a standard-compliant <stdint.h> |
e18023c2fdfb
fix visual studio 2015 build
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1969
diff
changeset
|
50 # header. For earlier versions of Visual Studio, give access to a |
e18023c2fdfb
fix visual studio 2015 build
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1969
diff
changeset
|
51 # compatibility header. |
e18023c2fdfb
fix visual studio 2015 build
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1969
diff
changeset
|
52 # http://stackoverflow.com/a/70630/881731 |
e18023c2fdfb
fix visual studio 2015 build
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1969
diff
changeset
|
53 # https://en.wikibooks.org/wiki/C_Programming/C_Reference/stdint.h#External_links |
e18023c2fdfb
fix visual studio 2015 build
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1969
diff
changeset
|
54 include_directories(${ORTHANC_ROOT}/Resources/ThirdParty/VisualStudio) |
e18023c2fdfb
fix visual studio 2015 build
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1969
diff
changeset
|
55 endif() |
e18023c2fdfb
fix visual studio 2015 build
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1969
diff
changeset
|
56 |
134 | 57 link_libraries(netapi32) |
58 endif() | |
59 | |
60 | |
2364 | 61 if (${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD" OR |
62 ${CMAKE_SYSTEM_NAME} STREQUAL "OpenBSD") | |
63 # In FreeBSD/OpenBSD, the "/usr/local/" folder contains the ports and need to be imported | |
64 SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -I/usr/local/include") | |
65 SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -I/usr/local/include") | |
66 SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -L/usr/local/lib") | |
67 SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -L/usr/local/lib") | |
68 endif() | |
69 | |
70 | |
890 | 71 if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux" OR |
1337 | 72 ${CMAKE_SYSTEM_NAME} STREQUAL "kFreeBSD" OR |
2364 | 73 ${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD" OR |
74 ${CMAKE_SYSTEM_NAME} STREQUAL "OpenBSD") | |
75 | |
76 if (NOT ${CMAKE_SYSTEM_NAME} STREQUAL "OpenBSD") | |
77 # The "--no-undefined" linker flag makes the shared libraries | |
78 # (plugins ModalityWorklists and ServeFolders) fail to compile on OpenBSD | |
79 set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,--no-undefined") | |
80 set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--no-undefined") | |
81 endif() | |
1901
50234539a0dd
ENABLE_PLUGINS_VERSION_SCRIPT
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1649
diff
changeset
|
82 |
50234539a0dd
ENABLE_PLUGINS_VERSION_SCRIPT
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1649
diff
changeset
|
83 if (NOT DEFINED ENABLE_PLUGINS_VERSION_SCRIPT OR |
50234539a0dd
ENABLE_PLUGINS_VERSION_SCRIPT
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1649
diff
changeset
|
84 ENABLE_PLUGINS_VERSION_SCRIPT) |
50234539a0dd
ENABLE_PLUGINS_VERSION_SCRIPT
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1649
diff
changeset
|
85 set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--version-script=${ORTHANC_ROOT}/Plugins/Samples/Common/VersionScript.map") |
50234539a0dd
ENABLE_PLUGINS_VERSION_SCRIPT
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1649
diff
changeset
|
86 endif() |
134 | 87 |
88 # Remove the "-rdynamic" option | |
89 # http://www.mail-archive.com/cmake@cmake.org/msg08837.html | |
90 set(CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS "") | |
2450
ade8b4ddd8a6
Static linking against libuuid
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2448
diff
changeset
|
91 link_libraries(pthread) |
2364 | 92 |
93 if (NOT ${CMAKE_SYSTEM_NAME} STREQUAL "OpenBSD") | |
94 link_libraries(rt) | |
95 endif() | |
96 | |
97 if (NOT ${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD" AND | |
98 NOT ${CMAKE_SYSTEM_NAME} STREQUAL "OpenBSD") | |
99 link_libraries(dl) | |
100 endif() | |
1337 | 101 |
2460 | 102 if (NOT ${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD" AND |
103 NOT ${CMAKE_SYSTEM_NAME} STREQUAL "OpenBSD") | |
104 # The "--as-needed" linker flag is not available on FreeBSD and OpenBSD | |
1337 | 105 set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--as-needed") |
1416
037d5ffca74d
as needed for plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1414
diff
changeset
|
106 set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,--as-needed") |
037d5ffca74d
as needed for plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1414
diff
changeset
|
107 set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--as-needed") |
2364 | 108 endif() |
109 | |
110 if (NOT ${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD" AND | |
111 NOT ${CMAKE_SYSTEM_NAME} STREQUAL "OpenBSD") | |
112 # FreeBSD/OpenBSD have just one single interface for file | |
113 # handling, which is 64bit clean, so there is no need to define macro | |
114 # for LFS (Large File Support). | |
115 # https://ohse.de/uwe/articles/lfs.html | |
1337 | 116 add_definitions( |
117 -D_LARGEFILE64_SOURCE=1 | |
118 -D_FILE_OFFSET_BITS=64 | |
119 ) | |
120 endif() | |
134 | 121 |
122 elseif(${CMAKE_SYSTEM_NAME} STREQUAL "Windows") | |
1560
307b9ea6c39b
fixes for Visual Studio 2013 and QtCreator
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1420
diff
changeset
|
123 if (MSVC) |
307b9ea6c39b
fixes for Visual Studio 2013 and QtCreator
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1420
diff
changeset
|
124 message("MSVC compiler version = " ${MSVC_VERSION} "\n") |
307b9ea6c39b
fixes for Visual Studio 2013 and QtCreator
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1420
diff
changeset
|
125 # Starting Visual Studio 2013 (version 1800), it is not possible |
307b9ea6c39b
fixes for Visual Studio 2013 and QtCreator
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1420
diff
changeset
|
126 # to target Windows XP anymore |
307b9ea6c39b
fixes for Visual Studio 2013 and QtCreator
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1420
diff
changeset
|
127 if (MSVC_VERSION LESS 1800) |
307b9ea6c39b
fixes for Visual Studio 2013 and QtCreator
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1420
diff
changeset
|
128 add_definitions( |
307b9ea6c39b
fixes for Visual Studio 2013 and QtCreator
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1420
diff
changeset
|
129 -DWINVER=0x0501 |
307b9ea6c39b
fixes for Visual Studio 2013 and QtCreator
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1420
diff
changeset
|
130 -D_WIN32_WINNT=0x0501 |
307b9ea6c39b
fixes for Visual Studio 2013 and QtCreator
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1420
diff
changeset
|
131 ) |
307b9ea6c39b
fixes for Visual Studio 2013 and QtCreator
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1420
diff
changeset
|
132 endif() |
307b9ea6c39b
fixes for Visual Studio 2013 and QtCreator
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1420
diff
changeset
|
133 else() |
307b9ea6c39b
fixes for Visual Studio 2013 and QtCreator
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1420
diff
changeset
|
134 add_definitions( |
307b9ea6c39b
fixes for Visual Studio 2013 and QtCreator
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1420
diff
changeset
|
135 -DWINVER=0x0501 |
307b9ea6c39b
fixes for Visual Studio 2013 and QtCreator
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1420
diff
changeset
|
136 -D_WIN32_WINNT=0x0501 |
307b9ea6c39b
fixes for Visual Studio 2013 and QtCreator
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1420
diff
changeset
|
137 ) |
307b9ea6c39b
fixes for Visual Studio 2013 and QtCreator
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1420
diff
changeset
|
138 endif() |
307b9ea6c39b
fixes for Visual Studio 2013 and QtCreator
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1420
diff
changeset
|
139 |
134 | 140 add_definitions( |
141 -D_CRT_SECURE_NO_WARNINGS=1 | |
142 ) | |
143 link_libraries(rpcrt4 ws2_32) | |
495 | 144 |
1414 | 145 if (CMAKE_COMPILER_IS_GNUCXX) |
1951
01de36d949c3
Possibility to use forthcoming DCMTK 3.6.1 in static builds (instead of 3.6.0)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1901
diff
changeset
|
146 # Some additional C/C++ compiler flags for MinGW |
1969
5e40f88f4eba
fix for old versions of mingw
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1968
diff
changeset
|
147 SET(MINGW_NO_WARNINGS "-Wno-unused-function -Wno-unused-variable") |
5e40f88f4eba
fix for old versions of mingw
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1968
diff
changeset
|
148 SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${MINGW_NO_WARNINGS} -Wno-pointer-to-int-cast -Wno-int-to-pointer-cast") |
1951
01de36d949c3
Possibility to use forthcoming DCMTK 3.6.1 in static builds (instead of 3.6.0)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1901
diff
changeset
|
149 SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${MINGW_NO_WARNINGS}") |
01de36d949c3
Possibility to use forthcoming DCMTK 3.6.1 in static builds (instead of 3.6.0)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1901
diff
changeset
|
150 |
495 | 151 # This is a patch for MinGW64 |
152 SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--allow-multiple-definition -static-libgcc -static-libstdc++") | |
1420 | 153 SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--allow-multiple-definition -static-libgcc -static-libstdc++") |
1377
601d34afdab9
patch for recent versions of MinGW
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1337
diff
changeset
|
154 |
1381 | 155 CHECK_LIBRARY_EXISTS(winpthread pthread_create "" HAVE_WIN_PTHREAD) |
156 if (HAVE_WIN_PTHREAD) | |
157 # This line is necessary to compile with recent versions of MinGW, | |
158 # otherwise "libwinpthread-1.dll" is not statically linked. | |
159 SET(CMAKE_CXX_STANDARD_LIBRARIES "${CMAKE_CXX_STANDARD_LIBRARIES} -Wl,-Bstatic -lstdc++ -lpthread -Wl,-Bdynamic") | |
160 add_definitions(-DHAVE_WIN_PTHREAD=1) | |
161 else() | |
162 add_definitions(-DHAVE_WIN_PTHREAD=0) | |
163 endif() | |
495 | 164 endif() |
165 | |
918 | 166 elseif (${CMAKE_SYSTEM_NAME} STREQUAL "Darwin") |
1649
8040d56cb0b3
New function "OrthancPluginRegisterErrorCode()" to declare custom error codes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1647
diff
changeset
|
167 SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -exported_symbols_list ${ORTHANC_ROOT}/Plugins/Samples/Common/ExportedSymbols.list") |
1647
fe458dde986e
hide symbols in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1560
diff
changeset
|
168 |
918 | 169 add_definitions( |
170 -D_XOPEN_SOURCE=1 | |
171 ) | |
921
37aec47f49f0
successful compilation under Mac OS X Mavericks
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
918
diff
changeset
|
172 link_libraries(iconv) |
918 | 173 |
2406
f0cfacd0c9b8
Orthanc framework: ORTHANC_SANDBOXED parameter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2364
diff
changeset
|
174 elseif (CMAKE_SYSTEM_NAME STREQUAL "Emscripten") |
f0cfacd0c9b8
Orthanc framework: ORTHANC_SANDBOXED parameter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2364
diff
changeset
|
175 message("Building using Emscripten (for WebAssembly or asm.js targets)") |
f0cfacd0c9b8
Orthanc framework: ORTHANC_SANDBOXED parameter
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2364
diff
changeset
|
176 |
2510
04873915beaf
configuration of DCMTK for WebAssembly
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2472
diff
changeset
|
177 # The BINARYEN_TRAP_MODE specifies what to do when divisions per |
04873915beaf
configuration of DCMTK for WebAssembly
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2472
diff
changeset
|
178 # zero (and similar conditions like integer overflows) are |
04873915beaf
configuration of DCMTK for WebAssembly
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2472
diff
changeset
|
179 # encountered: The "clamp" mode avoids throwing errors, as they |
04873915beaf
configuration of DCMTK for WebAssembly
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2472
diff
changeset
|
180 # cannot be properly catched by "try {} catch (...)" constructions. |
04873915beaf
configuration of DCMTK for WebAssembly
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2472
diff
changeset
|
181 set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s EXTRA_EXPORTED_RUNTIME_METHODS='[\"ccall\", \"cwrap\"]' -s BINARYEN_TRAP_MODE='\"clamp\"'") |
04873915beaf
configuration of DCMTK for WebAssembly
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2472
diff
changeset
|
182 |
2781
13038d638097
primitives for android ndk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2510
diff
changeset
|
183 elseif (CMAKE_SYSTEM_NAME STREQUAL "Android") |
13038d638097
primitives for android ndk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2510
diff
changeset
|
184 |
2364 | 185 else() |
2781
13038d638097
primitives for android ndk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2510
diff
changeset
|
186 message("Unknown target platform: ${CMAKE_SYSTEM_NAME}") |
2364 | 187 message(FATAL_ERROR "Support your platform here") |
134 | 188 endif() |
189 | |
190 | |
2175
bed8e7ad8bab
ENABLE_PROFILING cmake option
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2148
diff
changeset
|
191 if (DEFINED ENABLE_PROFILING AND ENABLE_PROFILING) |
bed8e7ad8bab
ENABLE_PROFILING cmake option
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2148
diff
changeset
|
192 if (CMAKE_COMPILER_IS_GNUCXX) |
bed8e7ad8bab
ENABLE_PROFILING cmake option
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2148
diff
changeset
|
193 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pg") |
bed8e7ad8bab
ENABLE_PROFILING cmake option
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2148
diff
changeset
|
194 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pg") |
bed8e7ad8bab
ENABLE_PROFILING cmake option
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2148
diff
changeset
|
195 set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pg") |
bed8e7ad8bab
ENABLE_PROFILING cmake option
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2148
diff
changeset
|
196 set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -pg") |
bed8e7ad8bab
ENABLE_PROFILING cmake option
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2148
diff
changeset
|
197 set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -pg") |
bed8e7ad8bab
ENABLE_PROFILING cmake option
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2148
diff
changeset
|
198 else() |
bed8e7ad8bab
ENABLE_PROFILING cmake option
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2148
diff
changeset
|
199 message(FATAL_ERROR "Don't know how to enable profiling on your configuration") |
bed8e7ad8bab
ENABLE_PROFILING cmake option
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2148
diff
changeset
|
200 endif() |
bed8e7ad8bab
ENABLE_PROFILING cmake option
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2148
diff
changeset
|
201 endif() |
bed8e7ad8bab
ENABLE_PROFILING cmake option
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2148
diff
changeset
|
202 |
bed8e7ad8bab
ENABLE_PROFILING cmake option
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2148
diff
changeset
|
203 |
2456
cbb8deaacdf7
Fix static build on CentOS 6
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2450
diff
changeset
|
204 if (CMAKE_COMPILER_IS_GNUCXX) |
cbb8deaacdf7
Fix static build on CentOS 6
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2450
diff
changeset
|
205 # "When creating a static library using binutils (ar) and there |
cbb8deaacdf7
Fix static build on CentOS 6
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2450
diff
changeset
|
206 # exist a duplicate object name (e.g. a/Foo.cpp.o, b/Foo.cpp.o), the |
cbb8deaacdf7
Fix static build on CentOS 6
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2450
diff
changeset
|
207 # resulting static library can end up having only one of the |
cbb8deaacdf7
Fix static build on CentOS 6
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2450
diff
changeset
|
208 # duplicate objects. [...] This bug only happens if there are many |
2457 | 209 # objects." The trick consists in replacing the "r" argument |
210 # ("replace") provided to "ar" (as used in CMake < 3.1) by the "q" | |
211 # argument ("quick append"). This is because of the fact that CMake | |
212 # will invoke "ar" several times with several batches of ".o" | |
213 # objects, and using "r" would overwrite symbols defined in | |
214 # preceding batches. https://cmake.org/Bug/view.php?id=14874 | |
2456
cbb8deaacdf7
Fix static build on CentOS 6
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2450
diff
changeset
|
215 set(CMAKE_CXX_ARCHIVE_APPEND "<CMAKE_AR> <LINK_FLAGS> q <TARGET> <OBJECTS>") |
cbb8deaacdf7
Fix static build on CentOS 6
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2450
diff
changeset
|
216 endif() |
cbb8deaacdf7
Fix static build on CentOS 6
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2450
diff
changeset
|
217 |
cbb8deaacdf7
Fix static build on CentOS 6
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2450
diff
changeset
|
218 |
1414 | 219 if (STATIC_BUILD) |
134 | 220 add_definitions(-DORTHANC_STATIC=1) |
221 else() | |
222 add_definitions(-DORTHANC_STATIC=0) | |
223 endif() |