]> git.proxmox.com Git - efi-boot-shim.git/commitdiff
Since different distros name grub*.efi differently, make it compile-time.
authorPeter Jones <pjones@redhat.com>
Tue, 24 Sep 2013 15:48:32 +0000 (11:48 -0400)
committerPeter Jones <pjones@redhat.com>
Thu, 26 Sep 2013 15:58:02 +0000 (11:58 -0400)
Basically, if you don't want grub.efi, you do:

make 'DEFAULT_LOADER=\\\\grubx64.efi'

Signed-off-by: Peter Jones <pjones@redhat.com>
Makefile
netboot.c
shim.c

index fc4f1313c82305445a5c85f94c5fb77a4e7280c3..0e40022703b8a75e029547cea14891143bf9623e 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -14,9 +14,12 @@ EFI_LIBS     = -lefi -lgnuefi --start-group Cryptlib/libcryptlib.a Cryptlib/OpenSSL/
 EFI_CRT_OBJS   = $(EFI_PATH)/crt0-efi-$(ARCH).o
 EFI_LDS                = elf_$(ARCH)_efi.lds
 
+DEFAULT_LOADER := \\\\grub.efi
 CFLAGS         = -ggdb -O0 -fno-stack-protector -fno-strict-aliasing -fpic \
                  -fshort-wchar -Wall -Werror -mno-red-zone -maccumulate-outgoing-args \
                  -mno-mmx -mno-sse \
+                 "-DDEFAULT_LOADER=L\"$(DEFAULT_LOADER)\"" \
+                 "-DDEFAULT_LOADER_CHAR=\"$(DEFAULT_LOADER)\"" \
                  $(EFI_INCLUDES)
 ifeq ($(ARCH),x86_64)
        CFLAGS  += -DEFI_FUNCTION_WRAPPER -DGNU_EFI_USE_MS_ABI
index 3cb678a0f9dbdce33e3e842385f9d2966b4036fe..3554fc821ee3c9858715d22982b6879709173550 100644 (file)
--- a/netboot.c
+++ b/netboot.c
@@ -39,8 +39,6 @@
 #include "shim.h"
 #include "netboot.h"
 
-#define DEFAULT_LOADER "/grub.efi"
-
 static inline unsigned short int __swap16(unsigned short int x)
 {
         __asm__("xchgb %b0,%h0"
@@ -63,6 +61,24 @@ typedef struct {
        UINT8 Data[1];
 } EFI_DHCP6_PACKET_OPTION;
 
+static CHAR8 *
+translate_slashes(char *str)
+{
+       int i;
+       int j;
+       if (str == NULL)
+               return (CHAR8 *)str;
+
+       for (i = 0, j = 0; str[i] != '\0'; i++, j++) {
+               if (str[i] == '\\') {
+                       str[j] = '/';
+                       if (str[i+1] == '\\')
+                               i++;
+               }
+       }
+       return (CHAR8 *)str;
+}
+
 /*
  * usingNetboot
  * Returns TRUE if we identify a protocol that is enabled and Providing us with
@@ -229,7 +245,7 @@ static BOOLEAN extract_tftp_info(CHAR8 *url)
 {
        CHAR8 *start, *end;
        char ip6str[40];
-       CHAR8 *template = DEFAULT_LOADER;
+       CHAR8 *template = (CHAR8 *)translate_slashes(DEFAULT_LOADER_CHAR);
 
        if (strncmp((UINT8 *)url, (UINT8 *)"tftp://", 7)) {
                Print(L"URLS MUST START WITH tftp://\n");
@@ -289,7 +305,7 @@ static EFI_STATUS parseDhcp6()
 
 static EFI_STATUS parseDhcp4()
 {
-       CHAR8 *template = DEFAULT_LOADER;
+       CHAR8 *template = (CHAR8 *)DEFAULT_LOADER_CHAR;
        full_path = AllocateZeroPool(strlen(template)+1);
 
        if (!full_path)
diff --git a/shim.c b/shim.c
index 9b1117f4cebbc4a4fad323d2d195abebfa0c466d..822701385b64097d198c2d94ce0bad6724e90e08 100644 (file)
--- a/shim.c
+++ b/shim.c
@@ -43,7 +43,6 @@
 #include "shim_cert.h"
 #include "ucs2.h"
 
-#define DEFAULT_LOADER L"\\grub.efi"
 #define FALLBACK L"\\fallback.efi"
 #define MOK_MANAGER L"\\MokManager.efi"