From: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH v4 02/11] package/llvm: enable target variant
Date: Sun, 1 Apr 2018 22:46:07 +0200 [thread overview]
Message-ID: <20180401224607.6c7e3722@windsurf> (raw)
In-Reply-To: <20180329113346.10367-3-valentin.korenblit@smile.fr>
Hello,
On Thu, 29 Mar 2018 13:33:37 +0200, Valentin Korenblit wrote:
> diff --git a/package/llvm/llvm.mk b/package/llvm/llvm.mk
> index 71fcaa2b8e..4e58c96e0f 100644
> --- a/package/llvm/llvm.mk
> +++ b/package/llvm/llvm.mk
> @@ -10,13 +10,16 @@ LLVM_SOURCE = llvm-$(LLVM_VERSION).src.tar.xz
> LLVM_LICENSE = NCSA
> LLVM_LICENSE_FILES = LICENSE.TXT
> LLVM_SUPPORTS_IN_SOURCE_BUILD = NO
> +LLVM_INSTALL_STAGING = YES
>
> # http://llvm.org/docs/GettingStarted.html#software
> # host-python: Python interpreter 2.7 or newer is required for builds and testing.
> # host-zlib: Optional, adds compression / uncompression capabilities to selected LLVM tools.
> HOST_LLVM_DEPENDENCIES = host-python host-zlib
> +LLVM_DEPENDENCIES = host-llvm zlib
>
> # Don't build clang libcxx libcxxabi lldb compiler-rt lld polly as llvm subprojects
> +#This flag assumes that projects are checked out side-by-side and not nested
And ? I also don't understand why this comment is added in PATCH 02 and
not PATCH 01.
> HOST_LLVM_CONF_OPTS += -DLLVM_ENABLE_PROJECTS=""
>
> # Disable CCACHE
> @@ -28,166 +31,238 @@ HOST_LLVM_CONF_OPTS += -DLLVM_BUILD_GLOBAL_ISEL=OFF
> # * Use "Unix Makefiles" generator for generating make-compatible parallel makefiles.
> # Ninja is not supported yet by Buildroot
> HOST_LLVM_CONF_OPTS += -G "Unix Makefiles"
> +LLVM_CONF_OPTS += -G "Unix Makefiles"
Same comment as for PATCH 01, do we really need to pass this
explicitly ? How do all other CMake packages in Buildroot work ?
> +# Use native llvm-tblgen from host-llvm (needed for cross-compilation)
> +LLVM_CONF_OPTS += -DLLVM_TABLEGEN=$(HOST_DIR)/usr/bin/llvm-tblgen
> +
> +# Copy llvm-config (host variant) to STAGING_DIR since llvm-config
> +# provided by llvm target variant can't run on the host.
> +# Also, llvm-config (host variant) returns include and lib directories
> +# for the host if it's installed in host/usr/bin:
> +# output/host/usr/bin/llvm-config --includedir
> +# output/host/usr/include
> +# When istalled in STAGING_DIR, llvm-config return include and lib
istalled -> installed
> +# directories from STAGING_DIR.
> +# output/staging/usr/bin/llvm-config --includedir
> +# output/staging/usr/include
> +define LLVM_COPY_LLVM_CONFIG_TO_STAGING_DIR
> + $(INSTALL) -D -m 0755 $(HOST_DIR)/usr/bin/llvm-config \
> + $(STAGING_DIR)/usr/bin/llvm-config
> +endef
> +LLVM_POST_INSTALL_STAGING_HOOKS = LLVM_COPY_LLVM_CONFIG_TO_STAGING_DIR
I don't understand why this is done as a post-install staging hook. Is
llvm-config build by host-llvm or llvm ? Is it needed for the build of
llvm, or for the build of stuff (like mesa3d) that will link against
the llvm library ?
> # * LLVM_BUILD_UTILS: Build LLVM utility binaries. If OFF, just generate build targets.
> +# Keep llvm utility binaries for the host. llvm-tblgen is built anyway as CMakeLists.txt
> +# has add_subdirectory(utils/TableGen) unconditionally.
> HOST_LLVM_CONF_OPTS += -DLLVM_BUILD_UTILS=ON
> +LLVM_CONF_OPTS += -DLLVM_BUILD_UTILS=OFF
Seeing all of this, I am not longer sure I like this per-option
explanations anymore.
Maybe something like:
# FOO_BAZ=ON, because ...
# BAZ_BAR=OFF, because ...
HOST_LLVM_CONF_OPTS = \
... \
...
# BAZ_BLEH=OFF, because ...
LLVM_CONF_OPTS = \
... \
...
And by having comments only for the interesting options, not only for
the obvious stuff.
> # * BUILD_SHARED_LIBS Build all libraries as shared libraries instead of static
> # It is only recommended to be used by LLVM developers.To build LLVM as a single
> # shared library, we should use the LLVM_BUILD_LLVM_DYLIB option.
I know this comment was already there in PATCH 01, but I believe a more
useful explanation would be:
BUILD_SHARED_LIBS has a misleading name. It is in fact an option for
LLVM developers to build all LLVM libraries are separate shared
libraries. For normal use of LLVM, it is recommended to build a single
shared library, which is achieved by BUILD_SHARED_LIBS=OFF and
LLVM_BUILD_LLVM_DYLIB=ON.
> # * CMAKE_BUILD_TYPE: Set build type Debug, Release, RelWithDebInfo, and MinSizeRel.
> # Default is Debug. Use the Release build which requires considerably less space.
> HOST_LLVM_CONF_OPTS += -DCMAKE_BUILD_TYPE=Release
> +LLVM_CONF_OPTS += -DCMAKE_BUILD_TYPE=Release
CMAKE_BUILD_TYPE for target package is already passed by the
cmake-package infrastructure, so you shouldn't override that.
> # Get target architecture
> HOST_LLVM_TARGET_ARCH = $(call qstrip,$(BR2_PACKAGE_LLVM_TARGET_ARCH))
>
> # Build backend for target architecture
> HOST_LLVM_CONF_OPTS += -DLLVM_TARGETS_TO_BUILD="$(HOST_LLVM_TARGET_ARCH)"
> +LLVM_CONF_OPTS += -DLLVM_TARGETS_TO_BUILD="$(HOST_LLVM_TARGET_ARCH)"
>
> # LLVM target to use for native code generation.
> HOST_LLVM_CONF_OPTS += -DLLVM_TARGET_ARCH=$(HOST_LLVM_TARGET_ARCH)
> +LLVM_CONF_OPTS += -DLLVM_TARGET_ARCH=$(HOST_LLVM_TARGET_ARCH)
Is there a difference between -DLLVM_TARGETS_TO_BUILD and
-DLLVM_TARGET_ARCH ? You pass the same value to both ?
> # * LLVM_ENABLE_CXX1Y: Compile with C++1y enabled OFF
> # Enable C++ and C++11 support if BR2_INSTALL_LIBSTDCPP=y
> HOST_LLVM_CONF_OPTS += -DLLVM_ENABLE_CXX1Y=$(if $(BR2_INSTALL_LIBSTDCPP),ON,OFF)
> +LLVM_CONF_OPTS += -DLLVM_ENABLE_CXX1Y=$(if $(BR2_INSTALL_LIBSTDCPP),ON,OFF)
This time, this line makes sense (for the target LLVM).
> # Builds a release tablegen that gets used during the LLVM build.
> HOST_LLVM_CONF_OPTS += -DLLVM_OPTIMIZED_TABLEGEN=ON
> +LLVM_CONF_OPTS += -DLLVM_OPTIMIZED_TABLEGEN=ON
You need to build tablegen in the target llvm ?
Thanks,
Thomas
--
Thomas Petazzoni, CTO, Bootlin (formerly Free Electrons)
Embedded Linux and Kernel engineering
https://bootlin.com
next prev parent reply other threads:[~2018-04-01 20:46 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-03-29 11:33 [Buildroot] [PATCH v4 00/11] llvm for mesa3d Valentin Korenblit
2018-03-29 11:33 ` [Buildroot] [PATCH v4 01/11] package/llvm: new host package Valentin Korenblit
2018-04-01 20:36 ` Thomas Petazzoni
2018-03-29 11:33 ` [Buildroot] [PATCH v4 02/11] package/llvm: enable target variant Valentin Korenblit
2018-04-01 20:46 ` Thomas Petazzoni [this message]
2018-04-01 22:50 ` Arnout Vandecappelle
2018-03-29 11:33 ` [Buildroot] [PATCH v4 03/11] package/llvm: enable AMDGPU Valentin Korenblit
2018-03-30 9:02 ` Thomas Petazzoni
2018-03-30 11:33 ` Valentin Korenblit
2018-03-30 18:08 ` Arnout Vandecappelle
2018-03-30 19:06 ` Thomas Petazzoni
2018-03-30 20:33 ` Valentin Korenblit
2018-04-01 20:47 ` Thomas Petazzoni
2018-03-29 11:33 ` [Buildroot] [PATCH v4 04/11] package/mesa3d: enable llvm support Valentin Korenblit
2018-04-01 20:53 ` Thomas Petazzoni
2018-04-02 10:05 ` Valentin Korenblit
2018-04-02 12:01 ` Thomas Petazzoni
2018-03-29 11:33 ` [Buildroot] [PATCH v4 05/11] package/llvm: enable ARM Valentin Korenblit
2018-04-01 20:53 ` Thomas Petazzoni
2018-03-29 11:33 ` [Buildroot] [PATCH v4 06/11] package/llvm: enable AArch64 Valentin Korenblit
2018-03-29 11:33 ` [Buildroot] [PATCH v4 07/11] package/clang: new host package Valentin Korenblit
2018-03-30 16:56 ` Matthew Weber
2018-03-30 20:24 ` Valentin Korenblit
2018-04-01 20:56 ` Thomas Petazzoni
2018-03-29 11:33 ` [Buildroot] [PATCH v4 08/11] package/clang: enable target variant Valentin Korenblit
2018-03-30 9:07 ` Thomas Petazzoni
2018-03-30 12:16 ` Valentin Korenblit
2018-03-30 12:37 ` Thomas Petazzoni
2018-03-30 17:58 ` Matthew Weber
2018-04-01 21:25 ` Thomas Petazzoni
2018-03-29 11:33 ` [Buildroot] [PATCH v4 09/11] package/libclc: new package Valentin Korenblit
2018-04-01 21:29 ` Thomas Petazzoni
2018-04-03 12:27 ` Valentin Korenblit
2018-04-03 15:17 ` Thomas Petazzoni
2018-04-03 16:26 ` Valentin Korenblit
2018-03-29 11:33 ` [Buildroot] [PATCH v4 10/11] package/mesa3d: enable OpenCL support Valentin Korenblit
2018-04-01 21:32 ` Thomas Petazzoni
2018-04-02 5:23 ` Erik Larsson
2018-04-02 6:51 ` Thomas Petazzoni
2018-04-02 10:36 ` Valentin Korenblit
2018-04-02 12:03 ` Thomas Petazzoni
2018-03-29 11:33 ` [Buildroot] [PATCH v4 11/11] package/clinfo: new package Valentin Korenblit
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180401224607.6c7e3722@windsurf \
--to=thomas.petazzoni@bootlin.com \
--cc=buildroot@busybox.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.