1- set (CMAKE_CXX_STANDARD 20)
2- set (CMAKE_CXX_STANDARD_REQUIRED YES )
3-
41set (SCHEMAS
52 schema/recipients.fbs
63 schema/header.fbs
@@ -22,7 +19,7 @@ set(PUBLIC_HEADERS
2219 ConsoleLogger.h
2320)
2421
25- set (CDOC_SOURCES
22+ add_library (cdoc_obj OBJECT
2623 CDoc.cpp
2724 Io.cpp
2825 Recipient.cpp
@@ -40,24 +37,12 @@ if(WIN32)
4037 list (APPEND CDOC_SOURCES WinBackend.cpp)
4138endif ()
4239
43- add_library (cdoc_obj OBJECT
44- ${CDOC_SOURCES}
45- )
46-
47- set_target_properties (cdoc_obj PROPERTIES
48- COMPILE_DEFINITIONS cdoc_EXPORTS
49- POSITION_INDEPENDENT_CODE YES
50- )
40+ set_target_properties (cdoc_obj PROPERTIES POSITION_INDEPENDENT_CODE YES )
41+ target_compile_definitions (cdoc_obj PRIVATE cdoc_EXPORTS)
42+ target_include_directories (cdoc_obj PUBLIC ${PROJECT_SOURCE_DIR} )
43+ target_link_libraries (cdoc_obj OpenSSL::SSL)
5144
52- target_include_directories (cdoc_obj PUBLIC
53- ${LIBXML2_INCLUDE_DIR}
54- ${OPENSSL_INCLUDE_DIR}
55- ${PROJECT_SOURCE_DIR}
56- ${CMAKE_CURRENT_SOURCE_DIR}
57- ${CMAKE_CURRENT_BINARY_DIR}
58- )
59-
60- set (CDOC_PRIV_SOURCES
45+ add_library (cdoc_priv OBJECT
6146 Certificate.cpp Certificate.h
6247 Crypto.cpp Crypto.h
6348 Tar.cpp
@@ -75,89 +60,38 @@ set(CDOC_PRIV_SOURCES
7560 RcptInfo.h
7661 ToolConf.h
7762 CDoc2.h
78- )
79-
80- add_library (cdoc_priv_obj OBJECT
81- ${CDOC_PRIV_SOURCES}
82- )
83-
84- set_property (TARGET cdoc_priv_obj PROPERTY POSITION_INDEPENDENT_CODE ON )
85-
86- target_include_directories (cdoc_priv_obj PUBLIC
87- ${LIBXML2_INCLUDE_DIR}
88- ${OPENSSL_INCLUDE_DIR}
89- ${PROJECT_SOURCE_DIR}
90- ${CMAKE_CURRENT_SOURCE_DIR}
91- ${CMAKE_CURRENT_BINARY_DIR}
92- )
93-
94- target_link_libraries (cdoc_priv_obj
95- $<TARGET_NAME_IF_EXISTS:flatbuffers::flatbuffers>
96- $<TARGET_NAME_IF_EXISTS:flatbuffers::flatbuffers_shared>
97- OpenSSL::SSL
98- )
99-
100- add_library (cdoc_priv STATIC
101- $<TARGET_OBJECTS:cdoc_priv_obj>
10263 Wrapper.h
10364)
10465
10566set_property (TARGET cdoc_priv PROPERTY POSITION_INDEPENDENT_CODE ON )
106-
107- target_include_directories (cdoc_priv PUBLIC
108- ${LIBXML2_INCLUDE_DIR}
109- ${OPENSSL_INCLUDE_DIR}
110- ${PROJECT_SOURCE_DIR}
111- ${CMAKE_CURRENT_SOURCE_DIR}
112- ${CMAKE_CURRENT_BINARY_DIR}
67+ target_include_directories (cdoc_priv
68+ PUBLIC ${PROJECT_SOURCE_DIR}
69+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}
11370)
114-
11571target_link_libraries (cdoc_priv
11672 $<TARGET_NAME_IF_EXISTS:flatbuffers::flatbuffers>
11773 $<TARGET_NAME_IF_EXISTS:flatbuffers::flatbuffers_shared>
74+ OpenSSL::SSL
11875 ZLIB::ZLIB
119- # {$ZLIB_LIBRARIES}
12076 LibXml2::LibXml2
121- OpenSSL::SSL
122- ${LIBS}
123- )
124-
125- add_library (cdoc SHARED
126- ${PUBLIC_HEADERS}
127- ${CDOC_SOURCES}
128-
12977)
13078
79+ add_library (cdoc SHARED ${PUBLIC_HEADERS} )
13180set_target_properties (cdoc PROPERTIES
132- VERSION ${PROJECT_VERSION_MAJOR} . ${PROJECT_VERSION_MINOR} . ${PROJECT_VERSION_PATCH }
81+ VERSION ${PROJECT_VERSION }
13382 SOVERSION 1
13483 PUBLIC_HEADER "${PUBLIC_HEADERS} "
13584 FRAMEWORK_VERSION 1
13685 FRAMEWORK "${FRAMEWORK} "
137- MACOSX_FRAMEWORK_IDENTIFIER "ee.ria.digidocpp "
86+ MACOSX_FRAMEWORK_IDENTIFIER "ee.ria.libcdoc "
13887 MACOSX_RPATH YES
13988 COMPILE_DEFINITIONS TARGET_NAME="$<TARGET_NAME:cdoc>"
14089)
141-
142- target_include_directories (cdoc PUBLIC
143- $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR} >
144- $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR} >
145- $<INSTALL_INTERFACE:include >
146- )
147-
148- target_link_libraries (cdoc PRIVATE
149- ${CMAKE_DL_LIBS}
150- cdoc_priv
151- )
152-
153- add_library (cdoc_static STATIC
154- ${PUBLIC_HEADERS}
155- $<TARGET_OBJECTS:cdoc_priv_obj>
156- $<TARGET_OBJECTS:cdoc_obj>
157- )
158-
90+ target_link_libraries (cdoc PRIVATE ${CMAKE_DL_LIBS} cdoc_priv cdoc_obj)
91+ target_include_directories (cdoc PUBLIC $<INSTALL_INTERFACE:include >)
92+ add_library (cdoc_static STATIC ${PUBLIC_HEADERS} )
15993set_target_properties (cdoc_static PROPERTIES
160- VERSION ${PROJECT_VERSION_MAJOR} . ${PROJECT_VERSION_MINOR} . ${PROJECT_VERSION_PATCH }
94+ VERSION ${PROJECT_VERSION }
16195 SOVERSION 1
16296 PUBLIC_HEADER "${PUBLIC_HEADERS} "
16397 FRAMEWORK_VERSION 1
@@ -166,20 +100,9 @@ set_target_properties(cdoc_static PROPERTIES
166100 MACOSX_RPATH YES
167101 COMPILE_DEFINITIONS TARGET_NAME="$<TARGET_NAME:cdoc>"
168102)
169-
170- target_include_directories (cdoc_static PUBLIC
171- ${CMAKE_CURRENT_SOURCE_DIR}
172- )
173-
174- target_link_libraries (cdoc_static
175- ${ZLIB_LIBRARY}
176- ${LIBXML2_LIBRARIES}
177- ${OPENSSL_CRYPTO_LIBRARY}
178- ${LIBS}
179- )
103+ target_link_libraries (cdoc_static cdoc_priv cdoc_obj)
180104
181105add_executable (cdoc-tool cdoc-tool.cpp)
182-
183106target_link_libraries (cdoc-tool cdoc cdoc_priv)
184107
185108foreach (SCHEMA ${SCHEMAS} )
@@ -198,7 +121,7 @@ foreach(SCHEMA ${SCHEMAS})
198121 DEPENDS flatbuffers::flatc ${SCHEMA}
199122 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
200123 )
201- target_sources (cdoc_priv_obj PRIVATE ${SCHEMA} ${GENERATED_INCLUDE} )
124+ target_sources (cdoc_priv PRIVATE ${SCHEMA} ${GENERATED_INCLUDE} )
202125endforeach ()
203126
204127if (SWIG_FOUND)
@@ -245,14 +168,32 @@ if(SWIG_FOUND)
245168 endif ()
246169endif ()
247170
171+ if (APPLE )
172+ set (MODULE_LIST ${PUBLIC_HEADERS} )
173+ list (TRANSFORM MODULE_LIST PREPEND " header \" " )
174+ list (TRANSFORM MODULE_LIST APPEND "\" " )
175+ list (JOIN MODULE_LIST "\n " MODULE_LIST)
176+ set (MODULE_MAP ${CMAKE_BINARY_DIR} /module.modulemap)
177+ file (WRITE ${MODULE_MAP} "framework module cdoc {
178+ ${MODULE_LIST}
179+ export *
180+ requires cplusplus
181+ }" )
182+ target_sources (cdoc PRIVATE ${MODULE_MAP} )
183+ set_source_files_properties (${MODULE_MAP} PROPERTIES MACOSX_PACKAGE_LOCATION Modules)
184+ add_custom_command (TARGET cdoc POST_BUILD
185+ COMMAND /usr/libexec/PlistBuddy -c "Add :MinimumOSVersion string ${CMAKE_OSX_DEPLOYMENT_TARGET} " $<TARGET_FILE_DIR:cdoc>/Info.plist
186+ )
187+ endif ()
188+
248189install (TARGETS cdoc
249190 EXPORT libcdocExport
250191 LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
251192 ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
252193 RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
253194 RESOURCE DESTINATION ${CDOC_CONFIG_DIR}
254195 PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} /libcdoc
255- FRAMEWORK DESTINATION /Library/Frameworks
196+ FRAMEWORK DESTINATION ${FRAMEWORK_DESTINATION}
256197)
257198
258199install (TARGETS cdoc_static
0 commit comments