[openwrt/openwrt] iucode-tool: fix host-compile on macos and non-x86 linux

LEDE Commits lede-commits at lists.infradead.org
Sat Feb 26 11:12:33 PST 2022


chunkeey pushed a commit to openwrt/openwrt.git, branch master:
https://git.openwrt.org/e6a4f30ed77f8ae6a08cb5cab1fd9509fde3227f

commit e6a4f30ed77f8ae6a08cb5cab1fd9509fde3227f
Author: Sergey V. Lobanov <sergey at lobanov.in>
AuthorDate: Sat Feb 5 16:26:55 2022 +0300

    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 at lobanov.in>
---
 package/system/iucode-tool/Makefile                | 15 ++++++++++-
 ...-compatibility-header-to-build-on-non-x86.patch | 31 ++++++++++++++++++++++
 2 files changed, 45 insertions(+), 1 deletion(-)

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 at 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 at 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 at 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 at 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;
++}



More information about the lede-commits mailing list