File: CMakeLists.txt

package info (click to toggle)
poco 1.10.0-6%2Bdeb11u1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 50,624 kB
  • sloc: cpp: 301,905; ansic: 192,793; makefile: 1,429; sh: 493; xml: 65; perl: 29
file content (235 lines) | stat: -rw-r--r-- 6,043 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
# Sources
file(GLOB SRCS_G "src/*.cpp")
POCO_SOURCES_AUTO( SRCS ${SRCS_G})

# Headers
file(GLOB_RECURSE HDRS_G "include/*.h" )
POCO_HEADERS_AUTO( SRCS ${HDRS_G})

# Platform Specific
POCO_SOURCES_AUTO_PLAT( SRCS UNIX src/SyslogChannel.cpp )
POCO_HEADERS_AUTO( SRCS include/Poco/SyslogChannel.h )

# For Windows CE we need to disable these
if(WINCE)
POCO_SOURCES_AUTO_PLAT( SRCS OFF
	src/WindowsConsoleChannel.cpp
	src/EventLogChannel.cpp
	)
else()
POCO_SOURCES_AUTO_PLAT( SRCS WIN32
	src/WindowsConsoleChannel.cpp
	src/EventLogChannel.cpp
	)
endif()

# Version Resource
if(MSVC AND NOT POCO_STATIC)
    source_group("Resources" FILES ${PROJECT_SOURCE_DIR}/DLLVersion.rc)
    list(APPEND SRCS ${PROJECT_SOURCE_DIR}/DLLVersion.rc)
endif()

# Messages
POCO_MESSAGES( SRCS Logging src/pocomsg.mc)

# If POCO_UNBUNDLED is enabled we try to find the required packages
# The configuration will fail if the packages are not found
if (POCO_UNBUNDLED)
	find_package(PCRE REQUIRED)
	find_package(ZLIB REQUIRED)

	#HACK: Unicode.cpp requires functions from these files. The can't be taken from the library
	POCO_SOURCES( SRCS RegExp
		src/pcre_ucd.c
		src/pcre_tables.c
	)

else()
	# pcre
	POCO_SOURCES( SRCS pcre
		src/pcre_config.c
		src/pcre_byte_order.c
		src/pcre_chartables.c
		src/pcre_compile.c
		src/pcre_exec.c
		src/pcre_fullinfo.c
		src/pcre_globals.c
		src/pcre_maketables.c
		src/pcre_newline.c
		src/pcre_ord2utf8.c
		src/pcre_study.c
		src/pcre_tables.c
		src/pcre_dfa_exec.c
		src/pcre_get.c
		src/pcre_jit_compile.c
		src/pcre_refcount.c
		src/pcre_string_utils.c
		src/pcre_version.c
		src/pcre_ucd.c
		src/pcre_valid_utf8.c
		src/pcre_xclass.c
	)

	# zlib
	POCO_HEADERS( SRCS zlib
		include/Poco/zconf.h
		include/Poco/zlib.h
		)

	POCO_SOURCES( SRCS zlib
		src/adler32.c
		src/compress.c
		src/crc32.c
		src/deflate.c
		src/infback.c
		src/inffast.c
		src/inflate.c
		src/inftrees.c
		src/trees.c
		src/zutil.c
	)
endif (POCO_UNBUNDLED)


add_library(Foundation ${SRCS})
add_library(Poco::Foundation ALIAS Foundation)
set_target_properties(Foundation
	PROPERTIES
	VERSION ${SHARED_LIBRARY_VERSION} SOVERSION ${SHARED_LIBRARY_VERSION}
	OUTPUT_NAME PocoFoundation
	DEFINE_SYMBOL Foundation_EXPORTS
	)

if (POCO_UNBUNDLED)
    target_link_libraries(Foundation PUBLIC Pcre::Pcre ZLIB::ZLIB)
    target_compile_definitions(Foundation PUBLIC POCO_UNBUNDLED)
endif (POCO_UNBUNDLED)

target_include_directories(Foundation
	PUBLIC
		$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
		$<INSTALL_INTERFACE:include>
	PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src
	)

target_compile_definitions(Foundation
  PUBLIC
    $<$<CONFIG:Debug>:_DEBUG>
    $<$<BOOL:${DISABLE_CPP14}>:POCO_DISABLE_CPP14>
    $<$<NOT:$<BOOL:${DISABLE_CPP14}>>:POCO_ENABLE_CPP14>
    $<$<BOOL:${DISABLE_CPP11}>:POCO_DISABLE_CPP11>
    $<$<NOT:$<BOOL:${DISABLE_CPP11}>>:POCO_ENABLE_CPP11>
)
target_compile_features(Foundation
  PUBLIC
    $<$<NOT:$<BOOL:${DISABLE_CPP11}>>:cxx_defaulted_move_initializers>
)
if(NOT DISABLE_CPP14 AND CMAKE_VERSION VERSION_GREATER "3.8")
  target_compile_features(Foundation PUBLIC cxx_std_14)
endif()

if(NOT BUILD_SHARED_LIBS)
    target_compile_definitions(Foundation
        PUBLIC
            POCO_STATIC
    )
endif()

if(WIN32)
	target_compile_definitions(Foundation PUBLIC POCO_OS_FAMILY_WINDOWS UNICODE _UNICODE)
	target_link_libraries(Foundation PUBLIC iphlpapi)
endif()

if (CYGWIN)
  target_compile_definitions(Foundation PUBLIC POCO_NO_FPENVIRONMENT POCO_NO_WSTRING _XOPEN_SOURCE=500 __BSD_VISIBLE)
else()
	if (UNIX AND NOT ANDROID )
	  target_compile_definitions(Foundation PUBLIC POCO_OS_FAMILY_UNIX)
	  if (APPLE)
		target_compile_definitions(Foundation PUBLIC POCO_HAVE_IPv6 POCO_NO_STAT64)
		target_link_libraries(Foundation PUBLIC ${CMAKE_DL_LIBS})
	  else()
		target_compile_definitions(Foundation PUBLIC _REENTRANT _THREAD_SAFE _LARGEFILE64_SOURCE _FILE_OFFSET_BITS=64)
		if (QNX)
		  target_compile_definitions(Foundation PUBLIC POCO_HAVE_FD_POLL)
		  target_link_libraries(Foundation PUBLIC m socket)
		elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "FreeBSD")
		  target_compile_definitions(Foundation PUBLIC POCO_HAVE_FD_POLL)
		  target_link_libraries(Foundation PUBLIC pthread ${CMAKE_DL_LIBS} rt)
		elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "AIX")
		  target_compile_definitions(Foundation PUBLIC  _XOPEN_SOURCE=500 POCO_HAVE_FD_POLL)
		  target_link_libraries(Foundation PUBLIC pthread ${CMAKE_DL_LIBS} rt)
		else()
		  target_compile_definitions(Foundation PUBLIC  _XOPEN_SOURCE=500 POCO_HAVE_FD_EPOLL)
		  target_link_libraries(Foundation PUBLIC pthread ${CMAKE_DL_LIBS} rt)
		endif()
	  endif (APPLE)
	endif(UNIX AND NOT ANDROID )
endif (CYGWIN)

if (CMAKE_SYSTEM MATCHES "SunOS")
  target_compile_definitions(Foundation
	  PUBLIC
		POCO_OS_FAMILY_UNIX
		_XOPEN_SOURCE=500
		_REENTRANT
		_THREAD_SAFE
		_LARGEFILE64_SOURCE
		_FILE_OFFSET_BITS=64
	)
  target_link_libraries(Foundation PUBLIC pthread socket xnet nsl resolv rt ${CMAKE_DL_LIBS})
endif()

if(CMAKE_COMPILER_IS_MINGW)
  target_compile_definitions(Foundation
	  PUBLIC
		WC_NO_BEST_FIT_CHARS=0x400
		POCO_WIN32_UTF8
		_WIN32
		MINGW32
		WINVER=0x500
		ODBCVER=0x0300
		POCO_THREAD_STACK_SIZE
	)
endif()

# SunPro C++
if(${CMAKE_CXX_COMPILER_ID} MATCHES "SunPro")
	target_compile_definitions(Foundation PUBLIC _BSD_SOURCE)
	target_compile_options(Foundation PUBLIC -library=stlport4)
endif()

# iOS
if (IOS)
  target_compile_definitions(Foundation
	  PUBLIC
		POCO_HAVE_IPv6
		POCO_NO_FPENVIRONMENT
		POCO_NO_STAT64
		POCO_NO_SHAREDLIBS
		POCO_NO_NET_IFTYPES
	)
endif()

#Android
if (ANDROID)
	target_compile_definitions(Foundation
		PUBLIC
			POCO_NO_FPENVIRONMENT
			POCO_NO_WSTRING
			POCO_NO_SHAREDMEMORY
	)
	target_link_libraries(Foundation PUBLIC log)
endif()

POCO_INSTALL(Foundation)
POCO_GENERATE_PACKAGE(Foundation)

if (ENABLE_TESTS)
	if(POCO_STATIC)
	  set_property(TARGET Foundation PROPERTY POSITION_INDEPENDENT_CODE ON) # This is needed to build TestLibrary.so as shared.
	endif()
	add_subdirectory(samples)
	add_subdirectory(testsuite)
endif ()