summaryrefslogtreecommitdiff
path: root/boot/syslinux/syslinux.mk
blob: 46b41f2ab7ab3362e8f127e6052a55fd048eee18 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
SYSLINUX_SUPPORTED_ARCH=n
ifeq ($(ARCH),i386)
SYSLINUX_SUPPORTED_ARCH=y
endif
ifeq ($(ARCH),i486)
SYSLINUX_SUPPORTED_ARCH=y
endif
ifeq ($(ARCH),i586)
SYSLINUX_SUPPORTED_ARCH=y
endif
ifeq ($(ARCH),i686)
SYSLINUX_SUPPORTED_ARCH=y
endif
ifeq ($(ARCH),x86_64)
SYSLINUX_SUPPORTED_ARCH=y
endif
ifeq ($(SYSLINUX_SUPPORTED_ARCH),y)

#############################################################
#
# syslinux to make target msdos/iso9660 filesystems bootable
#
#############################################################

SYSLINUX_VERSION:=3.85
SYSLINUX_DIR=$(BUILD_DIR)/syslinux-$(SYSLINUX_VERSION)
SYSLINUX_SOURCE=syslinux-$(SYSLINUX_VERSION).tar.bz2
SYSLINUX_CAT:=$(BZCAT)
SYSLINUX_SITE=$(BR2_KERNEL_MIRROR)/linux/utils/boot/syslinux/3.xx/

$(DL_DIR)/$(SYSLINUX_SOURCE):
	 $(call DOWNLOAD,$(SYSLINUX_SITE),$(SYSLINUX_SOURCE))

syslinux-source: $(DL_DIR)/$(SYSLINUX_SOURCE)

$(SYSLINUX_DIR)/.unpacked: $(DL_DIR)/$(SYSLINUX_SOURCE) $(SYSLINUX_PATCH)
	mkdir -p $(@D)
	$(SYSLINUX_CAT) $(DL_DIR)/$(SYSLINUX_SOURCE) | tar $(TAR_STRIP_COMPONENTS)=1 -C $(@D) $(TAR_OPTIONS) -
	toolchain/patch-kernel.sh $(@D) boot/syslinux/ \*.patch
	touch -c $@

$(SYSLINUX_DIR)/.compiled: $(SYSLINUX_DIR)/.unpacked
	$(TARGET_MAKE_ENV) $(MAKE) CC="$(HOSTCC)" AR="$(HOSTAR)" -C $(SYSLINUX_DIR)
	touch -c $@

$(BINARIES_DIR)/isolinux.bin: $(SYSLINUX_DIR)/.compiled
	cp -a $(SYSLINUX_DIR)/core/isolinux.bin $@

$(BINARIES_DIR)/pxelinux.bin: $(SYSLINUX_DIR)/.compiled
	cp -a $(SYSLINUX_DIR)/core/pxelinux.bin $@

syslinux: $(BINARIES_DIR)/isolinux.bin
pxelinux: $(BINARIES_DIR)/pxelinux.bin

pxelinux-clean syslinux-clean:
	rm -f $(BINARIES_DIR)/isolinux.bin $(BINARIES_DIR)/pxelinux.bin
	-$(MAKE) -C $(SYSLINUX_DIR) clean

pxelinux-dirclean syslinux-dirclean:
	rm -rf $(SYSLINUX_DIR)

endif

#############################################################
#
# Toplevel Makefile options
#
#############################################################
ifeq ($(BR2_TARGET_SYSLINUX),y)
TARGETS+=syslinux
endif
ifeq ($(BR2_TARGET_PXELINUX),y)
TARGETS+=pxelinux
endif