summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Brown2015-09-01 21:58:28 +0200
committerMichael Brown2015-09-01 22:04:44 +0200
commitf6e1da5cbf70a372f2b622c8021c98503cab8323 (patch)
tree310d4800cd9d248a81f976a8ce21b1fb4416cb3c
parent[efi] Populate debug directory entry FileOffset field (diff)
downloadipxe-f6e1da5cbf70a372f2b622c8021c98503cab8323.tar.gz
ipxe-f6e1da5cbf70a372f2b622c8021c98503cab8323.tar.xz
ipxe-f6e1da5cbf70a372f2b622c8021c98503cab8323.zip
[build] Search for ldlinux.c32 separately from isolinux.bin
Some distributions (observed with Ubuntu 15.04) place ldlinux.c32 in a separate directory from isolinux.bin. Search for these files separately, and allow an alternative location of ldlinux.c32 to be provided via LDLINUX_C32=... on the make command line. Reported-by: Adrian Koshka <adriankoshcha@teknik.io> Tested-by: Adrian Koshka <adriankoshcha@teknik.io> Signed-off-by: Michael Brown <mcb30@ipxe.org>
-rw-r--r--src/arch/i386/Makefile27
-rw-r--r--src/arch/i386/Makefile.pcbios3
-rwxr-xr-xsrc/util/geniso3
3 files changed, 21 insertions, 12 deletions
diff --git a/src/arch/i386/Makefile b/src/arch/i386/Makefile
index 99f87531..7f706a5a 100644
--- a/src/arch/i386/Makefile
+++ b/src/arch/i386/Makefile
@@ -84,18 +84,27 @@ endif
#
CFLAGS_lkrnprefix += -DVERSION="\"$(VERSION)\""
-# Locations of utilities
-#
+# Locations of isolinux files
+#
+SYSLINUX_DIR_LIST := \
+ /usr/lib/syslinux \
+ /usr/lib/syslinux/bios \
+ /usr/lib/syslinux/modules/bios \
+ /usr/share/syslinux \
+ /usr/share/syslinux/bios \
+ /usr/share/syslinux/modules/bios \
+ /usr/local/share/syslinux \
+ /usr/local/share/syslinux/bios \
+ /usr/local/share/syslinux/modules/bios \
+ /usr/lib/ISOLINUX
ISOLINUX_BIN_LIST := \
$(ISOLINUX_BIN) \
- /usr/lib/syslinux/isolinux.bin \
- /usr/lib/syslinux/bios/isolinux.bin \
- /usr/share/syslinux/isolinux.bin \
- /usr/share/syslinux/bios/isolinux.bin \
- /usr/local/share/syslinux/isolinux.bin \
- /usr/local/share/syslinux/bios/isolinux.bin \
- /usr/lib/ISOLINUX/isolinux.bin
+ $(patsubst %,%/isolinux.bin,$(SYSLINUX_DIR_LIST))
+LDLINUX_C32_LIST := \
+ $(LDLINUX_C32) \
+ $(patsubst %,%/ldlinux.c32,$(SYSLINUX_DIR_LIST))
ISOLINUX_BIN = $(firstword $(wildcard $(ISOLINUX_BIN_LIST)))
+LDLINUX_C32 = $(firstword $(wildcard $(LDLINUX_C32_LIST)))
# i386-specific directories containing source files
#
diff --git a/src/arch/i386/Makefile.pcbios b/src/arch/i386/Makefile.pcbios
index ff823737..02952f81 100644
--- a/src/arch/i386/Makefile.pcbios
+++ b/src/arch/i386/Makefile.pcbios
@@ -57,7 +57,8 @@ LIST_NAME_isarom := ROMS
NON_AUTO_MEDIA += iso
%iso: %lkrn util/geniso
$(QM)$(ECHO) " [GENISO] $@"
- $(Q)ISOLINUX_BIN=$(ISOLINUX_BIN) VERSION="$(VERSION)" bash util/geniso -o $@ $<
+ $(Q)ISOLINUX_BIN=$(ISOLINUX_BIN) LDLINUX_C32=$(LDLINUX_C32) \
+ VERSION="$(VERSION)" bash util/geniso -o $@ $<
# rule to make a floppy emulation ISO boot image
NON_AUTO_MEDIA += liso
diff --git a/src/util/geniso b/src/util/geniso
index 521c929e..ff090d4a 100755
--- a/src/util/geniso
+++ b/src/util/geniso
@@ -123,8 +123,7 @@ case "${LEGACY}" in
cp ${ISOLINUX_BIN} ${dir}
# syslinux 6.x needs a file called ldlinux.c32
- LDLINUX_C32=$(dirname ${ISOLINUX_BIN})/ldlinux.c32
- if [ -s ${LDLINUX_C32} ]; then
+ if [ -n "${LDLINUX_C32}" -a -s "${LDLINUX_C32}" ]; then
cp ${LDLINUX_C32} ${dir}
fi