diff options
author | Sergey V. Lobanov <sergey@lobanov.in> | 2022-02-05 16:26:55 +0300 |
---|---|---|
committer | Christian Lamparter <chunkeey@gmail.com> | 2022-02-26 19:52:41 +0100 |
commit | e6a4f30ed77f8ae6a08cb5cab1fd9509fde3227f (patch) | |
tree | 4e488051eb4cf548cf77ab9407ff35484c990b23 | |
parent | 64d159cdadadb6c23b9a62fc96dba27a6ed95893 (diff) | |
download | upstream-e6a4f30ed77f8ae6a08cb5cab1fd9509fde3227f.tar.gz upstream-e6a4f30ed77f8ae6a08cb5cab1fd9509fde3227f.tar.bz2 upstream-e6a4f30ed77f8ae6a08cb5cab1fd9509fde3227f.zip |
iucode-tool: fix host-compile on macos and non-x86 linux
iucode-tool/host is used by intel-microcode to manipulate with
microcode.bin file. iucode-tool requires cpuid.h at compile time
for autodection feature, but non-x86 build hosts does not have
this header file (e.g. ubuntu 20.04 aarch64) or this header
generates compile time error (#error macro) (e.g. macos arm64).
This patch provides compat cpuid.h to build iucode-tool/host on
non-x86 linux hosts and macos. CPU autodectection is not required
for intel-microcode package build so compat cpuid.h is ok for
OpenWrt purposes.
glibc and argp lib are not present in macos so iucode-tool/host
build fails. This patch adds argp-standalone/host as build
dependency if host os is macos.
Generated ucode (intel-microcode package) is exactly the same on
Linux x86_64 (Ubuntu 20.04), Linux aarch64 (Ubuntu 20.04) and
Darwin arm64 (MacOS 11.6) build hosts.
Signed-off-by: Sergey V. Lobanov <sergey@lobanov.in>
-rw-r--r-- | package/system/iucode-tool/Makefile | 15 | ||||
-rw-r--r-- | package/system/iucode-tool/patches/200_add-cpuid-compatibility-header-to-build-on-non-x86.patch | 31 |
2 files changed, 45 insertions, 1 deletions
diff --git a/package/system/iucode-tool/Makefile b/package/system/iucode-tool/Makefile index b8227ed4a1..d7c85b2d42 100644 --- a/package/system/iucode-tool/Makefile +++ b/package/system/iucode-tool/Makefile @@ -9,13 +9,14 @@ include $(TOPDIR)/rules.mk PKG_NAME:=iucode-tool PKG_VERSION:=2.3.1 -PKG_RELEASE:=1 +PKG_RELEASE:=2 PKG_SOURCE:=iucode-tool_$(PKG_VERSION).tar.xz PKG_SOURCE_URL:=https://gitlab.com/iucode-tool/releases/raw/latest PKG_HASH:=12b88efa4d0d95af08db05a50b3dcb217c0eb2bfc67b483779e33d498ddb2f95 PKG_BUILD_DEPENDS:=USE_UCLIBC:argp-standalone USE_MUSL:argp-standalone +HOST_BUILD_DEPENDS:=HOST_OS_MACOS:argp-standalone/host PKG_MAINTAINER:=Zoltan HERPAI <wigyori@uid0.hu> PKG_LICENSE:=GPL-2.0 @@ -41,6 +42,18 @@ define Package/iucode-tool/install $(INSTALL_BIN) $(PKG_BUILD_DIR)/iucode_tool $(1)/usr/bin/ endef +# List of build hosts with working cpuid.h +IUT_NATIVE_HOST_OS_ARCH := \ + linux/x86_64 linux/amd64 linux/i386 linux/i686 + +IUT_HOST_OS_ARCH := $(call tolower,$(HOST_OS))/$(HOST_ARCH) + +# Use cpuid.h compat header if build host does not have working cpuid.h +ifeq ($(filter $(IUT_HOST_OS_ARCH),$(IUT_NATIVE_HOST_OS_ARCH)),) +HOST_CFLAGS += \ + -I$(HOST_BUILD_DIR)/cpuid-compat +endif + define Host/Install $(INSTALL_BIN) $(HOST_BUILD_DIR)/iucode_tool $(STAGING_DIR_HOST)/bin/iucode_tool endef diff --git a/package/system/iucode-tool/patches/200_add-cpuid-compatibility-header-to-build-on-non-x86.patch b/package/system/iucode-tool/patches/200_add-cpuid-compatibility-header-to-build-on-non-x86.patch new file mode 100644 index 0000000000..900f3596f8 --- /dev/null +++ b/package/system/iucode-tool/patches/200_add-cpuid-compatibility-header-to-build-on-non-x86.patch @@ -0,0 +1,31 @@ +From a21e75da32c0016f1575ea29775565934a67660d Mon Sep 17 00:00:00 2001 +From: "Sergey V. Lobanov" <sergey@lobanov.in> +Date: Sat, 5 Feb 2022 13:10:23 +0300 +Subject: [PATCH] Add cpuid compatibility header to build on non-x86 hosts + +Signed-off-by: Sergey V. Lobanov <sergey@lobanov.in> +--- + cpuid-compat/cpuid.h | 17 +++++++++++++++++ + 1 file changed, 17 insertions(+) + create mode 100644 cpuid-compat/cpuid.h + +--- /dev/null ++++ b/cpuid-compat/cpuid.h +@@ -0,0 +1,17 @@ ++// SPDX-License-Identifier: GPL-2.0-or-later ++/* ++ * cpuid compatibility header to build iucode-tool on non-x86 hosts ++ * ++ * Copyright (C) 2022 Sergey V. Lobanov <sergey@lobanov.in> ++ */ ++ ++#ifdef __APPLE__ ++# include <limits.h> ++#endif ++ ++static __inline int __get_cpuid (unsigned int leaf, ++ unsigned int *eax, unsigned int *ebx, ++ unsigned int *ecx, unsigned int *edx) ++{ ++ return 0; ++} |