Skip to content

Commit

Permalink
[Mac build] Build libxml2 on Mac
Browse files Browse the repository at this point in the history
* Turn the libxml2 version into an input so it only needs to be set once.
  • Loading branch information
Steelskin authored and compnerd committed Sep 5, 2024
1 parent c186853 commit fa5a84d
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 70 deletions.
4 changes: 4 additions & 0 deletions .github/workflows/build-toolchain.yml
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,7 @@ jobs:
ds2_revision: ${{ steps.context.outputs.ds2_revision }}
indexstore_db_revision: ${{ steps.context.outputs.indexstore_db_revision }}
libxml2_revision: ${{ steps.context.outputs.libxml2_revision }}
libxml2_version: ${{ steps.context.outputs.libxml2_version }}
llvm_project_revision: ${{ steps.context.outputs.llvm_project_revision }}
sourcekit_lsp_revision: ${{ steps.context.outputs.sourcekit_lsp_revision }}
swift_argument_parser_revision: ${{ steps.context.outputs.swift_argument_parser_revision }}
Expand Down Expand Up @@ -226,6 +227,7 @@ jobs:
repo manifest -r --suppress-upstream-revision --suppress-dest-branch -o - | sed -E 's,[[:space:]]+$,,' > stable.xml
fi
echo libxml2_version=2.11.5 >> ${GITHUB_OUTPUT}
echo curl_version=8.9.1 >> ${GITHUB_OUTPUT}
echo swift_toolchain_sqlite_version=3.46.0 >> ${GITHUB_OUTPUT}
echo swift_cmark_version=0.29.0.gfm.13 >> ${GITHUB_OUTPUT}
Expand Down Expand Up @@ -476,6 +478,7 @@ jobs:
ds2_revision: ${{ needs.context.outputs.ds2_revision }}
indexstore_db_revision: ${{ needs.context.outputs.indexstore_db_revision }}
libxml2_revision: ${{ needs.context.outputs.libxml2_revision }}
libxml2_version: ${{ needs.context.outputs.libxml2_version }}
llvm_project_revision: ${{ needs.context.outputs.llvm_project_revision }}
sourcekit_lsp_revision: ${{ needs.context.outputs.sourcekit_lsp_revision }}
swift_argument_parser_revision: ${{ needs.context.outputs.swift_argument_parser_revision }}
Expand Down Expand Up @@ -547,6 +550,7 @@ jobs:
ds2_revision: ${{ needs.context.outputs.ds2_revision }}
indexstore_db_revision: ${{ needs.context.outputs.indexstore_db_revision }}
libxml2_revision: ${{ needs.context.outputs.libxml2_revision }}
libxml2_version: ${{ needs.context.outputs.libxml2_version }}
llvm_project_revision: ${{ needs.context.outputs.llvm_project_revision }}
sourcekit_lsp_revision: ${{ needs.context.outputs.sourcekit_lsp_revision }}
swift_argument_parser_revision: ${{ needs.context.outputs.swift_argument_parser_revision }}
Expand Down
92 changes: 22 additions & 70 deletions .github/workflows/swift-toolchain.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,10 @@ on:
required: true
type: string

libxml2_version:
required: true
type: string

llvm_project_revision:
required: true
type: string
Expand Down Expand Up @@ -1215,69 +1219,11 @@ jobs:
path: ${{ github.workspace }}/BuildRoot/Library/curl-${{ inputs.curl_version }}/usr

libxml2:
# TODO: Build this on macOS or make an equivalent Mac-only job
if: inputs.build_os == 'Windows'
runs-on: ${{ inputs.default_build_runner }}

strategy:
fail-fast: false
matrix:
include:
- arch: amd64
cc: cl
cflags: ${{ inputs.WINDOWS_CMAKE_C_FLAGS }}
cxx: cl
cxxflags: ${{ inputs.WINDOWS_CMAKE_CXX_FLAGS }}
os: Windows
extra_flags:

- arch: arm64
cc: cl
cflags: ${{ inputs.WINDOWS_CMAKE_C_FLAGS }}
cxx: cl
cxxflags: ${{ inputs.WINDOWS_CMAKE_CXX_FLAGS }}
os: Windows
extra_flags:

- arch: x86
cc: cl
cflags: ${{ inputs.WINDOWS_CMAKE_C_FLAGS }}
cxx: cl
cxxflags: ${{ inputs.WINDOWS_CMAKE_CXX_FLAGS }}
os: Windows
extra_flags:

- arch: arm64
cc: clang
cflags: ${{ inputs.ANDROID_CMAKE_C_FLAGS }}
cxx: clang++
cxxflags: ${{ inputs.ANDROID_CMAKE_CXX_FLAGS }}
os: Android
extra_flags: -DCMAKE_ANDROID_API=${{ inputs.ANDROID_API_LEVEL }} -DCMAKE_ANDROID_ARCH_ABI=arm64-v8a

- arch: armv7
cc: clang
cflags: ${{ inputs.ANDROID_CMAKE_C_FLAGS }}
cxx: clang++
cxxflags: ${{ inputs.ANDROID_CMAKE_CXX_FLAGS }}
os: Android
extra_flags: -DCMAKE_ANDROID_API=${{ inputs.ANDROID_API_LEVEL }} -DCMAKE_ANDROID_ARCH_ABI=armeabi-v7a

- arch: i686
cc: clang
cflags: ${{ inputs.ANDROID_CMAKE_C_FLAGS }}
cxx: clang++
cxxflags: ${{ inputs.ANDROID_CMAKE_CXX_FLAGS }}
os: Android
extra_flags: -DCMAKE_ANDROID_API=${{ inputs.ANDROID_API_LEVEL }} -DCMAKE_ANDROID_ARCH_ABI=x86

- arch: x86_64
cc: clang
cflags: ${{ inputs.ANDROID_CMAKE_C_FLAGS }}
cxx: clang++
cxxflags: ${{ inputs.ANDROID_CMAKE_CXX_FLAGS }}
os: Android
extra_flags: -DCMAKE_ANDROID_API=${{ inputs.ANDROID_API_LEVEL }} -DCMAKE_ANDROID_ARCH_ABI=x86_64
matrix: ${{ fromJSON(inputs.target_matrix) }}

name: ${{ matrix.os }} ${{ matrix.arch }} libxml2

Expand All @@ -1295,6 +1241,9 @@ jobs:
components: 'Microsoft.VisualStudio.Component.VC.Tools.x86.x64;Microsoft.VisualStudio.Component.VC.Tools.ARM64'
arch: ${{ matrix.arch }}

- uses: seanmiddleditch/gha-setup-ninja@master
if: inputs.build_os == 'Darwin'

- name: Compute workspace hash
id: workspace_hash
shell: pwsh
Expand All @@ -1321,8 +1270,11 @@ jobs:

- name: Configure libxml2
run: |
$NDKPATH = cygpath -m ${{ steps.setup-ndk.outputs.ndk-path }}
cmake -B ${{ github.workspace }}/BinaryCache/libxml2-2.11.5 `
$NDKPATH = "${{ steps.setup-ndk.outputs.ndk-path }}"
if ( "${{ inputs.build_os }}" -eq "Windows" ) {
$NDKPATH = cygpath -m $NDKPATH
}
cmake -B ${{ github.workspace }}/BinaryCache/libxml2-${{ inputs.libxml2_version }} `
-D BUILD_SHARED_LIBS=NO `
-D CMAKE_BUILD_TYPE=Release `
-D CMAKE_C_COMPILER=${{ matrix.cc }} `
Expand All @@ -1332,7 +1284,7 @@ jobs:
-D CMAKE_CXX_COMPILER_LAUNCHER=sccache `
-D CMAKE_CXX_FLAGS="${{ matrix.cxxflags }}" `
-D CMAKE_MT=mt `
-D CMAKE_INSTALL_PREFIX=${{ github.workspace }}/BuildRoot/Library/libxml2-2.11.5/usr `
-D CMAKE_INSTALL_PREFIX=${{ github.workspace }}/BuildRoot/Library/libxml2-${{ inputs.libxml2_version }}/usr `
-D CMAKE_SYSTEM_NAME=${{ matrix.os }} `
${{ matrix.extra_flags }} `
-G Ninja `
Expand All @@ -1347,14 +1299,14 @@ jobs:
-D CMAKE_POSITION_INDEPENDENT_CODE=YES `
-D CMAKE_ANDROID_NDK=$NDKPATH
- name: Build libxml2
run: cmake --build ${{ github.workspace }}/BinaryCache/libxml2-2.11.5
run: cmake --build ${{ github.workspace }}/BinaryCache/libxml2-${{ inputs.libxml2_version }}
- name: Install libxml2
run: cmake --build ${{ github.workspace }}/BinaryCache/libxml2-2.11.5 --target install
run: cmake --build ${{ github.workspace }}/BinaryCache/libxml2-${{ inputs.libxml2_version }} --target install

- uses: actions/upload-artifact@v4
with:
name: libxml2-${{ matrix.os }}-${{ matrix.arch }}-2.11.5
path: ${{ github.workspace }}/BuildRoot/Library/libxml2-2.11.5/usr
name: libxml2-${{ matrix.os }}-${{ matrix.arch }}-${{ inputs.libxml2_version }}
path: ${{ github.workspace }}/BuildRoot/Library/libxml2-${{ inputs.libxml2_version }}/usr

stdlib:
# TODO: Build this on macOS or make an equivalent Mac-only job
Expand Down Expand Up @@ -1906,8 +1858,8 @@ jobs:
steps:
- uses: actions/download-artifact@v4
with:
name: libxml2-${{ matrix.os }}-${{ matrix.arch }}-2.11.5
path: ${{ github.workspace }}/BuildRoot/Library/libxml2-2.11.5/usr
name: libxml2-${{ matrix.os }}-${{ matrix.arch }}-${{ inputs.libxml2_version }}
path: ${{ github.workspace }}/BuildRoot/Library/libxml2-${{ inputs.libxml2_version }}/usr
- uses: actions/download-artifact@v4
with:
name: curl-${{ matrix.os }}-${{ matrix.arch }}-${{ inputs.curl_version }}
Expand Down Expand Up @@ -2135,8 +2087,8 @@ jobs:
-D _SwiftFoundationICU_SourceDIR=$SWIFT_FOUNDATION_ICU_SOURCE_DIR `
-D _SwiftCollections_SourceDIR=$SWIFT_COLLECTIONS_SOURCE_DIR `
-D LIBXML2_DEFINITIONS="${DEFINITION_FLAG}LIBXML_STATIC" `
-D LIBXML2_INCLUDE_DIR=${{ github.workspace }}/BuildRoot/Library/libxml2-2.11.5/usr/include/libxml2 `
-D LIBXML2_LIBRARY=${{ github.workspace }}/BuildRoot/Library/libxml2-2.11.5/usr/lib/$LIBXML `
-D LIBXML2_INCLUDE_DIR=${{ github.workspace }}/BuildRoot/Library/libxml2-${{ inputs.libxml2_version }}/usr/include/libxml2 `
-D LIBXML2_LIBRARY=${{ github.workspace }}/BuildRoot/Library/libxml2-${{ inputs.libxml2_version }}/usr/lib/$LIBXML `
-D ZLIB_ROOT=${{ github.workspace }}/BuildRoot/Library/zlib-${{ inputs.zlib_version }}/usr `
-D ZLIB_LIBRARY=${{ github.workspace }}/BuildRoot/Library/zlib-${{ inputs.zlib_version }}/usr/lib/$LIBZ `
-D SwiftFoundation_MACRO=${{ github.workspace }}/BinaryCache/Library/Developer/Toolchains/unknown-Asserts-development.xctoolchain/usr/bin
Expand Down

0 comments on commit fa5a84d

Please sign in to comment.