4b3ecfac47
* pkg-config sets CJSON_FOUND, check for that instead of the paths, which might be unset or set to <var>-NOTFOUND * move detection to own file. find_package targets are meant to be used in same directory or below, but we define the WinPR target one above, so include it in parent
247 lines
5.7 KiB
CMake
247 lines
5.7 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)
|
|
|
|
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
|
|
|
option(WITH_LODEPNG "build WinPR with PNG support" OFF)
|
|
if (WITH_LODEPNG)
|
|
find_package(lodepng REQUIRED)
|
|
|
|
winpr_definition_add(-DWITH_LODEPNG)
|
|
set(WINPR_WITH_PNG ON CACHE BOOL "build cache")
|
|
|
|
winpr_include_directory_add(${lodepng_INCLUDE_DIRS})
|
|
winpr_library_add_private(${lodepng_LIBRARIES})
|
|
endif()
|
|
|
|
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_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_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_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_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(-DUSE_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(-DUSE_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_include_directory_add(${JSONC_INCLUDE_DIRS})
|
|
winpr_definition_add(-DWITH_JSONC)
|
|
set(WITH_WINPR_JSON ON CACHE INTERNAL "internal")
|
|
elseif (CJSON_FOUND)
|
|
winpr_library_add_private(${CJSON_LIBRARIES})
|
|
winpr_include_directory_add(${CJSON_INCLUDE_DIRS})
|
|
winpr_definition_add(-DWITH_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_include_directory_add(${OPENSSL_INCLUDE_DIR})
|
|
winpr_library_add_private(${OPENSSL_LIBRARIES})
|
|
endif()
|
|
|
|
if(MBEDTLS_FOUND)
|
|
winpr_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)
|
|
add_subdirectory(test)
|
|
endif()
|