From cf7c65ba0066f481bbdc82591a8450d0b051c22d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Moreau?= Date: Tue, 14 Aug 2012 14:37:31 -0400 Subject: [PATCH] libwinpr: add support for monolithic build (single libwinpr.so) --- libfreerdp/core/CMakeLists.txt | 20 ++++++++++------- libfreerdp/crypto/CMakeLists.txt | 14 +++++++++--- server/X11/CMakeLists.txt | 3 ++- winpr/CMakeLists.txt | 24 +++++++++++++++++++++ winpr/asn1/CMakeLists.txt | 13 ++++++++--- winpr/asn1/asn1.c | 10 +++++++++ winpr/bcrypt/CMakeLists.txt | 28 ++++++++++++++++-------- winpr/crt/CMakeLists.txt | 11 ++++++++-- winpr/dsparse/CMakeLists.txt | 11 ++++++++-- winpr/handle/CMakeLists.txt | 11 ++++++++-- winpr/heap/CMakeLists.txt | 11 ++++++++-- winpr/library/CMakeLists.txt | 11 ++++++++-- winpr/registry/CMakeLists.txt | 14 ++++++++---- winpr/rpc/CMakeLists.txt | 22 +++++++++++++------ winpr/sspi/CMakeLists.txt | 37 ++++++++++++++++++++++---------- winpr/sspicli/CMakeLists.txt | 11 ++++++++-- winpr/synch/CMakeLists.txt | 27 +++++++++++++++++++---- winpr/sysinfo/CMakeLists.txt | 11 ++++++++-- winpr/tools/hash/CMakeLists.txt | 6 +++++- winpr/tools/reg/CMakeLists.txt | 12 +++++++---- winpr/utils/CMakeLists.txt | 27 +++++++++++++++-------- 21 files changed, 257 insertions(+), 77 deletions(-) diff --git a/libfreerdp/core/CMakeLists.txt b/libfreerdp/core/CMakeLists.txt index 5adc92607..45661ed22 100644 --- a/libfreerdp/core/CMakeLists.txt +++ b/libfreerdp/core/CMakeLists.txt @@ -99,10 +99,18 @@ endif() set_target_properties(freerdp-core PROPERTIES VERSION ${FREERDP_VERSION_FULL} SOVERSION ${FREERDP_VERSION} PREFIX "lib") -set(FREERDP_CORE_LIBS - winpr-utils - winpr-rpc - winpr-sspi) +if(WITH_MONOLITHIC_BUILD) + set(FREERDP_CORE_LIBS winpr) +else() + set(FREERDP_CORE_LIBS + winpr-utils + winpr-rpc + winpr-sspi) + + if(NOT WIN32) + set(FREERDP_CORE_LIBS ${FREERDP_CORE_LIBS} winpr-registry) + endif() +endif() if(WIN32) set(FREERDP_CORE_LIBS ${FREERDP_CORE_LIBS} ws2_32) @@ -110,10 +118,6 @@ else() set(FREERDP_CORE_LIBS ${FREERDP_CORE_LIBS} ${ZLIB_LIBRARIES}) endif() -if(NOT WIN32) - set(FREERDP_CORE_LIBS ${FREERDP_CORE_LIBS} winpr-registry) -endif() - set(FREERDP_CORE_LIBS ${FREERDP_CORE_LIBS} ${OPENSSL_LIBRARIES}) if(WITH_MONOLITHIC_BUILD) diff --git a/libfreerdp/crypto/CMakeLists.txt b/libfreerdp/crypto/CMakeLists.txt index 720c15e89..554f7336e 100644 --- a/libfreerdp/crypto/CMakeLists.txt +++ b/libfreerdp/crypto/CMakeLists.txt @@ -39,13 +39,21 @@ include_directories(${ZLIB_INCLUDE_DIRS}) set_target_properties(freerdp-crypto PROPERTIES VERSION ${FREERDP_VERSION_FULL} SOVERSION ${FREERDP_VERSION} PREFIX "lib") set(FREERDP_CRYPTO_LIBS - ${OPENSSL_LIBRARIES} - winpr-sspi) + ${OPENSSL_LIBRARIES}) + +if(WITH_MONOLITHIC_BUILD) + set(FREERDP_CRYPTO_LIBS ${FREERDP_CRYPTO_LIBS} winpr) +else() + set(FREERDP_CRYPTO_LIBS ${FREERDP_CRYPTO_LIBS} winpr-sspi) + + if(NOT WIN32) + set(FREERDP_CRYPTO_LIBS ${FREERDP_CRYPTO_LIBS} winpr-library) + endif() +endif() if(WIN32) set(FREERDP_CRYPTO_LIBS ${FREERDP_CRYPTO_LIBS} ws2_32) else() - set(FREERDP_CRYPTO_LIBS ${FREERDP_CRYPTO_LIBS} winpr-library) set(FREERDP_CRYPTO_LIBS ${FREERDP_CRYPTO_LIBS} ${ZLIB_LIBRARIES}) endif() diff --git a/server/X11/CMakeLists.txt b/server/X11/CMakeLists.txt index dbfa392e9..be56d64bc 100644 --- a/server/X11/CMakeLists.txt +++ b/server/X11/CMakeLists.txt @@ -62,6 +62,7 @@ endif() if(WITH_MONOLITHIC_BUILD) target_link_libraries(xfreerdp-server freerdp) + target_link_libraries(xfreerdp-server winpr) else() target_link_libraries(xfreerdp-server freerdp-core @@ -70,7 +71,7 @@ else() freerdp-gdi freerdp-crypto freerdp-locale) + target_link_libraries(xfreerdp-server winpr-sspi) endif() target_link_libraries(xfreerdp-server ${X11_LIBRARIES}) -target_link_libraries(xfreerdp-server winpr-sspi) diff --git a/winpr/CMakeLists.txt b/winpr/CMakeLists.txt index ef5634f45..2bee19b1f 100644 --- a/winpr/CMakeLists.txt +++ b/winpr/CMakeLists.txt @@ -23,6 +23,10 @@ if (APPLE) set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-flat_namespace,-undefined,warning") endif() +if(WITH_MONOLITHIC_BUILD) + set(CMAKE_POSITION_INDEPENDENT_CODE ON) +endif() + add_subdirectory(crt) add_subdirectory(utils) add_subdirectory(heap) @@ -38,4 +42,24 @@ add_subdirectory(sspi) add_subdirectory(registry) add_subdirectory(library) +if(WITH_MONOLITHIC_BUILD) + add_library(winpr + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $) + + target_link_libraries(winpr ${WINPR_LIBS}) +endif() + add_subdirectory(tools) diff --git a/winpr/asn1/CMakeLists.txt b/winpr/asn1/CMakeLists.txt index 09822861e..94eb5ea97 100644 --- a/winpr/asn1/CMakeLists.txt +++ b/winpr/asn1/CMakeLists.txt @@ -20,9 +20,16 @@ set(WINPR_ASN1_SRCS asn1.c) -add_library(winpr-asn1 ${WINPR_ASN1_SRCS}) +if(WITH_MONOLITHIC_BUILD) + add_library(winpr-asn1 OBJECT ${WINPR_ASN1_SRCS}) +else() + add_library(winpr-asn1 ${WINPR_ASN1_SRCS}) +endif() set_target_properties(winpr-asn1 PROPERTIES VERSION ${FREERDP_VERSION_FULL} SOVERSION ${FREERDP_VERSION} PREFIX "lib") -install(TARGETS winpr-asn1 DESTINATION ${CMAKE_INSTALL_LIBDIR}) - +if(WITH_MONOLITHIC_BUILD) + +else() + install(TARGETS winpr-asn1 DESTINATION ${CMAKE_INSTALL_LIBDIR}) +endif() diff --git a/winpr/asn1/asn1.c b/winpr/asn1/asn1.c index 765e1a7b5..bbd2454a7 100644 --- a/winpr/asn1/asn1.c +++ b/winpr/asn1/asn1.c @@ -299,4 +299,14 @@ ASN1error_e ASN1DecSetError(ASN1decoding_t dec, ASN1error_e err) return status; } +void ASN1_FreeEncoded(ASN1encoding_t pEncoderInfo, void* pBuf) +{ + return; +} + +void ASN1_FreeDecoded(ASN1decoding_t pDecoderInfo, void* pDataStruct, ASN1uint32_t nPduNum) +{ + return; +} + #endif diff --git a/winpr/bcrypt/CMakeLists.txt b/winpr/bcrypt/CMakeLists.txt index 4f9db8e7d..1b2b8a086 100644 --- a/winpr/bcrypt/CMakeLists.txt +++ b/winpr/bcrypt/CMakeLists.txt @@ -20,19 +20,29 @@ set(WINPR_BCRYPT_SRCS bcrypt.c) -add_library(winpr-bcrypt ${WINPR_BCRYPT_SRCS}) +if(WITH_MONOLITHIC_BUILD) + add_library(winpr-bcrypt OBJECT ${WINPR_BCRYPT_SRCS}) +else() + add_library(winpr-bcrypt ${WINPR_BCRYPT_SRCS}) +endif() include_directories(${OPENSSL_INCLUDE_DIR}) include_directories(${ZLIB_INCLUDE_DIRS}) set_target_properties(winpr-bcrypt PROPERTIES VERSION ${FREERDP_VERSION_FULL} SOVERSION ${FREERDP_VERSION} PREFIX "lib") -if (NOT WIN32) - target_link_libraries(winpr-bcrypt winpr-crt) +set(WINPR_BCRYPT_LIBS + ${ZLIB_LIBRARIES}) + +if(WITH_MONOLITHIC_BUILD) + set(WINPR_LIBS ${WINPR_LIBS} ${WINPR_BCRYPT_LIBS} PARENT_SCOPE) +else() + if(NOT WIN32) + set(WINPR_BCRYPT_LIBS ${WINPR_BCRYPT_LIBS} winpr-crt) + endif() + + set(WINPR_BCRYPT_LIBS ${WINPR_BCRYPT_LIBS} winpr-utils) + + target_link_libraries(winpr-bcrypt ${WINPR_BCRYPT_LIBS}) + install(TARGETS winpr-bcrypt DESTINATION ${CMAKE_INSTALL_LIBDIR}) endif() - -target_link_libraries(winpr-bcrypt winpr-utils) -target_link_libraries(winpr-bcrypt ${ZLIB_LIBRARIES}) - -install(TARGETS winpr-bcrypt DESTINATION ${CMAKE_INSTALL_LIBDIR}) - diff --git a/winpr/crt/CMakeLists.txt b/winpr/crt/CMakeLists.txt index a4a35ac37..7dfb7f90c 100644 --- a/winpr/crt/CMakeLists.txt +++ b/winpr/crt/CMakeLists.txt @@ -21,9 +21,16 @@ set(WINPR_CRT_SRCS memory.c string.c) -add_library(winpr-crt ${WINPR_CRT_SRCS}) +if(WITH_MONOLITHIC_BUILD) + add_library(winpr-crt OBJECT ${WINPR_CRT_SRCS}) +else() + add_library(winpr-crt ${WINPR_CRT_SRCS}) +endif() set_target_properties(winpr-crt PROPERTIES VERSION ${FREERDP_VERSION_FULL} SOVERSION ${FREERDP_VERSION} PREFIX "lib") -install(TARGETS winpr-crt DESTINATION ${CMAKE_INSTALL_LIBDIR}) +if(WITH_MONOLITHIC_BUILD) +else() + install(TARGETS winpr-crt DESTINATION ${CMAKE_INSTALL_LIBDIR}) +endif() diff --git a/winpr/dsparse/CMakeLists.txt b/winpr/dsparse/CMakeLists.txt index 9d4e188d1..b3420b341 100644 --- a/winpr/dsparse/CMakeLists.txt +++ b/winpr/dsparse/CMakeLists.txt @@ -20,9 +20,16 @@ set(WINPR_DSPARSE_SRCS dsparse.c) -add_library(winpr-dsparse ${WINPR_DSPARSE_SRCS}) +if(WITH_MONOLITHIC_BUILD) + add_library(winpr-dsparse OBJECT ${WINPR_DSPARSE_SRCS}) +else() + add_library(winpr-dsparse ${WINPR_DSPARSE_SRCS}) +endif() set_target_properties(winpr-dsparse PROPERTIES VERSION ${FREERDP_VERSION_FULL} SOVERSION ${FREERDP_VERSION} PREFIX "lib") -install(TARGETS winpr-dsparse DESTINATION ${CMAKE_INSTALL_LIBDIR}) +if(WITH_MONOLITHIC_BUILD) +else() + install(TARGETS winpr-dsparse DESTINATION ${CMAKE_INSTALL_LIBDIR}) +endif() diff --git a/winpr/handle/CMakeLists.txt b/winpr/handle/CMakeLists.txt index 16edeb710..228e846ac 100644 --- a/winpr/handle/CMakeLists.txt +++ b/winpr/handle/CMakeLists.txt @@ -20,9 +20,16 @@ set(WINPR_HANDLE_SRCS handle.c) -add_library(winpr-handle ${WINPR_HANDLE_SRCS}) +if(WITH_MONOLITHIC_BUILD) + add_library(winpr-handle OBJECT ${WINPR_HANDLE_SRCS}) +else() + add_library(winpr-handle ${WINPR_HANDLE_SRCS}) +endif() set_target_properties(winpr-handle PROPERTIES VERSION ${FREERDP_VERSION_FULL} SOVERSION ${FREERDP_VERSION} PREFIX "lib") -install(TARGETS winpr-handle DESTINATION ${CMAKE_INSTALL_LIBDIR}) +if(WITH_MONOLITHIC_BUILD) +else() + install(TARGETS winpr-handle DESTINATION ${CMAKE_INSTALL_LIBDIR}) +endif() diff --git a/winpr/heap/CMakeLists.txt b/winpr/heap/CMakeLists.txt index 4f708b521..3ee0bb22f 100644 --- a/winpr/heap/CMakeLists.txt +++ b/winpr/heap/CMakeLists.txt @@ -20,9 +20,16 @@ set(WINPR_HEAP_SRCS heap.c) -add_library(winpr-heap ${WINPR_HEAP_SRCS}) +if(WITH_MONOLITHIC_BUILD) + add_library(winpr-heap OBJECT ${WINPR_HEAP_SRCS}) +else() + add_library(winpr-heap ${WINPR_HEAP_SRCS}) +endif() set_target_properties(winpr-heap PROPERTIES VERSION ${FREERDP_VERSION_FULL} SOVERSION ${FREERDP_VERSION} PREFIX "lib") -install(TARGETS winpr-heap DESTINATION ${CMAKE_INSTALL_LIBDIR}) +if(WITH_MONOLITHIC_BUILD) +else() + install(TARGETS winpr-heap DESTINATION ${CMAKE_INSTALL_LIBDIR}) +endif() diff --git a/winpr/library/CMakeLists.txt b/winpr/library/CMakeLists.txt index db75072fd..1f7808273 100644 --- a/winpr/library/CMakeLists.txt +++ b/winpr/library/CMakeLists.txt @@ -20,9 +20,16 @@ set(WINPR_LIBRARY_SRCS library.c) -add_library(winpr-library ${WINPR_LIBRARY_SRCS}) +if(WITH_MONOLITHIC_BUILD) + add_library(winpr-library OBJECT ${WINPR_LIBRARY_SRCS}) +else() + add_library(winpr-library ${WINPR_LIBRARY_SRCS}) +endif() set_target_properties(winpr-library PROPERTIES VERSION ${FREERDP_VERSION_FULL} SOVERSION ${FREERDP_VERSION} PREFIX "lib") -install(TARGETS winpr-library DESTINATION ${CMAKE_INSTALL_LIBDIR}) +if(WITH_MONOLITHIC_BUILD) +else() + install(TARGETS winpr-library DESTINATION ${CMAKE_INSTALL_LIBDIR}) +endif() diff --git a/winpr/registry/CMakeLists.txt b/winpr/registry/CMakeLists.txt index cb4b0be76..bec525300 100644 --- a/winpr/registry/CMakeLists.txt +++ b/winpr/registry/CMakeLists.txt @@ -22,11 +22,17 @@ set(WINPR_REGISTRY_SRCS registry_reg.h registry.c) -add_library(winpr-registry ${WINPR_REGISTRY_SRCS}) +if(WITH_MONOLITHIC_BUILD) + add_library(winpr-registry OBJECT ${WINPR_REGISTRY_SRCS}) +else() + add_library(winpr-registry ${WINPR_REGISTRY_SRCS}) +endif() set_target_properties(winpr-registry PROPERTIES VERSION ${FREERDP_VERSION_FULL} SOVERSION ${FREERDP_VERSION} PREFIX "lib") -target_link_libraries(winpr-registry winpr-utils) - -install(TARGETS winpr-registry DESTINATION ${CMAKE_INSTALL_LIBDIR}) +if(WITH_MONOLITHIC_BUILD) +else() + target_link_libraries(winpr-registry winpr-utils) + install(TARGETS winpr-registry DESTINATION ${CMAKE_INSTALL_LIBDIR}) +endif() diff --git a/winpr/rpc/CMakeLists.txt b/winpr/rpc/CMakeLists.txt index af607cbae..6e18f2d59 100644 --- a/winpr/rpc/CMakeLists.txt +++ b/winpr/rpc/CMakeLists.txt @@ -31,19 +31,29 @@ set(WINPR_RPC_SRCS ndr_union.c ndr_union.h midl.c) -add_library(winpr-rpc ${WINPR_RPC_SRCS}) +if(WITH_MONOLITHIC_BUILD) + add_library(winpr-rpc OBJECT ${WINPR_RPC_SRCS}) +else() + add_library(winpr-rpc ${WINPR_RPC_SRCS}) +endif() include_directories(${OPENSSL_INCLUDE_DIR}) include_directories(${ZLIB_INCLUDE_DIRS}) set_target_properties(winpr-rpc PROPERTIES VERSION ${FREERDP_VERSION_FULL} SOVERSION ${FREERDP_VERSION} PREFIX "lib") +set(WINPR_RPC_LIBS + ${OPENSSL_LIBRARIES}) + if(WIN32) - target_link_libraries(winpr-rpc ws2_32) + set(WINPR_RPC_LIBS ${WINPR_RPC_LIBS} ws2_32) else() - target_link_libraries(winpr-rpc ${ZLIB_LIBRARIES}) + set(WINPR_RPC_LIBS ${WINPR_RPC_LIBS} ${ZLIB_LIBRARIES}) endif() -target_link_libraries(winpr-rpc ${OPENSSL_LIBRARIES}) - -install(TARGETS winpr-rpc DESTINATION ${CMAKE_INSTALL_LIBDIR}) +if(WITH_MONOLITHIC_BUILD) + set(WINPR_LIBS ${WINPR_LIBS} ${WINPR_RPC_LIBS} PARENT_SCOPE) +else() + target_link_libraries(winpr-rpc ${WINPR_RPC_LIBS}) + install(TARGETS winpr-rpc DESTINATION ${CMAKE_INSTALL_LIBDIR}) +endif() diff --git a/winpr/sspi/CMakeLists.txt b/winpr/sspi/CMakeLists.txt index 4ef5bf41a..88c1b07b0 100644 --- a/winpr/sspi/CMakeLists.txt +++ b/winpr/sspi/CMakeLists.txt @@ -52,22 +52,37 @@ if(NOT WITH_NATIVE_SSPI) ${WINPR_SSPI_SRCS}) endif() -add_library(winpr-sspi ${WINPR_SSPI_SRCS}) +if(WITH_MONOLITHIC_BUILD) + add_library(winpr-sspi OBJECT ${WINPR_SSPI_SRCS}) +else() + add_library(winpr-sspi ${WINPR_SSPI_SRCS}) +endif() include_directories(${ZLIB_INCLUDE_DIRS}) include_directories(${OPENSSL_INCLUDE_DIR}) set_target_properties(winpr-sspi PROPERTIES VERSION ${FREERDP_VERSION_FULL} SOVERSION ${FREERDP_VERSION} PREFIX "lib") -if (NOT WIN32) - target_link_libraries(winpr-sspi winpr-crt) - target_link_libraries(winpr-sspi winpr-sysinfo) - target_link_libraries(winpr-sspi winpr-registry) +set(WINPR_SSPI_LIBS + ${ZLIB_LIBRARIES} + ${OPENSSL_LIBRARIES}) + +if(WITH_MONOLITHIC_BUILD) + set(WINPR_SSPI_LIBS ${WINPR_SSPI_LIBS} winpr) +else() + if (NOT WIN32) + set(WINPR_SSPI_LIBS ${WINPR_SSPI_LIBS} + winpr-crt + winpr-sysinfo + winpr-registry) + endif() + + set(WINPR_SSPI_LIBS ${WINPR_SSPI_LIBS} winpr-utils) endif() -target_link_libraries(winpr-sspi winpr-utils) -target_link_libraries(winpr-sspi ${ZLIB_LIBRARIES}) -target_link_libraries(winpr-sspi ${OPENSSL_LIBRARIES}) - -install(TARGETS winpr-sspi DESTINATION ${CMAKE_INSTALL_LIBDIR}) - +if(WITH_MONOLITHIC_BUILD) + set(WINPR_LIBS ${WINPR_LIBS} ${WINPR_SSPI_LIBS} PARENT_SCOPE) +else() + target_link_libraries(winpr-sspi ${WINPR_SSPI_LIBS}) + install(TARGETS winpr-sspi DESTINATION ${CMAKE_INSTALL_LIBDIR}) +endif() diff --git a/winpr/sspicli/CMakeLists.txt b/winpr/sspicli/CMakeLists.txt index b747a9d2f..24487a795 100644 --- a/winpr/sspicli/CMakeLists.txt +++ b/winpr/sspicli/CMakeLists.txt @@ -20,9 +20,16 @@ set(WINPR_SSPICLI_SRCS sspicli.c) -add_library(winpr-sspicli ${WINPR_SSPICLI_SRCS}) +if(WITH_MONOLITHIC_BUILD) + add_library(winpr-sspicli OBJECT ${WINPR_SSPICLI_SRCS}) +else() + add_library(winpr-sspicli ${WINPR_SSPICLI_SRCS}) +endif() set_target_properties(winpr-sspicli PROPERTIES VERSION ${FREERDP_VERSION_FULL} SOVERSION ${FREERDP_VERSION} PREFIX "lib") -install(TARGETS winpr-sspicli DESTINATION ${CMAKE_INSTALL_LIBDIR}) +if(WITH_MONOLITHIC_BUILD) +else() + install(TARGETS winpr-sspicli DESTINATION ${CMAKE_INSTALL_LIBDIR}) +endif() diff --git a/winpr/synch/CMakeLists.txt b/winpr/synch/CMakeLists.txt index ddbca8c96..e53671556 100644 --- a/winpr/synch/CMakeLists.txt +++ b/winpr/synch/CMakeLists.txt @@ -17,6 +17,9 @@ # See the License for the specific language governing permissions and # limitations under the License. +set(CMAKE_THREAD_PREFER_PTHREAD) +find_required_package(Threads) + set(WINPR_SYNCH_SRCS critical.c event.c @@ -24,13 +27,29 @@ set(WINPR_SYNCH_SRCS semaphore.c sleep.c) -add_library(winpr-synch ${WINPR_SYNCH_SRCS}) +if(WITH_MONOLITHIC_BUILD) + add_library(winpr-synch OBJECT ${WINPR_SYNCH_SRCS}) +else() + add_library(winpr-synch ${WINPR_SYNCH_SRCS}) +endif() set_target_properties(winpr-synch PROPERTIES VERSION ${FREERDP_VERSION_FULL} SOVERSION ${FREERDP_VERSION} PREFIX "lib") -if(NOT WIN32) - target_link_libraries(winpr-synch winpr-handle) +set(WINPR_SYNCH_LIBS + ${CMAKE_THREAD_LIBS_INIT} + ${CMAKE_DL_LIBS}) + +if(${CMAKE_SYSTEM_NAME} MATCHES SunOS) + set(WINPR_SYNCH_LIBS ${WINPR_SYNCH_LIBS} rt) endif() -install(TARGETS winpr-synch DESTINATION ${CMAKE_INSTALL_LIBDIR}) +if(WITH_MONOLITHIC_BUILD) + set(WINPR_LIBS ${WINPR_LIBS} ${WINPR_SYNCH_LIBS} PARENT_SCOPE) +else() + if(NOT WIN32) + set(WINPR_SYNCH_LIBS ${WINPR_SYNCH_LIBS} winpr-handle) + endif() + target_link_libraries(winpr-synch ${WINPR_SYNCH_LIBS}) + install(TARGETS winpr-synch DESTINATION ${CMAKE_INSTALL_LIBDIR}) +endif() diff --git a/winpr/sysinfo/CMakeLists.txt b/winpr/sysinfo/CMakeLists.txt index cf82e0be7..159163800 100644 --- a/winpr/sysinfo/CMakeLists.txt +++ b/winpr/sysinfo/CMakeLists.txt @@ -20,9 +20,16 @@ set(WINPR_SYSINFO_SRCS sysinfo.c) -add_library(winpr-sysinfo ${WINPR_SYSINFO_SRCS}) +if(WITH_MONOLITHIC_BUILD) + add_library(winpr-sysinfo OBJECT ${WINPR_SYSINFO_SRCS}) +else() + add_library(winpr-sysinfo ${WINPR_SYSINFO_SRCS}) +endif() set_target_properties(winpr-sysinfo PROPERTIES VERSION ${FREERDP_VERSION_FULL} SOVERSION ${FREERDP_VERSION} PREFIX "lib") -install(TARGETS winpr-sysinfo DESTINATION ${CMAKE_INSTALL_LIBDIR}) +if(WITH_MONOLITHIC_BUILD) +else() + install(TARGETS winpr-sysinfo DESTINATION ${CMAKE_INSTALL_LIBDIR}) +endif() diff --git a/winpr/tools/hash/CMakeLists.txt b/winpr/tools/hash/CMakeLists.txt index b8a1fc46c..cef98e55d 100644 --- a/winpr/tools/hash/CMakeLists.txt +++ b/winpr/tools/hash/CMakeLists.txt @@ -20,5 +20,9 @@ add_executable(winpr-hash hash.c) -target_link_libraries(winpr-hash winpr-utils) +if(WITH_MONOLITHIC_BUILD) + target_link_libraries(winpr-hash winpr) +else() + target_link_libraries(winpr-hash winpr-utils) +endif() diff --git a/winpr/tools/reg/CMakeLists.txt b/winpr/tools/reg/CMakeLists.txt index fd121a00e..446de5d2f 100644 --- a/winpr/tools/reg/CMakeLists.txt +++ b/winpr/tools/reg/CMakeLists.txt @@ -20,8 +20,12 @@ add_executable(winpr-reg reg.c) -target_link_libraries(winpr-reg winpr-utils) - -if(NOT WIN32) - target_link_libraries(winpr-reg winpr-registry) +if(WITH_MONOLITHIC_BUILD) + target_link_libraries(winpr-reg winpr) +else() + target_link_libraries(winpr-reg winpr-utils) + + if(NOT WIN32) + target_link_libraries(winpr-reg winpr-registry) + endif() endif() diff --git a/winpr/utils/CMakeLists.txt b/winpr/utils/CMakeLists.txt index 12d24a0b7..ff4868d76 100644 --- a/winpr/utils/CMakeLists.txt +++ b/winpr/utils/CMakeLists.txt @@ -23,19 +23,28 @@ set(WINPR_UTILS_SRCS sam.c stream.c) -add_library(winpr-utils ${WINPR_UTILS_SRCS}) - include_directories(${ZLIB_INCLUDE_DIRS}) include_directories(${OPENSSL_INCLUDE_DIR}) -set_target_properties(winpr-utils PROPERTIES VERSION ${FREERDP_VERSION_FULL} SOVERSION ${FREERDP_VERSION} PREFIX "lib") - -if (NOT WIN32) - target_link_libraries(winpr-utils winpr-crt) +if(WITH_MONOLITHIC_BUILD) + add_library(winpr-utils OBJECT ${WINPR_UTILS_SRCS}) +else() + add_library(winpr-utils ${WINPR_UTILS_SRCS}) endif() -target_link_libraries(winpr-utils ${ZLIB_LIBRARIES}) -target_link_libraries(winpr-utils ${OPENSSL_LIBRARIES}) +set_target_properties(winpr-utils PROPERTIES VERSION ${FREERDP_VERSION_FULL} SOVERSION ${FREERDP_VERSION} PREFIX "lib") -install(TARGETS winpr-utils DESTINATION ${CMAKE_INSTALL_LIBDIR}) +set(WINPR_UTILS_LIBS + ${ZLIB_LIBRARIES} + ${OPENSSL_LIBRARIES}) +if(WITH_MONOLITHIC_BUILD) + set(WINPR_LIBS ${WINPR_LIBS} ${WINPR_UTILS_LIBS} PARENT_SCOPE) +else() + if (NOT WIN32) + set(WINPR_UTILS_LIBS ${WINPR_UTILS_LIBS} winpr-crt) + endif() + + target_link_libraries(winpr-utils ${WINPR_UTILS_LIBS}) + install(TARGETS winpr-utils DESTINATION ${CMAKE_INSTALL_LIBDIR}) +endif()