This adds several .pc files, making commands like the following do the
appropriate things:
pkgconf --personality amd64-efi-gnu gnu-efi --cflags --libs
pkgconf --personality x64-efi-gnu gnu-efi --cflags --libs-only-L
pkgconf --personality x86_64-efi-gnu gnu-efi --libs-only-other
pkgconf --personality aarch64-efi-gnu gnu-efi --libs-only-l
pkgconf --personality aa64-efi-gnu gnu-efi --cflags
The currently provided personality tuples for each architecture are
prefixed with all of the following architecture prefixes:
32-bit x86: ia32 i686 i386
64-bit x86: x64 x86_64 amd64
32-bit arm: arm armv7 armv6
64-bit arm: aa64 aarch64
64-bit itanium: ia64
64-bit mips-le: mips64el
i.e. x86_64-efi-gnu and x64-efi-gnu will get you the exact same result
Signed-off-by: Peter Jones <pjones@redhat.com>
This makes us use CFLAGS when trying to find libgcc, so we don't get the
one with the wrong endian or float ABI.
Signed-off-by: Peter Jones <pjones@redhat.com>
Currently they'll exclude e.g. inc/x64/ by accident; this makes it only
apply to the top level.
Also adds vim temp files to the ignore list.
Signed-off-by: Peter Jones <pjones@redhat.com>
This is ascii order but with upper and lower case letters mixed, so
things like 'X' and 'x' that use fallthrough still stay together.
Signed-off-by: Peter Jones <pjones@redhat.com>
Since crt0 and our linker scripts are now in a subdirectory, there's no
need to make them named differently in the installed machine. This
renames them to crt0.o and efi.lds .
Signed-off-by: Peter Jones <pjones@redhat.com>
This makes it possible to install all the output on the same machine for
cross-builds. This also adds "install_compat", which uses the previous
paths.
Signed-off-by: Peter Jones <pjones@redhat.com>
This makes the normal DESTDIR= variable work on the command line, and
makes relative paths always relative to the top-level directory.
Signed-off-by: Peter Jones <pjones@redhat.com>
Currently on x64 we manually build a dummy .reloc table entry by using a
symbol in .text and subtracting its address from another symbol that's
inside the .reloc section. On ia32 we just use its location. In either
case, if the linker puts either section in a location we're not
expecting, the .reloc table winds up having invalid values, and the PE
loader will fail to load the binary.
This changes it to be two symbols that are both in .text, making the
result unrelated to the section order or location.
It's not clear to me that these .reloc entries are actually necessary at
all, but I'm going to leave them in place for now, in case they are.
Signed-off-by: Peter Jones <pjones@redhat.com>