* [Buildroot] [RFC PATCH 0/3] package/llvm-project: drop debug info from the binary
@ 2025-06-26 11:16 Alex Bennée
2025-06-26 11:16 ` [Buildroot] [RFC PATCH 1/3] package/llvm-project: use ninja to build llvm libs Alex Bennée
` (2 more replies)
0 siblings, 3 replies; 14+ messages in thread
From: Alex Bennée @ 2025-06-26 11:16 UTC (permalink / raw)
To: buildroot
The llvm build directory is massive despite being a Release build.
This is caused by leakage from the default CMAKE flags. Clean up the
recipe to modernise it before finally reducing the build size by
overriding CXX_FLAGS and C_FLAGS for the CMake build.
Alex.
Alex Bennée (3):
package/llvm-project: use ninja to build llvm libs
package/llvm-project: drop unused TERMINFO config flags
package/llvm-project: reduce the build size of llvm
package/llvm-project/llvm/llvm.mk | 24 ++++++++++++++++--------
1 file changed, 16 insertions(+), 8 deletions(-)
--
2.47.2
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 14+ messages in thread
* [Buildroot] [RFC PATCH 1/3] package/llvm-project: use ninja to build llvm libs
2025-06-26 11:16 [Buildroot] [RFC PATCH 0/3] package/llvm-project: drop debug info from the binary Alex Bennée
@ 2025-06-26 11:16 ` Alex Bennée
2025-07-02 21:40 ` Romain Naour via buildroot
2025-06-26 11:16 ` [Buildroot] [RFC PATCH 2/3] package/llvm-project: drop unused TERMINFO config flags Alex Bennée
2025-06-26 11:16 ` [Buildroot] [RFC PATCH 3/3] package/llvm-project: reduce the build size of llvm Alex Bennée
2 siblings, 1 reply; 14+ messages in thread
From: Alex Bennée @ 2025-06-26 11:16 UTC (permalink / raw)
To: buildroot; +Cc: Joseph Kogut, Romain Naour, Daniel Lang, Valentin Korenblit
Using ninja is recommended as it is faster than the default GNU make
build method. Make the switch.
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
---
package/llvm-project/llvm/llvm.mk | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/package/llvm-project/llvm/llvm.mk b/package/llvm-project/llvm/llvm.mk
index 7552e3590c..8fe7d10fe0 100644
--- a/package/llvm-project/llvm/llvm.mk
+++ b/package/llvm-project/llvm/llvm.mk
@@ -13,8 +13,10 @@ LLVM_CPE_ID_VENDOR = llvm
LLVM_SUPPORTS_IN_SOURCE_BUILD = NO
LLVM_INSTALL_STAGING = YES
-HOST_LLVM_DEPENDENCIES = host-python3 host-llvm-cmake
-LLVM_DEPENDENCIES = host-llvm
+HOST_LLVM_DEPENDENCIES = host-python3 host-llvm-cmake host-ninja
+LLVM_DEPENDENCIES = host-llvm host-ninja
+
+LLVM_CMAKE_BACKEND = ninja
# Path to cmake modules from host-llvm-cmake
HOST_LLVM_CONF_OPTS += -DCMAKE_MODULE_PATH=$(HOST_DIR)/lib/cmake/llvm
@@ -166,8 +168,8 @@ LLVM_CONF_OPTS += -DLLVM_HAVE_TFLITE=""
# Default is Debug build, which requires considerably more disk space and
# build time. Release build is selected for host and target because the linker
# can run out of memory in Debug mode.
-HOST_LLVM_CONF_OPTS += -DCMAKE_BUILD_TYPE=Release
-LLVM_CONF_OPTS += -DCMAKE_BUILD_TYPE=Release
+HOST_LLVM_CONF_OPTS += -DCMAKE_BUILD_TYPE=Release -G Ninja
+LLVM_CONF_OPTS += -DCMAKE_BUILD_TYPE=Release -G Ninja
# Compile llvm with the C++14 (ISO C++ 2014 standard).
HOST_LLVM_CONF_OPTS += -DCMAKE_CXX_STANDARD=14
--
2.47.2
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [Buildroot] [RFC PATCH 2/3] package/llvm-project: drop unused TERMINFO config flags
2025-06-26 11:16 [Buildroot] [RFC PATCH 0/3] package/llvm-project: drop debug info from the binary Alex Bennée
2025-06-26 11:16 ` [Buildroot] [RFC PATCH 1/3] package/llvm-project: use ninja to build llvm libs Alex Bennée
@ 2025-06-26 11:16 ` Alex Bennée
2025-07-02 21:42 ` Romain Naour via buildroot
2025-06-26 11:16 ` [Buildroot] [RFC PATCH 3/3] package/llvm-project: reduce the build size of llvm Alex Bennée
2 siblings, 1 reply; 14+ messages in thread
From: Alex Bennée @ 2025-06-26 11:16 UTC (permalink / raw)
To: buildroot; +Cc: Joseph Kogut, Romain Naour, Daniel Lang, Valentin Korenblit
The build complains about these being unused so drop them.
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
---
package/llvm-project/llvm/llvm.mk | 4 ----
1 file changed, 4 deletions(-)
diff --git a/package/llvm-project/llvm/llvm.mk b/package/llvm-project/llvm/llvm.mk
index 8fe7d10fe0..78aa6fe467 100644
--- a/package/llvm-project/llvm/llvm.mk
+++ b/package/llvm-project/llvm/llvm.mk
@@ -133,10 +133,6 @@ LLVM_CONF_OPTS += -DENABLE_CRASH_OVERRIDES=ON
HOST_LLVM_CONF_OPTS += -DLLVM_ENABLE_FFI=OFF
LLVM_CONF_OPTS += -DLLVM_ENABLE_FFI=OFF
-# Disable terminfo database (needs ncurses libtinfo.so)
-HOST_LLVM_CONF_OPTS += -DLLVM_ENABLE_TERMINFO=OFF
-LLVM_CONF_OPTS += -DLLVM_ENABLE_TERMINFO=OFF
-
# Enable thread support
HOST_LLVM_CONF_OPTS += -DLLVM_ENABLE_THREADS=ON
LLVM_CONF_OPTS += -DLLVM_ENABLE_THREADS=ON
--
2.47.2
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [Buildroot] [RFC PATCH 3/3] package/llvm-project: reduce the build size of llvm
2025-06-26 11:16 [Buildroot] [RFC PATCH 0/3] package/llvm-project: drop debug info from the binary Alex Bennée
2025-06-26 11:16 ` [Buildroot] [RFC PATCH 1/3] package/llvm-project: use ninja to build llvm libs Alex Bennée
2025-06-26 11:16 ` [Buildroot] [RFC PATCH 2/3] package/llvm-project: drop unused TERMINFO config flags Alex Bennée
@ 2025-06-26 11:16 ` Alex Bennée
2025-07-02 22:37 ` Romain Naour via buildroot
2 siblings, 1 reply; 14+ messages in thread
From: Alex Bennée @ 2025-06-26 11:16 UTC (permalink / raw)
To: buildroot; +Cc: Joseph Kogut, Romain Naour, Daniel Lang, Valentin Korenblit
Although we request a Release build the default CMAKE flags in
toolchain.cmake include -Og -g3 which enables debug symbols for the
build inflating the overall size of things.
For now just copy those defaults into the project mk file and drop the
-Og and -g3 lines. This drops the size of the llvm build directory on
my arm64 build from 17Gb to a more reasonable 4.4Gb.
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
---
package/llvm-project/llvm/llvm.mk | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/package/llvm-project/llvm/llvm.mk b/package/llvm-project/llvm/llvm.mk
index 78aa6fe467..03684084c4 100644
--- a/package/llvm-project/llvm/llvm.mk
+++ b/package/llvm-project/llvm/llvm.mk
@@ -167,6 +167,16 @@ LLVM_CONF_OPTS += -DLLVM_HAVE_TFLITE=""
HOST_LLVM_CONF_OPTS += -DCMAKE_BUILD_TYPE=Release -G Ninja
LLVM_CONF_OPTS += -DCMAKE_BUILD_TYPE=Release -G Ninja
+# Reduce the opportunity for default [C|CXX]_FLAGS to fatten the build
+HOST_LLVM_CONF_OPTS += -DLLVM_ENABLE_ASSERTIONS=OFF
+LLVM_CONF_OPTS += -DLLVM_ENABLE_ASSERTIONS=OFF
+
+HOST_LLVM_CONF_OPTS += -DCMAKE_C_FLAGS="-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=1"
+LLVM_CONF_OPTS += -DCMAKE_C_FLAGS="-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=1"
+
+HOST_LLVM_CONF_OPTS += -DCMAKE_CXX_FLAGS="-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=1"
+LLVM_CONF_OPTS += -DCMAKE_CXX_FLAGS="-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=1"
+
# Compile llvm with the C++14 (ISO C++ 2014 standard).
HOST_LLVM_CONF_OPTS += -DCMAKE_CXX_STANDARD=14
LLVM_CONF_OPTS += -DCMAKE_CXX_STANDARD=14
--
2.47.2
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [Buildroot] [RFC PATCH 1/3] package/llvm-project: use ninja to build llvm libs
2025-06-26 11:16 ` [Buildroot] [RFC PATCH 1/3] package/llvm-project: use ninja to build llvm libs Alex Bennée
@ 2025-07-02 21:40 ` Romain Naour via buildroot
2026-02-04 16:11 ` Thomas Devoogdt
0 siblings, 1 reply; 14+ messages in thread
From: Romain Naour via buildroot @ 2025-07-02 21:40 UTC (permalink / raw)
To: Alex Bennée, buildroot
Cc: Joseph Kogut, Romain Naour, Daniel Lang, Valentin Korenblit
Hello Alex, All,
Le 26/06/2025 à 13:16, Alex Bennée a écrit :
> Using ninja is recommended as it is faster than the default GNU make
> build method. Make the switch.
Ninja is usually faster for incremental builds (for llvm developers [1]) but
since we usually use Buildroot for building target images from sources ninja may
not really faster than Make.
Since we add host-ninja in the dependencies, is really faster in the end?
Note: on some build machine with a recent enough cmake tool, the host-cmake is
not used.
[1] https://llvm.org/docs/GettingStarted.html
>
> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
> ---
> package/llvm-project/llvm/llvm.mk | 10 ++++++----
> 1 file changed, 6 insertions(+), 4 deletions(-)
>
> diff --git a/package/llvm-project/llvm/llvm.mk b/package/llvm-project/llvm/llvm.mk
> index 7552e3590c..8fe7d10fe0 100644
> --- a/package/llvm-project/llvm/llvm.mk
> +++ b/package/llvm-project/llvm/llvm.mk
> @@ -13,8 +13,10 @@ LLVM_CPE_ID_VENDOR = llvm
> LLVM_SUPPORTS_IN_SOURCE_BUILD = NO
> LLVM_INSTALL_STAGING = YES
>
> -HOST_LLVM_DEPENDENCIES = host-python3 host-llvm-cmake
> -LLVM_DEPENDENCIES = host-llvm
> +HOST_LLVM_DEPENDENCIES = host-python3 host-llvm-cmake host-ninja
> +LLVM_DEPENDENCIES = host-llvm host-ninja
> +
> +LLVM_CMAKE_BACKEND = ninja
What about other llvm-project related package such Clang?
Best regards,
Romain
>
> # Path to cmake modules from host-llvm-cmake
> HOST_LLVM_CONF_OPTS += -DCMAKE_MODULE_PATH=$(HOST_DIR)/lib/cmake/llvm
> @@ -166,8 +168,8 @@ LLVM_CONF_OPTS += -DLLVM_HAVE_TFLITE=""
> # Default is Debug build, which requires considerably more disk space and
> # build time. Release build is selected for host and target because the linker
> # can run out of memory in Debug mode.
> -HOST_LLVM_CONF_OPTS += -DCMAKE_BUILD_TYPE=Release
> -LLVM_CONF_OPTS += -DCMAKE_BUILD_TYPE=Release
> +HOST_LLVM_CONF_OPTS += -DCMAKE_BUILD_TYPE=Release -G Ninja
> +LLVM_CONF_OPTS += -DCMAKE_BUILD_TYPE=Release -G Ninja
>
> # Compile llvm with the C++14 (ISO C++ 2014 standard).
> HOST_LLVM_CONF_OPTS += -DCMAKE_CXX_STANDARD=14
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [Buildroot] [RFC PATCH 2/3] package/llvm-project: drop unused TERMINFO config flags
2025-06-26 11:16 ` [Buildroot] [RFC PATCH 2/3] package/llvm-project: drop unused TERMINFO config flags Alex Bennée
@ 2025-07-02 21:42 ` Romain Naour via buildroot
0 siblings, 0 replies; 14+ messages in thread
From: Romain Naour via buildroot @ 2025-07-02 21:42 UTC (permalink / raw)
To: Alex Bennée, buildroot
Cc: Joseph Kogut, Romain Naour, Daniel Lang, Valentin Korenblit
Hello Alex, All,
Le 26/06/2025 à 13:16, Alex Bennée a écrit :
> The build complains about these being unused so drop them.
>
> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Applied to master, thanks.
Best regards,
Romain
> ---
> package/llvm-project/llvm/llvm.mk | 4 ----
> 1 file changed, 4 deletions(-)
>
> diff --git a/package/llvm-project/llvm/llvm.mk b/package/llvm-project/llvm/llvm.mk
> index 8fe7d10fe0..78aa6fe467 100644
> --- a/package/llvm-project/llvm/llvm.mk
> +++ b/package/llvm-project/llvm/llvm.mk
> @@ -133,10 +133,6 @@ LLVM_CONF_OPTS += -DENABLE_CRASH_OVERRIDES=ON
> HOST_LLVM_CONF_OPTS += -DLLVM_ENABLE_FFI=OFF
> LLVM_CONF_OPTS += -DLLVM_ENABLE_FFI=OFF
>
> -# Disable terminfo database (needs ncurses libtinfo.so)
> -HOST_LLVM_CONF_OPTS += -DLLVM_ENABLE_TERMINFO=OFF
> -LLVM_CONF_OPTS += -DLLVM_ENABLE_TERMINFO=OFF
> -
> # Enable thread support
> HOST_LLVM_CONF_OPTS += -DLLVM_ENABLE_THREADS=ON
> LLVM_CONF_OPTS += -DLLVM_ENABLE_THREADS=ON
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [Buildroot] [RFC PATCH 3/3] package/llvm-project: reduce the build size of llvm
2025-06-26 11:16 ` [Buildroot] [RFC PATCH 3/3] package/llvm-project: reduce the build size of llvm Alex Bennée
@ 2025-07-02 22:37 ` Romain Naour via buildroot
2025-07-03 6:29 ` Alex Bennée
2025-07-03 6:44 ` Alex Bennée
0 siblings, 2 replies; 14+ messages in thread
From: Romain Naour via buildroot @ 2025-07-02 22:37 UTC (permalink / raw)
To: Alex Bennée, buildroot
Cc: Joseph Kogut, Romain Naour, Daniel Lang, Valentin Korenblit
Hello Alex, All,
Le 26/06/2025 à 13:16, Alex Bennée a écrit :
> Although we request a Release build the default CMAKE flags in
> toolchain.cmake include -Og -g3 which enables debug symbols for the
> build inflating the overall size of things.
By default, -O2 -g0 is used by Buildroot. If you have -Og -g3 in toolchain.cmake
generated by Buildroot, it means that BR2_ENABLE_DEBUG, BR2_DEBUG_3 and
BR2_OPTIMIZE_G have been selected in the Buildroot configuration (by the user).
>
> For now just copy those defaults into the project mk file and drop the
> -Og and -g3 lines. This drops the size of the llvm build directory on
> my arm64 build from 17Gb to a more reasonable 4.4Gb.
>
> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
> ---
> package/llvm-project/llvm/llvm.mk | 10 ++++++++++
> 1 file changed, 10 insertions(+)
>
> diff --git a/package/llvm-project/llvm/llvm.mk b/package/llvm-project/llvm/llvm.mk
> index 78aa6fe467..03684084c4 100644
> --- a/package/llvm-project/llvm/llvm.mk
> +++ b/package/llvm-project/llvm/llvm.mk
> @@ -167,6 +167,16 @@ LLVM_CONF_OPTS += -DLLVM_HAVE_TFLITE=""
> HOST_LLVM_CONF_OPTS += -DCMAKE_BUILD_TYPE=Release -G Ninja
> LLVM_CONF_OPTS += -DCMAKE_BUILD_TYPE=Release -G Ninja
>
> +# Reduce the opportunity for default [C|CXX]_FLAGS to fatten the build
> +HOST_LLVM_CONF_OPTS += -DLLVM_ENABLE_ASSERTIONS=OFF
> +LLVM_CONF_OPTS += -DLLVM_ENABLE_ASSERTIONS=OFF
>
LLVM_ENABLE_ASSERTIONS is OFF by default exept for debug builds.
+
> +HOST_LLVM_CONF_OPTS += -DCMAKE_C_FLAGS="-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=1"
> +LLVM_CONF_OPTS += -DCMAKE_C_FLAGS="-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=1"
> +
> +HOST_LLVM_CONF_OPTS += -DCMAKE_CXX_FLAGS="-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=1"
> +LLVM_CONF_OPTS += -DCMAKE_CXX_FLAGS="-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=1"
I'm not sure about this change, since it also change for other BR2_OPTIMIZE_x
options and when BR2_ENABLE_DEBUG is disabled. We want to keep the optimization
level selected by the user.
What about something like kexec package [1] to force the optimization level to a
minimum?
I remember (back in 2018) llvm crashing with Debug build type, that's why it's
forced to Release type but the default build options were used (-O2 -g0).
[1]
https://gitlab.com/buildroot.org/buildroot/-/blob/master/package/kexec/kexec.mk?ref_type=heads#L23
Best regards,
Romain
> +
> # Compile llvm with the C++14 (ISO C++ 2014 standard).
> HOST_LLVM_CONF_OPTS += -DCMAKE_CXX_STANDARD=14
> LLVM_CONF_OPTS += -DCMAKE_CXX_STANDARD=14
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [Buildroot] [RFC PATCH 3/3] package/llvm-project: reduce the build size of llvm
2025-07-02 22:37 ` Romain Naour via buildroot
@ 2025-07-03 6:29 ` Alex Bennée
2025-07-03 6:44 ` Alex Bennée
1 sibling, 0 replies; 14+ messages in thread
From: Alex Bennée @ 2025-07-03 6:29 UTC (permalink / raw)
To: Romain Naour
Cc: buildroot, Joseph Kogut, Romain Naour, Daniel Lang,
Valentin Korenblit
Romain Naour <romain.naour@smile.fr> writes:
> Hello Alex, All,
>
> Le 26/06/2025 à 13:16, Alex Bennée a écrit :
>> Although we request a Release build the default CMAKE flags in
>> toolchain.cmake include -Og -g3 which enables debug symbols for the
>> build inflating the overall size of things.
>
> By default, -O2 -g0 is used by Buildroot. If you have -Og -g3 in toolchain.cmake
> generated by Buildroot, it means that BR2_ENABLE_DEBUG, BR2_DEBUG_3 and
> BR2_OPTIMIZE_G have been selected in the Buildroot configuration (by
> the user).
Ahh yes - I didn't realise there was a global debug setting that was on
in my config. I'll re-test without the patches and check the build size.
>
>>
>> For now just copy those defaults into the project mk file and drop the
>> -Og and -g3 lines. This drops the size of the llvm build directory on
>> my arm64 build from 17Gb to a more reasonable 4.4Gb.
>>
>> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
>> ---
>> package/llvm-project/llvm/llvm.mk | 10 ++++++++++
>> 1 file changed, 10 insertions(+)
>>
>> diff --git a/package/llvm-project/llvm/llvm.mk b/package/llvm-project/llvm/llvm.mk
>> index 78aa6fe467..03684084c4 100644
>> --- a/package/llvm-project/llvm/llvm.mk
>> +++ b/package/llvm-project/llvm/llvm.mk
>> @@ -167,6 +167,16 @@ LLVM_CONF_OPTS += -DLLVM_HAVE_TFLITE=""
>> HOST_LLVM_CONF_OPTS += -DCMAKE_BUILD_TYPE=Release -G Ninja
>> LLVM_CONF_OPTS += -DCMAKE_BUILD_TYPE=Release -G Ninja
>>
>> +# Reduce the opportunity for default [C|CXX]_FLAGS to fatten the build
>> +HOST_LLVM_CONF_OPTS += -DLLVM_ENABLE_ASSERTIONS=OFF
>> +LLVM_CONF_OPTS += -DLLVM_ENABLE_ASSERTIONS=OFF
>>
> LLVM_ENABLE_ASSERTIONS is OFF by default exept for debug builds.
>
> +
>> +HOST_LLVM_CONF_OPTS += -DCMAKE_C_FLAGS="-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=1"
>> +LLVM_CONF_OPTS += -DCMAKE_C_FLAGS="-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=1"
>> +
>> +HOST_LLVM_CONF_OPTS += -DCMAKE_CXX_FLAGS="-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=1"
>> +LLVM_CONF_OPTS += -DCMAKE_CXX_FLAGS="-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=1"
>
> I'm not sure about this change, since it also change for other BR2_OPTIMIZE_x
> options and when BR2_ENABLE_DEBUG is disabled. We want to keep the optimization
> level selected by the user.
>
> What about something like kexec package [1] to force the optimization level to a
> minimum?
>
> I remember (back in 2018) llvm crashing with Debug build type, that's why it's
> forced to Release type but the default build options were used (-O2 -g0).
>
> [1]
> https://gitlab.com/buildroot.org/buildroot/-/blob/master/package/kexec/kexec.mk?ref_type=heads#L23
>
> Best regards,
> Romain
>
>
>> +
>> # Compile llvm with the C++14 (ISO C++ 2014 standard).
>> HOST_LLVM_CONF_OPTS += -DCMAKE_CXX_STANDARD=14
>> LLVM_CONF_OPTS += -DCMAKE_CXX_STANDARD=14
--
Alex Bennée
Virtualisation Tech Lead @ Linaro
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [Buildroot] [RFC PATCH 3/3] package/llvm-project: reduce the build size of llvm
2025-07-02 22:37 ` Romain Naour via buildroot
2025-07-03 6:29 ` Alex Bennée
@ 2025-07-03 6:44 ` Alex Bennée
2025-07-03 11:09 ` Romain Naour via buildroot
1 sibling, 1 reply; 14+ messages in thread
From: Alex Bennée @ 2025-07-03 6:44 UTC (permalink / raw)
To: Romain Naour
Cc: buildroot, Joseph Kogut, Romain Naour, Daniel Lang,
Valentin Korenblit
Romain Naour <romain.naour@smile.fr> writes:
> Hello Alex, All,
>
> Le 26/06/2025 à 13:16, Alex Bennée a écrit :
>> Although we request a Release build the default CMAKE flags in
>> toolchain.cmake include -Og -g3 which enables debug symbols for the
>> build inflating the overall size of things.
>
> By default, -O2 -g0 is used by Buildroot. If you have -Og -g3 in toolchain.cmake
> generated by Buildroot, it means that BR2_ENABLE_DEBUG, BR2_DEBUG_3 and
> BR2_OPTIMIZE_G have been selected in the Buildroot configuration (by
> the user).
Where is the logic that sets this? Because:
➜ ag DEBUG .config
179:BR2_TOOLCHAIN_HAS_THREADS_DEBUG=y
306:# BR2_ENABLE_DEBUG is not set
307:# BR2_ENABLE_RUNTIME_DEBUG is not set
4146:# BR2_PACKAGE_OPENPOWERLINK_DEBUG_LEVEL is not set
But:
➜ ag "Buildroot CFLAGS" ./host/share/buildroot/toolchainfile.cmake
57: set(CMAKE_C_FLAGS "-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Og -g3 -D_FORTIFY_SOURCE=1" CACHE STRING "Buildroot CFLAGS")
>
>>
>> For now just copy those defaults into the project mk file and drop the
>> -Og and -g3 lines. This drops the size of the llvm build directory on
>> my arm64 build from 17Gb to a more reasonable 4.4Gb.
>>
>> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
>> ---
>> package/llvm-project/llvm/llvm.mk | 10 ++++++++++
>> 1 file changed, 10 insertions(+)
>>
>> diff --git a/package/llvm-project/llvm/llvm.mk b/package/llvm-project/llvm/llvm.mk
>> index 78aa6fe467..03684084c4 100644
>> --- a/package/llvm-project/llvm/llvm.mk
>> +++ b/package/llvm-project/llvm/llvm.mk
>> @@ -167,6 +167,16 @@ LLVM_CONF_OPTS += -DLLVM_HAVE_TFLITE=""
>> HOST_LLVM_CONF_OPTS += -DCMAKE_BUILD_TYPE=Release -G Ninja
>> LLVM_CONF_OPTS += -DCMAKE_BUILD_TYPE=Release -G Ninja
>>
>> +# Reduce the opportunity for default [C|CXX]_FLAGS to fatten the build
>> +HOST_LLVM_CONF_OPTS += -DLLVM_ENABLE_ASSERTIONS=OFF
>> +LLVM_CONF_OPTS += -DLLVM_ENABLE_ASSERTIONS=OFF
>>
> LLVM_ENABLE_ASSERTIONS is OFF by default exept for debug builds.
>
> +
>> +HOST_LLVM_CONF_OPTS += -DCMAKE_C_FLAGS="-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=1"
>> +LLVM_CONF_OPTS += -DCMAKE_C_FLAGS="-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=1"
>> +
>> +HOST_LLVM_CONF_OPTS += -DCMAKE_CXX_FLAGS="-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=1"
>> +LLVM_CONF_OPTS += -DCMAKE_CXX_FLAGS="-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=1"
>
> I'm not sure about this change, since it also change for other BR2_OPTIMIZE_x
> options and when BR2_ENABLE_DEBUG is disabled. We want to keep the optimization
> level selected by the user.
>
> What about something like kexec package [1] to force the optimization level to a
> minimum?
>
> I remember (back in 2018) llvm crashing with Debug build type, that's why it's
> forced to Release type but the default build options were used (-O2 -g0).
>
> [1]
> https://gitlab.com/buildroot.org/buildroot/-/blob/master/package/kexec/kexec.mk?ref_type=heads#L23
>
> Best regards,
> Romain
>
>
>> +
>> # Compile llvm with the C++14 (ISO C++ 2014 standard).
>> HOST_LLVM_CONF_OPTS += -DCMAKE_CXX_STANDARD=14
>> LLVM_CONF_OPTS += -DCMAKE_CXX_STANDARD=14
--
Alex Bennée
Virtualisation Tech Lead @ Linaro
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [Buildroot] [RFC PATCH 3/3] package/llvm-project: reduce the build size of llvm
2025-07-03 6:44 ` Alex Bennée
@ 2025-07-03 11:09 ` Romain Naour via buildroot
2025-07-03 11:16 ` Romain Naour via buildroot
0 siblings, 1 reply; 14+ messages in thread
From: Romain Naour via buildroot @ 2025-07-03 11:09 UTC (permalink / raw)
To: Alex Bennée
Cc: buildroot, Joseph Kogut, Romain Naour, Daniel Lang,
Valentin Korenblit
Le 03/07/2025 à 08:44, Alex Bennée a écrit :
> Romain Naour <romain.naour@smile.fr> writes:
>
>> Hello Alex, All,
>>
>> Le 26/06/2025 à 13:16, Alex Bennée a écrit :
>>> Although we request a Release build the default CMAKE flags in
>>> toolchain.cmake include -Og -g3 which enables debug symbols for the
>>> build inflating the overall size of things.
>>
>> By default, -O2 -g0 is used by Buildroot. If you have -Og -g3 in toolchain.cmake
>> generated by Buildroot, it means that BR2_ENABLE_DEBUG, BR2_DEBUG_3 and
>> BR2_OPTIMIZE_G have been selected in the Buildroot configuration (by
>> the user).
>
> Where is the logic that sets this? Because:
>
> ➜ ag DEBUG .config
> 179:BR2_TOOLCHAIN_HAS_THREADS_DEBUG=y
> 306:# BR2_ENABLE_DEBUG is not set
> 307:# BR2_ENABLE_RUNTIME_DEBUG is not set
> 4146:# BR2_PACKAGE_OPENPOWERLINK_DEBUG_LEVEL is not set
>
> But:
>
> ➜ ag "Buildroot CFLAGS" ./host/share/buildroot/toolchainfile.cmake
> 57: set(CMAKE_C_FLAGS "-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Og -g3 -D_FORTIFY_SOURCE=1" CACHE STRING "Buildroot CFLAGS")
It's weird indeed. I had to use BR2_ENABLE_DEBUG, BR2_DEBUG_3 and BR2_OPTIMIZE_G
to get the same optimization level than you. Otherwise -O2 -g0 is used.
Can you share a Buildroot defconfig able to reproduce this issue?
Best regards,
Romain
>
>>
>>>
>>> For now just copy those defaults into the project mk file and drop the
>>> -Og and -g3 lines. This drops the size of the llvm build directory on
>>> my arm64 build from 17Gb to a more reasonable 4.4Gb.
>>>
>>> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
>>> ---
>>> package/llvm-project/llvm/llvm.mk | 10 ++++++++++
>>> 1 file changed, 10 insertions(+)
>>>
>>> diff --git a/package/llvm-project/llvm/llvm.mk b/package/llvm-project/llvm/llvm.mk
>>> index 78aa6fe467..03684084c4 100644
>>> --- a/package/llvm-project/llvm/llvm.mk
>>> +++ b/package/llvm-project/llvm/llvm.mk
>>> @@ -167,6 +167,16 @@ LLVM_CONF_OPTS += -DLLVM_HAVE_TFLITE=""
>>> HOST_LLVM_CONF_OPTS += -DCMAKE_BUILD_TYPE=Release -G Ninja
>>> LLVM_CONF_OPTS += -DCMAKE_BUILD_TYPE=Release -G Ninja
>>>
>>> +# Reduce the opportunity for default [C|CXX]_FLAGS to fatten the build
>>> +HOST_LLVM_CONF_OPTS += -DLLVM_ENABLE_ASSERTIONS=OFF
>>> +LLVM_CONF_OPTS += -DLLVM_ENABLE_ASSERTIONS=OFF
>>>
>> LLVM_ENABLE_ASSERTIONS is OFF by default exept for debug builds.
>>
>> +
>>> +HOST_LLVM_CONF_OPTS += -DCMAKE_C_FLAGS="-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=1"
>>> +LLVM_CONF_OPTS += -DCMAKE_C_FLAGS="-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=1"
>>> +
>>> +HOST_LLVM_CONF_OPTS += -DCMAKE_CXX_FLAGS="-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=1"
>>> +LLVM_CONF_OPTS += -DCMAKE_CXX_FLAGS="-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=1"
>>
>> I'm not sure about this change, since it also change for other BR2_OPTIMIZE_x
>> options and when BR2_ENABLE_DEBUG is disabled. We want to keep the optimization
>> level selected by the user.
>>
>> What about something like kexec package [1] to force the optimization level to a
>> minimum?
>>
>> I remember (back in 2018) llvm crashing with Debug build type, that's why it's
>> forced to Release type but the default build options were used (-O2 -g0).
>>
>> [1]
>> https://gitlab.com/buildroot.org/buildroot/-/blob/master/package/kexec/kexec.mk?ref_type=heads#L23
>>
>> Best regards,
>> Romain
>>
>>
>>> +
>>> # Compile llvm with the C++14 (ISO C++ 2014 standard).
>>> HOST_LLVM_CONF_OPTS += -DCMAKE_CXX_STANDARD=14
>>> LLVM_CONF_OPTS += -DCMAKE_CXX_STANDARD=14
>
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [Buildroot] [RFC PATCH 3/3] package/llvm-project: reduce the build size of llvm
2025-07-03 11:09 ` Romain Naour via buildroot
@ 2025-07-03 11:16 ` Romain Naour via buildroot
2025-07-04 11:37 ` Alex Bennée
0 siblings, 1 reply; 14+ messages in thread
From: Romain Naour via buildroot @ 2025-07-03 11:16 UTC (permalink / raw)
To: Alex Bennée
Cc: buildroot, Joseph Kogut, Romain Naour, Daniel Lang,
Valentin Korenblit
Le 03/07/2025 à 13:09, Romain Naour a écrit :
> Le 03/07/2025 à 08:44, Alex Bennée a écrit :
>> Romain Naour <romain.naour@smile.fr> writes:
>>
>>> Hello Alex, All,
>>>
>>> Le 26/06/2025 à 13:16, Alex Bennée a écrit :
>>>> Although we request a Release build the default CMAKE flags in
>>>> toolchain.cmake include -Og -g3 which enables debug symbols for the
>>>> build inflating the overall size of things.
>>>
>>> By default, -O2 -g0 is used by Buildroot. If you have -Og -g3 in toolchain.cmake
>>> generated by Buildroot, it means that BR2_ENABLE_DEBUG, BR2_DEBUG_3 and
>>> BR2_OPTIMIZE_G have been selected in the Buildroot configuration (by
>>> the user).
>>
>> Where is the logic that sets this? Because:
>>
>> ➜ ag DEBUG .config
>> 179:BR2_TOOLCHAIN_HAS_THREADS_DEBUG=y
>> 306:# BR2_ENABLE_DEBUG is not set
>> 307:# BR2_ENABLE_RUNTIME_DEBUG is not set
>> 4146:# BR2_PACKAGE_OPENPOWERLINK_DEBUG_LEVEL is not set
>>
>> But:
>>
>> ➜ ag "Buildroot CFLAGS" ./host/share/buildroot/toolchainfile.cmake
>> 57: set(CMAKE_C_FLAGS "-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Og -g3 -D_FORTIFY_SOURCE=1" CACHE STRING "Buildroot CFLAGS")
>
> It's weird indeed. I had to use BR2_ENABLE_DEBUG, BR2_DEBUG_3 and BR2_OPTIMIZE_G
> to get the same optimization level than you. Otherwise -O2 -g0 is used.
>
> Can you share a Buildroot defconfig able to reproduce this issue?
Note:
./host/share/buildroot/toolchainfile.cmake is generated by the toolchain package
as post install staging hook:
see:
TOOLCHAIN_POST_INSTALL_STAGING_HOOKS += TOOLCHAIN_CMAKE_INSTALL_FILES
If the toolchainfile.cmake file was generated with BR2_ENABLE_DEBUG, BR2_DEBUG_3
and BR2_OPTIMIZE_G set but this setting was updated after, it means you have to
do a new build. Buildroot doesn't detect such change and a new build from
scratch is needed.
Best regards,
Romain
>
> Best regards,
> Romain
>
>
>>
>>>
>>>>
>>>> For now just copy those defaults into the project mk file and drop the
>>>> -Og and -g3 lines. This drops the size of the llvm build directory on
>>>> my arm64 build from 17Gb to a more reasonable 4.4Gb.
>>>>
>>>> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
>>>> ---
>>>> package/llvm-project/llvm/llvm.mk | 10 ++++++++++
>>>> 1 file changed, 10 insertions(+)
>>>>
>>>> diff --git a/package/llvm-project/llvm/llvm.mk b/package/llvm-project/llvm/llvm.mk
>>>> index 78aa6fe467..03684084c4 100644
>>>> --- a/package/llvm-project/llvm/llvm.mk
>>>> +++ b/package/llvm-project/llvm/llvm.mk
>>>> @@ -167,6 +167,16 @@ LLVM_CONF_OPTS += -DLLVM_HAVE_TFLITE=""
>>>> HOST_LLVM_CONF_OPTS += -DCMAKE_BUILD_TYPE=Release -G Ninja
>>>> LLVM_CONF_OPTS += -DCMAKE_BUILD_TYPE=Release -G Ninja
>>>>
>>>> +# Reduce the opportunity for default [C|CXX]_FLAGS to fatten the build
>>>> +HOST_LLVM_CONF_OPTS += -DLLVM_ENABLE_ASSERTIONS=OFF
>>>> +LLVM_CONF_OPTS += -DLLVM_ENABLE_ASSERTIONS=OFF
>>>>
>>> LLVM_ENABLE_ASSERTIONS is OFF by default exept for debug builds.
>>>
>>> +
>>>> +HOST_LLVM_CONF_OPTS += -DCMAKE_C_FLAGS="-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=1"
>>>> +LLVM_CONF_OPTS += -DCMAKE_C_FLAGS="-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=1"
>>>> +
>>>> +HOST_LLVM_CONF_OPTS += -DCMAKE_CXX_FLAGS="-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=1"
>>>> +LLVM_CONF_OPTS += -DCMAKE_CXX_FLAGS="-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=1"
>>>
>>> I'm not sure about this change, since it also change for other BR2_OPTIMIZE_x
>>> options and when BR2_ENABLE_DEBUG is disabled. We want to keep the optimization
>>> level selected by the user.
>>>
>>> What about something like kexec package [1] to force the optimization level to a
>>> minimum?
>>>
>>> I remember (back in 2018) llvm crashing with Debug build type, that's why it's
>>> forced to Release type but the default build options were used (-O2 -g0).
>>>
>>> [1]
>>> https://gitlab.com/buildroot.org/buildroot/-/blob/master/package/kexec/kexec.mk?ref_type=heads#L23
>>>
>>> Best regards,
>>> Romain
>>>
>>>
>>>> +
>>>> # Compile llvm with the C++14 (ISO C++ 2014 standard).
>>>> HOST_LLVM_CONF_OPTS += -DCMAKE_CXX_STANDARD=14
>>>> LLVM_CONF_OPTS += -DCMAKE_CXX_STANDARD=14
>>
>
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [Buildroot] [RFC PATCH 3/3] package/llvm-project: reduce the build size of llvm
2025-07-03 11:16 ` Romain Naour via buildroot
@ 2025-07-04 11:37 ` Alex Bennée
0 siblings, 0 replies; 14+ messages in thread
From: Alex Bennée @ 2025-07-04 11:37 UTC (permalink / raw)
To: Romain Naour
Cc: buildroot, Joseph Kogut, Romain Naour, Daniel Lang,
Valentin Korenblit
Romain Naour <romain.naour@smile.fr> writes:
> Le 03/07/2025 à 13:09, Romain Naour a écrit :
>> Le 03/07/2025 à 08:44, Alex Bennée a écrit :
>>> Romain Naour <romain.naour@smile.fr> writes:
>>>
>>>> Hello Alex, All,
>>>>
>>>> Le 26/06/2025 à 13:16, Alex Bennée a écrit :
>>>>> Although we request a Release build the default CMAKE flags in
>>>>> toolchain.cmake include -Og -g3 which enables debug symbols for the
>>>>> build inflating the overall size of things.
>>>>
>>>> By default, -O2 -g0 is used by Buildroot. If you have -Og -g3 in toolchain.cmake
>>>> generated by Buildroot, it means that BR2_ENABLE_DEBUG, BR2_DEBUG_3 and
>>>> BR2_OPTIMIZE_G have been selected in the Buildroot configuration (by
>>>> the user).
>>>
>>> Where is the logic that sets this? Because:
>>>
>>> ➜ ag DEBUG .config
>>> 179:BR2_TOOLCHAIN_HAS_THREADS_DEBUG=y
>>> 306:# BR2_ENABLE_DEBUG is not set
>>> 307:# BR2_ENABLE_RUNTIME_DEBUG is not set
>>> 4146:# BR2_PACKAGE_OPENPOWERLINK_DEBUG_LEVEL is not set
>>>
>>> But:
>>>
>>> ➜ ag "Buildroot CFLAGS" ./host/share/buildroot/toolchainfile.cmake
>>> 57: set(CMAKE_C_FLAGS "-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Og -g3 -D_FORTIFY_SOURCE=1" CACHE STRING "Buildroot CFLAGS")
>>
>> It's weird indeed. I had to use BR2_ENABLE_DEBUG, BR2_DEBUG_3 and BR2_OPTIMIZE_G
>> to get the same optimization level than you. Otherwise -O2 -g0 is used.
>>
>> Can you share a Buildroot defconfig able to reproduce this issue?
>
> Note:
> ./host/share/buildroot/toolchainfile.cmake is generated by the toolchain package
> as post install staging hook:
>
> see:
> TOOLCHAIN_POST_INSTALL_STAGING_HOOKS += TOOLCHAIN_CMAKE_INSTALL_FILES
>
> If the toolchainfile.cmake file was generated with BR2_ENABLE_DEBUG, BR2_DEBUG_3
> and BR2_OPTIMIZE_G set but this setting was updated after, it means you have to
> do a new build. Buildroot doesn't detect such change and a new build from
> scratch is needed.
Ahh that was indeed it. I can drop these patches. Sorry for the noise.
--
Alex Bennée
Virtualisation Tech Lead @ Linaro
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [Buildroot] [RFC PATCH 1/3] package/llvm-project: use ninja to build llvm libs
2025-07-02 21:40 ` Romain Naour via buildroot
@ 2026-02-04 16:11 ` Thomas Devoogdt
2026-02-04 16:35 ` Romain Naour via buildroot
0 siblings, 1 reply; 14+ messages in thread
From: Thomas Devoogdt @ 2026-02-04 16:11 UTC (permalink / raw)
To: buildroot
Hello Alex, Romain, All,
On 7/2/25 23:40, Romain Naour via buildroot wrote:
> Hello Alex, All,
>
> Le 26/06/2025 à 13:16, Alex Bennée a écrit :
>> Using ninja is recommended as it is faster than the default GNU make
>> build method. Make the switch.
> Ninja is usually faster for incremental builds (for llvm developers [1]) but
> since we usually use Buildroot for building target images from sources ninja may
> not really faster than Make.
>
> Since we add host-ninja in the dependencies, is really faster in the end?
> Note: on some build machine with a recent enough cmake tool, the host-cmake is
> not used.
>
> [1] https://llvm.org/docs/GettingStarted.html
>
>> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
>> ---
>> package/llvm-project/llvm/llvm.mk | 10 ++++++----
>> 1 file changed, 6 insertions(+), 4 deletions(-)
>>
>> diff --git a/package/llvm-project/llvm/llvm.mk b/package/llvm-project/llvm/llvm.mk
>> index 7552e3590c..8fe7d10fe0 100644
>> --- a/package/llvm-project/llvm/llvm.mk
>> +++ b/package/llvm-project/llvm/llvm.mk
>> @@ -13,8 +13,10 @@ LLVM_CPE_ID_VENDOR = llvm
>> LLVM_SUPPORTS_IN_SOURCE_BUILD = NO
>> LLVM_INSTALL_STAGING = YES
>>
>> -HOST_LLVM_DEPENDENCIES = host-python3 host-llvm-cmake
>> -LLVM_DEPENDENCIES = host-llvm
>> +HOST_LLVM_DEPENDENCIES = host-python3 host-llvm-cmake host-ninja
>> +LLVM_DEPENDENCIES = host-llvm host-ninja
Why selecting host-ninja? This is handled by the package/pkg-cmake.mk
infrastructure when setting the _CMAKE_BACKEND to ninja.
>> +
>> +LLVM_CMAKE_BACKEND = ninja
> What about other llvm-project related package such Clang?
>
> Best regards,
> Romain
>
>
>>
>> # Path to cmake modules from host-llvm-cmake
>> HOST_LLVM_CONF_OPTS += -DCMAKE_MODULE_PATH=$(HOST_DIR)/lib/cmake/llvm
>> @@ -166,8 +168,8 @@ LLVM_CONF_OPTS += -DLLVM_HAVE_TFLITE=""
>> # Default is Debug build, which requires considerably more disk space and
>> # build time. Release build is selected for host and target because the linker
>> # can run out of memory in Debug mode.
>> -HOST_LLVM_CONF_OPTS += -DCMAKE_BUILD_TYPE=Release
>> -LLVM_CONF_OPTS += -DCMAKE_BUILD_TYPE=Release
>> +HOST_LLVM_CONF_OPTS += -DCMAKE_BUILD_TYPE=Release -G Ninja
>> +LLVM_CONF_OPTS += -DCMAKE_BUILD_TYPE=Release -G Ninja
Why would it be needed to add -GNinja, this should be handled by the
package/pkg-cmake.mk infrastructure.
>>
>> # Compile llvm with the C++14 (ISO C++ 2014 standard).
>> HOST_LLVM_CONF_OPTS += -DCMAKE_CXX_STANDARD=14
Kr,
Thomas Devoogdt
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [Buildroot] [RFC PATCH 1/3] package/llvm-project: use ninja to build llvm libs
2026-02-04 16:11 ` Thomas Devoogdt
@ 2026-02-04 16:35 ` Romain Naour via buildroot
0 siblings, 0 replies; 14+ messages in thread
From: Romain Naour via buildroot @ 2026-02-04 16:35 UTC (permalink / raw)
To: Thomas Devoogdt, buildroot
Hello Thomas, Alex, All,
Le 04/02/2026 à 17:11, Thomas Devoogdt a écrit :
> Hello Alex, Romain, All,
>
>
> On 7/2/25 23:40, Romain Naour via buildroot wrote:
>> Hello Alex, All,
>>
>> Le 26/06/2025 à 13:16, Alex Bennée a écrit :
>>> Using ninja is recommended as it is faster than the default GNU make
>>> build method. Make the switch.
>> Ninja is usually faster for incremental builds (for llvm developers [1]) but
>> since we usually use Buildroot for building target images from sources ninja may
>> not really faster than Make.
>>
>> Since we add host-ninja in the dependencies, is really faster in the end?
>> Note: on some build machine with a recent enough cmake tool, the host-cmake is
>> not used.
>>
>> [1] https://llvm.org/docs/GettingStarted.html
>>
>>> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
>>> ---
>>> package/llvm-project/llvm/llvm.mk | 10 ++++++----
>>> 1 file changed, 6 insertions(+), 4 deletions(-)
>>>
>>> diff --git a/package/llvm-project/llvm/llvm.mk b/package/llvm-project/llvm/
>>> llvm.mk
>>> index 7552e3590c..8fe7d10fe0 100644
>>> --- a/package/llvm-project/llvm/llvm.mk
>>> +++ b/package/llvm-project/llvm/llvm.mk
>>> @@ -13,8 +13,10 @@ LLVM_CPE_ID_VENDOR = llvm
>>> LLVM_SUPPORTS_IN_SOURCE_BUILD = NO
>>> LLVM_INSTALL_STAGING = YES
>>> -HOST_LLVM_DEPENDENCIES = host-python3 host-llvm-cmake
>>> -LLVM_DEPENDENCIES = host-llvm
>>> +HOST_LLVM_DEPENDENCIES = host-python3 host-llvm-cmake host-ninja
>>> +LLVM_DEPENDENCIES = host-llvm host-ninja
>
>
> Why selecting host-ninja? This is handled by the package/pkg-cmake.mk
> infrastructure when setting the _CMAKE_BACKEND to ninja.
>
>
>>> +
>>> +LLVM_CMAKE_BACKEND = ninja
>> What about other llvm-project related package such Clang?
>>
>> Best regards,
>> Romain
>>
>>
>>> # Path to cmake modules from host-llvm-cmake
>>> HOST_LLVM_CONF_OPTS += -DCMAKE_MODULE_PATH=$(HOST_DIR)/lib/cmake/llvm
>>> @@ -166,8 +168,8 @@ LLVM_CONF_OPTS += -DLLVM_HAVE_TFLITE=""
>>> # Default is Debug build, which requires considerably more disk space and
>>> # build time. Release build is selected for host and target because the linker
>>> # can run out of memory in Debug mode.
>>> -HOST_LLVM_CONF_OPTS += -DCMAKE_BUILD_TYPE=Release
>>> -LLVM_CONF_OPTS += -DCMAKE_BUILD_TYPE=Release
>>> +HOST_LLVM_CONF_OPTS += -DCMAKE_BUILD_TYPE=Release -G Ninja
>>> +LLVM_CONF_OPTS += -DCMAKE_BUILD_TYPE=Release -G Ninja
>
>
> Why would it be needed to add -GNinja, this should be handled by the package/
> pkg-cmake.mk infrastructure.
I'll mark this patch as "Changes requested".
Alex, maybe you can try to set 'HOST_LLVM_CMAKE_BACKEND = ninja' instead ?
Best regards,
Romain
>
>
>>> # Compile llvm with the C++14 (ISO C++ 2014 standard).
>>> HOST_LLVM_CONF_OPTS += -DCMAKE_CXX_STANDARD=14
>
>
> Kr,
>
>
> Thomas Devoogdt
>
> _______________________________________________
> buildroot mailing list
> buildroot@buildroot.org
> https://lists.buildroot.org/mailman/listinfo/buildroot
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2026-02-04 16:35 UTC | newest]
Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-06-26 11:16 [Buildroot] [RFC PATCH 0/3] package/llvm-project: drop debug info from the binary Alex Bennée
2025-06-26 11:16 ` [Buildroot] [RFC PATCH 1/3] package/llvm-project: use ninja to build llvm libs Alex Bennée
2025-07-02 21:40 ` Romain Naour via buildroot
2026-02-04 16:11 ` Thomas Devoogdt
2026-02-04 16:35 ` Romain Naour via buildroot
2025-06-26 11:16 ` [Buildroot] [RFC PATCH 2/3] package/llvm-project: drop unused TERMINFO config flags Alex Bennée
2025-07-02 21:42 ` Romain Naour via buildroot
2025-06-26 11:16 ` [Buildroot] [RFC PATCH 3/3] package/llvm-project: reduce the build size of llvm Alex Bennée
2025-07-02 22:37 ` Romain Naour via buildroot
2025-07-03 6:29 ` Alex Bennée
2025-07-03 6:44 ` Alex Bennée
2025-07-03 11:09 ` Romain Naour via buildroot
2025-07-03 11:16 ` Romain Naour via buildroot
2025-07-04 11:37 ` Alex Bennée
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox