Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add version info to Windows artifacts #18

Merged
merged 1 commit into from
Feb 10, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 48 additions & 1 deletion .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -119,4 +119,51 @@ jobs:
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.target }}
path: ${{ env.DEST }}/**
path: ${{ env.DEST }}
windows:
name: Build on Windows
runs-on: ${{ matrix.image }}
strategy:
matrix:
image: [windows-2022]
platform: [x64, arm64]
env:
CXXFLAGS: '/D_DISABLE_CONSTEXPR_MUTEX_CONSTRUCTOR' # https://github.com/actions/runner-images/issues/10004
DEST: ${{ github.workspace }}/${{ matrix.image }}_${{ matrix.platform }}
VCPKG_DEFAULT_TRIPLET: ${{ matrix.platform }}-windows-static-md
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Prepare vcpkg
uses: lukka/run-vcpkg@v11
with:
vcpkgGitCommitId: e4644bd15436d406bba71928d086c809e5c9ca45
vcpkgJsonGlob: ./vcpkg.json
runVcpkgInstall: true
runVcpkgFormatString: "[`install`, `--recurse`, `--clean-after-build`, `--x-install-root`, `$[env.VCPKG_INSTALLED_DIR]`, `--triplet`, `$[env.VCPKG_DEFAULT_TRIPLET]`, `--x-feature`, `tests`]"
env:
VCPKG_INSTALLED_DIR: ${{ github.workspace }}/build/vcpkg_installed
- name: Install dependencies
run: |
choco install doxygen.install -y > $null
Invoke-WebRequest -UserAgent "Wget" "https://sourceforge.net/projects/swig/files/swigwin/swigwin-4.3.0/swigwin-4.3.0.zip/download" -OutFile swig.zip
tar xf swig.zip
- uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '17'
- name: Build
run: |
cmake -A ${{ matrix.platform }} -S . -B build -DCMAKE_BUILD_TYPE=RelWithDebInfo `
"-DCMAKE_TOOLCHAIN_FILE=${{ env.VCPKG_ROOT }}/scripts/buildsystems/vcpkg.cmake" `
"-DSWIG_EXECUTABLE=${{ github.workspace }}/swigwin-4.3.0/swig.exe" `
-DVCPKG_TARGET_TRIPLET=${{ env.VCPKG_DEFAULT_TRIPLET }} `
-DVCPKG_MANIFEST_FEATURES=tests `
-DCMAKE_INSTALL_LIBDIR=bin
cmake --build build --config RelWithDebInfo
cmake --install build --config RelWithDebInfo --prefix ${{ env.DEST }}
- name: Archive artifacts
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.image }}_${{ matrix.platform }}
path: ${{ env.DEST }}
71 changes: 39 additions & 32 deletions cdoc/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,22 @@ set(PUBLIC_HEADERS
PKCS11Backend.h
ILogger.h
ConsoleLogger.h
$<$<PLATFORM_ID:Windows>:WinBackend.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}"
$<$<PLATFORM_ID:Windows>:VERSION=${PROJECT_VERSION_MAJOR},${PROJECT_VERSION_MINOR},${PROJECT_VERSION_PATCH},${BUILD_NUMBER}>
$<$<PLATFORM_ID:Windows>:TARGET_NAME="$<TARGET_PROPERTY:NAME>">
$<$<PLATFORM_ID:Windows>:$<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,EXECUTABLE>:APP>>
)
target_sources(cdoc_ver INTERFACE libcdoc.rc)

add_library(cdoc_obj OBJECT
CDoc.cpp
Io.cpp
Expand All @@ -31,11 +44,6 @@ add_library(cdoc_obj OBJECT
LogEngine.cpp
$<$<PLATFORM_ID:Windows>:WinBackend.cpp>
)

if(WIN32)
add_compile_definitions(UNICODE WIN32_LEAN_AND_MEAN)
endif()

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})
Expand All @@ -44,18 +52,18 @@ target_link_libraries(cdoc_obj OpenSSL::SSL)
add_library(cdoc_priv OBJECT
Certificate.cpp Certificate.h
Crypto.cpp Crypto.h
Tar.cpp
Tar.cpp Tar.h
ZStream.h
Utils.cpp Utils.h
CDoc1Reader.cpp
CDoc1Writer.cpp
CDoc2Reader.cpp
CDoc2Writer.cpp
DDocReader.cpp
DDocWriter.cpp
CDoc1Reader.cpp CDoc1Reader.h
CDoc1Writer.cpp CDoc1Writer.h
CDoc2Reader.cpp CDoc2Reader.h
CDoc2Writer.cpp CDoc2Writer.h
DDocReader.cpp DDocReader.h
DDocWriter.cpp DDocWriter.h
XmlReader.cpp XmlReader.h
XmlWriter.cpp XmlWriter.h
CDocChipher.h CDocChipher.cpp
CDocChipher.cpp CDocChipher.h
RcptInfo.h
ToolConf.h
CDoc2.h
Expand All @@ -64,8 +72,8 @@ add_library(cdoc_priv OBJECT

set_property(TARGET cdoc_priv PROPERTY POSITION_INDEPENDENT_CODE ON)
target_include_directories(cdoc_priv
PUBLIC ${PROJECT_SOURCE_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}
PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}
PRIVATE ${PROJECT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}
)
target_link_libraries(cdoc_priv
$<TARGET_NAME_IF_EXISTS:flatbuffers::flatbuffers>
Expand All @@ -87,9 +95,9 @@ set_target_properties(cdoc PROPERTIES
MACOSX_RPATH YES
COMPILE_DEFINITIONS TARGET_NAME="$<TARGET_NAME:cdoc>"
)
target_link_libraries(cdoc PRIVATE ${CMAKE_DL_LIBS} cdoc_priv cdoc_obj)
target_link_libraries(cdoc PRIVATE cdoc_ver ${CMAKE_DL_LIBS} cdoc_priv cdoc_obj)
target_include_directories(cdoc PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}>
$<INSTALL_INTERFACE:include>
)
add_library(cdoc_static STATIC ${PUBLIC_HEADERS})
Expand All @@ -106,7 +114,7 @@ set_target_properties(cdoc_static PROPERTIES
target_link_libraries(cdoc_static cdoc_priv cdoc_obj)

add_executable(cdoc-tool cdoc-tool.cpp)
target_link_libraries(cdoc-tool $<IF:$<PLATFORM_ID:Darwin>,cdoc_static,cdoc> cdoc_priv)
target_link_libraries(cdoc-tool cdoc_ver $<IF:$<PLATFORM_ID:Darwin>,cdoc_static,cdoc> cdoc_priv)

foreach(SCHEMA ${SCHEMAS})
get_filename_component(stem ${SCHEMA} NAME_WE)
Expand All @@ -129,17 +137,15 @@ endforeach()

if(SWIG_FOUND)
include(${SWIG_USE_FILE})
include_directories(${CMAKE_PROJECT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_SOURCE_DIR})
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
set_property(SOURCE ../libcdoc.i PROPERTY CPLUSPLUS ON)
if(JAVA_INCLUDE_PATH)
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/CDocException.java DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/java)
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/IStreamSource.java DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/java)
file(COPY CDocException.java DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/java)
file(COPY IStreamSource.java DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/java)
set(CMAKE_SWIG_FLAGS -package ee.ria.cdoc)
set(CMAKE_SWIG_OUTDIR ${CMAKE_CURRENT_BINARY_DIR}/java)
swig_add_library(cdoc_java LANGUAGE java SOURCES ../libcdoc.i)
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_compile_definitions(cdoc_java PRIVATE TARGET_NAME="$<TARGET_NAME:cdoc_java>")
target_link_libraries(cdoc_java $<IF:$<PLATFORM_ID:Android>,cdoc_static,cdoc>)
target_link_libraries(cdoc_java cdoc_ver $<IF:$<PLATFORM_ID:Android>,cdoc_static,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 @@ -173,11 +179,9 @@ if(SWIG_FOUND)
# TODO: Fix Python wrapping
endif()

set(CMAKE_SWIG_FLAGS -dllimport cdoc_csharp -namespace cdoc)
set(CMAKE_SWIG_OUTDIR ${CMAKE_CURRENT_BINARY_DIR}/csharp)
swig_add_library(cdoc_csharp LANGUAGE csharp SOURCES ../libcdoc.i)
target_compile_definitions(cdoc_csharp PRIVATE TARGET_NAME="$<TARGET_NAME:cdoc_csharp>")
target_link_libraries(cdoc_csharp cdoc)
set(CMAKE_SWIG_FLAGS -namespace cdoc)
swig_add_library(cdoc_csharp LANGUAGE csharp SOURCES ../libcdoc.i OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR}/csharp)
target_link_libraries(cdoc_csharp cdoc_ver cdoc)
set_target_properties(cdoc_csharp PROPERTIES
SWIG_COMPILE_DEFINITIONS $<$<PLATFORM_ID:Windows>:SWIGWIN>
INSTALL_RPATH $<$<PLATFORM_ID:Darwin>:/Library/Frameworks>
Expand Down Expand Up @@ -219,6 +223,9 @@ install(TARGETS cdoc
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/cdoc
FRAMEWORK DESTINATION ${FRAMEWORK_DESTINATION}
)
if(WIN32)
install(FILES $<TARGET_PDB_FILE:cdoc> DESTINATION ${CMAKE_INSTALL_BINDIR} OPTIONAL)
endif()

install(TARGETS cdoc_static
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
Expand All @@ -242,6 +249,6 @@ if(NOT ANDROID)
)
endif()

install( TARGETS cdoc-tool DESTINATION ${CMAKE_INSTALL_BINDIR} )
install(TARGETS cdoc-tool DESTINATION ${CMAKE_INSTALL_BINDIR})
#install( FILES ${CMAKE_CURRENT_BINARY_DIR}/cdoc-tool.1 DESTINATION ${CMAKE_INSTALL_MANDIR}/man1 )
#install( FILES ${CMAKE_CURRENT_BINARY_DIR}/libcdoc.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig )
6 changes: 4 additions & 2 deletions cdoc/Utils.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,10 @@
#include <algorithm>
#include <iostream>
#include <sstream>
#include <vector>

#ifdef _WIN32
#include <Windows.h>
#endif

namespace libcdoc {

Expand Down Expand Up @@ -102,7 +105,6 @@ std::string urlEncode(const std::string_view &src);
std::string urlDecode(std::string &src);

#ifdef _WIN32
#include <Windows.h>

static std::wstring toWide(UINT codePage, const std::string &in)
{
Expand Down
1 change: 1 addition & 0 deletions cdoc/cdoc-tool.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ using namespace libcdoc;

static void print_usage(ostream& ofs)
{
ofs << "cdoc-tool version: " << VERSION_STR << endl;
ofs << "cdoc-tool encrypt [--library PKCS11LIBRARY] --rcpt RECIPIENT [--rcpt...] [-v1] [--genlabel] --out OUTPUTFILE FILE [FILE...]" << endl;
ofs << " Encrypt files for one or more recipients" << endl;
ofs << " RECIPIENT has to be one of the following:" << endl;
Expand Down
43 changes: 43 additions & 0 deletions cdoc/libcdoc.rc
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
#include <winver.h>

VS_VERSION_INFO VERSIONINFO
FILEVERSION VERSION
PRODUCTVERSION VERSION
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
#ifdef _DEBUG
FILEFLAGS VS_FF_DEBUG
#else
FILEFLAGS 0x0L
#endif
FILEOS VOS_NT_WINDOWS32
#ifdef APP
FILETYPE VFT_APP
#else
FILETYPE VFT_DLL
#endif
FILESUBTYPE VFT_UNKNOWN
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904B0"
BEGIN
VALUE "CompanyName", "RIA"
VALUE "FileDescription", TARGET_NAME
VALUE "FileVersion", VERSION_STR
VALUE "InternalName", TARGET_NAME
VALUE "LegalCopyright", "(C) 2025 Estonian Information System Authority"
#ifdef APP
VALUE "OriginalFilename", TARGET_NAME ".exe"
#else
VALUE "OriginalFilename", TARGET_NAME ".dll"
#endif
VALUE "ProductName", TARGET_NAME
VALUE "ProductVersion", VERSION_STR
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x409, 1200
END
END
/* End of Version info */
3 changes: 0 additions & 3 deletions test/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED YES)

add_executable(unittests libcdoc_boost.cpp)
target_compile_definitions(unittests PRIVATE DATA_DIR="${CMAKE_CURRENT_SOURCE_DIR}/data")
target_link_libraries(unittests cdoc cdoc_priv Boost::unit_test_framework)
Expand Down