mirror of
https://github.com/morgan9e/FreeRDP
synced 2026-04-14 00:14:11 +09:00
Only builds with -DWITH_DEBUG_UTILS_CMDLINE_DUMP=ON will dump the command line argument that failed during parsing to the log.
237 lines
6.4 KiB
CMake
237 lines
6.4 KiB
CMake
# WinPR: Windows Portable Runtime
|
|
# libwinpr-utils cmake build script
|
|
#
|
|
# 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)
|
|
include(CMakeDependentOption)
|
|
|
|
winpr_include_directory_add(${CMAKE_CURRENT_SOURCE_DIR})
|
|
|
|
option(WITH_DEBUG_UTILS_CMDLINE_DUMP "build with excessive command line parser logging" OFF)
|
|
if(WITH_DEBUG_UTILS_CMDLINE_DUMP)
|
|
winpr_definition_add(-DWITH_DEBUG_UTILS_CMDLINE_DUMP)
|
|
endif()
|
|
|
|
option(WITH_STREAMPOOL_DEBUG "build with extensive streampool logging" OFF)
|
|
if(WITH_STREAMPOOL_DEBUG)
|
|
winpr_definition_add(-DWITH_STREAMPOOL_DEBUG)
|
|
endif()
|
|
|
|
option(WITH_LODEPNG "build WinPR with PNG support" OFF)
|
|
if(WITH_LODEPNG)
|
|
find_package(lodepng REQUIRED)
|
|
|
|
winpr_definition_add(WITH_LODEPNG)
|
|
set(WINPR_WITH_PNG ON CACHE BOOL "build cache")
|
|
|
|
winpr_system_include_directory_add(${lodepng_INCLUDE_DIRS})
|
|
winpr_library_add_private(${lodepng_LIBRARIES})
|
|
endif()
|
|
|
|
option(WINPR_UTILS_IMAGE_DIBv5 "[experimental] Add DIBv5 <--> BMP conversion support to clipboard" OFF)
|
|
option(WINPR_UTILS_IMAGE_PNG "Add PNG <--> BMP conversion support to clipboard" OFF)
|
|
if(WINPR_UTILS_IMAGE_PNG)
|
|
find_package(PNG REQUIRED)
|
|
|
|
set(WINPR_WITH_PNG ON CACHE BOOL "build cache")
|
|
winpr_system_include_directory_add(${PNG_INCLUDE_DIRS})
|
|
winpr_library_add_private(${PNG_LIBRARIES})
|
|
endif()
|
|
|
|
option(WINPR_UTILS_IMAGE_WEBP "Add WebP <--> BMP conversion support to clipboard" OFF)
|
|
if(WINPR_UTILS_IMAGE_WEBP)
|
|
find_package(PkgConfig REQUIRED)
|
|
pkg_check_modules(WEBP libwebp REQUIRED)
|
|
|
|
winpr_system_include_directory_add(${WEBP_INCLUDE_DIRS})
|
|
winpr_library_add_private(${WEBP_LIBRARIES})
|
|
endif()
|
|
|
|
option(WINPR_UTILS_IMAGE_JPEG "Add Jpeg <--> BMP conversion support to clipboard" OFF)
|
|
if(WINPR_UTILS_IMAGE_JPEG)
|
|
find_package(PkgConfig REQUIRED)
|
|
pkg_check_modules(JPEG libjpeg REQUIRED)
|
|
|
|
winpr_system_include_directory_add(${JPEG_INCLUDE_DIRS})
|
|
winpr_library_add_private(${JPEG_LIBRARIES})
|
|
endif()
|
|
|
|
set(COLLECTIONS_SRCS
|
|
collections/Object.c
|
|
collections/Queue.c
|
|
collections/Stack.c
|
|
collections/PubSub.c
|
|
collections/BitStream.c
|
|
collections/ArrayList.c
|
|
collections/LinkedList.c
|
|
collections/HashTable.c
|
|
collections/ListDictionary.c
|
|
collections/CountdownEvent.c
|
|
collections/BufferPool.c
|
|
collections/ObjectPool.c
|
|
collections/StreamPool.c
|
|
collections/MessageQueue.c
|
|
collections/MessagePipe.c
|
|
)
|
|
|
|
if(WINPR_HAVE_SYSLOG_H)
|
|
set(SYSLOG_SRCS wlog/SyslogAppender.c wlog/SyslogAppender.h)
|
|
endif()
|
|
|
|
find_package(libsystemd)
|
|
option(WITH_SYSTEMD "allows to export wLog to systemd journal" ${libsystemd_FOUND})
|
|
if(WITH_LIBSYSTEMD)
|
|
find_package(libsystemd REQUIRED)
|
|
set(WINPR_HAVE_JOURNALD_H TRUE)
|
|
set(JOURNALD_SRCS wlog/JournaldAppender.c wlog/JournaldAppender.h)
|
|
winpr_system_include_directory_add(${LIBSYSTEMD_INCLUDE_DIR})
|
|
winpr_library_add_private(${LIBSYSTEMD_LIBRARY})
|
|
else()
|
|
unset(WINPR_HAVE_JOURNALD_H)
|
|
endif()
|
|
|
|
set(WLOG_SRCS
|
|
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
|
|
wlog/FileAppender.c
|
|
wlog/FileAppender.h
|
|
wlog/BinaryAppender.c
|
|
wlog/BinaryAppender.h
|
|
wlog/CallbackAppender.c
|
|
wlog/CallbackAppender.h
|
|
wlog/ConsoleAppender.c
|
|
wlog/ConsoleAppender.h
|
|
wlog/UdpAppender.c
|
|
wlog/UdpAppender.h
|
|
${SYSLOG_SRCS}
|
|
${JOURNALD_SRCS}
|
|
)
|
|
|
|
set(ASN1_SRCS asn1/asn1.c)
|
|
|
|
set(SRCS
|
|
ini.c
|
|
sam.c
|
|
ntlm.c
|
|
image.c
|
|
print.c
|
|
stream.h
|
|
stream.c
|
|
strlst.c
|
|
debug.c
|
|
winpr.c
|
|
cmdline.c
|
|
ssl.c
|
|
)
|
|
|
|
if(ANDROID)
|
|
list(APPEND SRCS android.h android.c)
|
|
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
|
|
if(NOT WINPR_HAVE_UNWIND_H)
|
|
message("[backtrace] android NDK without unwind.h, falling back to corkscrew")
|
|
set(WINPR_HAVE_CORKSCREW 1)
|
|
endif()
|
|
endif()
|
|
|
|
if(WINPR_HAVE_CORKSCREW)
|
|
list(APPEND SRCS corkscrew/debug.c corkscrew/debug.h)
|
|
endif()
|
|
|
|
if(WIN32)
|
|
list(APPEND SRCS windows/debug.c windows/debug.h)
|
|
endif()
|
|
|
|
if(WINPR_HAVE_EXECINFO_H)
|
|
option(USE_EXECINFO "Use execinfo.h to generate backtraces" ON)
|
|
if(USE_EXECINFO)
|
|
winpr_definition_add(USE_EXECINFO)
|
|
list(APPEND SRCS execinfo/debug.c execinfo/debug.h)
|
|
endif()
|
|
endif()
|
|
|
|
if(WINPR_HAVE_UNWIND_H)
|
|
option(USE_UNWIND "Use unwind.h to generate backtraces" ON)
|
|
if(USE_UNWIND)
|
|
winpr_definition_add(USE_UNWIND)
|
|
list(APPEND SRCS unwind/debug.c unwind/debug.h)
|
|
endif()
|
|
endif()
|
|
|
|
include(JsonDetect)
|
|
if(NOT WITH_JSON_DISABLED)
|
|
if(JSONC_FOUND AND NOT WITH_CJSON_REQUIRED)
|
|
winpr_library_add_private(${JSONC_LIBRARIES})
|
|
winpr_system_include_directory_add(${JSONC_INCLUDE_DIRS})
|
|
winpr_definition_add(WITH_JSONC)
|
|
set(WITH_WINPR_JSON ON CACHE INTERNAL "internal")
|
|
elseif(CJSON_FOUND)
|
|
winpr_library_add_private(${CJSON_LIBRARIES})
|
|
winpr_system_include_directory_add(${CJSON_INCLUDE_DIRS})
|
|
winpr_definition_add(WITH_CJSON)
|
|
set(WITH_WINPR_JSON ON CACHE INTERNAL "internal")
|
|
endif()
|
|
endif()
|
|
|
|
winpr_module_add(json/json.c)
|
|
|
|
winpr_module_add(${SRCS} ${COLLECTIONS_SRCS} ${WLOG_SRCS} ${ASN1_SRCS})
|
|
|
|
winpr_include_directory_add(".")
|
|
|
|
if(OPENSSL_FOUND)
|
|
winpr_system_include_directory_add(${OPENSSL_INCLUDE_DIR})
|
|
winpr_library_add_private(${OPENSSL_LIBRARIES})
|
|
endif()
|
|
|
|
if(MBEDTLS_FOUND)
|
|
winpr_system_include_directory_add(${MBEDTLS_INCLUDE_DIR})
|
|
winpr_library_add_private(${MBEDTLS_LIBRARIES})
|
|
endif()
|
|
|
|
if(UNIX)
|
|
winpr_library_add_private(m)
|
|
|
|
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()
|
|
endif()
|
|
|
|
if(WIN32)
|
|
winpr_library_add_public(dbghelp)
|
|
endif()
|
|
|
|
if(BUILD_TESTING_INTERNAL OR BUILD_TESTING)
|
|
add_subdirectory(test)
|
|
endif()
|