llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-github-workflow Author: llvmbot <details> <summary>Changes</summary> Backport 5ae71ec799917c67e9e72510e68831602fc60699 Requested by: @<!-- -->keith --- Full diff: https://github.com/llvm/llvm-project/pull/225481.diff 3 Files Affected: - (modified) .github/workflows/release-binaries.yml (+47) - (modified) clang/cmake/caches/Release.cmake (+1) - (modified) llvm/cmake/modules/FindLibXml2.cmake (+13-7) ``````````diff diff --git a/.github/workflows/release-binaries.yml b/.github/workflows/release-binaries.yml index 6d89a03f47e231..2d9b546bb1a161 100644 --- a/.github/workflows/release-binaries.yml +++ b/.github/workflows/release-binaries.yml @@ -258,6 +258,41 @@ jobs: fi echo "build-prefix=$build_prefix" >> $GITHUB_OUTPUT + - name: Build libxml2 (Linux) + if: runner.os == 'Linux' + env: + BUILD_PREFIX: ${{ steps.setup-stage.outputs.build-prefix }} + shell: bash + run: | + libxml2_prefix="$BUILD_PREFIX/libxml2-install" + libxml2_build_dir="$BUILD_PREFIX/libxml2-build" + libxml2_version=2.15.1 + libxml2_archive="libxml2-$libxml2_version.tar.xz" + libxml2_checksum=c008bac08fd5c7b4a87f7b8a71f283fa581d80d80ff8d2efd3b26224c39bc54c + + mkdir -p "$libxml2_build_dir" "$libxml2_prefix" + cd "$libxml2_build_dir" || exit + curl --fail --location --retry 3 \ + "https://download.gnome.org/sources/libxml2/2.15/$libxml2_archive" -o "$libxml2_archive" + echo "$libxml2_checksum $libxml2_archive" | sha256sum --check + tar -xf "$libxml2_archive" + + cmake -G Ninja -S "libxml2-$libxml2_version" -B build \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX="$libxml2_prefix" \ + -DCMAKE_INSTALL_LIBDIR=lib \ + -DBUILD_SHARED_LIBS=OFF \ + -DLIBXML2_WITH_ICU=OFF \ + -DLIBXML2_WITH_ICONV=OFF \ + -DLIBXML2_WITH_MODULES=OFF \ + -DLIBXML2_WITH_PROGRAMS=OFF \ + -DLIBXML2_WITH_TESTS=OFF \ + -DLIBXML2_WITH_ZLIB=ON + cmake --build build --parallel + cmake --install build --component development + + echo "PKG_CONFIG_PATH=$libxml2_prefix/lib/pkgconfig${PKG_CONFIG_PATH:+:$PKG_CONFIG_PATH}" >> "$GITHUB_ENV" + - name: Configure Linux/MacOS id: build if: runner.os != 'Windows' @@ -266,10 +301,22 @@ jobs: TARGET_CMAKE_FLAGS: ${{ needs.prepare.outputs.target-cmake-flags }} shell: bash run: | + libxml2_cmake_flags=() + if [ "$RUNNER_OS" = "Linux" ]; then + libxml2_prefix="$BUILD_PREFIX/libxml2-install" + for stage in "" BOOTSTRAP_ BOOTSTRAP_BOOTSTRAP_; do + libxml2_cmake_flags+=( + "-D${stage}LIBXML2_INCLUDE_DIR=$libxml2_prefix/include/libxml2" + "-D${stage}LIBXML2_LIBRARY=$libxml2_prefix/lib/libxml2.a" + "-D${stage}LIBXML2_STATIC_LIBRARY=$libxml2_prefix/lib/libxml2.a" + ) + done + fi # There were some issues on the ARM64 MacOS runners with trying to build x86 object, # so we need to set some extra cmake flags to disable this. cmake -G Ninja -S llvm -B "$BUILD_PREFIX/build" \ $TARGET_CMAKE_FLAGS \ + "${libxml2_cmake_flags[@]}" \ -C clang/cmake/caches/Release.cmake - name: Build Linux/MacOS diff --git a/clang/cmake/caches/Release.cmake b/clang/cmake/caches/Release.cmake index b0bc3ebfe5cb61..7279923c36b988 100644 --- a/clang/cmake/caches/Release.cmake +++ b/clang/cmake/caches/Release.cmake @@ -173,6 +173,7 @@ set_final_stage_var(CPACK_ARCHIVE_THREADS "0" STRING) set_final_stage_var(LLVM_USE_STATIC_ZSTD "ON" BOOL) if (${CMAKE_HOST_SYSTEM_NAME} MATCHES "Linux") + set_final_stage_var(LLVM_ENABLE_LIBXML2 "FORCE_ON" STRING) set_final_stage_var(LLVM_USE_STATIC_LIBXML2 "ON" BOOL) endif() diff --git a/llvm/cmake/modules/FindLibXml2.cmake b/llvm/cmake/modules/FindLibXml2.cmake index f3f761606260da..f78ff327afc176 100644 --- a/llvm/cmake/modules/FindLibXml2.cmake +++ b/llvm/cmake/modules/FindLibXml2.cmake @@ -75,12 +75,25 @@ find_package_handle_standard_args(LibXml2 ) if(LibXml2_FOUND) + # Static libraries need their transitive dependencies for linking. + set(LIBXML2_STATIC_DEPS) + foreach(lib IN LISTS PC_LIBXML_STATIC_LIBRARIES) + if(NOT lib STREQUAL "xml2") + list(APPEND LIBXML2_STATIC_DEPS ${lib}) + endif() + endforeach() + if(NOT TARGET LibXml2::LibXml2) add_library(LibXml2::LibXml2 UNKNOWN IMPORTED) set_target_properties(LibXml2::LibXml2 PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${LIBXML2_INCLUDE_DIR}" INTERFACE_COMPILE_OPTIONS "${LIBXML2_DEFINITIONS}" IMPORTED_LOCATION "${LIBXML2_LIBRARY}") + # A prefix containing only a static libxml2 also supplies the default target. + if(LIBXML2_LIBRARY STREQUAL LIBXML2_STATIC_LIBRARY) + set_property(TARGET LibXml2::LibXml2 PROPERTY + INTERFACE_LINK_LIBRARIES "${LIBXML2_STATIC_DEPS}") + endif() endif() if(LIBXML2_STATIC_LIBRARY AND NOT TARGET LibXml2::LibXml2Static) add_library(LibXml2::LibXml2Static STATIC IMPORTED) @@ -88,13 +101,6 @@ if(LibXml2_FOUND) INTERFACE_INCLUDE_DIRECTORIES "${LIBXML2_INCLUDE_DIR}" INTERFACE_COMPILE_OPTIONS "${LIBXML2_DEFINITIONS}" IMPORTED_LOCATION "${LIBXML2_STATIC_LIBRARY}") - # Static libraries need their transitive dependencies for linking. - set(LIBXML2_STATIC_DEPS) - foreach(lib IN LISTS PC_LIBXML_STATIC_LIBRARIES) - if(NOT lib STREQUAL "xml2") - list(APPEND LIBXML2_STATIC_DEPS ${lib}) - endif() - endforeach() if(LIBXML2_STATIC_DEPS) set_target_properties(LibXml2::LibXml2Static PROPERTIES INTERFACE_LINK_LIBRARIES "${LIBXML2_STATIC_DEPS}") `````````` </details> https://github.com/llvm/llvm-project/pull/225481 _______________________________________________ llvm-branch-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
