FreeRDP/winpr/libwinpr/utils/CMakeLists.txt

185 lines
3.7 KiB
CMake
Raw Normal View History

# WinPR: Windows Portable Runtime
# libwinpr-utils cmake build script
#
2012-09-21 04:45:56 +04:00
# Copyright 2012 Marc-Andre Moreau <marcandre.moreau@gmail.com>
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
include(CheckFunctionExists)
2013-10-02 00:08:26 +04:00
set(CMAKE_INCLUDE_CURRENT_DIR ON)
2022-04-29 13:12:12 +03:00
set(COLLECTIONS_SRCS
collections/Queue.c
collections/Stack.c
collections/PubSub.c
2022-10-27 09:56:33 +03:00
collections/BitStream.c
collections/Reference.c
collections/ArrayList.c
collections/LinkedList.c
2014-02-10 06:55:21 +04:00
collections/HashTable.c
collections/ListDictionary.c
2013-01-23 05:36:08 +04:00
collections/CountdownEvent.c
collections/BufferPool.c
2013-02-15 05:39:56 +04:00
collections/ObjectPool.c
collections/StreamPool.c
collections/MessageQueue.c
collections/MessagePipe.c)
2022-04-29 13:12:12 +03:00
set(LODEPNG_SRCS
2014-09-28 19:02:39 +04:00
lodepng/lodepng.c
lodepng/lodepng.h)
2015-10-21 17:13:15 +03:00
if (HAVE_SYSLOG_H)
set(SYSLOG_SRCS
wlog/SyslogAppender.c
wlog/SyslogAppender.h
)
endif()
2015-10-30 16:50:14 +03:00
if (LIBSYSTEMD_FOUND)
set(JOURNALD_SRCS
wlog/JournaldAppender.c
wlog/JournaldAppender.h
)
winpr_include_directory_add(${LIBSYSTEMD_INCLUDE_DIR})
2019-03-15 13:36:24 +03:00
winpr_library_add_private(${LIBSYSTEMD_LIBRARY})
2015-10-30 16:50:14 +03:00
endif()
2022-04-29 13:12:12 +03:00
set(WLOG_SRCS
2013-10-02 00:08:26 +04:00
wlog/wlog.c
wlog/wlog.h
wlog/Layout.c
wlog/Layout.h
wlog/Message.c
wlog/Message.h
wlog/DataMessage.c
wlog/DataMessage.h
wlog/ImageMessage.c
wlog/ImageMessage.h
wlog/PacketMessage.c
wlog/PacketMessage.h
wlog/Appender.c
wlog/Appender.h
2013-10-02 00:08:26 +04:00
wlog/FileAppender.c
wlog/FileAppender.h
wlog/BinaryAppender.c
wlog/BinaryAppender.h
2014-11-16 14:20:48 +03:00
wlog/CallbackAppender.c
wlog/CallbackAppender.h
2013-10-02 00:08:26 +04:00
wlog/ConsoleAppender.c
2015-10-21 17:13:15 +03:00
wlog/ConsoleAppender.h
wlog/UdpAppender.c
wlog/UdpAppender.h
2015-10-21 17:13:15 +03:00
${SYSLOG_SRCS}
2015-10-30 16:50:14 +03:00
${JOURNALD_SRCS}
2015-10-21 17:13:15 +03:00
)
set(ASN1_SRCS
asn1/asn1.c
)
2022-04-29 13:12:12 +03:00
set(SRCS
ini.c
sam.c
ntlm.c
image.c
print.c
stream.h
stream.c
strlst.c
debug.c
winpr.c
OpenSSL thread safety freerdp/winpr had the following issues: * The non reentrant SSL_library_init() was called concurrently (crash) * Missing code/api to set the eventually required OpenSSL static and dynamic locking callbacks * Missing code/api to free the application-global or thread-local OpenSSL data and tables This commit creates two new winpr functions: BOOL winpr_InitializeSSL(DWORD flags): Use the flag WINPR_SSL_INIT_ALREADY_INITIALIZED if you want to tell winpr that your application has already initialized OpenSSL. If required use the flag WINPR_SSL_INIT_ENABLE_LOCKING to tell winpr that it should set the OpenSSL static and dynamic locking callbacks. Otherwise just call it with the flag WINPR_SSL_INIT_DEFAULT. The recommended way is that your application calls this function once before any threads are created. However, in order to support lazy OpenSSL library initialization winpr_InitializeSSL() can also safely be called multiple times and concurrently because it uses the new InitOnceExecuteOnce() function to guarantee that the initialization is only performed successfully once during the life time of the calling process. BOOL winpr_CleanupSSL(DWORD flags): If you create a thread that uses SSL you should call this function before the thread returns using the flag WINPR_SSL_CLEANUP_THREAD in order to clean up the thread-local OpenSSL data and tables. Call the function with the flag WINPR_SSL_CLEANUP_GLOBAL before terminating your application. Note: This commit only replaced the current occurences of the SSL_load_error_strings(); SSL_library_init(); pairs in the freerdp source with winpr_InitializeSSL(). None of the server or client applications has been changed according to the recommended usage described above (TBDL).
2014-07-28 23:55:57 +04:00
cmdline.c
ssl.c)
if (ANDROID)
2014-09-28 19:02:39 +04:00
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
2022-04-29 14:41:44 +03:00
if (NOT HAVE_UNWIND_H)
message("[backtrace] android NDK without unwind.h, falling back to corkscrew")
set(HAVE_CORKSCREW 1)
endif()
endif()
2022-04-29 12:56:35 +03:00
if (HAVE_CORKSCREW)
list(APPEND SRCS
corkscrew/debug.c
corkscrew/debug.h)
endif()
2022-04-29 12:51:18 +03:00
if (WIN32)
list(APPEND SRCS
windows/debug.c
windows/debug.h)
endif()
2022-04-29 12:38:46 +03:00
if (HAVE_EXECINFO_H)
list(APPEND SRCS
execinfo/debug.c
execinfo/debug.h)
endif()
2022-04-29 12:28:49 +03:00
if (HAVE_UNWIND_H)
option(USE_UNWIND "Use unwind.h to generate backtraces" ON)
if (USE_UNWIND)
add_definitions(-DUSE_UNWIND)
list(APPEND SRCS
unwind/debug.c
unwind/debug.h)
endif()
2022-04-29 12:28:49 +03:00
endif()
2022-04-29 13:12:12 +03:00
winpr_module_add(${SRCS}
${COLLECTIONS_SRCS}
${LODEPNG_SRCS}
${WLOG_SRCS}
${ASN1_SRCS}
)
winpr_include_directory_add(
2014-09-28 19:02:39 +04:00
"lodepng"
2015-10-05 23:23:44 +03:00
".")
2015-10-05 23:23:44 +03:00
if(OPENSSL_FOUND)
winpr_include_directory_add(${OPENSSL_INCLUDE_DIR})
2019-03-15 13:36:24 +03:00
winpr_library_add_private(${OPENSSL_LIBRARIES})
2015-10-05 23:23:44 +03:00
endif()
2015-10-05 23:23:44 +03:00
if(MBEDTLS_FOUND)
winpr_include_directory_add(${MBEDTLS_INCLUDE_DIR})
2019-03-15 13:36:24 +03:00
winpr_library_add_private(${MBEDTLS_LIBRARIES})
2015-10-05 23:23:44 +03:00
endif()
if(UNIX)
2019-03-15 13:36:24 +03:00
winpr_library_add_private(m)
2012-10-01 06:58:59 +04:00
set(CMAKE_REQUIRED_INCLUDES backtrace.h)
check_function_exists(backtrace BACKTRACE)
if (NOT BACKTRACE)
set(CMAKE_REQUIRED_LIBRARIES execinfo)
check_function_exists(backtrace EXECINFO)
if (EXECINFO)
winpr_library_add_private(execinfo)
endif()
endif()
2015-03-10 01:21:28 +03:00
endif()
if(WIN32)
2019-03-15 13:36:24 +03:00
winpr_library_add_public(dbghelp)
endif()
if(BUILD_TESTING)
add_subdirectory(test)
endif()