xref: /OK3568_Linux_fs/yocto/poky/meta/recipes-bsp/gnu-efi/gnu-efi_3.0.14.bb (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593SmuzhiyunSUMMARY = "Libraries for producing EFI binaries"
2*4882a593SmuzhiyunHOMEPAGE = "http://sourceforge.net/projects/gnu-efi/"
3*4882a593SmuzhiyunDESCRIPTION = "GNU-EFI aims to Develop EFI applications for ARM-64, ARM-32, x86_64, IA-64 (IPF), IA-32 (x86), and MIPS platforms using the GNU toolchain and the EFI development environment."
4*4882a593SmuzhiyunSECTION = "devel"
5*4882a593SmuzhiyunLICENSE = "GPL-2.0-or-later | BSD-2-Clause"
6*4882a593SmuzhiyunLIC_FILES_CHKSUM = "file://gnuefi/crt0-efi-arm.S;beginline=4;endline=16;md5=e582764a4776e60c95bf9ab617343d36 \
7*4882a593Smuzhiyun                    file://gnuefi/crt0-efi-aarch64.S;beginline=4;endline=16;md5=e582764a4776e60c95bf9ab617343d36 \
8*4882a593Smuzhiyun                    file://inc/efishellintf.h;beginline=13;endline=20;md5=202766b79d708eff3cc70fce15fb80c7 \
9*4882a593Smuzhiyun                    file://lib/arm/math.c;beginline=2;endline=15;md5=8ed772501da77b2b3345aa6df8744c9e \
10*4882a593Smuzhiyun                    file://lib/arm/initplat.c;beginline=2;endline=15;md5=8ed772501da77b2b3345aa6df8744c9e \
11*4882a593Smuzhiyun                    file://lib/aarch64/math.c;beginline=2;endline=15;md5=8ed772501da77b2b3345aa6df8744c9e \
12*4882a593Smuzhiyun                    file://lib/aarch64/initplat.c;beginline=2;endline=15;md5=8ed772501da77b2b3345aa6df8744c9e \
13*4882a593Smuzhiyun                   "
14*4882a593Smuzhiyun
15*4882a593SmuzhiyunSRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/files/${BP}.tar.bz2 \
16*4882a593Smuzhiyun           file://parallel-make-archives.patch \
17*4882a593Smuzhiyun           file://lib-Makefile-fix-parallel-issue.patch \
18*4882a593Smuzhiyun           file://gnu-efi-3.0.9-fix-clang-build.patch \
19*4882a593Smuzhiyun           "
20*4882a593Smuzhiyun
21*4882a593SmuzhiyunSRC_URI[sha256sum] = "b73b643a0d5697d1f396d7431448e886dd805668789578e3e1a28277c9528435"
22*4882a593Smuzhiyun
23*4882a593SmuzhiyunCOMPATIBLE_HOST = "(x86_64.*|i.86.*|aarch64.*|arm.*)-linux"
24*4882a593SmuzhiyunCOMPATIBLE_HOST:armv4 = 'null'
25*4882a593Smuzhiyun
26*4882a593Smuzhiyundo_configure:linux-gnux32:prepend() {
27*4882a593Smuzhiyun	cp ${STAGING_INCDIR}/gnu/stubs-x32.h ${STAGING_INCDIR}/gnu/stubs-64.h
28*4882a593Smuzhiyun	cp ${STAGING_INCDIR}/bits/long-double-32.h ${STAGING_INCDIR}/bits/long-double-64.h
29*4882a593Smuzhiyun}
30*4882a593Smuzhiyun
31*4882a593Smuzhiyundef gnu_efi_arch(d):
32*4882a593Smuzhiyun    import re
33*4882a593Smuzhiyun    tarch = d.getVar("TARGET_ARCH")
34*4882a593Smuzhiyun    if re.match("i[3456789]86", tarch):
35*4882a593Smuzhiyun        return "ia32"
36*4882a593Smuzhiyun    return tarch
37*4882a593Smuzhiyun
38*4882a593SmuzhiyunEXTRA_OEMAKE = "'ARCH=${@gnu_efi_arch(d)}' 'CC=${CC}' 'AS=${AS}' 'LD=${LD}' 'AR=${AR}' \
39*4882a593Smuzhiyun                'RANLIB=${RANLIB}' 'OBJCOPY=${OBJCOPY}' 'PREFIX=${prefix}' 'LIBDIR=${libdir}' \
40*4882a593Smuzhiyun                "
41*4882a593Smuzhiyun
42*4882a593Smuzhiyun# gnu-efi's Makefile treats prefix as toolchain prefix, so don't
43*4882a593Smuzhiyun# export it.
44*4882a593Smuzhiyunprefix[unexport] = "1"
45*4882a593Smuzhiyun
46*4882a593Smuzhiyundo_install() {
47*4882a593Smuzhiyun        oe_runmake install INSTALLROOT="${D}"
48*4882a593Smuzhiyun}
49*4882a593Smuzhiyun
50*4882a593SmuzhiyunFILES:${PN} += "${libdir}/*.lds"
51*4882a593Smuzhiyun
52*4882a593Smuzhiyun# 64-bit binaries are expected for EFI when targeting X32
53*4882a593SmuzhiyunINSANE_SKIP:${PN}-dev:append:linux-gnux32 = " arch"
54*4882a593SmuzhiyunINSANE_SKIP:${PN}-dev:append:linux-muslx32 = " arch"
55*4882a593Smuzhiyun
56*4882a593SmuzhiyunBBCLASSEXTEND = "native"
57*4882a593Smuzhiyun
58*4882a593Smuzhiyun# It doesn't support sse, its make.defaults sets:
59*4882a593Smuzhiyun# CFLAGS += -mno-mmx -mno-sse
60*4882a593Smuzhiyun# So also remove -mfpmath=sse from TUNE_CCARGS
61*4882a593SmuzhiyunTUNE_CCARGS:remove = "-mfpmath=sse"
62*4882a593Smuzhiyun
63*4882a593Smuzhiyunpython () {
64*4882a593Smuzhiyun    ccargs = d.getVar('TUNE_CCARGS').split()
65*4882a593Smuzhiyun    if '-mx32' in ccargs:
66*4882a593Smuzhiyun        # use x86_64 EFI ABI
67*4882a593Smuzhiyun        ccargs.remove('-mx32')
68*4882a593Smuzhiyun        ccargs.append('-m64')
69*4882a593Smuzhiyun        d.setVar('TUNE_CCARGS', ' '.join(ccargs))
70*4882a593Smuzhiyun}
71