[Buildroot] [PATCH v12 06/11] package/libclc: bump version to 13.0.1

James Hilliard james.hilliard1 at gmail.com
Thu Mar 31 21:38:52 UTC 2022


On Thu, Mar 31, 2022 at 2:50 PM Romain Naour <romain.naour at gmail.com> wrote:
>
> Hi James,
>
> Le 23/03/2022 à 00:22, James Hilliard a écrit :
> > From: Matt Weber <matthew.weber at rockwellcollins.com>
> >
> > * Converts to the cmake pkg type
> >  * Updates download site
> >  * Adds a crosscompile fixups patch
> >    * Allow prepare_builtins utility to be directly called
> >      (it isn't installed into the path when cross compiling)
> >    * Fix file_find() for root search limitation
> >
> > Signed-off-by: Matthew Weber <matthew.weber at rockwellcollins.com>
> > Signed-off-by: James Hilliard <james.hilliard1 at gmail.com>
> > ---
> > Changes v11 -> v12:
> >   - update to 13.0.1 instead of 11.1.0
>
> libclc is part of llvm project, the same version than llvm/clang should be used
> here.

Doesn't seem to be required, just needs minimum 3.9.0:
https://github.com/llvm/llvm-project/blob/llvmorg-13.0.1/libclc/CMakeLists.txt#L33

>
> Ideally, llvm/clang should be updated to 13.0.1 first (or to the latest version
> if possible).

There were some issues with lld in anything newer than 11.1.0, see:
https://lore.kernel.org/buildroot/20220131015937.4113728-1-james.hilliard1@gmail.com/
https://bugs.llvm.org/show_bug.cgi?id=49228

So I held off on going beyond 11.1.0 for now due to that.

>
> >   - pass required host cmake options for C/CXX compilers
> > ---
> >  .../0001-support-out-of-tree-build.patch      | 71 +++++++++++++++++++
> >  package/libclc/libclc.hash                    |  2 +-
> >  package/libclc/libclc.mk                      | 56 +++++++--------
> >  3 files changed, 98 insertions(+), 31 deletions(-)
> >  create mode 100644 package/libclc/0001-support-out-of-tree-build.patch
> >
> > diff --git a/package/libclc/0001-support-out-of-tree-build.patch b/package/libclc/0001-support-out-of-tree-build.patch
> > new file mode 100644
> > index 0000000000..de7207bedb
> > --- /dev/null
> > +++ b/package/libclc/0001-support-out-of-tree-build.patch
> > @@ -0,0 +1,71 @@
> > +From 495491e9d53bfb184c15753b5187e4bb55b19511 Mon Sep 17 00:00:00 2001
> > +From: Matt Weber <matthew.weber at rockwellcollins.com>
> > +Date: Tue, 9 Mar 2021 15:55:17 -0600
> > +Subject: [PATCH] support out of tree build
> > +
> > +(1) The package has a prepare_builtins tool which is built
> > +but not placed in the path for later use in the build. This
> > +fix allows the later build steps to use the binary in-place.
> > +
> > +(2) With cmake, find_file() when used for non-host builds is
> > +limited by CMAKE_FIND_ROOT_PATH* scope.
> > +
> > +In $(HOST_DIR)/share/buildroot/toolchainfile.cmake we set the
> > +following target settings for CMAKE_FIND_ROOT_PATH* which
> > +limit the scope.
> > +set(CMAKE_FIND_ROOT_PATH "${RELOCATED_HOST_DIR}/aarch64-buildroot-linux-gnu/sysroot")
> > +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
> > +set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
> > +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
> > +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
> > +
> > +
> > +Signed-off-by: Matthew Weber <matthew.weber at rockwellcollins.com>
> > +---
> > + CMakeLists.txt                          | 2 +-
> > + cmake/CMakeDetermineCLCCompiler.cmake   | 4 ++++
> > + cmake/CMakeDetermineLLAsmCompiler.cmake | 4 ++++
> > + 3 files changed, 9 insertions(+), 1 deletion(-)
> > +
> > +diff --git a/CMakeLists.txt b/CMakeLists.txt
> > +index 9472f19..a784519 100644
> > +--- a/CMakeLists.txt
> > ++++ b/CMakeLists.txt
> > +@@ -279,7 +279,7 @@ foreach( t ${LIBCLC_TARGETS_TO_BUILD} )
> > +
> > +                     # Add prepare target
> > +                     add_custom_command( OUTPUT "${obj_suffix}"
> > +-                                        COMMAND prepare_builtins -o
> > ++                                        COMMAND ./prepare_builtins -o
> > +                                         "${obj_suffix}"
> > +                                         "builtins.opt.${obj_suffix}"
> > +                                         DEPENDS "opt.${obj_suffix}"
> > +diff --git a/cmake/CMakeDetermineCLCCompiler.cmake b/cmake/CMakeDetermineCLCCompiler.cmake
> > +index 94d85d9..5de6a48 100644
> > +--- a/cmake/CMakeDetermineCLCCompiler.cmake
> > ++++ b/cmake/CMakeDetermineCLCCompiler.cmake
> > +@@ -12,7 +12,7 @@ mark_as_advanced(CMAKE_CLC_ARCHIVE)
> > +
> > + set(CMAKE_CLC_COMPILER_ENV_VAR "CLC_COMPILER")
> > + set(CMAKE_CLC_ARCHIVE_ENV_VAR "CLC_LINKER")
> > +-find_file(clc_comp_in CMakeCLCCompiler.cmake.in PATHS ${CMAKE_ROOT}/Modules ${CMAKE_MODULE_PATH})
> > ++set(clc_comp_in "${CMAKE_MODULE_PATH}/CMakeCLCCompiler.cmake.in" )
> > + # configure all variables set in this file
> > + configure_file(${clc_comp_in} ${CMAKE_PLATFORM_INFO_DIR}/CMakeCLCCompiler.cmake @ONLY)
> > + mark_as_advanced(clc_comp_in)
> > +diff --git a/cmake/CMakeDetermineLLAsmCompiler.cmake b/cmake/CMakeDetermineLLAsmCompiler.cmake
> > +index 1c424c7..dd3bfb6 100644
> > +--- a/cmake/CMakeDetermineLLAsmCompiler.cmake
> > ++++ b/cmake/CMakeDetermineLLAsmCompiler.cmake
> > +@@ -18,7 +18,7 @@ mark_as_advanced(CMAKE_LLAsm_ARCHIVE)
> > + set(CMAKE_LLAsm_PREPROCESSOR_ENV_VAR "LL_PREPROCESSOR")
> > + set(CMAKE_LLAsm_COMPILER_ENV_VAR "LL_ASSEMBLER")
> > + set(CMAKE_LLAsm_ARCHIVE_ENV_VAR "LL_LINKER")
> > +-find_file(ll_comp_in CMakeLLAsmCompiler.cmake.in PATHS ${CMAKE_ROOT}/Modules ${CMAKE_MODULE_PATH})
> > ++set(ll_comp_in "${CMAKE_MODULE_PATH}/CMakeLLAsmCompiler.cmake.in" )
> > + # configure all variables set in this file
> > + configure_file(${ll_comp_in} ${CMAKE_PLATFORM_INFO_DIR}/CMakeLLAsmCompiler.cmake @ONLY)
> > + mark_as_advanced(ll_comp_in)
> > +--
> > +2.17.1
> > +
> > diff --git a/package/libclc/libclc.hash b/package/libclc/libclc.hash
> > index 2af64bc8e8..c496291d81 100644
> > --- a/package/libclc/libclc.hash
> > +++ b/package/libclc/libclc.hash
> > @@ -1,3 +1,3 @@
> >  # locally calculated
> > -sha256  54d7ae523aabf68d533011739d6c01546cae0c294442d0f44fd657c046cb707d  libclc-d1cbc92e2ceee59963f5c3a576382e5bba31f060-br1.tar.gz
> > +sha256  8f0213e52e2fcaca3dfcc438f05d0e15e9b3c96fd6b0994a802b267dc1047a1d  libclc-13.0.1.src.tar.xz
> >  sha256  3c536c052db9afd997809e38785c9f2a9e54e2892330fa7c5b438e18a7413479  LICENSE.TXT
> > diff --git a/package/libclc/libclc.mk b/package/libclc/libclc.mk
> > index 6fe8e10a77..5d246cf4f8 100644
> > --- a/package/libclc/libclc.mk
> > +++ b/package/libclc/libclc.mk
> > @@ -4,43 +4,39 @@
> >  #
> >  ################################################################################
> >
> > -# Use the latest commit from release_90 branch.
> > -LIBCLC_VERSION = d1cbc92e2ceee59963f5c3a576382e5bba31f060
> > -LIBCLC_SITE = https://github.com/llvm-mirror/libclc
> > -LIBCLC_SITE_METHOD = git
> > +LIBCLC_VERSION = 13.0.1
> > +LIBCLC_SITE = https://github.com/llvm/llvm-project/releases/download/llvmorg-$(LIBCLC_VERSION)
> > +LIBCLC_SOURCE = libclc-$(LIBCLC_VERSION).src.tar.xz
> >  LIBCLC_LICENSE = Apache-2.0 with exceptions or MIT
> >  LIBCLC_LICENSE_FILES = LICENSE.TXT
> >
> > -LIBCLC_DEPENDENCIES = host-clang host-llvm
> > +LIBCLC_DEPENDENCIES = host-clang host-llvm host-spirv-llvm-translator
> >  LIBCLC_INSTALL_STAGING = YES
> >
> > -# C++ compiler is used to build a small tool (prepare-builtins) for the host.
> > -# It must be built with the C++ compiler from the host.
> > +# CMAKE_*_COMPILER_FORCED=ON skips testing the tools and assumes
> > +# llvm-config provided values
> > +#
> > +# CMAKE_*_COMPILER has to be set to the host compiler to build a host
> > +# 'prepare_builtins' tool used during the build process
> >  #
> >  # The headers are installed in /usr/share and not /usr/include,
> >  # because they are needed at runtime on the target to build the OpenCL
> >  # kernels.
> >  LIBCLC_CONF_OPTS = \
> > -     --with-llvm-config=$(HOST_DIR)/usr/bin/llvm-config \
> > -     --prefix=/usr \
> > -     --includedir=/usr/share \
> > -     --pkgconfigdir=/usr/lib/pkgconfig \
> > -     --with-cxx-compiler=$(HOSTCXX_NOCCACHE)
> > -
> > -define LIBCLC_CONFIGURE_CMDS
> > -     (cd $(@D); $(TARGET_CONFIGURE_OPTS) ./configure.py $(LIBCLC_CONF_OPTS))
> > -endef
> > -
> > -define LIBCLC_BUILD_CMDS
> > -     $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)
> > -endef
> > -
> > -define LIBCLC_INSTALL_TARGET_CMDS
> > -     $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install
> > -endef
> > -
> > -define LIBCLC_INSTALL_STAGING_CMDS
> > -     $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) install
> > -endef
> > -
> > -$(eval $(generic-package))
> > +     -DCMAKE_SYSROOT="" \
> > +     -DCMAKE_C_COMPILER_FORCED=ON \
> > +     -DCMAKE_CXX_COMPILER_FORCED=ON \
> > +     -DCMAKE_CLC_COMPILER_FORCED=ON \
> > +     -DCMAKE_LLAsm_COMPILER_FORCED=ON \
> > +     -DCMAKE_INSTALL_DATADIR="share" \
> > +     -DCMAKE_FIND_ROOT_PATH="$(HOST_DIR)" \
> > +     -DCMAKE_C_FLAGS="$(HOST_CFLAGS)" \
> > +     -DCMAKE_CXX_FLAGS="$(HOST_CXXFLAGS)" \
> > +     -DCMAKE_EXE_LINKER_FLAGS="$(HOST_LDFLAGS)" \
> > +     -DCMAKE_SHARED_LINKER_FLAGS="$(HOST_LDFLAGS)" \
> > +     -DCMAKE_MODULE_LINKER_FLAGS="$(HOST_LDFLAGS)" \
> > +     -DCMAKE_C_COMPILER="$(CMAKE_HOST_C_COMPILER)" \
> > +     -DCMAKE_CXX_COMPILER="$(CMAKE_HOST_CXX_COMPILER)" \
> > +     -DLLVM_CONFIG="$(HOST_DIR)/bin/llvm-config"
>
> At least a comment about the issue with the cmake toolchain file is needed.
> I don't understand the libclc cmake and why this workaround is needed.

The cmake toolchain issue is not libclc specific, it's an issue for
anything that needs
to override a toolchain variable.

The host toolchain being needed for prepare_builtins is basically the
same as before
it's just that the build system was changed to cmake.

>
> Best regards,
> Romain
>
>
> > +
> > +$(eval $(cmake-package))
>



More information about the buildroot mailing list