ASR_BASE
Change-Id: Icf3719cc0afe3eeb3edc7fa80a2eb5199ca9dda1
diff --git a/package/system/iucode-tool/Makefile b/package/system/iucode-tool/Makefile
new file mode 100644
index 0000000..c2ea37a
--- /dev/null
+++ b/package/system/iucode-tool/Makefile
@@ -0,0 +1,63 @@
+#
+# Copyright (C) 2018 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=iucode-tool
+PKG_VERSION:=2.3.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_CPE_ID:=cpe:/a:iucode-tool_project:iucode-tool
+
+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
+
+PKG_FLAGS:=nonshared
+
+PKG_INSTALL:=1
+
+include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/host-build.mk
+
+define Package/iucode-tool
+ SECTION:=utils
+ CATEGORY:=Base system
+ URL:=$(PKG_SOURCE_URL)
+ DEPENDS:=@TARGET_x86
+ TITLE:=Intel microcode loader
+endef
+
+define Package/iucode-tool/install
+ $(INSTALL_DIR) $(1)/lib/firmware
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(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
+
+$(eval $(call HostBuild))
+$(eval $(call BuildPackage,iucode-tool))
diff --git a/package/system/iucode-tool/patches/001-iucode_tool-add-missing-limits.h-for-USE_CPUID_DEVIC.patch b/package/system/iucode-tool/patches/001-iucode_tool-add-missing-limits.h-for-USE_CPUID_DEVIC.patch
new file mode 100644
index 0000000..fe25f8a
--- /dev/null
+++ b/package/system/iucode-tool/patches/001-iucode_tool-add-missing-limits.h-for-USE_CPUID_DEVIC.patch
@@ -0,0 +1,24 @@
+From e1137cdafc97c0a8b2a0717a771823f3c4320087 Mon Sep 17 00:00:00 2001
+From: Christian Marangi <ansuelsmth@gmail.com>
+Date: Tue, 29 Nov 2022 19:37:03 +0100
+Subject: [PATCH] iucode_tool: add missing limits.h for USE_CPUID_DEVICE
+
+If USE_CPUID_DEVICE is enabled, compilation fails for missing define.
+Add the missing include to fix compilation error with USE_CPUID_DEVICE
+define.
+
+Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
+---
+ iucode_tool.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/iucode_tool.c
++++ b/iucode_tool.c
+@@ -19,6 +19,7 @@
+ #include <stdint.h>
+ #include <sys/types.h>
+ #include <sys/stat.h>
++#include <limits.h>
+ #include <fcntl.h>
+ #include <stdio.h>
+ #include <stdlib.h>
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 0000000..900f359
--- /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;
++}