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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
134
bdc60d16cc98 improved cmake
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1 # This file sets all the compiler-related flags
bdc60d16cc98 improved cmake
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
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
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1405
diff changeset
5 # Cross-compilation necessarily implies standalone and static build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1405
diff changeset
6 SET(STATIC_BUILD ON)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1405
diff changeset
7 SET(STANDALONE_BUILD ON)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1405
diff changeset
8 endif()
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1405
diff changeset
9
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1405
diff changeset
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
bdc60d16cc98 improved cmake
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
13 # --std=c99 makes libcurl not to compile
bdc60d16cc98 improved cmake
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
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
ec2c2411d4db versioning
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 569
diff changeset
16
ec2c2411d4db versioning
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 569
diff changeset
17 if (CMAKE_CROSSCOMPILING)
ec2c2411d4db versioning
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 569
diff changeset
18 # http://stackoverflow.com/a/3543845/881731
ec2c2411d4db versioning
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 569
diff changeset
19 set(CMAKE_RC_COMPILE_OBJECT "<CMAKE_RC_COMPILER> -O coff -I<CMAKE_CURRENT_SOURCE_DIR> <SOURCE> <OBJECT>")
ec2c2411d4db versioning
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 569
diff changeset
20 endif()
ec2c2411d4db versioning
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 569
diff changeset
21
1414
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1405
diff changeset
22 elseif (MSVC)
569
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 566
diff changeset
23 # Use static runtime under Visual Studio
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 566
diff changeset
24 # http://www.cmake.org/Wiki/CMake_FAQ#Dynamic_Replace
134
bdc60d16cc98 improved cmake
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
25 # http://stackoverflow.com/a/6510446
bdc60d16cc98 improved cmake
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
26 foreach(flag_var
bdc60d16cc98 improved cmake
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
27 CMAKE_C_FLAGS_DEBUG
bdc60d16cc98 improved cmake
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
28 CMAKE_CXX_FLAGS_DEBUG
bdc60d16cc98 improved cmake
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
29 CMAKE_C_FLAGS_RELEASE
bdc60d16cc98 improved cmake
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
30 CMAKE_CXX_FLAGS_RELEASE
bdc60d16cc98 improved cmake
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
31 CMAKE_C_FLAGS_MINSIZEREL
bdc60d16cc98 improved cmake
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
32 CMAKE_CXX_FLAGS_MINSIZEREL
bdc60d16cc98 improved cmake
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
33 CMAKE_C_FLAGS_RELWITHDEBINFO
bdc60d16cc98 improved cmake
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
34 CMAKE_CXX_FLAGS_RELWITHDEBINFO)
bdc60d16cc98 improved cmake
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
35 string(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}")
bdc60d16cc98 improved cmake
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
36 string(REGEX REPLACE "/MDd" "/MTd" ${flag_var} "${${flag_var}}")
bdc60d16cc98 improved cmake
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
37 endforeach(flag_var)
569
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 566
diff changeset
38
1060
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1057
diff changeset
39 # Add /Zm256 compiler option to Visual Studio to fix PCH errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1057
diff changeset
40 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Zm256")
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1057
diff changeset
41
134
bdc60d16cc98 improved cmake
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
42 add_definitions(
bdc60d16cc98 improved cmake
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
43 -D_CRT_SECURE_NO_WARNINGS=1
bdc60d16cc98 improved cmake
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
44 -D_CRT_SECURE_NO_DEPRECATE=1
bdc60d16cc98 improved cmake
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
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
bdc60d16cc98 improved cmake
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
57 link_libraries(netapi32)
bdc60d16cc98 improved cmake
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
58 endif()
bdc60d16cc98 improved cmake
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
59
bdc60d16cc98 improved cmake
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
60
2364
ae50eccd41b7 compilation succeeds on OpenBSD
jodogne
parents: 2362
diff changeset
61 if (${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD" OR
ae50eccd41b7 compilation succeeds on OpenBSD
jodogne
parents: 2362
diff changeset
62 ${CMAKE_SYSTEM_NAME} STREQUAL "OpenBSD")
ae50eccd41b7 compilation succeeds on OpenBSD
jodogne
parents: 2362
diff changeset
63 # In FreeBSD/OpenBSD, the "/usr/local/" folder contains the ports and need to be imported
ae50eccd41b7 compilation succeeds on OpenBSD
jodogne
parents: 2362
diff changeset
64 SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -I/usr/local/include")
ae50eccd41b7 compilation succeeds on OpenBSD
jodogne
parents: 2362
diff changeset
65 SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -I/usr/local/include")
ae50eccd41b7 compilation succeeds on OpenBSD
jodogne
parents: 2362
diff changeset
66 SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -L/usr/local/lib")
ae50eccd41b7 compilation succeeds on OpenBSD
jodogne
parents: 2362
diff changeset
67 SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -L/usr/local/lib")
ae50eccd41b7 compilation succeeds on OpenBSD
jodogne
parents: 2362
diff changeset
68 endif()
ae50eccd41b7 compilation succeeds on OpenBSD
jodogne
parents: 2362
diff changeset
69
ae50eccd41b7 compilation succeeds on OpenBSD
jodogne
parents: 2362
diff changeset
70
890
816dccaeb7cf Support of kFreeBSD
jodogne
parents: 571
diff changeset
71 if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux" OR
1337
afaa55d42ddd FreeBSD support
jodogne
parents: 1336
diff changeset
72 ${CMAKE_SYSTEM_NAME} STREQUAL "kFreeBSD" OR
2364
ae50eccd41b7 compilation succeeds on OpenBSD
jodogne
parents: 2362
diff changeset
73 ${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD" OR
ae50eccd41b7 compilation succeeds on OpenBSD
jodogne
parents: 2362
diff changeset
74 ${CMAKE_SYSTEM_NAME} STREQUAL "OpenBSD")
ae50eccd41b7 compilation succeeds on OpenBSD
jodogne
parents: 2362
diff changeset
75
ae50eccd41b7 compilation succeeds on OpenBSD
jodogne
parents: 2362
diff changeset
76 if (NOT ${CMAKE_SYSTEM_NAME} STREQUAL "OpenBSD")
ae50eccd41b7 compilation succeeds on OpenBSD
jodogne
parents: 2362
diff changeset
77 # The "--no-undefined" linker flag makes the shared libraries
ae50eccd41b7 compilation succeeds on OpenBSD
jodogne
parents: 2362
diff changeset
78 # (plugins ModalityWorklists and ServeFolders) fail to compile on OpenBSD
ae50eccd41b7 compilation succeeds on OpenBSD
jodogne
parents: 2362
diff changeset
79 set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,--no-undefined")
ae50eccd41b7 compilation succeeds on OpenBSD
jodogne
parents: 2362
diff changeset
80 set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--no-undefined")
ae50eccd41b7 compilation succeeds on OpenBSD
jodogne
parents: 2362
diff changeset
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
bdc60d16cc98 improved cmake
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
87
bdc60d16cc98 improved cmake
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
88 # Remove the "-rdynamic" option
bdc60d16cc98 improved cmake
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
89 # http://www.mail-archive.com/cmake@cmake.org/msg08837.html
bdc60d16cc98 improved cmake
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
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
ae50eccd41b7 compilation succeeds on OpenBSD
jodogne
parents: 2362
diff changeset
92
ae50eccd41b7 compilation succeeds on OpenBSD
jodogne
parents: 2362
diff changeset
93 if (NOT ${CMAKE_SYSTEM_NAME} STREQUAL "OpenBSD")
ae50eccd41b7 compilation succeeds on OpenBSD
jodogne
parents: 2362
diff changeset
94 link_libraries(rt)
ae50eccd41b7 compilation succeeds on OpenBSD
jodogne
parents: 2362
diff changeset
95 endif()
ae50eccd41b7 compilation succeeds on OpenBSD
jodogne
parents: 2362
diff changeset
96
ae50eccd41b7 compilation succeeds on OpenBSD
jodogne
parents: 2362
diff changeset
97 if (NOT ${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD" AND
ae50eccd41b7 compilation succeeds on OpenBSD
jodogne
parents: 2362
diff changeset
98 NOT ${CMAKE_SYSTEM_NAME} STREQUAL "OpenBSD")
ae50eccd41b7 compilation succeeds on OpenBSD
jodogne
parents: 2362
diff changeset
99 link_libraries(dl)
ae50eccd41b7 compilation succeeds on OpenBSD
jodogne
parents: 2362
diff changeset
100 endif()
1337
afaa55d42ddd FreeBSD support
jodogne
parents: 1336
diff changeset
101
2460
292bd85d4532 fix openbsd
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2457
diff changeset
102 if (NOT ${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD" AND
292bd85d4532 fix openbsd
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2457
diff changeset
103 NOT ${CMAKE_SYSTEM_NAME} STREQUAL "OpenBSD")
292bd85d4532 fix openbsd
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2457
diff changeset
104 # The "--as-needed" linker flag is not available on FreeBSD and OpenBSD
1337
afaa55d42ddd FreeBSD support
jodogne
parents: 1336
diff changeset
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
ae50eccd41b7 compilation succeeds on OpenBSD
jodogne
parents: 2362
diff changeset
108 endif()
ae50eccd41b7 compilation succeeds on OpenBSD
jodogne
parents: 2362
diff changeset
109
ae50eccd41b7 compilation succeeds on OpenBSD
jodogne
parents: 2362
diff changeset
110 if (NOT ${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD" AND
ae50eccd41b7 compilation succeeds on OpenBSD
jodogne
parents: 2362
diff changeset
111 NOT ${CMAKE_SYSTEM_NAME} STREQUAL "OpenBSD")
ae50eccd41b7 compilation succeeds on OpenBSD
jodogne
parents: 2362
diff changeset
112 # FreeBSD/OpenBSD have just one single interface for file
ae50eccd41b7 compilation succeeds on OpenBSD
jodogne
parents: 2362
diff changeset
113 # handling, which is 64bit clean, so there is no need to define macro
ae50eccd41b7 compilation succeeds on OpenBSD
jodogne
parents: 2362
diff changeset
114 # for LFS (Large File Support).
ae50eccd41b7 compilation succeeds on OpenBSD
jodogne
parents: 2362
diff changeset
115 # https://ohse.de/uwe/articles/lfs.html
1337
afaa55d42ddd FreeBSD support
jodogne
parents: 1336
diff changeset
116 add_definitions(
afaa55d42ddd FreeBSD support
jodogne
parents: 1336
diff changeset
117 -D_LARGEFILE64_SOURCE=1
afaa55d42ddd FreeBSD support
jodogne
parents: 1336
diff changeset
118 -D_FILE_OFFSET_BITS=64
afaa55d42ddd FreeBSD support
jodogne
parents: 1336
diff changeset
119 )
afaa55d42ddd FreeBSD support
jodogne
parents: 1336
diff changeset
120 endif()
134
bdc60d16cc98 improved cmake
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
121
bdc60d16cc98 improved cmake
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
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
bdc60d16cc98 improved cmake
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
140 add_definitions(
bdc60d16cc98 improved cmake
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
141 -D_CRT_SECURE_NO_WARNINGS=1
bdc60d16cc98 improved cmake
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
142 )
bdc60d16cc98 improved cmake
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
143 link_libraries(rpcrt4 ws2_32)
495
5bb96a6100c0 fixes for mingw64
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 193
diff changeset
144
1414
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1405
diff changeset
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
5bb96a6100c0 fixes for mingw64
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 193
diff changeset
151 # This is a patch for MinGW64
5bb96a6100c0 fixes for mingw64
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 193
diff changeset
152 SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--allow-multiple-definition -static-libgcc -static-libstdc++")
1420
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1416
diff changeset
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
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1377
diff changeset
155 CHECK_LIBRARY_EXISTS(winpthread pthread_create "" HAVE_WIN_PTHREAD)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1377
diff changeset
156 if (HAVE_WIN_PTHREAD)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1377
diff changeset
157 # This line is necessary to compile with recent versions of MinGW,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1377
diff changeset
158 # otherwise "libwinpthread-1.dll" is not statically linked.
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1377
diff changeset
159 SET(CMAKE_CXX_STANDARD_LIBRARIES "${CMAKE_CXX_STANDARD_LIBRARIES} -Wl,-Bstatic -lstdc++ -lpthread -Wl,-Bdynamic")
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1377
diff changeset
160 add_definitions(-DHAVE_WIN_PTHREAD=1)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1377
diff changeset
161 else()
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1377
diff changeset
162 add_definitions(-DHAVE_WIN_PTHREAD=0)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1377
diff changeset
163 endif()
495
5bb96a6100c0 fixes for mingw64
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 193
diff changeset
164 endif()
5bb96a6100c0 fixes for mingw64
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 193
diff changeset
165
918
ac8f68cbdbb6 build cont
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 571
diff changeset
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
ac8f68cbdbb6 build cont
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 571
diff changeset
169 add_definitions(
ac8f68cbdbb6 build cont
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 571
diff changeset
170 -D_XOPEN_SOURCE=1
ac8f68cbdbb6 build cont
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 571
diff changeset
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
ac8f68cbdbb6 build cont
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 571
diff changeset
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
ae50eccd41b7 compilation succeeds on OpenBSD
jodogne
parents: 2362
diff changeset
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
ae50eccd41b7 compilation succeeds on OpenBSD
jodogne
parents: 2362
diff changeset
187 message(FATAL_ERROR "Support your platform here")
134
bdc60d16cc98 improved cmake
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
188 endif()
bdc60d16cc98 improved cmake
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
189
bdc60d16cc98 improved cmake
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
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
2a211c0fc7ca note about ar
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2456
diff changeset
209 # objects." The trick consists in replacing the "r" argument
2a211c0fc7ca note about ar
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2456
diff changeset
210 # ("replace") provided to "ar" (as used in CMake < 3.1) by the "q"
2a211c0fc7ca note about ar
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2456
diff changeset
211 # argument ("quick append"). This is because of the fact that CMake
2a211c0fc7ca note about ar
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2456
diff changeset
212 # will invoke "ar" several times with several batches of ".o"
2a211c0fc7ca note about ar
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2456
diff changeset
213 # objects, and using "r" would overwrite symbols defined in
2a211c0fc7ca note about ar
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2456
diff changeset
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
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1405
diff changeset
219 if (STATIC_BUILD)
134
bdc60d16cc98 improved cmake
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
220 add_definitions(-DORTHANC_STATIC=1)
bdc60d16cc98 improved cmake
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
221 else()
bdc60d16cc98 improved cmake
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
222 add_definitions(-DORTHANC_STATIC=0)
bdc60d16cc98 improved cmake
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
223 endif()