+ifneq ($(wildcard $(EDK2BASE)/*),)
+ @echo "Found $(EDK2BASE); building with TianoCore"
+ +make tiano
+else
+ @echo "Did not find $(EDK2BASE); building with GNU-EFI"
+ +make gnuefi
+endif
+
+# The "fs" target, like "all," attempts to build with TianoCore but falls
+# back to GNU-EFI.
+fs:
+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
+
+# 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 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 MAKEWITH=TIANO -C $(GPTSYNC_DIR) -f Make.tiano
+endif
+# +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_tiano:
+ +make MAKEWITH=TIANO -C $(GPTSYNC_DIR) -f Make.tiano
+
+gptsync_gnuefi:
+ +make MAKEWITH=GNUEFI -C $(GPTSYNC_DIR) gnuefi