diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 488356cf2..ba7a27ed1 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -145,14 +145,18 @@ jobs: strategy: matrix: toolset: [143, 142] - platform: [x86, x64] + platform: [x86, x64, arm64] include: - toolset: 143 image: windows-2022 - vcvars: "C:\\Program Files\\Microsoft Visual Studio\\2022\\Enterprise\\VC\\Auxiliary\\Build\\vcvarsall.bat" - toolset: 142 image: windows-2019 - vcvars: "C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Enterprise\\VC\\Auxiliary\\Build\\vcvarsall.bat" + - platform: x86 + setenv: amd64_x86 + - platform: x64 + setenv: amd64 + - platform: arm64 + setenv: amd64_arm64 env: VER_SUFFIX: .VS${{ matrix.toolset }} CXXFLAGS: '/D_DISABLE_CONSTEXPR_MUTEX_CONSTRUCTOR' # https://github.com/actions/runner-images/issues/10004 @@ -182,12 +186,14 @@ jobs: run: | dotnet tool install -g wix --version 5.0.1 wix extension -g add WixToolset.UI.wixext/5.0.1 + - name: Setup dev env + uses: ilammy/msvc-dev-cmd@v1 + with: + arch: ${{ matrix.setenv }} - name: Build run: | & .\build.ps1 ` -vcpkg_installed ${{ env.VCPKG_INSTALLED_DIR }} ` - -vcvars "${{ matrix.vcvars }}" ` - -platform ${{ matrix.platform }} ` -swig C:/ProgramData/chocolatey/bin/swig.exe ` -doxygen "C:/Program files/doxygen/bin/doxygen.exe" ` -boost diff --git a/CMakeLists.txt b/CMakeLists.txt index 46ed99fb8..53a7100d7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -95,7 +95,7 @@ enable_testing() add_subdirectory(src) add_subdirectory(examples) -find_package( Boost COMPONENTS unit_test_framework ) +find_package(Boost COMPONENTS unit_test_framework QUIET) if(TARGET Boost::unit_test_framework) add_subdirectory(test) endif() diff --git a/README.md b/README.md index e6585f10d..98dde3eda 100644 --- a/README.md +++ b/README.md @@ -94,16 +94,18 @@ * [Python](https://www.python.org/downloads/) - Optional, for Python bindings * [Java](https://www.oracle.com/java/technologies/downloads/) - Optional, for Java bindings - Toolset: - * 142 - Visual Studio 2019 (Default) - * 143 - Visual Studio 2022 +2. Open desired Visual Studio tools command prompt: + * x64 Native Tool Command Prompt + * x86 Native Tool Command Prompt + * ARM64 Native Tool Command Prompt + * Or some cross compile combination with target host type -2. Fetch the source +3. Fetch the source git clone --recursive https://github.com/open-eid/libdigidocpp cd libdigidocpp -3. Configure +4. Configure cmake -DCMAKE_TOOLCHAIN_FILE=vcpkg/scripts/buildsystems/vcpkg.cmake ` -DVCPKG_TARGET_TRIPLET=x64-windows ` @@ -117,18 +119,18 @@ After running the cmake build, digidoc_csharp.dll along with the C# source files will be created, more info at [examples/DigiDocCSharp/README.md](examples/DigiDocCSharp/README.md). -4. Build +5. Build cmake --build build -5. Alternative to steps 4. and 5. - +6. Alternative to steps 4. and 5. - - powershell -ExecutionPolicy ByPass -File build.ps1 -platform x64 + powershell -ExecutionPolicy ByPass -File build.ps1 The build script builds executables and installation media for given platform (Debug and Release with debug symbols) -6. Execute +7. Execute build/src/digidoc-tool.exe diff --git a/build.ps1 b/build.ps1 index 4a0e86c83..14a46b36b 100644 --- a/build.ps1 +++ b/build.ps1 @@ -8,12 +8,10 @@ param( [string]$vcpkg_installed_platform = "$vcpkg_installed\vcpkg_installed_$platform", [string]$build_number = $(if ($null -eq $env:BUILD_NUMBER) {"0"} else {$env:BUILD_NUMBER}), [string]$msiversion = "4.0.0.$build_number", - [string]$platform = "x64", + [string]$platform = $env:VSCMD_ARG_TGT_ARCH, [string]$msi_name = "libdigidocpp-$msiversion$env:VER_SUFFIX.$platform.msi", [string]$cmake = "cmake.exe", [string]$generator = "NMake Makefiles", - [string]$vcvars = "vcvarsall", - [string]$wix = "wix.exe", [string]$swig = $null, [string]$doxygen = $null, [switch]$boost = $false, @@ -21,11 +19,11 @@ param( ) Try { - & $wix > $null + & wix > $null } Catch { & dotnet tool install --global --version 5.0.1 wix - & $wix extension add -g WixToolset.UI.wixext/5.0.1 + & wix extension add -g WixToolset.UI.wixext/5.0.1 } if(!(Test-Path -Path $vcpkg)) { @@ -49,27 +47,32 @@ if($boost) { $cmakeext += "-DVCPKG_MANIFEST_FEATURES=tests" $target += "check" } +if($env:VSCMD_ARG_HOST_ARCH -ne "arm64") { + $cmakeext += "-DCMAKE_DISABLE_FIND_PACKAGE_Python3=yes" + $wixext += "-d", "disablePython=1" +} foreach($type in @("Debug", "RelWithDebInfo")) { $buildpath = $platform+$type - & $vcvars $platform "&&" $cmake --fresh -B $buildpath -S $libdigidocpp "-G$generator" ` + & $cmake --fresh -B $buildpath -S $libdigidocpp "-G$generator" $cmakeext ` "-DCMAKE_BUILD_TYPE=$type" ` "-DCMAKE_INSTALL_PREFIX=$platform" ` "-DCMAKE_INSTALL_LIBDIR=bin" ` "-DCMAKE_TOOLCHAIN_FILE=$vcpkg_dir/scripts/buildsystems/vcpkg.cmake" ` "-DVCPKG_INSTALLED_DIR=$vcpkg_installed_platform" ` - "-DSIGNCERT=$sign" ` - $cmakeext "&&" $cmake --build $buildpath --target $target "&&" $cmake --install $buildpath + "-DSIGNCERT=$sign" + & $cmake --build $buildpath --target $target + & $cmake --install $buildpath } if($sign) { - & $vcvars $platform "&&" signtool.exe sign /a /v /s MY /n "$sign" /fd SHA256 /du http://installer.id.ee ` + & signtool.exe sign /a /v /s MY /n "$sign" /fd SHA256 /du http://installer.id.ee ` /tr http://timestamp.digicert.com /td SHA256 ` $vcpkg_installed_platform/$platform-windows/bin/*.dll ` $vcpkg_installed_platform/$platform-windows/debug/bin/*.dll } -& $vcvars $platform "&&" $wix build -nologo -arch $platform -out $msi_name $wixext ` +& wix build -nologo -arch $platform -out $msi_name $wixext ` -ext WixToolset.UI.wixext ` -bv "WixUIBannerBmp=$libdigidocpp/cmake/modules/banner.bmp" ` -bv "WixUIDialogBmp=$libdigidocpp/cmake/modules/dlgbmp.bmp" ` @@ -80,6 +83,6 @@ if($sign) { $libdigidocpp\libdigidocpp.wxs if($sign) { - & $vcvars $platform "&&" signtool.exe sign /a /v /s MY /n "$sign" /fd SHA256 /du http://installer.id.ee ` + & signtool.exe sign /a /v /s MY /n "$sign" /fd SHA256 /du http://installer.id.ee ` /tr http://timestamp.digicert.com /td SHA256 "$msi_name" } diff --git a/libdigidocpp.wxs b/libdigidocpp.wxs index 7ee740bdd..f52d66d8f 100644 --- a/libdigidocpp.wxs +++ b/libdigidocpp.wxs @@ -1,12 +1,15 @@  + + + @@ -31,7 +34,7 @@ - + + + @@ -86,7 +91,9 @@ + +