diff mbox series

[1/1] package/zlib-ng: fix arm build

Message ID 20231129211011.1207351-1-fontaine.fabrice@gmail.com
State Superseded
Headers show
Series [1/1] package/zlib-ng: fix arm build | expand

Commit Message

Fabrice Fontaine Nov. 29, 2023, 9:10 p.m. UTC
Set CMAKE_C_COMPILER_TARGET to BR2_ARCH to fix the following arm build
failure raised since bump to version 2.0.6 in commit
d2249821d3f30202ca2a35ad24918378d9a0a0e8:

-- Detecting C compile features - done
-- Arch not recognized, falling back to cmake arch: 'l'
-- Basearch 'l' not recognized, defaulting to 'x86'.
-- Basearch of 'l' has been detected as: 'x86'

[...]

/home/buildroot/autobuild/instance-0/output-1/build/zlib-ng-2.1.3/arch/x86/x86_features.c:17:12: fatal error: cpuid.h: No such file or directory
   17 | #  include <cpuid.h>
      |            ^~~~~~~~~

Fixes:
 - http://autobuild.buildroot.org/results/1551aa69be19239a8d8e081f033e4027d679ab8f
 - http://autobuild.buildroot.org/results/075d704c0f11710353bac43478e4501addcd747d

Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
---
 package/zlib-ng/zlib-ng.mk | 1 +
 1 file changed, 1 insertion(+)

Comments

Peter Korsgaard Dec. 1, 2023, 8:25 p.m. UTC | #1
>>>>> "Fabrice" == Fabrice Fontaine <fontaine.fabrice@gmail.com> writes:

 > Set CMAKE_C_COMPILER_TARGET to BR2_ARCH to fix the following arm build
 > failure raised since bump to version 2.0.6 in commit
 > d2249821d3f30202ca2a35ad24918378d9a0a0e8:

 > -- Detecting C compile features - done
 > -- Arch not recognized, falling back to cmake arch: 'l'
 > -- Basearch 'l' not recognized, defaulting to 'x86'.
 > -- Basearch of 'l' has been detected as: 'x86'

 > [...]

 > /home/buildroot/autobuild/instance-0/output-1/build/zlib-ng-2.1.3/arch/x86/x86_features.c:17:12: fatal error: cpuid.h: No such file or directory
 >    17 | #  include <cpuid.h>
 >       |            ^~~~~~~~~

 > Fixes:
 >  - http://autobuild.buildroot.org/results/1551aa69be19239a8d8e081f033e4027d679ab8f
 >  - http://autobuild.buildroot.org/results/075d704c0f11710353bac43478e4501addcd747d

 > Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
 > ---
 >  package/zlib-ng/zlib-ng.mk | 1 +
 >  1 file changed, 1 insertion(+)

 > diff --git a/package/zlib-ng/zlib-ng.mk b/package/zlib-ng/zlib-ng.mk
 > index fbb906503a..33e8754c9d 100644
 > --- a/package/zlib-ng/zlib-ng.mk
 > +++ b/package/zlib-ng/zlib-ng.mk
 > @@ -13,6 +13,7 @@ ZLIB_NG_PROVIDES = zlib
 
 >  # Build with zlib compatible API, gzFile support and optimizations on
 >  ZLIB_NG_CONF_OPTS += \
 > +	-DCMAKE_C_COMPILER_TARGET=$(BR2_ARCH) \

Hmm,
https://cmake.org/cmake/help/latest/variable/CMAKE_LANG_COMPILER_TARGET.html
states:

This variable may only be set in a toolchain file specified by the
CMAKE_TOOLCHAIN_FILE variable.

Should we set this in the toolchain file instead? Romain?
Thomas Petazzoni Dec. 23, 2023, 5:51 p.m. UTC | #2
On Fri, 01 Dec 2023 21:25:08 +0100
Peter Korsgaard <peter@korsgaard.com> wrote:

> Hmm,
> https://cmake.org/cmake/help/latest/variable/CMAKE_LANG_COMPILER_TARGET.html
> states:
> 
> This variable may only be set in a toolchain file specified by the
> CMAKE_TOOLCHAIN_FILE variable.
> 
> Should we set this in the toolchain file instead? Romain?

I think zlib-ng usage of CMAKE_C_COMPILER_TARGET is non-standard. I
don't think it's supposed to be used by the CMakeLists.txt machinery of
a particular package.

The link you refer to says:

  Some compiler drivers are inherently cross-compilers, such as clang
  and QNX qcc. These compiler drivers support a command-line argument
  to specify the target to cross-compile for.

We are not using clang nor QNX qcc.
https://cmake.org/cmake/help/latest/manual/cmake-toolchains.7.html also
refers to this variable only for clang
(https://cmake.org/cmake/help/latest/manual/cmake-toolchains.7.html#cross-compiling-using-clang)
and QNX
(https://cmake.org/cmake/help/latest/manual/cmake-toolchains.7.html#cross-compiling-for-qnx).

Therefore, my feeling is that zlib-ng's usage of this variable is a bit
of a hack, and it's actually why it works when passed as an argument,
because they are in fact not supposed to use this variable. So I
believe Fabrice's patch is probably the most relevant solution, but
with an improved commit log that details the conversation we've had in
this thread.

Fabrice?

(I'm going to mark the patch as Changes Requested, to have a new
iteration that has a more detailed commit log summarizing this
discussion.)

Thomas
diff mbox series

Patch

diff --git a/package/zlib-ng/zlib-ng.mk b/package/zlib-ng/zlib-ng.mk
index fbb906503a..33e8754c9d 100644
--- a/package/zlib-ng/zlib-ng.mk
+++ b/package/zlib-ng/zlib-ng.mk
@@ -13,6 +13,7 @@  ZLIB_NG_PROVIDES = zlib
 
 # Build with zlib compatible API, gzFile support and optimizations on
 ZLIB_NG_CONF_OPTS += \
+	-DCMAKE_C_COMPILER_TARGET=$(BR2_ARCH) \
 	-DWITH_GZFILEOP=1 \
 	-DWITH_OPTIM=1 \
 	-DZLIB_COMPAT=1 \