diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 99fbf0dd7..20590b522 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -150,24 +150,38 @@ jobs: MAKEFLAGS: "" VER_SUFFIX: .VS${{ matrix.toolset }} VERSION: 3.16.0.${{ github.run_number }} - VCPKG_OVERLAY_TRIPLETS: ${{ github.workspace }}/patches/vcpkg-triplets - VCPKG_OVERLAY_PORTS: ${{ github.workspace }}/patches/vcpkg-ports steps: - name: Checkout uses: actions/checkout@v3 with: submodules: recursive - - name: Prepare vcpkg - uses: lukka/run-vcpkg@v7 + - uses: mad9000/actions-find-and-replace-string@3 + id: path with: - vcpkgArguments: >- - "xml-security-c:x86-windows-v${{ matrix.toolset }}" - "xml-security-c:x64-windows-v${{ matrix.toolset }}" - "zlib:x86-windows-v${{ matrix.toolset }}" - "zlib:x64-windows-v${{ matrix.toolset }}" - "boost-test:x86-windows-v${{ matrix.toolset }}" - "boost-test:x64-windows-v${{ matrix.toolset }}" - vcpkgGitCommitId: 9b9c2758ece1d8ac0de90589730bb5ccf45c0874 + source: ${{ github.workspace }} + find: '\' + replace: '/' + replaceAll: true + - name: Prepare vcpkg X64 + uses: lukka/run-vcpkg@v11 + with: + vcpkgGitCommitId: 5787cfa699a75805ef41938ec66bc7492714d290 + vcpkgJsonGlob: ${{ steps.path.outputs.value }}/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_DEFAULT_TRIPLET: x64-windows-v${{ matrix.toolset }} + VCPKG_INSTALLED_DIR: ${{ github.workspace }}/vcpkg_installed + - name: Prepare vcpkg X86 + uses: lukka/run-vcpkg@v11 + with: + vcpkgGitCommitId: 5787cfa699a75805ef41938ec66bc7492714d290 + vcpkgJsonGlob: ${{ steps.path.outputs.value }}/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_DEFAULT_TRIPLET: x86-windows-v${{ matrix.toolset }} + VCPKG_INSTALLED_DIR: ${{ github.workspace }}/vcpkg_installed - name: Install dependencies run: choco install doxygen.install swig -y > $null - name: Build xsd @@ -179,7 +193,8 @@ jobs: -toolset ${{ matrix.toolset }} ` -vcvars "${{ matrix.vcvars }}" ` -swig C:/ProgramData/chocolatey/bin/swig.exe ` - -doxygen "C:/Program files/doxygen/bin/doxygen.exe" + -doxygen "C:/Program files/doxygen/bin/doxygen.exe" ` + -boost - name: Archive artifacts uses: actions/upload-artifact@v3 with: diff --git a/README.md b/README.md index b38b0a238..e14cce32c 100644 --- a/README.md +++ b/README.md @@ -85,6 +85,7 @@ 1. Install dependencies and necessary tools from * [Visual Studio Community 2017/2019/2022](https://www.visualstudio.com/downloads/) * [CMake](http://www.cmake.org) + * [vcpkg](https://vcpkg.io/) * [Swig](http://swig.org/download.html) - Optional, for C# and Java bindings * [Doxygen](https://www.doxygen.nl/download.html) - Optional, for generationg documentation * [Wix toolset](http://wixtoolset.org/releases/) - Optional, for creating Windows installation packages @@ -106,8 +107,9 @@ 4. Configure - cmake -DCMAKE_TOOLCHAIN_FILE=vcpkg/scripts/buildsystems/vcpkg.cmake" ` + cmake -DCMAKE_TOOLCHAIN_FILE=vcpkg/scripts/buildsystems/vcpkg.cmake ` -DVCPKG_TARGET_TRIPLET=x64-windows-v142 ` + -DVCPKG_MANIFEST_FEATURES=tests ` -DXSD_INCLUDE_DIR=xsd/libxsd ` -DXSD_EXECUTABLE=xsd/bin/xsd.exe ` -B build -S . diff --git a/build.ps1 b/build.ps1 index 92805a2ba..f9b748420 100644 --- a/build.ps1 +++ b/build.ps1 @@ -3,6 +3,7 @@ param( [string]$libdigidocpp = $PSScriptRoot, [string]$vcpkg = "vcpkg\vcpkg.exe", [string]$vcpkg_dir = (split-path -parent $vcpkg), + [string]$vcpkg_installed = $libdigidocpp, [string]$buildver = "0", [string]$msiversion = "3.16.0.$buildver", [string]$msi_name = "libdigidocpp-$msiversion$env:VER_SUFFIX.msi", @@ -16,7 +17,7 @@ param( [string]$light = "$env:WIX\bin\light.exe", [string]$swig = $null, [string]$doxygen = $null, - [string]$boost = $null, + [switch]$boost = $false, [string]$xsd = "$libdigidocpp\xsd", [string]$sign = $null, [string]$crosssign = $null, @@ -33,7 +34,6 @@ if ($vcver) { $vcver = "-vcvars_ver=$vcver" } -$env:VCPKG_OVERLAY_TRIPLETS = "$libdigidocpp\patches\vcpkg-triplets" $cmakeext = @() $candleext = @() $lightext = @() @@ -47,7 +47,7 @@ if($doxygen) { $lightext += "DocFilesFragment.wixobj" } if($boost) { - $cmakeext += "-DBoost_INCLUDE_DIR=$boost" + $cmakeext += "-DVCPKG_MANIFEST_FEATURES=tests" } if($source) { Remove-Item source -Force -Recurse @@ -62,17 +62,18 @@ foreach($platform in @("x86", "x64")) { foreach($type in @("Debug", "RelWithDebInfo")) { $buildpath = $platform+$type Remove-Item $buildpath -Force -Recurse -ErrorAction Ignore - & $vcvars $platform $vcver "&&" $cmake "-G$generator" ` + & $vcvars $platform $vcver "&&" $cmake -B $buildpath -S $libdigidocpp "-G$generator" ` "-DCMAKE_BUILD_TYPE=$type" ` "-DCMAKE_INSTALL_PREFIX=$platform" ` "-DCMAKE_INSTALL_LIBDIR=bin" ` "-DCMAKE_TOOLCHAIN_FILE=$vcpkg_dir/scripts/buildsystems/vcpkg.cmake" ` "-DVCPKG_TARGET_TRIPLET=$platform-windows-v$toolset" ` + "-DVCPKG_INSTALLED_DIR=$vcpkg_installed\vcpkg_installed_$platform" ` "-DXSD_INCLUDE_DIR=$xsd/libxsd" ` "-DXSD_EXECUTABLE=$xsd/bin/xsd.exe" ` "-DSIGNCERT=$sign" ` "-DCROSSSIGNCERT=$crosssign" ` - $cmakeext -B $buildpath -S $libdigidocpp "&&" $cmake --build $buildpath --target check install + $cmakeext "&&" $cmake --build $buildpath --target check install } } @@ -80,7 +81,8 @@ if($doxygen) { & $heat dir x86/share/doc/libdigidocpp -nologo -cg Documentation -gg -scom -sreg -sfrag -srd -dr DocumentationFolder -var var.docLocation -out DocFilesFragment.wxs } & $heat dir x86/include -nologo -cg Headers -gg -scom -sreg -sfrag -srd -dr HeadersFolder -var var.headersLocation -out HeadersFragment.wxs -& $vcvars x86 "&&" $candle -nologo "-dICON=$libdigidocpp/cmake/modules/ID.ico" "-dMSI_VERSION=$msiversion" "-dvcpkg=$vcpkg_dir" "-dvcpkg_suffix=windows-v$toolset" ` +& $vcvars x86 "&&" $candle -nologo "-dICON=$libdigidocpp/cmake/modules/ID.ico" "-dMSI_VERSION=$msiversion" ` + "-dvcpkg_x86=$vcpkg_installed\vcpkg_installed_x86\x86-windows-v$toolset" "-dvcpkg_x64=$vcpkg_installed\vcpkg_installed_x64\x64-windows-v$toolset" ` "-dheadersLocation=x86/include" "-dlibdigidocpp=." $candleext $libdigidocpp\libdigidocpp.wxs HeadersFragment.wxs & $light -nologo -out $msi_name -ext WixUIExtension ` "-dWixUIBannerBmp=$libdigidocpp/cmake/modules/banner.bmp" ` diff --git a/libdigidocpp.wxs b/libdigidocpp.wxs index 4871b0a37..ef72d1a4d 100644 --- a/libdigidocpp.wxs +++ b/libdigidocpp.wxs @@ -4,10 +4,10 @@ - - - - + + + + $cflags . $sysroot, + cppflags => $cppflags, diff --git a/patches/vcpkg-ports/openssl/unix/configure b/patches/vcpkg-ports/openssl/unix/configure new file mode 100644 index 000000000..5599aaa0f --- /dev/null +++ b/patches/vcpkg-ports/openssl/unix/configure @@ -0,0 +1,31 @@ +#!/bin/bash + +set -e + +declare -a OUT_OPTIONS + +INTERPRETER=perl + +LAST_SEEN= +COPY_OPTIONS=no +for OPTION; do + case "${OPTION},${COPY_OPTIONS}" in + */Configure,no) + OUT_OPTIONS+=("${OPTION}") + INTERPRETER="${LAST_SEEN}" + COPY_OPTIONS=yes + ;; + --prefix=*|--openssldir=*|--libdir=*|--cross-compile-prefix=*|--debug,*) + OUT_OPTIONS+=("${OPTION}") + ;; + -*|*=*) + ;; + *,yes) + OUT_OPTIONS+=("${OPTION}") + ;; + esac + LAST_SEEN="${OPTION}" +done + +set -x +"${INTERPRETER}" ${OUT_OPTIONS[@]} diff --git a/patches/vcpkg-ports/openssl/unix/move-openssldir.patch b/patches/vcpkg-ports/openssl/unix/move-openssldir.patch new file mode 100644 index 000000000..44e0183ef --- /dev/null +++ b/patches/vcpkg-ports/openssl/unix/move-openssldir.patch @@ -0,0 +1,15 @@ +diff --git a/Configurations/unix-Makefile.tmpl b/Configurations/unix-Makefile.tmpl +index dd96254..c4458ca 100644 +--- a/Configurations/unix-Makefile.tmpl ++++ b/Configurations/unix-Makefile.tmpl +@@ -689,6 +689,10 @@ install_ssldirs: + cp $(SRCDIR)/apps/ct_log_list.cnf $(DESTDIR)$(OPENSSLDIR)/ct_log_list.cnf; \ + chmod 644 $(DESTDIR)$(OPENSSLDIR)/ct_log_list.cnf; \ + fi ++ $(PERL) $(SRCDIR)/util/mkdir-p.pl $(DESTDIR)$(INSTALLTOP)$(OPENSSLDIR) ++ for I in $(DESTDIR)$(OPENSSLDIR)/*; do \ ++ mv $$I $(DESTDIR)$(INSTALLTOP)$(OPENSSLDIR)/; \ ++ done + + install_dev: install_runtime_libs + @[ -n "$(INSTALLTOP)" ] || (echo INSTALLTOP should not be empty; exit 1) diff --git a/patches/vcpkg-ports/openssl/unix/no-empty-dirs.patch b/patches/vcpkg-ports/openssl/unix/no-empty-dirs.patch new file mode 100644 index 000000000..4c59d9eac --- /dev/null +++ b/patches/vcpkg-ports/openssl/unix/no-empty-dirs.patch @@ -0,0 +1,22 @@ +diff --git a/Configurations/unix-Makefile.tmpl b/Configurations/unix-Makefile.tmpl +index 5b6b1c7..4c8c916 100644 +--- a/Configurations/unix-Makefile.tmpl ++++ b/Configurations/unix-Makefile.tmpl +@@ -818,7 +818,7 @@ _install_modules_deps: install_runtime_libs build_modules + + install_engines: _install_modules_deps + @[ -n "$(INSTALLTOP)" ] || (echo INSTALLTOP should not be empty; exit 1) +- @$(PERL) $(SRCDIR)/util/mkdir-p.pl $(DESTDIR)$(ENGINESDIR)/ ++ @[ -z "$(INSTALL_ENGINES)" ] || $(PERL) $(SRCDIR)/util/mkdir-p.pl $(DESTDIR)$(ENGINESDIR)/ + @$(ECHO) "*** Installing engines" + @set -e; for e in dummy $(INSTALL_ENGINES); do \ + if [ "$$e" = "dummy" ]; then continue; fi; \ +@@ -842,7 +842,7 @@ uninstall_engines: + + install_modules: _install_modules_deps + @[ -n "$(INSTALLTOP)" ] || (echo INSTALLTOP should not be empty; exit 1) +- @$(PERL) $(SRCDIR)/util/mkdir-p.pl $(DESTDIR)$(MODULESDIR)/ ++ @[ -z "$(INSTALL_MODULES)" ] || $(PERL) $(SRCDIR)/util/mkdir-p.pl $(DESTDIR)$(MODULESDIR)/ + @$(ECHO) "*** Installing modules" + @set -e; for e in dummy $(INSTALL_MODULES); do \ + if [ "$$e" = "dummy" ]; then continue; fi; \ diff --git a/patches/vcpkg-ports/openssl/unix/no-static-libs-for-shared.patch b/patches/vcpkg-ports/openssl/unix/no-static-libs-for-shared.patch new file mode 100644 index 000000000..868e682a3 --- /dev/null +++ b/patches/vcpkg-ports/openssl/unix/no-static-libs-for-shared.patch @@ -0,0 +1,12 @@ +diff --git a/Configurations/unix-Makefile.tmpl b/Configurations/unix-Makefile.tmpl +index 4c8c916..dd96254 100644 +--- a/Configurations/unix-Makefile.tmpl ++++ b/Configurations/unix-Makefile.tmpl +@@ -708,6 +708,7 @@ install_dev: install_runtime_libs + done + @$(PERL) $(SRCDIR)/util/mkdir-p.pl $(DESTDIR)$(libdir) + @set -e; for l in $(INSTALL_LIBS); do \ ++ if [ -n "$(INSTALL_SHLIBS)" ] ; then continue ; fi ; \ + fn=`basename $$l`; \ + $(ECHO) "install $$l -> $(DESTDIR)$(libdir)/$$fn"; \ + cp $$l $(DESTDIR)$(libdir)/$$fn.new; \ diff --git a/patches/vcpkg-ports/openssl/unix/portfile.cmake b/patches/vcpkg-ports/openssl/unix/portfile.cmake new file mode 100644 index 000000000..2016b68f7 --- /dev/null +++ b/patches/vcpkg-ports/openssl/unix/portfile.cmake @@ -0,0 +1,160 @@ +if (VCPKG_TARGET_IS_LINUX) + message(NOTICE [[ +openssl requires Linux kernel headers from the system package manager. + They can be installed on Alpine systems via `apk add linux-headers`. + They can be installed on Ubuntu systems via `apt install linux-libc-dev`. +]]) +endif() + +if(CMAKE_HOST_WIN32) + vcpkg_acquire_msys(MSYS_ROOT PACKAGES make perl) + set(MAKE "${MSYS_ROOT}/usr/bin/make.exe") + set(PERL "${MSYS_ROOT}/usr/bin/perl.exe") +else() + find_program(MAKE make) + if(NOT MAKE) + message(FATAL_ERROR "Could not find make. Please install it through your package manager.") + endif() + vcpkg_find_acquire_program(PERL) +endif() +set(INTERPRETER "${PERL}") + +execute_process( + COMMAND "${PERL}" -e "use IPC::Cmd;" + RESULT_VARIABLE perl_ipc_cmd_result +) +if(NOT perl_ipc_cmd_result STREQUAL "0") + message(FATAL_ERROR "\nPerl cannot find IPC::Cmd. Please install it through your system package manager.\n") +endif() + +# Ideally, OpenSSL should use `CC` from vcpkg as is (absolute path). +# But in reality, OpenSSL expects to locate the compiler via `PATH`, +# and it makes its own choices e.g. for Android. +vcpkg_cmake_get_vars(cmake_vars_file) +include("${cmake_vars_file}") +cmake_path(GET VCPKG_DETECTED_CMAKE_C_COMPILER PARENT_PATH compiler_path) +cmake_path(GET VCPKG_DETECTED_CMAKE_C_COMPILER FILENAME compiler_name) +find_program(compiler_in_path NAMES "${compiler_name}" PATHS ENV PATH NO_DEFAULT_PATH) +if(NOT compiler_in_path) + vcpkg_host_path_list(APPEND ENV{PATH} "${compiler_path}") +elseif(NOT compiler_in_path STREQUAL VCPKG_DETECTED_CMAKE_C_COMPILER) + vcpkg_host_path_list(PREPEND ENV{PATH} "${compiler_path}") +endif() + +vcpkg_list(SET MAKEFILE_OPTIONS) +if(VCPKG_TARGET_IS_ANDROID) + set(ENV{ANDROID_NDK_ROOT} "${VCPKG_DETECTED_CMAKE_ANDROID_NDK}") + set(OPENSSL_ARCH "android-${VCPKG_DETECTED_CMAKE_ANDROID_ARCH}") + if(VCPKG_DETECTED_CMAKE_ANDROID_ARCH STREQUAL "arm" AND NOT VCPKG_DETECTED_CMAKE_ANDROID_ARM_NEON) + vcpkg_list(APPEND CONFIGURE_OPTIONS no-asm) + endif() +elseif(VCPKG_TARGET_IS_LINUX) + if(VCPKG_TARGET_ARCHITECTURE MATCHES "arm64") + set(OPENSSL_ARCH linux-aarch64) + elseif(VCPKG_TARGET_ARCHITECTURE MATCHES "arm") + set(OPENSSL_ARCH linux-armv4) + elseif(VCPKG_TARGET_ARCHITECTURE MATCHES "x64") + set(OPENSSL_ARCH linux-x86_64) + elseif(VCPKG_TARGET_ARCHITECTURE MATCHES "x86") + set(OPENSSL_ARCH linux-x86) + else() + set(OPENSSL_ARCH linux-generic32) + endif() +elseif(VCPKG_TARGET_IS_IOS) + if(VCPKG_TARGET_ARCHITECTURE MATCHES "arm64") + set(OPENSSL_ARCH ios64-xcrun) + elseif(VCPKG_TARGET_ARCHITECTURE MATCHES "arm") + set(OPENSSL_ARCH ios-xcrun) + elseif(VCPKG_TARGET_ARCHITECTURE MATCHES "x86" OR VCPKG_TARGET_ARCHITECTURE MATCHES "x64") + set(OPENSSL_ARCH iossimulator-xcrun) + else() + message(FATAL_ERROR "Unknown iOS target architecture: ${VCPKG_TARGET_ARCHITECTURE}") + endif() + # disable that makes linkage error (e.g. require stderr usage) + list(APPEND CONFIGURE_OPTIONS no-ui no-asm) +elseif(VCPKG_TARGET_IS_OSX) + if(VCPKG_TARGET_ARCHITECTURE MATCHES "arm64") + set(OPENSSL_ARCH darwin64-arm64) + else() + set(OPENSSL_ARCH darwin64-x86_64) + endif() +elseif(VCPKG_TARGET_IS_FREEBSD OR VCPKG_TARGET_IS_OPENBSD) + set(OPENSSL_ARCH BSD-generic64) +elseif(VCPKG_TARGET_IS_MINGW) + if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64") + set(OPENSSL_ARCH mingw64) + else() + set(OPENSSL_ARCH mingw) + endif() +elseif(VCPKG_TARGET_IS_EMSCRIPTEN) + set(INTERPRETER "$ENV{EMSDK}/upstream/emscripten/emconfigure") + # We must wrap the build in emmake which does not pass jobserver fds. + vcpkg_list(SET MAKEFILE_OPTIONS + MAKEFILE "${CMAKE_CURRENT_LIST_DIR}/Makefile.emscripten" + DISABLE_PARALLEL + ) + set(ENV{VCPKG_JOBS} "-j${VCPKG_CONCURRENCY}") + vcpkg_list(APPEND CONFIGURE_OPTIONS + threads + no-engine + no-asm + no-sse2 + no-srtp + --cross-compile-prefix= + ) +else() + message(FATAL_ERROR "Unknown platform") +endif() + +file(MAKE_DIRECTORY "${SOURCE_PATH}/vcpkg") +file(COPY "${CMAKE_CURRENT_LIST_DIR}/configure" DESTINATION "${SOURCE_PATH}/vcpkg") +vcpkg_configure_make( + SOURCE_PATH "${SOURCE_PATH}" + PROJECT_SUBPATH "vcpkg" + NO_ADDITIONAL_PATHS + OPTIONS + "${INTERPRETER}" + "${SOURCE_PATH}/Configure" + ${OPENSSL_ARCH} + ${CONFIGURE_OPTIONS} + "--openssldir=/etc/ssl" + "--libdir=lib" + OPTIONS_DEBUG + --debug +) +vcpkg_install_make( + ${MAKEFILE_OPTIONS} + BUILD_TARGET build_sw +) +vcpkg_fixup_pkgconfig() + +if("tools" IN_LIST FEATURES) + file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/tools/${PORT}") + file(RENAME "${CURRENT_PACKAGES_DIR}/bin/c_rehash" "${CURRENT_PACKAGES_DIR}/tools/${PORT}/c_rehash") + file(REMOVE "${CURRENT_PACKAGES_DIR}/debug/bin/c_rehash") + vcpkg_copy_tools(TOOL_NAMES openssl AUTO_CLEAN) +elseif(VCPKG_LIBRARY_LINKAGE STREQUAL "static" OR NOT VCPKG_TARGET_IS_WINDOWS) + file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/bin" "${CURRENT_PACKAGES_DIR}/debug/bin") + file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/etc/ssl/misc") +endif() + +file(TOUCH "${CURRENT_PACKAGES_DIR}/etc/ssl/certs/.keep") +file(TOUCH "${CURRENT_PACKAGES_DIR}/etc/ssl/private/.keep") + +file(REMOVE_RECURSE + "${CURRENT_PACKAGES_DIR}/debug/etc" + "${CURRENT_PACKAGES_DIR}/debug/include" + "${CURRENT_PACKAGES_DIR}/debug/share" +) + +# For consistency of mingw build with nmake build +file(GLOB engines "${CURRENT_PACKAGES_DIR}/lib/ossl-modules/*.dll") +if(NOT engines STREQUAL "") + file(COPY ${engines} DESTINATION "${CURRENT_PACKAGES_DIR}/bin") + file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/lib/ossl-modules") +endif() +file(GLOB engines "${CURRENT_PACKAGES_DIR}/debug/lib/ossl-modules/*.dll") +if(NOT engines STREQUAL "") + file(COPY ${engines} DESTINATION "${CURRENT_PACKAGES_DIR}/debug/bin") + file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/lib/ossl-modules") +endif() diff --git a/patches/vcpkg-ports/openssl/unix/remove-deps.cmake b/patches/vcpkg-ports/openssl/unix/remove-deps.cmake new file mode 100644 index 000000000..a57c70fe9 --- /dev/null +++ b/patches/vcpkg-ports/openssl/unix/remove-deps.cmake @@ -0,0 +1,7 @@ +file(GLOB_RECURSE MAKEFILES ${DIR}/*/Makefile) +foreach(MAKEFILE ${MAKEFILES}) + message("removing deps from ${MAKEFILE}") + file(READ "${MAKEFILE}" _contents) + string(REGEX REPLACE "\n# DO NOT DELETE THIS LINE.*" "" _contents "${_contents}") + file(WRITE "${MAKEFILE}" "${_contents}") +endforeach() diff --git a/patches/vcpkg-ports/openssl/usage b/patches/vcpkg-ports/openssl/usage new file mode 100644 index 000000000..f535cb6a4 --- /dev/null +++ b/patches/vcpkg-ports/openssl/usage @@ -0,0 +1,4 @@ +The package openssl is compatible with built-in CMake targets: + + find_package(OpenSSL REQUIRED) + target_link_libraries(main PRIVATE OpenSSL::SSL OpenSSL::Crypto) diff --git a/patches/vcpkg-ports/openssl/vcpkg-cmake-wrapper.cmake.in b/patches/vcpkg-ports/openssl/vcpkg-cmake-wrapper.cmake.in new file mode 100644 index 000000000..5008112c3 --- /dev/null +++ b/patches/vcpkg-ports/openssl/vcpkg-cmake-wrapper.cmake.in @@ -0,0 +1,82 @@ +cmake_policy(PUSH) +cmake_policy(SET CMP0012 NEW) +cmake_policy(SET CMP0054 NEW) +cmake_policy(SET CMP0057 NEW) + +set(OPENSSL_VERSION_MAJOR @OPENSSL_VERSION_MAJOR@) +set(OPENSSL_VERSION_MINOR @OPENSSL_VERSION_MINOR@) +set(OPENSSL_VERSION_FIX @OPENSSL_VERSION_FIX@) + +if(OPENSSL_USE_STATIC_LIBS) + if("@VCPKG_LIBRARY_LINKAGE@" STREQUAL "dynamic") + message(WARNING "OPENSSL_USE_STATIC_LIBS is set, but vcpkg port openssl was built with dynamic linkage") + endif() + set(OPENSSL_USE_STATIC_LIBS_BAK "${OPENSSL_USE_STATIC_LIBS}") + set(OPENSSL_USE_STATIC_LIBS FALSE) +endif() + +if(DEFINED OPENSSL_ROOT_DIR) + set(OPENSSL_ROOT_DIR_BAK "${OPENSSL_ROOT_DIR}") +endif() +get_filename_component(OPENSSL_ROOT_DIR "${CMAKE_CURRENT_LIST_DIR}" DIRECTORY) +get_filename_component(OPENSSL_ROOT_DIR "${OPENSSL_ROOT_DIR}" DIRECTORY) +find_path(OPENSSL_INCLUDE_DIR NAMES openssl/ssl.h PATH "${OPENSSL_ROOT_DIR}/include" NO_DEFAULT_PATH) +if(MSVC) + find_library(LIB_EAY_DEBUG NAMES libcrypto PATHS "${OPENSSL_ROOT_DIR}/debug/lib" NO_DEFAULT_PATH) + find_library(LIB_EAY_RELEASE NAMES libcrypto PATHS "${OPENSSL_ROOT_DIR}/lib" NO_DEFAULT_PATH) + find_library(SSL_EAY_DEBUG NAMES libssl PATHS "${OPENSSL_ROOT_DIR}/debug/lib" NO_DEFAULT_PATH) + find_library(SSL_EAY_RELEASE NAMES libssl PATHS "${OPENSSL_ROOT_DIR}/lib" NO_DEFAULT_PATH) +elseif(WIN32) + find_library(LIB_EAY NAMES libcrypto crypto NAMES_PER_DIR) + find_library(SSL_EAY NAMES libssl ssl NAMES_PER_DIR) +else() + find_library(OPENSSL_CRYPTO_LIBRARY NAMES crypto) + find_library(OPENSSL_SSL_LIBRARY NAMES ssl) +endif() + +_find_package(${ARGS}) + +unset(OPENSSL_ROOT_DIR) +if(DEFINED OPENSSL_ROOT_DIR_BAK) + set(OPENSSL_ROOT_DIR "${OPENSSL_ROOT_DIR_BAK}") + unset(OPENSSL_ROOT_DIR_BAK) +endif() + +if(DEFINED OPENSSL_USE_STATIC_LIBS_BAK) + set(OPENSSL_USE_STATIC_LIBS "${OPENSSL_USE_STATIC_LIBS_BAK}") + unset(OPENSSL_USE_STATIC_LIBS_BAK) +endif() + +if(OPENSSL_FOUND AND "@VCPKG_LIBRARY_LINKAGE@" STREQUAL "static") + if(WIN32) + list(APPEND OPENSSL_LIBRARIES crypt32 ws2_32) + if(TARGET OpenSSL::Crypto) + set_property(TARGET OpenSSL::Crypto APPEND PROPERTY INTERFACE_LINK_LIBRARIES "crypt32;ws2_32") + endif() + if(TARGET OpenSSL::SSL) + set_property(TARGET OpenSSL::SSL APPEND PROPERTY INTERFACE_LINK_LIBRARIES "crypt32;ws2_32") + endif() + else() + find_library(OPENSSL_DL_LIBRARY NAMES dl) + if(OPENSSL_DL_LIBRARY) + list(APPEND OPENSSL_LIBRARIES "dl") + if(TARGET OpenSSL::Crypto) + set_property(TARGET OpenSSL::Crypto APPEND PROPERTY INTERFACE_LINK_LIBRARIES "dl") + endif() + endif() + + if("REQUIRED" IN_LIST ARGS) + find_package(Threads REQUIRED) + else() + find_package(Threads) + endif() + list(APPEND OPENSSL_LIBRARIES ${CMAKE_THREAD_LIBS_INIT}) + if(TARGET OpenSSL::Crypto) + set_property(TARGET OpenSSL::Crypto APPEND PROPERTY INTERFACE_LINK_LIBRARIES "Threads::Threads") + endif() + if(TARGET OpenSSL::SSL) + set_property(TARGET OpenSSL::SSL APPEND PROPERTY INTERFACE_LINK_LIBRARIES "Threads::Threads") + endif() + endif() +endif() +cmake_policy(POP) diff --git a/patches/vcpkg-ports/openssl/vcpkg.json b/patches/vcpkg-ports/openssl/vcpkg.json new file mode 100644 index 000000000..ec43c1a5c --- /dev/null +++ b/patches/vcpkg-ports/openssl/vcpkg.json @@ -0,0 +1,27 @@ +{ + "name": "openssl", + "version": "3.0.9", + "description": "OpenSSL is an open source project that provides a robust, commercial-grade, and full-featured toolkit for the Transport Layer Security (TLS) and Secure Sockets Layer (SSL) protocols. It is also a general-purpose cryptography library.", + "homepage": "https://www.openssl.org", + "license": "Apache-2.0", + "dependencies": [ + { + "name": "vcpkg-cmake", + "host": true + }, + { + "name": "vcpkg-cmake-config", + "host": true + }, + { + "name": "vcpkg-cmake-get-vars", + "host": true + } + ], + "features": { + "tools": { + "description": "Install openssl executable and scripts", + "supports": "!uwp" + } + } +} diff --git a/patches/vcpkg-ports/openssl/windows/install-layout.patch b/patches/vcpkg-ports/openssl/windows/install-layout.patch new file mode 100644 index 000000000..be9df768b --- /dev/null +++ b/patches/vcpkg-ports/openssl/windows/install-layout.patch @@ -0,0 +1,13 @@ +diff --git a/Configurations/windows-makefile.tmpl b/Configurations/windows-makefile.tmpl +index f71f3bf..116954f 100644 +--- a/Configurations/windows-makefile.tmpl ++++ b/Configurations/windows-makefile.tmpl +@@ -223,7 +223,7 @@ MODULESDIR_dev={- use File::Spec::Functions qw(:DEFAULT splitpath catpath); + splitpath($modulesprefix, 1); + our $modulesdir_dev = $modulesprefix_dev; + our $modulesdir_dir = +- catdir($modulesprefix_dir, "ossl-modules"); ++ catdir($modulesprefix_dir, "../bin"); + our $modulesdir = catpath($modulesdir_dev, $modulesdir_dir); + our $enginesdir_dev = $modulesprefix_dev; + our $enginesdir_dir = diff --git a/patches/vcpkg-ports/openssl/windows/install-pdbs.patch b/patches/vcpkg-ports/openssl/windows/install-pdbs.patch new file mode 100644 index 000000000..379c525a4 --- /dev/null +++ b/patches/vcpkg-ports/openssl/windows/install-pdbs.patch @@ -0,0 +1,44 @@ +diff --git a/Configurations/windows-makefile.tmpl b/Configurations/windows-makefile.tmpl +index 5946c89..f71f3bf 100644 +--- a/Configurations/windows-makefile.tmpl ++++ b/Configurations/windows-makefile.tmpl +@@ -556,6 +556,7 @@ install_dev: install_runtime_libs + @"$(PERL)" "$(SRCDIR)\util\mkdir-p.pl" "$(libdir)" + @"$(PERL)" "$(SRCDIR)\util\copy.pl" $(INSTALL_LIBS) "$(libdir)" + @if "$(SHLIBS)"=="" \ ++ @if "$(INSTALL_PDBS)"=="ON" \ + "$(PERL)" "$(SRCDIR)\util\copy.pl" ossl_static.pdb "$(libdir)" + + uninstall_dev: +@@ -569,6 +570,7 @@ install_engines: _install_modules_deps + @if not "$(INSTALL_ENGINES)"=="" \ + "$(PERL)" "$(SRCDIR)\util\copy.pl" $(INSTALL_ENGINES) "$(ENGINESDIR)" + @if not "$(INSTALL_ENGINES)"=="" \ ++ @if "$(INSTALL_PDBS)"=="ON" \ + "$(PERL)" "$(SRCDIR)\util\copy.pl" $(INSTALL_ENGINEPDBS) "$(ENGINESDIR)" + + uninstall_engines: +@@ -580,6 +582,7 @@ install_modules: _install_modules_deps + @if not "$(INSTALL_MODULES)"=="" \ + "$(PERL)" "$(SRCDIR)\util\copy.pl" $(INSTALL_MODULES) "$(MODULESDIR)" + @if not "$(INSTALL_MODULES)"=="" \ ++ @if "$(INSTALL_PDBS)"=="ON" \ + "$(PERL)" "$(SRCDIR)\util\copy.pl" $(INSTALL_MODULEPDBS) "$(MODULESDIR)" + + uninstall_modules: +@@ -593,6 +596,7 @@ install_runtime_libs: build_libs + @if not "$(SHLIBS)"=="" \ + "$(PERL)" "$(SRCDIR)\util\copy.pl" $(INSTALL_SHLIBS) "$(INSTALLTOP)\bin" + @if not "$(SHLIBS)"=="" \ ++ @if "$(INSTALL_PDBS)"=="ON" \ + "$(PERL)" "$(SRCDIR)\util\copy.pl" $(INSTALL_SHLIBPDBS) \ + "$(INSTALLTOP)\bin" + +@@ -605,6 +609,7 @@ install_programs: install_runtime_libs build_programs + "$(PERL)" "$(SRCDIR)\util\copy.pl" $(INSTALL_PROGRAMS) \ + "$(INSTALLTOP)\bin" + @if not "$(INSTALL_PROGRAMS)"=="" \ ++ @if "$(INSTALL_PDBS)"=="ON" \ + "$(PERL)" "$(SRCDIR)\util\copy.pl" $(INSTALL_PROGRAMPDBS) \ + "$(INSTALLTOP)\bin" + @if not "$(INSTALL_PROGRAMS)"=="" \ diff --git a/patches/vcpkg-ports/openssl/windows/portfile.cmake b/patches/vcpkg-ports/openssl/windows/portfile.cmake new file mode 100644 index 000000000..a5a5da413 --- /dev/null +++ b/patches/vcpkg-ports/openssl/windows/portfile.cmake @@ -0,0 +1,128 @@ +vcpkg_find_acquire_program(NASM) +get_filename_component(NASM_EXE_PATH "${NASM}" DIRECTORY) +vcpkg_add_to_path(PREPEND "${NASM_EXE_PATH}") + +vcpkg_find_acquire_program(PERL) +get_filename_component(PERL_EXE_PATH "${PERL}" DIRECTORY) +vcpkg_add_to_path("${PERL_EXE_PATH}") + +if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86") + set(OPENSSL_ARCH VC-WIN32) +elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64") + set(OPENSSL_ARCH VC-WIN64A) +elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm") + set(OPENSSL_ARCH VC-WIN32-ARM) +elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64") + set(OPENSSL_ARCH VC-WIN64-ARM) +else() + message(FATAL_ERROR "Unsupported target architecture: ${VCPKG_TARGET_ARCHITECTURE}") +endif() + +if(VCPKG_TARGET_IS_UWP) + vcpkg_list(APPEND CONFIGURE_OPTIONS + no-unit-test + no-asm + no-uplink + ) + string(APPEND OPENSSL_ARCH "-UWP") +endif() + +if(VCPKG_CONCURRENCY GREATER "1") + vcpkg_list(APPEND CONFIGURE_OPTIONS no-makedepend) +endif() + +cmake_path(NATIVE_PATH CURRENT_PACKAGES_DIR NORMALIZE install_dir_native) + +vcpkg_cmake_get_vars(cmake_vars_file) +include("${cmake_vars_file}") + +# Clang always uses /Z7; Patching /Zi /Fd out of openssl requires more work. +set(OPENSSL_BUILD_MAKES_PDBS ON) +if (VCPKG_DETECTED_CMAKE_C_COMPILER_ID MATCHES "Clang" OR VCPKG_LIBRARY_LINKAGE STREQUAL "static") + set(OPENSSL_BUILD_MAKES_PDBS OFF) +endif() + +cmake_path(NATIVE_PATH NASM NORMALIZE as) +cmake_path(NATIVE_PATH VCPKG_DETECTED_CMAKE_C_COMPILER NORMALIZE cc) +cmake_path(NATIVE_PATH VCPKG_DETECTED_CMAKE_AR NORMALIZE ar) +cmake_path(NATIVE_PATH VCPKG_DETECTED_CMAKE_LINKER NORMALIZE ld) + +vcpkg_build_nmake( + SOURCE_PATH "${SOURCE_PATH}" + PREFER_JOM + CL_LANGUAGE NONE + PRERUN_SHELL_RELEASE "${PERL}" Configure + ${CONFIGURE_OPTIONS} + ${OPENSSL_ARCH} + "--prefix=${install_dir_native}" + "--openssldir=${install_dir_native}" + "AS=${as}" + "CC=${cc}" + "CFLAGS=${VCPKG_COMBINED_C_FLAGS_RELEASE}" + "AR=${ar}" + "ARFLAGS=${VCPKG_COMBINED_STATIC_LINKER_FLAGS_RELEASE}" + "LD=${ld}" + "LDFLAGS=${VCPKG_COMBINED_SHARED_LINKER_FLAGS_RELEASE}" + PRERUN_SHELL_DEBUG "${PERL}" Configure + ${CONFIGURE_OPTIONS} + ${OPENSSL_ARCH} + --debug + "--prefix=${install_dir_native}\\debug" + "--openssldir=${install_dir_native}\\debug" + "AS=${as}" + "CC=${cc}" + "CFLAGS=${VCPKG_COMBINED_C_FLAGS_DEBUG}" + "AR=${ar}" + "ARFLAGS=${VCPKG_COMBINED_STATIC_LINKER_FLAGS_DEBUG}" + "LD=${ld}" + "LDFLAGS=${VCPKG_COMBINED_SHARED_LINKER_FLAGS_DEBUG}" + PROJECT_NAME "makefile" + TARGET install_dev install_modules + LOGFILE_ROOT install + OPTIONS + "INSTALL_PDBS=${OPENSSL_BUILD_MAKES_PDBS}" # install-pdbs.patch + OPTIONS_RELEASE + install_runtime install_ssldirs # extra targets +) + +set(scripts "bin/c_rehash.pl" "misc/CA.pl" "misc/tsget.pl") +if("tools" IN_LIST FEATURES) + file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/tools/${PORT}") + file(RENAME "${CURRENT_PACKAGES_DIR}/openssl.cnf" "${CURRENT_PACKAGES_DIR}/tools/${PORT}/openssl.cnf") + foreach(script IN LISTS scripts) + file(COPY "${CURRENT_PACKAGES_DIR}/${script}" DESTINATION "${CURRENT_PACKAGES_DIR}/tools/${PORT}") + file(REMOVE "${CURRENT_PACKAGES_DIR}/${script}" "${CURRENT_PACKAGES_DIR}/debug/${script}") + endforeach() + vcpkg_copy_tools(TOOL_NAMES openssl AUTO_CLEAN) +else() + file(REMOVE "${CURRENT_PACKAGES_DIR}/openssl.cnf") + foreach(script IN LISTS scripts) + file(REMOVE "${CURRENT_PACKAGES_DIR}/${script}" "${CURRENT_PACKAGES_DIR}/debug/${script}") + endforeach() + if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") + file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/bin" "${CURRENT_PACKAGES_DIR}/debug/bin") + endif() +endif() + +vcpkg_copy_pdbs() + +file(REMOVE_RECURSE + "${CURRENT_PACKAGES_DIR}/certs" + "${CURRENT_PACKAGES_DIR}/misc" + "${CURRENT_PACKAGES_DIR}/private" + "${CURRENT_PACKAGES_DIR}/lib/engines-3" + "${CURRENT_PACKAGES_DIR}/debug/certs" + "${CURRENT_PACKAGES_DIR}/debug/misc" + "${CURRENT_PACKAGES_DIR}/debug/lib/engines-3" + "${CURRENT_PACKAGES_DIR}/debug/private" + "${CURRENT_PACKAGES_DIR}/debug/include" +) +file(REMOVE + "${CURRENT_PACKAGES_DIR}/ct_log_list.cnf" + "${CURRENT_PACKAGES_DIR}/ct_log_list.cnf.dist" + "${CURRENT_PACKAGES_DIR}/openssl.cnf.dist" + "${CURRENT_PACKAGES_DIR}/debug/ct_log_list.cnf" + "${CURRENT_PACKAGES_DIR}/debug/ct_log_list.cnf.dist" + "${CURRENT_PACKAGES_DIR}/debug/openssl.cnf" + "${CURRENT_PACKAGES_DIR}/debug/openssl.cnf.dist" +) diff --git a/patches/vcpkg-ports/xalan-c/fix-linux-no-bin.patch b/patches/vcpkg-ports/xalan-c/fix-linux-no-bin.patch deleted file mode 100644 index 3d468a1c5..000000000 --- a/patches/vcpkg-ports/xalan-c/fix-linux-no-bin.patch +++ /dev/null @@ -1,20 +0,0 @@ -diff --git a/src/xalanc/Utils/CMakeLists.txt b/src/xalanc/Utils/CMakeLists.txt -index 2d78685..72b611b 100644 ---- a/src/xalanc/Utils/CMakeLists.txt -+++ b/src/xalanc/Utils/CMakeLists.txt -@@ -41,11 +41,15 @@ add_custom_target(locale ALL) - set_target_properties(locale PROPERTIES FOLDER "Message Library") - - # workaround for case of missing xerces-c dll -+if(CMAKE_HOST_WIN32) - if(EXISTS ${XercesC_INCLUDE_DIR}/../bin) - set(MsgCreator_WD $/../bin) - else() - set(MsgCreator_WD "${XSL_NLS_GEN_DIR}") - endif() -+else() -+ set(MsgCreator_WD "${PROJECT_BINARY_DIR}") -+endif() - - if(msgloader STREQUAL "inmemory") - add_custom_command( diff --git a/patches/vcpkg-ports/xalan-c/fix-missing-dll-error.patch b/patches/vcpkg-ports/xalan-c/fix-missing-dll-error.patch deleted file mode 100644 index db49a2be6..000000000 --- a/patches/vcpkg-ports/xalan-c/fix-missing-dll-error.patch +++ /dev/null @@ -1,48 +0,0 @@ -diff --git a/src/xalanc/Utils/CMakeLists.txt b/src/xalanc/Utils/CMakeLists.txt -index dc39ad0..2d78685 100644 ---- a/src/xalanc/Utils/CMakeLists.txt -+++ b/src/xalanc/Utils/CMakeLists.txt -@@ -40,6 +40,13 @@ set(SUPPORTMSGINDEX "${GEN_SUPPORTDIR}/LocalMsgIndex.hpp") - add_custom_target(locale ALL) - set_target_properties(locale PROPERTIES FOLDER "Message Library") - -+# workaround for case of missing xerces-c dll -+if(EXISTS ${XercesC_INCLUDE_DIR}/../bin) -+ set(MsgCreator_WD $/../bin) -+else() -+ set(MsgCreator_WD "${XSL_NLS_GEN_DIR}") -+endif() -+ - if(msgloader STREQUAL "inmemory") - add_custom_command( - OUTPUT "${GENMSGINDEX}" -@@ -48,7 +55,8 @@ if(msgloader STREQUAL "inmemory") - "${XLIFF_FILE_NAME}" - -TYPE inmem - -LOCALE ${LOCALE} -- WORKING_DIRECTORY "${XSL_NLS_GEN_DIR}" -+ -OUTDIR "${XSL_NLS_GEN_DIR}" -+ WORKING_DIRECTORY "${MsgCreator_WD}" - COMMENT "Generating inmemory locale message data" - DEPENDS MsgCreator "${XLIFF_FILE_NAME}") - -@@ -92,7 +100,8 @@ if(msgloader STREQUAL "icu") - "${XLIFF_FILE_NAME}" - -TYPE icu - -LOCALE ${LOCALE} -- WORKING_DIRECTORY "${XSL_NLS_GEN_DIR}" -+ -OUTDIR "${XSL_NLS_GEN_DIR}" -+ WORKING_DIRECTORY "${MsgCreator_WD}" - COMMENT "Generating ICU locale message data" - DEPENDS MsgCreator "${XLIFF_FILE_NAME}") - -@@ -141,7 +150,8 @@ if(msgloader STREQUAL "nls") - "${XLIFF_FILE_NAME}" - -TYPE nls - -LOCALE ${LOCALE} -- WORKING_DIRECTORY "${XSL_NLS_GEN_DIR}" -+ -OUTDIR "${XSL_NLS_GEN_DIR}" -+ WORKING_DIRECTORY "${MsgCreator_WD}" - COMMENT "Generating nls locale message data" - DEPENDS MsgCreator "${XLIFF_FILE_NAME}") - diff --git a/patches/vcpkg-ports/xalan-c/fix-win-deprecated-err.patch b/patches/vcpkg-ports/xalan-c/fix-win-deprecated-err.patch deleted file mode 100644 index 1484f4e27..000000000 --- a/patches/vcpkg-ports/xalan-c/fix-win-deprecated-err.patch +++ /dev/null @@ -1,15 +0,0 @@ -diff --git a/src/xalanc/Utils/MsgCreator/CMakeLists.txt b/src/xalanc/Utils/MsgCreator/CMakeLists.txt -index 20215d4..dc74c1b 100644 ---- a/src/xalanc/Utils/MsgCreator/CMakeLists.txt -+++ b/src/xalanc/Utils/MsgCreator/CMakeLists.txt -@@ -37,6 +37,10 @@ set(msgcreator_headers - NLSHandler.hpp - SAX2Handler.hpp) - -+if(MSVC) -+ add_definitions(-D_CRT_SECURE_NO_WARNINGS=1) -+endif() -+ - add_executable(MsgCreator ${msgcreator_sources} ${msgcreator_headers}) - target_include_directories(MsgCreator PUBLIC - $ diff --git a/patches/vcpkg-ports/xalan-c/portfile.cmake b/patches/vcpkg-ports/xalan-c/portfile.cmake deleted file mode 100644 index 6fa5ca3ab..000000000 --- a/patches/vcpkg-ports/xalan-c/portfile.cmake +++ /dev/null @@ -1,40 +0,0 @@ -vcpkg_check_linkage(ONLY_DYNAMIC_LIBRARY) - -vcpkg_from_github( - OUT_SOURCE_PATH SOURCE_PATH - REPO apache/xalan-c - REF 4055bb0c58e3053b04fcd0c68fdcda8f84411213 #1.12 - SHA512 0d591f5a07dbc69050c7b696189c46a32e6dd7a80a302fd38dcc82f9454688729e361c4d5c3b0aacfc3acc7df78c0981ba54eb3ce82b1ca6566a30aa19648280 - PATCHES - fix-win-deprecated-err.patch - fix-missing-dll-error.patch - fix-linux-no-bin.patch -) - -vcpkg_configure_cmake( - SOURCE_PATH ${SOURCE_PATH} - PREFER_NINJA - OPTIONS -DCMAKE_DISABLE_FIND_PACKAGE_ICU=ON -) - -vcpkg_install_cmake() -vcpkg_copy_tools(TOOL_NAMES Xalan AUTO_CLEAN) - -if(EXISTS ${CURRENT_PACKAGES_DIR}/cmake) - vcpkg_fixup_cmake_targets(CONFIG_PATH cmake TARGET_PATH share/xalanc) -else() - vcpkg_fixup_cmake_targets(CONFIG_PATH lib/cmake/XalanC TARGET_PATH share/xalanc) -endif() - -# cleanup -file(REMOVE_RECURSE - ${CURRENT_PACKAGES_DIR}/debug/include - ${CURRENT_PACKAGES_DIR}/debug/share -) - -# Handle copyright -file(INSTALL ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright) - -vcpkg_copy_pdbs() - -vcpkg_fixup_pkgconfig() diff --git a/patches/vcpkg-ports/xalan-c/vcpkg.json b/patches/vcpkg-ports/xalan-c/vcpkg.json deleted file mode 100644 index 425d9bfd2..000000000 --- a/patches/vcpkg-ports/xalan-c/vcpkg.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "name": "xalan-c", - "version": "1.12", - "port-version": 1, - "description": "Xalan is an XSLT processor for transforming XML documents into HTML, text, or other XML document types", - "homepage": "https://github.com/apache/xalan-c", - "dependencies": [ - "xerces-c" - ] -} diff --git a/prepare_osx_build_environment.sh b/prepare_osx_build_environment.sh index 55e27baa8..e72788917 100755 --- a/prepare_osx_build_environment.sh +++ b/prepare_osx_build_environment.sh @@ -5,7 +5,7 @@ XERCES_DIR=xerces-c-3.2.4 XALAN_DIR=xalan_c-1.12 XMLSEC_DIR=xml-security-c-2.0.4 XSD=xsd-4.0.0-i686-macosx -OPENSSL_DIR=openssl-3.0.8 +OPENSSL_DIR=openssl-3.0.9 LIBXML2_DIR=libxml2-2.10.3 ANDROID_NDK=android-ndk-r25 FREETYPE_DIR=freetype-2.10.1 diff --git a/prepare_win_build_environment.ps1 b/prepare_win_build_environment.ps1 index 33145dbe5..8ad35fe18 100644 --- a/prepare_win_build_environment.ps1 +++ b/prepare_win_build_environment.ps1 @@ -1,33 +1,20 @@ -#powershell -ExecutionPolicy ByPass -File prepare_win_build_environment.ps1 [-openssl] [-xerces] [-xalan] [-xmlsec] [-xsd] [-zlib] +#powershell -ExecutionPolicy ByPass -File prepare_win_build_environment.ps1 [-dependencies] [-xsd] param( [string]$vcpkg = "vcpkg\vcpkg.exe", [string]$git = "git.exe", [string]$7zip = "C:\Program Files\7-Zip\7z.exe", [string]$toolset = "142", [string]$xsdver = "xsd-4.0.0-i686-windows", - [switch]$openssl = $false, - [switch]$xerces = $false, - [switch]$xalan = $false, - [switch]$xmlsec = $false, - [switch]$zlib = $false, [switch]$xsd = $false, - [switch]$freetype = $false, - [switch]$podofo = $false + [switch]$dependencies = $false ) -$env:VCPKG_OVERLAY_PORTS = "$PSScriptRoot\patches\vcpkg-ports" -$env:VCPKG_OVERLAY_TRIPLETS = "$PSScriptRoot\patches\vcpkg-triplets" - if(!(Test-Path -Path $vcpkg)) { $vcpkg_dir = (split-path -parent $vcpkg) & $git clone --depth 1 https://github.com/microsoft/vcpkg $vcpkg_dir & $vcpkg_dir\bootstrap-vcpkg.bat } -function vcpkg_install($package) { - & $vcpkg install "$($package):x86-windows-v$toolset" "$($package):x64-windows-v$toolset" -} - function xsd() { $client = new-object System.Net.WebClient $client.DownloadFile("http://www.codesynthesis.com/download/xsd/4.0/windows/i686/$xsdver.zip", "$PSScriptRoot\$xsdver.zip") @@ -35,35 +22,16 @@ function xsd() { Rename-Item $xsdver xsd } -if($openssl) { - vcpkg_install("openssl") -} -if($xerces) { - vcpkg_install("xerces-c") -} -if($xalan) { - vcpkg_install("xalan-c") -} -if($xmlsec) { - vcpkg_install("xml-security-c") -} if($xsd) { xsd } -if($zlib) { - vcpkg_install("zlib") -} -if($freetype) { - vcpkg_install("freetype") -} -if($podofo) { - vcpkg_install("podofo") + +if($dependencies) { + & $vcpkg install --clean-after-build --triplet x86-windows-v$toolset --x-feature=tests --x-install-root=vcpkg_installed_x86 + & $vcpkg install --clean-after-build --triplet x64-windows-v$toolset --x-feature=tests --x-install-root=vcpkg_installed_x64 } -if(!$openssl -and !$xerces -and !$xalan -and !$xmlsec -and !$xsd -and !$zlib -and !$freetype -and !$podofo) { - vcpkg_install("openssl") - vcpkg_install("xerces-c") - vcpkg_install("xalan-c") - vcpkg_install("xml-security-c") - vcpkg_install("zlib") + +if(!$xsd -and !$dependencies) { xsd } + diff --git a/vcpkg.json b/vcpkg.json new file mode 100644 index 000000000..ade0ef028 --- /dev/null +++ b/vcpkg.json @@ -0,0 +1,27 @@ +{ + "name": "libdigidocpp", + "version": "3.16.0", + "dependencies": [ + "xml-security-c", + "zlib" + ], + "features": { + "tests": { "description": "Build tests", "dependencies": ["boost-test"] } + }, + "builtin-baseline": "5787cfa699a75805ef41938ec66bc7492714d290", + "vcpkg-configuration": { + "overlay-triplets": ["./patches/vcpkg-triplets"], + "overlay-ports": [ + "patches/vcpkg-ports/openssl", + "patches/vcpkg-ports/xml-security-c" + ], + "registries": [ + { + "kind": "git", + "repository": "https://github.com/microsoft/vcpkg.git", + "baseline": "f32fc13dbef629b611fab9103d25e8d6c6ab9f6d", + "packages": [ "xalan-c" ] + } + ] + } +}