#
# EFI specific SRPM macro definitions
#
# Copyright 2018 Peter M Jones <pjones@redhat.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or (at
# your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <https://www.gnu.org/licenses/>.
#

%_efi_srpm_macros_setup() %{expand:%{lua:
  -- test if our arch matches
  local function arch(archmacro)
    local target = rpm.expand(" %{_target_cpu} ")
    local arches = rpm.expand(" " .. archmacro .. " ")
    local match = string.match(arches, target)
    return (match ~= nil)
  end
  -- give us the arch...
  local function getarch()
    if arch("ia64") then
      return("ia64")
    elseif arch("x86_64") then
      return("x64")
    elseif arch("%{ix86}") then
      return("ia32")
    elseif arch("aarch64") then
      return("aa64")
    elseif arch("%{arm}") then
      return("arm")
    else
      return("none")
    end
  end
  -- alt arch
  local function getaltarch()
    return("none")
  end
  -- make some macros
  local done = rpm.expand("%{?_efi}")
  if done == nil or done == "" then
    local arch = getarch()
    local alt = getaltarch()
    print("%global _efi x86_64 aarch64 armv3l armv4b armv4l armv4tl armv5tl armv5tel armv5tejl armv6l armv6hl armv7l armv7hl armv7hnl armv8l armv8hl armv8hnl armv8hcnl i386 i486 i586 i686 pentium3 pentium4 athlon geode\\n")
    print("%global _efi_vendor almalinux\\n")
    if arch == "none" then
      print("%global _efi_has_arch 0\\n")
    else
      print("%global _efi_has_arch 1\\n")
    end
    print("%global _efi_arch " .. getarch() .. "\\n")
    print("%global _efi_arch_upper " .. string.upper(getarch()) .. "\\n")
    if alt == "none" then
      print("%global _efi_has_alt_arch 0\\n")
    else
      print("%global _efi_has_alt_arch 1\\n")
    end
    print("%global _efi_alt_arch " .. alt .. "\\n")
    print("%global _efi_alt_arch_upper " .. string.upper(alt) .. "\\n")
  end
}}

%efi_srpm_macros_version %{expand:%{_efi_srpm_macros_setup}}6

%efi %{expand:%{_efi_srpm_macros_setup}}%{expand:%{_efi}}
%efi_vendor %{expand:%{_efi_srpm_macros_setup}}%{expand:%{_efi_vendor}}

%efi_esp_root /boot/efi
%efi_esp_efi %{efi_esp_root}/EFI
%efi_esp_boot %{efi_esp_efi}/BOOT
%efi_esp_dir %{expand:%{_efi_srpm_macros_setup}}%{efi_esp_efi}/%{efi_vendor}

%efi_arch %{expand:%{_efi_srpm_macros_setup}}%{_efi_arch}
%efi_arch_upper %{expand:%{_efi_srpm_macros_setup}}%{_efi_arch_upper}
%efi_has_arch %{expand:%{_efi_srpm_macros_setup}}0%{_efi_has_arch}
%efi_has_alt_arch %{expand:%{_efi_srpm_macros_setup}}0%{_efi_has_alt_arch}
%efi_alt_arch %{expand:%{_efi_srpm_macros_setup}}%{?_efi_alt_arch}%{nil}
%efi_alt_arch_upper %{expand:%{_efi_srpm_macros_setup}}%{?_efi_alt_arch_upper}%{nil}

%efi_build_requires bash coreutils

%__brp_boot_efi_times /usr/lib/rpm/brp-boot-efi-times
