1
AUTOMAKE_OPTIONS = subdir-objects -Wno-portability
5
include $(top_srcdir)/conf/Makefile.common
10
RANLIB=$(TARGET_RANLIB)
13
MACHO2IMG=$(top_builddir)/grub-macho2img
15
AM_CFLAGS = $(TARGET_CFLAGS)
16
AM_LDFLAGS = $(TARGET_LDFLAGS)
17
AM_CPPFLAGS = $(TARGET_CPPFLAGS) $(CPPFLAGS_DEFAULT)
18
AM_CCASFLAGS = $(TARGET_CCASFLAGS) $(CCASFLAGS_DEFAULT)
20
CFLAGS_PROGRAM += $(CFLAGS_PLATFORM)
21
LDFLAGS_PROGRAM += $(LDFLAGS_PLATFORM)
22
CPPFLAGS_PROGRAM += $(CPPFLAGS_PLATFORM)
23
CCASFLAGS_PROGRAM += $(CCASFLAGS_PLATFORM)
25
CFLAGS_LIBRARY += $(CFLAGS_PLATFORM) -fno-builtin
26
CPPFLAGS_LIBRARY += $(CPPFLAGS_PLATFORM)
27
CCASFLAGS_LIBRARY += $(CCASFLAGS_PLATFORM)
29
build-grub-pep2elf: $(top_srcdir)/util/grub-pe2elf.c $(top_srcdir)/grub-core/kern/emu/misc.c $(top_srcdir)/util/misc.c
30
$(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) -DGRUB_BUILD=1 -DGRUB_TARGET_WORDSIZE=64 -DGRUB_UTIL=1 -DGRUB_BUILD_PROGRAM_NAME=\"build-grub-pep2elf\" $^
32
build-grub-pe2elf: $(top_srcdir)/util/grub-pe2elf.c $(top_srcdir)/grub-core/kern/emu/misc.c $(top_srcdir)/util/misc.c
33
$(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) -DGRUB_BUILD=1 -DGRUB_TARGET_WORDSIZE=32 -DGRUB_UTIL=1 -DGRUB_BUILD_PROGRAM_NAME=\"build-grub-pe2elf\" $^
36
gentrigtables: gentrigtables.c
37
$(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) $< $(BUILD_LIBM)
38
CLEANFILES += gentrigtables
41
trigtables.c: gentrigtables gentrigtables.c $(top_srcdir)/configure.ac
43
CLEANFILES += trigtables.c
45
# XXX Use Automake's LEX & YACC support
46
grub_script.tab.h: script/parser.y
47
$(YACC) -d -p grub_script_yy -b grub_script $<
48
grub_script.tab.c: grub_script.tab.h
49
CLEANFILES += grub_script.tab.c grub_script.tab.h
52
grub_script.yy.h: script/yylex.l
53
$(LEX) -o grub_script.yy.c --header-file=grub_script.yy.h $<
54
grub_script.yy.c: grub_script.yy.h
56
rs_decoder.h: $(srcdir)/lib/reed_solomon.c
57
$(TARGET_CC) $(TARGET_CPPFLAGS) $(TARGET_CFLAGS) -Os -I$(top_builddir) -S -DSTANDALONE -o $@ $< -g0 -mregparm=3 -ffreestanding
59
CLEANFILES += grub_script.yy.c grub_script.yy.h
61
include $(srcdir)/Makefile.core.am
63
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/cache.h
64
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/command.h
65
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/device.h
66
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/disk.h
67
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/dl.h
68
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/env.h
69
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/env_private.h
70
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/err.h
71
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/file.h
72
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/fs.h
73
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/i18n.h
74
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/kernel.h
75
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/list.h
76
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/misc.h
77
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/mm.h
78
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/parser.h
79
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/partition.h
80
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/term.h
81
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/time.h
82
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/mm_private.h
83
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/net.h
85
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/libgcc.h
87
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/memory.h
90
KERNEL_HEADER_FILES += $(top_builddir)/include/grub/machine/kernel.h
91
KERNEL_HEADER_FILES += $(top_builddir)/include/grub/machine/pxe.h
92
KERNEL_HEADER_FILES += $(top_builddir)/include/grub/machine/int.h
93
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/i386/tsc.h
97
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/efi/efi.h
98
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/efi/disk.h
99
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/i386/tsc.h
100
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/pci.h
103
if COND_i386_coreboot
104
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/i386/tsc.h
105
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/i386/coreboot/lbio.h
106
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/video.h
107
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/video_fb.h
108
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/gfxterm.h
109
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/font.h
110
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/bufio.h
113
if COND_i386_multiboot
114
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/i386/tsc.h
118
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/pci.h
119
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/i386/tsc.h
122
if COND_i386_ieee1275
123
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/ieee1275/ieee1275.h
124
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/terminfo.h
125
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/extcmd.h
126
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/lib/arg.h
127
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/i386/tsc.h
131
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/xen.h
132
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/i386/xen/hypercall.h
133
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/terminfo.h
134
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/extcmd.h
135
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/lib/arg.h
136
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/loader.h
140
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/xen.h
141
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/x86_64/xen/hypercall.h
142
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/terminfo.h
143
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/extcmd.h
144
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/lib/arg.h
145
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/loader.h
149
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/efi/efi.h
150
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/efi/disk.h
151
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/i386/tsc.h
152
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/pci.h
156
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/efi/efi.h
157
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/efi/disk.h
161
KERNEL_HEADER_FILES += $(top_builddir)/include/grub/cpu/kernel.h
165
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/extcmd.h
166
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/arc/arc.h
167
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/terminfo.h
170
if COND_mips_qemu_mips
171
KERNEL_HEADER_FILES += $(top_builddir)/include/grub/keyboard_layouts.h
172
KERNEL_HEADER_FILES += $(top_builddir)/include/grub/machine/kernel.h
173
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/serial.h
174
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/loader.h
175
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/terminfo.h
176
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/extcmd.h
177
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/lib/arg.h
180
if COND_mips_loongson
181
KERNEL_HEADER_FILES += $(top_builddir)/include/grub/keyboard_layouts.h
182
KERNEL_HEADER_FILES += $(top_builddir)/include/grub/machine/kernel.h
183
KERNEL_HEADER_FILES += $(top_builddir)/include/grub/machine/time.h
184
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/video.h
185
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/video_fb.h
186
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/gfxterm.h
187
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/font.h
188
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/bufio.h
189
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/pci.h
190
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/cs5536.h
191
KERNEL_HEADER_FILES += $(top_builddir)/include/grub/machine/pci.h
192
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/serial.h
193
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/loader.h
194
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/terminfo.h
195
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/extcmd.h
196
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/lib/arg.h
199
if COND_mips_qemu_mips
200
KERNEL_HEADER_FILES += $(top_builddir)/include/grub/machine/memory.h
201
KERNEL_HEADER_FILES += $(top_builddir)/include/grub/machine/kernel.h
204
if COND_powerpc_ieee1275
205
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/ieee1275/ieee1275.h
206
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/terminfo.h
207
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/extcmd.h
208
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/lib/arg.h
211
if COND_sparc64_ieee1275
212
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/ieee1275/ieee1275.h
213
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/sparc64/ieee1275/ieee1275.h
214
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/terminfo.h
215
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/extcmd.h
216
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/lib/arg.h
220
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/uboot/uboot.h
221
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/uboot/disk.h
222
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/extcmd.h
223
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/lib/arg.h
224
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/arm/system.h
228
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/arm/efi/loader.h
229
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/efi/efi.h
230
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/efi/disk.h
231
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/arm/system.h
235
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/efi/efi.h
236
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/efi/disk.h
240
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/datetime.h
241
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/emu/misc.h
242
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/emu/net.h
243
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/emu/hostdisk.h
244
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/emu/hostfile.h
245
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/extcmd.h
247
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/sdl.h
250
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/libusb.h
253
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/libpciaccess.h
257
symlist.h: $(top_builddir)/config.h $(KERNEL_HEADER_FILES)
259
for p in $$list; do \
260
echo "#include <$$p>" >> $@ || (rm -f $@; exit 1); \
262
CLEANFILES += symlist.h
263
BUILT_SOURCES += symlist.h
265
symlist.c: symlist.h gensymlist.sh
266
$(TARGET_CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS_KERNEL) $(CPPFLAGS) -DGRUB_SYMBOL_GENERATOR=1 symlist.h > symlist.p || (rm -f symlist.p; exit 1)
267
cat symlist.p | /bin/sh $(srcdir)/gensymlist.sh $(top_builddir)/config.h $(KERNEL_HEADER_FILES) >$@ || (rm -f $@; exit 1)
269
CLEANFILES += symlist.c
270
BUILT_SOURCES += symlist.c
272
if COND_HAVE_ASM_USCORE
278
noinst_DATA += kernel_syms.lst
280
kernel_syms.lst: $(KERNEL_HEADER_FILES) $(top_builddir)/config.h
281
$(TARGET_CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS_KERNEL) $(CPPFLAGS) $(CFLAGS) -DGRUB_SYMBOL_GENERATOR=1 $^ >kernel_syms.input
282
cat kernel_syms.input | grep -v '^#' | sed -n \
283
-e '/EXPORT_FUNC *([a-zA-Z0-9_]*)/{s/.*EXPORT_FUNC *(\([a-zA-Z0-9_]*\)).*/defined kernel '"$(ASM_PREFIX)"'\1/;p;}' \
284
-e '/EXPORT_VAR *([a-zA-Z0-9_]*)/{s/.*EXPORT_VAR *(\([a-zA-Z0-9_]*\)).*/defined kernel '"$(ASM_PREFIX)"'\1/;p;}' \
286
rm -f kernel_syms.input
287
CLEANFILES += kernel_syms.lst
290
kern/emu/grub_emu-main.$(OBJEXT):grub_emu_init.h
291
grub_emu-grub_emu_init.$(OBJEXT):grub_emu_init.h
292
kern/emu/grub_emu_dyn-main.$(OBJEXT):grub_emu_init.h
293
grub_emu_dyn-grub_emu_init.$(OBJEXT):grub_emu_init.h
295
grub_emu_init.h: genemuinitheader.sh $(MOD_FILES)
296
rm -f $@; echo $(MOD_FILES) | sh $(srcdir)/genemuinitheader.sh $(TARGET_NM) > $@
297
CLEANFILES += grub_emu_init.h
299
grub_emu_init.c: grub_emu_init.h genemuinit.sh $(MOD_FILES)
300
rm -f $@; echo $(MOD_FILES) | sh $(srcdir)/genemuinit.sh $(TARGET_NM) > $@
301
CLEANFILES += grub_emu_init.c
306
fs.lst: $(MARKER_FILES)
308
b=`basename $$pp .marker`; \
309
if grep 'FS_LIST_MARKER' $$pp >/dev/null 2>&1; then \
313
platform_DATA += fs.lst
316
command.lst: $(MARKER_FILES)
318
b=`basename $$pp .marker`; \
320
-e "/EXTCOMMAND_LIST_MARKER *( *\"/{s/.*( *\"\([^\"]*\)\".*/*\1: $$b/;p;}" \
321
-e "/P1COMMAND_LIST_MARKER *( *\"/{s/.*( *\"\([^\"]*\)\".*/*\1: $$b/;p;}" \
322
-e "/COMMAND_LIST_MARKER *( *\"/{s/.*( *\"\([^\"]*\)\".*/\1: $$b/;p;}" $$pp; \
324
platform_DATA += command.lst
325
CLEANFILES += command.lst
327
partmap.lst: $(MARKER_FILES)
329
b=`basename $$pp .marker`; \
330
if grep 'PARTMAP_LIST_MARKER' $$pp >/dev/null 2>&1; then \
334
platform_DATA += partmap.lst
335
CLEANFILES += partmap.lst
337
terminal.lst: $(MARKER_FILES)
339
b=`basename $$pp .marker`; \
341
-e "/INPUT_TERMINAL_LIST_MARKER *( *\"/{s/.*( *\"\([^\"]*\)\".*/i\1: $$b/;p;}" \
342
-e "/OUTPUT_TERMINAL_LIST_MARKER *( *\"/{s/.*( *\"\([^\"]*\)\".*/o\1: $$b/;p;}" $$pp; \
344
platform_DATA += terminal.lst
345
CLEANFILES += terminal.lst
347
parttool.lst: $(MARKER_FILES)
349
b=`basename $$pp .marker`; \
351
-e "/PARTTOOL_LIST_MARKER *( *\"/{s/.*( *\"\([^\"]*\)\".*/\1: $$b/;p;}" $$pp; \
353
platform_DATA += parttool.lst
354
CLEANFILES += parttool.lst
356
video.lst: $(MARKER_FILES)
358
b=`basename $$pp .marker`; \
359
if grep 'VIDEO_LIST_MARKER' $$pp >/dev/null 2>&1; then \
363
platform_DATA += video.lst
364
CLEANFILES += video.lst
366
# but, crypto.lst is simply copied
367
crypto.lst: $(srcdir)/lib/libgcrypt-grub/cipher/crypto.lst
369
platform_DATA += crypto.lst
370
CLEANFILES += crypto.lst
372
syminfo.lst: gensyminfo.sh kernel_syms.lst $(MODULE_FILES)
373
cat kernel_syms.lst > $@.new
374
for m in $(MODULE_FILES); do \
375
sh $< $$m >> $@.new || exit 1; \
379
# generate global module dependencies list
380
moddep.lst: syminfo.lst genmoddep.awk video.lst
381
cat $< | sort | $(AWK) -f $(srcdir)/genmoddep.awk > $@ || (rm -f $@; exit 1)
382
platform_DATA += moddep.lst
383
CLEANFILES += config.log syminfo.lst moddep.lst
385
$(MOD_FILES): %.mod : genmod.sh moddep.lst %.module$(EXEEXT)
386
TARGET_OBJ2ELF=@TARGET_OBJ2ELF@ sh $^ $@
387
platform_DATA += $(MOD_FILES)
388
platform_DATA += modinfo.sh
389
CLEANFILES += $(MOD_FILES)
391
if COND_ENABLE_EFIEMU
392
efiemu32.o: efiemu/runtime/efiemu.c $(TARGET_OBJ2ELF)
395
$(TARGET_CC) $(DEFS) $(INCLUDES) $(CPPFLAGS_EFIEMU) $(CPPFLAGS_DEFAULT) -m32 -Wall -Werror -nostdlib -static -O2 -c -o $@.bin $<
396
if test "x$(TARGET_APPLE_LINKER)" = x1; then \
397
$(TARGET_OBJCONV) -felf32 -nu -nd $@.bin $@ || exit 1; \
399
elif test ! -z "$(TARGET_OBJ2ELF)"; then \
400
$(TARGET_OBJ2ELF) $@.bin || (rm -f $@.bin; exit 1); \
406
# Link format -arch,x86_64 means Apple linker
407
efiemu64_c.o: efiemu/runtime/efiemu.c
408
$(TARGET_CC) $(DEFS) $(INCLUDES) $(CPPFLAGS_EFIEMU) $(CPPFLAGS_DEFAULT) -m64 -nostdlib -Wall -Werror -O2 -mcmodel=large -mno-red-zone -c -o $@ $<
410
efiemu64_s.o: efiemu/runtime/efiemu.S
411
$(TARGET_CC) $(DEFS) $(INCLUDES) $(CPPFLAGS_EFIEMU) $(CPPFLAGS_DEFAULT) -m64 -Wall -Werror -nostdlib -O2 -mcmodel=large -mno-red-zone -c -o $@ $<
413
efiemu64.o: efiemu64_c.o efiemu64_s.o $(TARGET_OBJ2ELEF)
416
$(TARGET_CC) -m64 $(EFIEMU64_LINK_FORMAT) -nostdlib -static -Wl,-r -o $@.bin $^
417
if test "x$(EFIEMU64_LINK_FORMAT)" = x-arch,x86_64; then \
418
$(TARGET_OBJCONV) -felf64 -nu -nd $@.bin $@ || exit 1; \
424
platform_DATA += efiemu32.o efiemu64.o
425
CLEANFILES += efiemu32.o efiemu64.o efiemu64_c.o efiemu64_s.o
428
windowsdir=$(top_builddir)/$(PACKAGE)-$(VERSION)-for-windows
429
windowsdir: $(PROGRAMS) $(starfield_DATA) $(platform_DATA)
430
test -d $(windowsdir)/$(target_cpu)-$(platform) || mkdir $(windowsdir)/$(target_cpu)-$(platform)
431
for x in $(platform_DATA); do \
432
cp -fp $$x $(windowsdir)/$(target_cpu)-$(platform)/$$x; \