diff mbox series

[1/5] lame: don't use -march=native when building with clang

Message ID 20250924120745.2883969-1-ross.burton@arm.com
State Accepted, archived
Commit d6f0e26ccf19872e1f4eebb346d76c7bff87ba2a
Headers show
Series [1/5] lame: don't use -march=native when building with clang | expand

Commit Message

Ross Burton Sept. 24, 2025, 12:07 p.m. UTC
Because of a logic error, lame's configure always passes -march=native
when building with clang.

This is a terrible idea in general as it's not often your build machine
and target hardware aligns, and leads to some amusing errors:

  unknown target CPU 'neoverse-n1'
  note: valid target CPU values are: i386, i486, ...

Move the HAVE_CLANG block up into the FULL_OPTIMIZATION case, alongside
HAVE_GCC.  This option is never enabled (as it's basically "use native")
so resolves the build failure.

Signed-off-by: Ross Burton <ross.burton@arm.com>
---
 meta/recipes-multimedia/lame/lame/clang.patch | 99 +++++++++++++++++++
 meta/recipes-multimedia/lame/lame_3.100.bb    |  1 +
 2 files changed, 100 insertions(+)
 create mode 100644 meta/recipes-multimedia/lame/lame/clang.patch

Comments

Khem Raj Sept. 24, 2025, 8:08 p.m. UTC | #1
On 9/24/25 5:07 AM, Ross Burton via lists.openembedded.org wrote:
> Because of a logic error, lame's configure always passes -march=native
> when building with clang.

It perhaps is useful when build == host i.e. native builds only.

> 
> This is a terrible idea in general as it's not often your build machine
> and target hardware aligns, and leads to some amusing errors:
> 
>    unknown target CPU 'neoverse-n1'
>    note: valid target CPU values are: i386, i486, ...
> 
> Move the HAVE_CLANG block up into the FULL_OPTIMIZATION case, alongside
> HAVE_GCC.  This option is never enabled (as it's basically "use native")
> so resolves the build failure.
> 
> Signed-off-by: Ross Burton <ross.burton@arm.com>
> ---
>   meta/recipes-multimedia/lame/lame/clang.patch | 99 +++++++++++++++++++
>   meta/recipes-multimedia/lame/lame_3.100.bb    |  1 +
>   2 files changed, 100 insertions(+)
>   create mode 100644 meta/recipes-multimedia/lame/lame/clang.patch
> 
> diff --git a/meta/recipes-multimedia/lame/lame/clang.patch b/meta/recipes-multimedia/lame/lame/clang.patch
> new file mode 100644
> index 00000000000..116000c577b
> --- /dev/null
> +++ b/meta/recipes-multimedia/lame/lame/clang.patch
> @@ -0,0 +1,99 @@
> +Don't use -march=native when building with clang
> +
> +Because of a logic error, lame's configure always passes -march=native
> +when building with clang.
> +
> +This is a terrible idea in general as it's not often your build machine
> +and target hardware aligns, and leads to some amusing errors:
> +
> +	unknown target CPU 'neoverse-n1'
> +	note: valid target CPU values are: i386, i486, ...
> +
> +Move the HAVE_CLANG block up into the FULL_OPTIMIZATION case, alongside
> +HAVE_GCC.  This option is never enabled (as it's basically "use native")
> +so resolves the build failure.
> +
> +Upstream-Status: Pending
> +Signed-off-by: Ross Burton <ross.burton@arm.com>
> +
> +diff --git i/configure.in w/configure.in
> +index 5e43179..d51b017 100644
> +--- i/configure.in
> ++++ w/configure.in
> +@@ -960,45 +960,43 @@ if test "x$HAVE_GCC" = "xyes" -o "x$HAVE_CLANG" = "xyes"; then
> + 				;;
> + 			esac
> + 		fi
> ++
> ++		if test "x${HAVE_CLANG}" = "xyes"; then
> ++			case "${CLANG_VERSION}" in
> ++			3.[89]*|[45].*)
> ++				OPTIMIZATION="-Ofast"
> ++				;;
> ++			*)
> ++				OPTIMIZATION="-O3"
> ++				;;
> ++			esac
> ++
> ++			# generic CPU specific options
> ++			case ${host_cpu} in
> ++			*486)
> ++				OPTIMIZATION="${OPTIMIZATION} -march=i486"
> ++				;;
> ++			*586)
> ++				OPTIMIZATION="${OPTIMIZATION} -march=i586 \
> ++					-mtune=native"
> ++				;;
> ++			*686)
> ++				OPTIMIZATION="${OPTIMIZATION} -march=i686 \
> ++					-mtune=native"
> ++				;;
> ++			*86)
> ++				OPTIMIZATION="${OPTIMIZATION} -march=native \
> ++					-mtune=native"
> ++				;;
> ++			esac
> ++
> ++		fi
> + 		;;
> + 	*)
> + 		AC_MSG_ERROR(bad value �${CONFIG_EXPOPT}� for expopt option)
> + 		;;
> + 	esac
> +
> +-
> +-	if test "x${HAVE_CLANG}" = "xyes"; then
> +-		case "${CLANG_VERSION}" in
> +-		3.[89]*|[45].*)
> +-			OPTIMIZATION="-Ofast"
> +-			;;
> +-		*)
> +-			OPTIMIZATION="-O3"
> +-			;;
> +-		esac
> +-
> +-		# generic CPU specific options
> +-		case ${host_cpu} in
> +-		*486)
> +-			OPTIMIZATION="${OPTIMIZATION} -march=i486"
> +-			;;
> +-		*586)
> +-			OPTIMIZATION="${OPTIMIZATION} -march=i586 \
> +-				-mtune=native"
> +-			;;
> +-		*686)
> +-			OPTIMIZATION="${OPTIMIZATION} -march=i686 \
> +-				-mtune=native"
> +-			;;
> +-		*86)
> +-			OPTIMIZATION="${OPTIMIZATION} -march=native \
> +-				-mtune=native"
> +-			;;
> +-		esac
> +-
> +-	fi
> +-
> +-
> + 	if test "${expopt_msg_result_printed}" = "no" ; then
> + 		AC_MSG_RESULT(${CONFIG_EXPOPT})
> + 	fi
> diff --git a/meta/recipes-multimedia/lame/lame_3.100.bb b/meta/recipes-multimedia/lame/lame_3.100.bb
> index efaf3b9817a..42689df3511 100644
> --- a/meta/recipes-multimedia/lame/lame_3.100.bb
> +++ b/meta/recipes-multimedia/lame/lame_3.100.bb
> @@ -12,6 +12,7 @@ DEPENDS = "ncurses gettext-native"
>   
>   SRC_URI = "${SOURCEFORGE_MIRROR}/lame/lame-${PV}.tar.gz \
>              file://no-gtk1.patch \
> +           file://clang.patch \
>              "
>   
>   SRC_URI[sha256sum] = "ddfe36cab873794038ae2c1210557ad34857a4b6bdc515785d1da9e175b1da1e"
> 
> 
> 
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#223962): https://lists.openembedded.org/g/openembedded-core/message/223962
> Mute This Topic: https://lists.openembedded.org/mt/115410427/1997914
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [raj.khem@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
diff mbox series

Patch

diff --git a/meta/recipes-multimedia/lame/lame/clang.patch b/meta/recipes-multimedia/lame/lame/clang.patch
new file mode 100644
index 00000000000..116000c577b
--- /dev/null
+++ b/meta/recipes-multimedia/lame/lame/clang.patch
@@ -0,0 +1,99 @@ 
+Don't use -march=native when building with clang
+
+Because of a logic error, lame's configure always passes -march=native
+when building with clang.
+
+This is a terrible idea in general as it's not often your build machine
+and target hardware aligns, and leads to some amusing errors:
+
+	unknown target CPU 'neoverse-n1'
+	note: valid target CPU values are: i386, i486, ...
+
+Move the HAVE_CLANG block up into the FULL_OPTIMIZATION case, alongside
+HAVE_GCC.  This option is never enabled (as it's basically "use native")
+so resolves the build failure.
+
+Upstream-Status: Pending
+Signed-off-by: Ross Burton <ross.burton@arm.com>
+
+diff --git i/configure.in w/configure.in
+index 5e43179..d51b017 100644
+--- i/configure.in
++++ w/configure.in
+@@ -960,45 +960,43 @@ if test "x$HAVE_GCC" = "xyes" -o "x$HAVE_CLANG" = "xyes"; then
+ 				;;
+ 			esac
+ 		fi
++
++		if test "x${HAVE_CLANG}" = "xyes"; then
++			case "${CLANG_VERSION}" in
++			3.[89]*|[45].*)
++				OPTIMIZATION="-Ofast"
++				;;
++			*)
++				OPTIMIZATION="-O3"
++				;;
++			esac
++
++			# generic CPU specific options
++			case ${host_cpu} in
++			*486)
++				OPTIMIZATION="${OPTIMIZATION} -march=i486"
++				;;
++			*586)
++				OPTIMIZATION="${OPTIMIZATION} -march=i586 \
++					-mtune=native"
++				;;
++			*686)
++				OPTIMIZATION="${OPTIMIZATION} -march=i686 \
++					-mtune=native"
++				;;
++			*86)
++				OPTIMIZATION="${OPTIMIZATION} -march=native \
++					-mtune=native"
++				;;
++			esac
++
++		fi
+ 		;;
+ 	*)
+ 		AC_MSG_ERROR(bad value �${CONFIG_EXPOPT}� for expopt option)
+ 		;;
+ 	esac
+ 
+-
+-	if test "x${HAVE_CLANG}" = "xyes"; then
+-		case "${CLANG_VERSION}" in
+-		3.[89]*|[45].*)
+-			OPTIMIZATION="-Ofast"
+-			;;
+-		*)
+-			OPTIMIZATION="-O3"
+-			;;
+-		esac
+-
+-		# generic CPU specific options
+-		case ${host_cpu} in
+-		*486)
+-			OPTIMIZATION="${OPTIMIZATION} -march=i486"
+-			;;
+-		*586)
+-			OPTIMIZATION="${OPTIMIZATION} -march=i586 \
+-				-mtune=native"
+-			;;
+-		*686)
+-			OPTIMIZATION="${OPTIMIZATION} -march=i686 \
+-				-mtune=native"
+-			;;
+-		*86)
+-			OPTIMIZATION="${OPTIMIZATION} -march=native \
+-				-mtune=native"
+-			;;
+-		esac
+-
+-	fi
+-
+-
+ 	if test "${expopt_msg_result_printed}" = "no" ; then
+ 		AC_MSG_RESULT(${CONFIG_EXPOPT})
+ 	fi
diff --git a/meta/recipes-multimedia/lame/lame_3.100.bb b/meta/recipes-multimedia/lame/lame_3.100.bb
index efaf3b9817a..42689df3511 100644
--- a/meta/recipes-multimedia/lame/lame_3.100.bb
+++ b/meta/recipes-multimedia/lame/lame_3.100.bb
@@ -12,6 +12,7 @@  DEPENDS = "ncurses gettext-native"
 
 SRC_URI = "${SOURCEFORGE_MIRROR}/lame/lame-${PV}.tar.gz \
            file://no-gtk1.patch \
+           file://clang.patch \
            "
 
 SRC_URI[sha256sum] = "ddfe36cab873794038ae2c1210557ad34857a4b6bdc515785d1da9e175b1da1e"