diff --git a/.github/workflows/windows-vcpkg.yml b/.github/workflows/windows-vcpkg.yml new file mode 100644 index 0000000000..aabc0ac3d3 --- /dev/null +++ b/.github/workflows/windows-vcpkg.yml @@ -0,0 +1,44 @@ +name: Vcpkg (Windows) + +on: + push: + branches: [ "1.7.x*" ] + +jobs: + build: + strategy: + matrix: + os: [windows-latest] + triplet: + - x64-windows + - x64-windows-static + - x64-windows-static-md + - x86-windows + - x86-windows-static + port: + - apr + - apr[core] + - apr[private-headers] + fail-fast: false + + name: "${{ matrix.port }}:${{ matrix.triplet }} on ${{ matrix.os }}" + # The CMake configure and build commands are platform agnostic and should work equally well on Windows or Mac. + # You can convert this to a matrix build if you need cross-platform coverage. + # See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix + runs-on: ${{ matrix.os }} + + env: + VCPKG_BINARY_SOURCES: "clear;x-gha,readwrite" + + steps: + - name: Export GitHub Actions cache environment variables + uses: actions/github-script@v7 + with: + script: | + core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || ''); + core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || ''); + + - uses: actions/checkout@v3 + + - name: Vcpkg Install + run: C:\vcpkg\vcpkg.exe install ${{ matrix.port }} --head --overlay-ports ${{ github.workspace }}\build\vcpkg --triplet ${{ matrix.triplet }} --enforce-port-checks diff --git a/build/vcpkg/apr/portfile.cmake b/build/vcpkg/apr/portfile.cmake new file mode 100644 index 0000000000..a0166c93b8 --- /dev/null +++ b/build/vcpkg/apr/portfile.cmake @@ -0,0 +1,53 @@ +set(VERSION 1.7.5) +# +# Modify REF to latest commit id from https://github.com/apache/apr +# Update SHA512 with actual SHA512 +# +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO apache/apr + REF 6445e8804008922f8018aa238aa4d6bba608c49a + SHA512 0 + HEAD_REF 1.7.x +) + +if (VCPKG_TARGET_IS_WINDOWS) + vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS + FEATURES + private-headers INSTALL_PRIVATE_H + ) + + string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "static" APR_BUILD_STATIC) + string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "dynamic" APR_BUILD_SHARED) + + if (FEATURE_MINIMAL_BUILD) + set(APU_USE_EXPAT OFF) + else() + set(APU_USE_EXPAT ON) + endif() + + vcpkg_cmake_configure( + SOURCE_PATH "${SOURCE_PATH}" + OPTIONS + -DAPR_BUILD_STATIC=${APR_BUILD_STATIC} + -DAPR_BUILD_SHARED=${APR_BUILD_SHARED} + -DAPR_BUILD_TESTAPR=OFF + -DINSTALL_PDB=OFF + -DAPR_INSTALL_PRIVATE_H=${INSTALL_PRIVATE_H} + ) + + vcpkg_cmake_install() + vcpkg_copy_pdbs() + vcpkg_cmake_config_fixup(PACKAGE_NAME "apr" + CONFIG_PATH "lib/cmake/apr") + + file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/share") +else() + # In development +endif() + +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") + +# Handle copyright +file(INSTALL "${SOURCE_PATH}/LICENSE" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright) + diff --git a/build/vcpkg/apr/vcpkg.json b/build/vcpkg/apr/vcpkg.json new file mode 100644 index 0000000000..cf044bbc27 --- /dev/null +++ b/build/vcpkg/apr/vcpkg.json @@ -0,0 +1,25 @@ +{ + "name": "apr", + "version": "1.7.5", + "port-version": 5, + "description": "The Apache Portable Runtime (APR) is a C library that forms a system portability layer that covers many operating systems.", + "homepage": "https://apr.apache.org/", + "supports": "!uwp", + "dependencies": [ + { + "name": "vcpkg-cmake", + "host": true, + "platform": "windows" + }, + { + "name": "vcpkg-cmake-config", + "host": true + } + ], + "features": { + "private-headers": { + "description": "Install non-standard files required for building Apache httpd" + } + }, + "default-features": [] +}