generate.mk 2.8 KB
Newer Older
1
ifdef BUILDDIR
Michael Shigorin's avatar
Michael Shigorin committed
2

3 4 5
# in deciseconds
DEFAULT_TIMEOUT = 90

6 7
# prepare data for syslinux installation;
# see also stage1/scripts.d/01-syslinux
Michael Shigorin's avatar
Michael Shigorin committed
8

9 10 11 12
include $(BUILDDIR)/distcfg.mk

ifndef BOOTLOADER
$(error syslinux feature enabled but BOOTLOADER undefined)
Michael Shigorin's avatar
Michael Shigorin committed
13 14
endif

15 16
# UI is backed by modules in modern syslinux
# (except for built-in text prompt)
17
ifdef SYSLINUX_UI
18
SYSLINUX_MODULES := $(SYSLINUX_MODULES) $(SYSLINUX_UI)
19 20 21 22
else
$(warning no syslinux ui configured, default is plain text prompt)
SYSLINUX_UI := prompt
endif
23

24 25
# SUBPROFILES are considered SYSLINUX_CFG too
# (note these can appear like stage2/live);
26
# 01defaults.cfg is included indefinitely
27
SYSLINUX_CFG := $(SYSLINUX_CFG) $(notdir $(SUBPROFILES)) defaults
28

29 30
### have to operate BUILDDIR, not pretty...
DSTDIR := $(BUILDDIR)/stage1/files/syslinux/.in
Michael Shigorin's avatar
Michael Shigorin committed
31

32 33 34 35 36 37
# we can do SYSLINUX_{CFG,MODULES,FILES}
# CFG have only cfg snippet
# FILES have only filenames (absolute or relative to /usr/lib/syslinux/)
# MODULES must have both cfg snippet and syslinux module filename
#         (and get included iff cfg snippet AND module exist)
cfg = $(wildcard cfg.in/??$(1).cfg)
Michael Shigorin's avatar
Michael Shigorin committed
38

39
# NB: list position determined by file numbering (*.cfg sorting)
40 41 42 43 44 45 46 47 48 49
#
# config snippets are copied into generated profile where they can
# be also tested against syslinux modules (some can be unavailable);
# we can't do tests right now since that implies host syslinux being
# identical to build system one which might be not the case...
#
# have to piggyback parameters as we're running in host system yet,
# and files involved will appear inside instrumental chroot
#
# arguments get evaluated before recipe body execution thus prep
50

51
all: debug timeout
52 53
	@### proper text branding should be implemented
	@sed -i 's,@mkimage-profiles@,$(IMAGE_NAME),' $(DSTDIR)/*.cfg
54
	@echo $(SYSLINUX_MODULES) > $(DSTDIR)/modules.list
55
	@echo $(SYSLINUX_FILES) > $(DSTDIR)/syslinux.list
56

57
# integerity check
58
timeout: bootargs
59 60 61 62 63 64 65
	@if [ "$(SYSLINUX_TIMEOUT)" -ge 0 ] 2>/dev/null; then \
		TIMEOUT="$(SYSLINUX_TIMEOUT)"; \
	else \
		TIMEOUT="$(DEFAULT_TIMEOUT)"; \
	fi; \
	sed -i "s,@timeout@,$$TIMEOUT," $(DSTDIR)/*.cfg

66
# pass over additional parameters, if any
67
bootargs: clean
68 69
	@if [ -n "$(STAGE2_BOOTARGS)" ]; then \
		sed -i "s,@bootargs@,$(STAGE2_BOOTARGS)," $(DSTDIR)/*.cfg; \
70 71 72
	fi; \
	sed -i "s,@bootargs@,," $(DSTDIR)/*.cfg

73 74 75 76 77
clean: copy
	@if [ "$(SYSLINUX_UI)" = gfxboot ]; then \
		sed -i "s,\^,," $(DSTDIR)/*.cfg; \
	fi

78 79 80 81 82
copy: prep
	@cp -pLt $(DSTDIR) -- $(sort \
		$(foreach C,$(SYSLINUX_CFG),$(call cfg,$(C))) \
		$(foreach M,$(SYSLINUX_MODULES),$(call cfg,$(M))))

83
prep:
Michael Shigorin's avatar
Michael Shigorin committed
84
	@mkdir -p $(DSTDIR)
Michael Shigorin's avatar
Michael Shigorin committed
85 86

debug:
87
	@if [ -n "$(DEBUG)" ]; then \
88 89 90 91 92 93 94 95
		echo "** BOOTLOADER: $(BOOTLOADER)"; \
		echo "** SYSLINUX_UI: $(SYSLINUX_UI)"; \
		echo "** SYSLINUX_CFG: $(SYSLINUX_CFG)"; \
		echo "** SYSLINUX_FILES: $(SYSLINUX_FILES)"; \
		echo "** SYSLINUX_MODULES: $(SYSLINUX_MODULES)"; \
	fi

endif