X-Git-Url: https://code.delx.au/refind/blobdiff_plain/ff9fddedc9bd47d7df1fc0cb2c29f67e227c6125..6720031b85a48ad6f6a651efb6bb5030c41b610d:/Makefile diff --git a/Makefile b/Makefile index 2292c51..d1158ef 100644 --- a/Makefile +++ b/Makefile @@ -5,69 +5,80 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -CXXFLAGS=-O2 -fpic -D_REENTRANT -D_GNU_SOURCE -Wall -g -NAMES=refind -SRCS=$(NAMES:=.c) -OBJS=$(NAMES:=.o) -HEADERS=$(NAMES:=.h) LOADER_DIR=refind FS_DIR=filesystems LIBEG_DIR=libeg MOK_DIR=mok GPTSYNC_DIR=gptsync EFILIB_DIR=EfiLib +export EDK2BASE=/usr/local/UDK2014/MyWorkSpace +export REFIND_VERSION='L"0.10.2.1"' -export EDK2BASE = /usr/local/UDK2014/MyWorkSpace -export GENFW = $(EDK2BASE)/BaseTools/Source/C/bin/GenFw -export prefix = /usr/bin/ -ifeq ($(ARCH),aarch64) - export CC = $(prefix)aarch64-linux-gnu-gcc - export AS = $(prefix)aarch64-linux-gnu-as - export LD = $(prefix)aarch64-linux-gnu-ld - export AR = $(prefix)aarch64-linux-gnu-ar - export RANLIB = $(prefix)aarch64-linux-gnu-ranlib - export OBJCOPY = $(prefix)aarch64-linux-gnu-objcopy +# The "all" target builds with the TianoCore library if possible, but falls +# back on the more easily-installed GNU-EFI library if TianoCore isn't +# installed at $(EDK2BASE) +all: +ifneq ($(wildcard $(EDK2BASE)/*),) + @echo "Found $(EDK2BASE); building with TianoCore" + +make tiano else - export CC = $(prefix)gcc - export AS = $(prefix)as - export LD = $(prefix)ld - export AR = $(prefix)ar - export RANLIB = $(prefix)ranlib - export OBJCOPY = $(prefix)objcopy + @echo "Did not find $(EDK2BASE); building with GNU-EFI" + +make gnuefi endif -# Build rEFInd, including libeg -all: tiano - -gnuefi: - +make -C $(LIBEG_DIR) - +make -C $(MOK_DIR) - +make -C $(EFILIB_DIR) - +make -C $(LOADER_DIR) - +make -C $(GPTSYNC_DIR) gnuefi -# +make -C $(FS_DIR) all_gnuefi - +# The "fs" target, like "all," attempts to build with TianoCore but falls +# back to GNU-EFI. fs: - +make -C $(FS_DIR) +ifneq ($(wildcard $(EDK2BASE)/*),) + @echo "Found $(EDK2BASE); building with TianoCore" + +make fs_tiano +else + @echo "Did not find $(EDK2BASE); building with GNU-EFI" + +make fs_gnuefi +endif -fs_gnuefi: - +make -C $(FS_DIR) all_gnuefi +# Likewise for GPTsync.... +GPTsync: +ifneq ($(wildcard $(EDK2BASE)/*),) + @echo "Found $(EDK2BASE); building with TianoCore" + +make gptsync_tiano +else + @echo "Did not find $(EDK2BASE); building with GNU-EFI" + +make gptsync_gnuefi +endif +# Don't build gptsync under TianoCore by default because it errors out when +# using a cross-compiler on an x86-64 system. Because gptsync is pretty +# useless on ARM64, skipping it is no big deal.... tiano: - +make AR_TARGET=EfiLib -C $(EFILIB_DIR) -f Make.tiano - +make AR_TARGET=libeg -C $(LIBEG_DIR) -f Make.tiano - +make AR_TARGET=mok -C $(MOK_DIR) -f Make.tiano - +make BUILDME=refind DLL_TARGET=refind -C $(LOADER_DIR) -f Make.tiano + +make MAKEWITH=TIANO AR_TARGET=EfiLib -C $(EFILIB_DIR) -f Make.tiano + +make MAKEWITH=TIANO AR_TARGET=libeg -C $(LIBEG_DIR) -f Make.tiano + +make MAKEWITH=TIANO AR_TARGET=mok -C $(MOK_DIR) -f Make.tiano + +make MAKEWITH=TIANO BUILDME=refind DLL_TARGET=refind -C $(LOADER_DIR) -f Make.tiano ifneq ($(ARCH),aarch64) - +make -C $(GPTSYNC_DIR) -f Make.tiano + +make MAKEWITH=TIANO -C $(GPTSYNC_DIR) -f Make.tiano endif -# +make -C $(FS_DIR) +# +make MAKEWITH=TIANO -C $(FS_DIR) + +gnuefi: + +make MAKEWITH=GNUEFI -C $(LIBEG_DIR) + +make MAKEWITH=GNUEFI -C $(MOK_DIR) + +make MAKEWITH=GNUEFI -C $(EFILIB_DIR) + +make MAKEWITH=GNUEFI -C $(LOADER_DIR) + +make MAKEWITH=GNUEFI -C $(GPTSYNC_DIR) gnuefi +# +make MAKEWITH=GNUEFI -C $(FS_DIR) all_gnuefi + +fs_tiano: + +make MAKEWITH=TIANO -C $(FS_DIR) + +fs_gnuefi: + +make MAKEWITH=GNUEFI -C $(FS_DIR) all_gnuefi -gptsync: - +make -C $(GPTSYNC_DIR) -f Make.tiano +gptsync_tiano: + +make MAKEWITH=TIANO -C $(GPTSYNC_DIR) -f Make.tiano gptsync_gnuefi: - +make -C $(GPTSYNC_DIR) gnuefi + +make MAKEWITH=GNUEFI -C $(GPTSYNC_DIR) gnuefi clean: make -C $(LIBEG_DIR) clean