Skip to content

Commit

Permalink
Merge pull request #24 from metsma/msvc
Browse files Browse the repository at this point in the history
Fix MSVC linking warnings
  • Loading branch information
lauris71 authored Feb 12, 2025
2 parents a96a143 + 376f5af commit 8b2a6b9
Show file tree
Hide file tree
Showing 6 changed files with 41 additions and 61 deletions.
5 changes: 3 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
83 changes: 30 additions & 53 deletions cdoc/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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}"
Expand All @@ -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
Expand All @@ -43,17 +39,11 @@ add_library(cdoc_obj OBJECT
PKCS11Backend.cpp
LogEngine.cpp
$<$<PLATFORM_ID:Windows>:WinBackend.cpp>
)
set_target_properties(cdoc_obj PROPERTIES POSITION_INDEPENDENT_CODE YES)
target_compile_definitions(cdoc_obj PRIVATE cdoc_EXPORTS)
target_include_directories(cdoc_obj PUBLIC ${PROJECT_SOURCE_DIR})
target_link_libraries(cdoc_obj OpenSSL::SSL)

add_library(cdoc_priv OBJECT
Certificate.cpp Certificate.h
Crypto.cpp Crypto.h
Tar.cpp Tar.h
ZStream.h
# Internal
Utils.cpp Utils.h
CDoc1Reader.cpp CDoc1Reader.h
CDoc1Writer.cpp CDoc1Writer.h
Expand All @@ -63,28 +53,11 @@ add_library(cdoc_priv OBJECT
DDocWriter.cpp DDocWriter.h
XmlReader.cpp XmlReader.h
XmlWriter.cpp XmlWriter.h
CDocChipher.cpp CDocChipher.h
RcptInfo.h
ToolConf.h
CDoc2.h
Wrapper.h
)

set_property(TARGET cdoc_priv PROPERTY POSITION_INDEPENDENT_CODE ON)
target_include_directories(cdoc_priv
PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}
PRIVATE ${PROJECT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}
)
target_link_libraries(cdoc_priv
$<TARGET_NAME_IF_EXISTS:flatbuffers::flatbuffers>
#$<TARGET_NAME_IF_EXISTS:flatbuffers::flatbuffers_shared>
OpenSSL::SSL
ZLIB::ZLIB
LibXml2::LibXml2
$<$<PLATFORM_ID:Windows>:Crypt32 NCrypt cryptui>
)

add_library(cdoc SHARED ${PUBLIC_HEADERS})
set_target_properties(cdoc PROPERTIES
VERSION ${PROJECT_VERSION}
SOVERSION 1
Expand All @@ -93,28 +66,37 @@ set_target_properties(cdoc PROPERTIES
FRAMEWORK "${FRAMEWORK}"
MACOSX_FRAMEWORK_IDENTIFIER "ee.ria.cdoc"
MACOSX_RPATH YES
COMPILE_DEFINITIONS TARGET_NAME="$<TARGET_NAME:cdoc>"
POSITION_INDEPENDENT_CODE YES
)
target_link_libraries(cdoc PRIVATE cdoc_ver ${CMAKE_DL_LIBS} cdoc_priv cdoc_obj)
target_include_directories(cdoc PUBLIC
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
$<INSTALL_INTERFACE:include>
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}
)
add_library(cdoc_static STATIC ${PUBLIC_HEADERS})
set_target_properties(cdoc_static PROPERTIES
VERSION ${PROJECT_VERSION}
SOVERSION 1
PUBLIC_HEADER "${PUBLIC_HEADERS}"
FRAMEWORK_VERSION 1
FRAMEWORK "${FRAMEWORK}"
MACOSX_FRAMEWORK_IDENTIFIER "ee.ria.cdoc"
MACOSX_RPATH YES
COMPILE_DEFINITIONS TARGET_NAME="$<TARGET_NAME:cdoc>"
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
$<TARGET_NAME_IF_EXISTS:flatbuffers::flatbuffers>
#$<TARGET_NAME_IF_EXISTS:flatbuffers::flatbuffers_shared>
)

add_executable(cdoc-tool cdoc-tool.cpp CDocChipher.cpp)
target_link_libraries(cdoc-tool cdoc_ver cdoc)
set_target_properties(cdoc-tool PROPERTIES
INSTALL_RPATH $<$<PLATFORM_ID:Darwin>:@executable_path/../lib>
)
target_link_libraries(cdoc_static cdoc_priv cdoc_obj)

add_executable(cdoc-tool cdoc-tool.cpp)
target_link_libraries(cdoc-tool cdoc_ver $<IF:$<PLATFORM_ID:Darwin>,cdoc_static,cdoc> cdoc_priv)
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)
Expand All @@ -132,7 +114,7 @@ foreach(SCHEMA ${SCHEMAS})
DEPENDS flatbuffers::flatc ${SCHEMA}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)
target_sources(cdoc_priv PRIVATE ${SCHEMA} ${GENERATED_INCLUDE})
target_sources(cdoc PRIVATE ${SCHEMA} ${GENERATED_INCLUDE})
endforeach()

if(SWIG_FOUND)
Expand All @@ -145,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} $<$<BOOL:${JAVA_INCLUDE_PATH2}>:${JAVA_INCLUDE_PATH2}>)
target_link_libraries(cdoc_java cdoc_ver $<IF:$<PLATFORM_ID:Android>,cdoc_static,cdoc>)
target_link_libraries(cdoc_java cdoc_ver cdoc)
set_target_properties(cdoc_java PROPERTIES
INSTALL_RPATH $<$<PLATFORM_ID:Darwin>:/Library/Frameworks>
SWIG_COMPILE_DEFINITIONS $<$<PLATFORM_ID:Windows>:SWIGWIN>
Expand Down Expand Up @@ -223,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 $<TARGET_PDB_FILE:cdoc> 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
Expand Down
4 changes: 3 additions & 1 deletion cdoc/Certificate.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,14 @@
#ifndef SSLCERTIFICATE_H
#define SSLCERTIFICATE_H

#include "Exports.h"

#include <string>
#include <vector>

namespace libcdoc {

class Certificate {
class CDOC_EXPORT Certificate {
public:
enum Algorithm {
RSA,
Expand Down
5 changes: 3 additions & 2 deletions cdoc/Exports.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,9 @@

#ifdef WIN32
#include <winapifamily.h>
#ifdef cdoc_EXPORTS
#ifdef cdoc_STATIC
#define CDOC_EXPORT
#elif defined(cdoc_EXPORTS)
#define CDOC_EXPORT __declspec(dllexport)
#else
#define CDOC_EXPORT __declspec(dllimport)
Expand All @@ -36,7 +38,6 @@
#define CDOC_WARNING_DISABLE_CLANG(text)
#define CDOC_WARNING_DISABLE_GCC(text)
#define CDOC_WARNING_DISABLE_MSVC(number) __pragma(warning(disable: number))
#pragma warning( disable: 4251 ) // shut up std::vector warnings
#else
#define CDOC_EXPORT __attribute__ ((visibility("default")))
#define CDOC_DEPRECATED __attribute__ ((__deprecated__))
Expand Down
1 change: 0 additions & 1 deletion debian/libcdoc1.install
Original file line number Diff line number Diff line change
@@ -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
Expand Down
4 changes: 2 additions & 2 deletions test/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
add_executable(unittests libcdoc_boost.cpp)
add_executable(unittests libcdoc_boost.cpp ../cdoc/CDocChipher.cpp)
target_compile_definitions(unittests PRIVATE DATA_DIR="${CMAKE_CURRENT_SOURCE_DIR}/data")
target_link_libraries(unittests cdoc cdoc_priv Boost::unit_test_framework)
target_link_libraries(unittests cdoc Boost::unit_test_framework)

add_test(NAME runtest
COMMAND ${CMAKE_CURRENT_BINARY_DIR}/unittests --build_info=YES --logger=HRF,all,stdout
Expand Down

0 comments on commit 8b2a6b9

Please sign in to comment.