From a7c28b4f6c2308b6b2ff2eaff534bce8f7216560 Mon Sep 17 00:00:00 2001 From: Raul Metsma Date: Wed, 12 Feb 2025 09:44:00 +0200 Subject: [PATCH] Test --- CMakeLists.txt | 5 ++- cdoc/CMakeLists.txt | 91 +++++++++++++++++++---------------------- cdoc/Exports.h | 4 +- debian/libcdoc1.install | 1 - 4 files changed, 48 insertions(+), 53 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 71bb1bf..ebdabaf 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,9 +18,10 @@ SET_ENV(BUILD_NUMBER 0) set(VERSION ${PROJECT_VERSION}.${BUILD_NUMBER}) set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED YES) -set(CMAKE_C_VISIBILITY_PRESET hidden) -set(CMAKE_CXX_VISIBILITY_PRESET hidden) +set(CMAKE_C_VISIBILITY_PRESET hidden) +set(CMAKE_CXX_VISIBILITY_PRESET hidden) set(CMAKE_VISIBILITY_INLINES_HIDDEN YES) +set(BUILD_SHARED_LIBS YES CACHE BOOL "Build library as SHARED or STATIC") set(CMAKE_DEBUG_POSTFIX "d" CACHE STRING "Adds a postfix for debug-built libraries.") set(CPACK_PACKAGE_VERSION ${VERSION}) set(CPACK_GENERATOR RPM) diff --git a/cdoc/CMakeLists.txt b/cdoc/CMakeLists.txt index 483f984..fbad3e9 100644 --- a/cdoc/CMakeLists.txt +++ b/cdoc/CMakeLists.txt @@ -19,11 +19,6 @@ set(PUBLIC_HEADERS ConsoleLogger.h ) -if(WIN32) - list(APPEND PUBLIC_HEADERS WinBackend.h) - add_compile_definitions(UNICODE WIN32_LEAN_AND_MEAN) -endif() - add_library(cdoc_ver INTERFACE) target_compile_definitions(cdoc_ver INTERFACE VERSION_STR="${VERSION}" @@ -33,7 +28,8 @@ target_compile_definitions(cdoc_ver INTERFACE ) target_sources(cdoc_ver INTERFACE libcdoc.rc) -add_library(cdoc_obj OBJECT +add_library(cdoc + ${PUBLIC_HEADERS} CDoc.cpp Io.cpp Recipient.cpp @@ -47,6 +43,7 @@ add_library(cdoc_obj OBJECT Crypto.cpp Crypto.h Tar.cpp Tar.h ZStream.h + # Internal Utils.cpp Utils.h CDoc1Reader.cpp CDoc1Reader.h CDoc1Writer.cpp CDoc1Writer.h @@ -61,44 +58,45 @@ add_library(cdoc_obj OBJECT CDoc2.h Wrapper.h ) -set_target_properties(cdoc_obj PROPERTIES POSITION_INDEPENDENT_CODE YES) -target_compile_definitions(cdoc_obj PRIVATE cdoc_EXPORTS) -target_include_directories(cdoc_obj PRIVATE ${PROJECT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}) -target_link_libraries(cdoc_obj - PUBLIC - OpenSSL::SSL - LibXml2::LibXml2 - ZLIB::ZLIB - $<$:Crypt32 NCrypt cryptui> - PRIVATE - $ - #$ +set_target_properties(cdoc PROPERTIES + VERSION ${PROJECT_VERSION} + SOVERSION 1 + PUBLIC_HEADER "${PUBLIC_HEADERS}" + FRAMEWORK_VERSION 1 + FRAMEWORK "${FRAMEWORK}" + MACOSX_FRAMEWORK_IDENTIFIER "ee.ria.cdoc" + MACOSX_RPATH YES + POSITION_INDEPENDENT_CODE YES +) +target_include_directories(cdoc PUBLIC + $ + $ + $ + PRIVATE ${CMAKE_CURRENT_BINARY_DIR} +) +if(NOT BUILD_SHARED_LIBS) + target_compile_definitions(cdoc PUBLIC cdoc_STATIC) +endif() +target_link_libraries(cdoc PRIVATE + OpenSSL::SSL + LibXml2::LibXml2 + ZLIB::ZLIB + #cdoc_ver + $ + #$ ) - -macro(add_cdoc_library lib_name lib_type lib_visibility) - add_library(${lib_name} ${lib_type} ${PUBLIC_HEADERS}) - set_target_properties(${lib_name} PROPERTIES - VERSION ${PROJECT_VERSION} - SOVERSION 1 - PUBLIC_HEADER "${PUBLIC_HEADERS}" - FRAMEWORK_VERSION 1 - FRAMEWORK "${FRAMEWORK}" - MACOSX_FRAMEWORK_IDENTIFIER "ee.ria.cdoc" - MACOSX_RPATH YES - ) - target_link_libraries(${lib_name} ${lib_visibility} cdoc_obj) - target_include_directories(${lib_name} PUBLIC - $ - $ - $ - ) -endmacro() -add_cdoc_library(cdoc SHARED PRIVATE) -add_cdoc_library(cdoc_static STATIC PUBLIC) -target_link_libraries(cdoc PRIVATE cdoc_ver ${CMAKE_DL_LIBS}) add_executable(cdoc-tool cdoc-tool.cpp CDocChipher.cpp) -target_link_libraries(cdoc-tool cdoc_ver $,cdoc_static,cdoc>) +target_link_libraries(cdoc-tool cdoc_ver cdoc) +set_target_properties(cdoc-tool PROPERTIES + INSTALL_RPATH $<$:@executable_path/../lib> +) + +if(WIN32) + list(APPEND PUBLIC_HEADERS WinBackend.h) + add_compile_definitions(UNICODE WIN32_LEAN_AND_MEAN) + target_link_libraries(cdoc PRIVATE Crypt32 NCrypt cryptui) +endif() foreach(SCHEMA ${SCHEMAS}) get_filename_component(stem ${SCHEMA} NAME_WE) @@ -116,7 +114,7 @@ foreach(SCHEMA ${SCHEMAS}) DEPENDS flatbuffers::flatc ${SCHEMA} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} ) - target_sources(cdoc_obj PRIVATE ${SCHEMA} ${GENERATED_INCLUDE}) + target_sources(cdoc PRIVATE ${SCHEMA} ${GENERATED_INCLUDE}) endforeach() if(SWIG_FOUND) @@ -129,7 +127,7 @@ if(SWIG_FOUND) set(CMAKE_SWIG_FLAGS -package ee.ria.cdoc) swig_add_library(cdoc_java LANGUAGE java SOURCES ../libcdoc.i OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR}/java) target_include_directories(cdoc_java PRIVATE ${JAVA_INCLUDE_PATH} $<$:${JAVA_INCLUDE_PATH2}>) - target_link_libraries(cdoc_java cdoc_ver $,cdoc_static,cdoc>) + target_link_libraries(cdoc_java cdoc_ver cdoc) set_target_properties(cdoc_java PROPERTIES INSTALL_RPATH $<$:/Library/Frameworks> SWIG_COMPILE_DEFINITIONS $<$:SWIGWIN> @@ -207,15 +205,10 @@ install(TARGETS cdoc PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/cdoc FRAMEWORK DESTINATION ${FRAMEWORK_DESTINATION} ) -if(WIN32) +if(WIN32 AND BUILD_SHARED_LIBS) install(FILES $ DESTINATION ${CMAKE_INSTALL_BINDIR} OPTIONAL) endif() -install(TARGETS cdoc_static - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} - FRAMEWORK DESTINATION ${FRAMEWORK_DESTINATION} -) - if(NOT ANDROID) install(EXPORT cdocExport FILE cdoc-config.cmake diff --git a/cdoc/Exports.h b/cdoc/Exports.h index 83bbe35..fa9c728 100644 --- a/cdoc/Exports.h +++ b/cdoc/Exports.h @@ -21,7 +21,9 @@ #ifdef WIN32 #include - #ifdef cdoc_EXPORTS + #ifdef cdoc_STATIC + #define CDOC_EXPORT + #elif defined(cdoc_EXPORTS) #define CDOC_EXPORT __declspec(dllexport) #else #define CDOC_EXPORT __declspec(dllimport) diff --git a/debian/libcdoc1.install b/debian/libcdoc1.install index c81c91b..a08415a 100644 --- a/debian/libcdoc1.install +++ b/debian/libcdoc1.install @@ -1,5 +1,4 @@ usr/lib/*/libcdoc.so.* -usr/lib/*/libcdoc_static.a usr/lib/*/libcdoc_java.so usr/lib/*/libcdoc_csharp.so usr/bin/cdoc-tool