Makefile.am 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501
  1. AUTOMAKE_OPTIONS = subdir-objects -Wno-portability
  2. DEPDIR=.deps-core
  3. include $(top_srcdir)/conf/Makefile.common
  4. CC=$(TARGET_CC)
  5. CPP=$(TARGET_CC)
  6. CCAS=$(TARGET_CC)
  7. RANLIB=$(TARGET_RANLIB)
  8. STRIP=$(TARGET_STRIP)
  9. MACHO2IMG=$(top_builddir)/grub-macho2img
  10. AM_CFLAGS = $(TARGET_CFLAGS)
  11. AM_LDFLAGS = $(TARGET_LDFLAGS)
  12. AM_CPPFLAGS = $(TARGET_CPPFLAGS) $(CPPFLAGS_DEFAULT)
  13. AM_CCASFLAGS = $(TARGET_CCASFLAGS) $(CCASFLAGS_DEFAULT)
  14. CFLAGS_PROGRAM += $(CFLAGS_PLATFORM)
  15. LDFLAGS_PROGRAM += $(LDFLAGS_PLATFORM)
  16. CPPFLAGS_PROGRAM += $(CPPFLAGS_PLATFORM)
  17. CCASFLAGS_PROGRAM += $(CCASFLAGS_PLATFORM)
  18. CFLAGS_LIBRARY += $(CFLAGS_PLATFORM) -fno-builtin
  19. CPPFLAGS_LIBRARY += $(CPPFLAGS_PLATFORM)
  20. CCASFLAGS_LIBRARY += $(CCASFLAGS_PLATFORM)
  21. build-grub-pep2elf$(BUILD_EXEEXT): $(top_srcdir)/util/grub-pe2elf.c $(top_srcdir)/grub-core/kern/emu/misc.c $(top_srcdir)/util/misc.c
  22. $(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) $(BUILD_LDFLAGS) -DGRUB_BUILD=1 -DGRUB_TARGET_WORDSIZE=64 -DGRUB_UTIL=1 -DGRUB_BUILD_PROGRAM_NAME=\"build-grub-pep2elf\" $^
  23. CLEANFILES += build-grub-pep2elf$(BUILD_EXEEXT)
  24. build-grub-pe2elf$(BUILD_EXEEXT): $(top_srcdir)/util/grub-pe2elf.c $(top_srcdir)/grub-core/kern/emu/misc.c $(top_srcdir)/util/misc.c
  25. $(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) $(BUILD_LDFLAGS) -DGRUB_BUILD=1 -DGRUB_TARGET_WORDSIZE=32 -DGRUB_UTIL=1 -DGRUB_BUILD_PROGRAM_NAME=\"build-grub-pe2elf\" $^
  26. CLEANFILES += build-grub-pe2elf$(BUILD_EXEEXT)
  27. # gentrigtables
  28. gentrigtables$(BUILD_EXEEXT): gentrigtables.c
  29. $(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) $(BUILD_LDFLAGS) $< $(BUILD_LIBM)
  30. CLEANFILES += gentrigtables$(BUILD_EXEEXT)
  31. build-grub-module-verifier$(BUILD_EXEEXT): $(top_srcdir)/util/grub-module-verifier.c $(top_srcdir)/util/grub-module-verifier32.c $(top_srcdir)/util/grub-module-verifier64.c $(top_srcdir)/grub-core/kern/emu/misc.c $(top_srcdir)/util/misc.c
  32. $(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) $(BUILD_LDFLAGS) -DGRUB_BUILD=1 -DGRUB_UTIL=1 -DGRUB_BUILD_PROGRAM_NAME=\"build-grub-module-verifier\" $^
  33. CLEANFILES += build-grub-module-verifier$(BUILD_EXEEXT)
  34. # trigtables.c
  35. trigtables.c: gentrigtables$(BUILD_EXEEXT) gentrigtables.c $(top_srcdir)/configure.ac
  36. ./gentrigtables$(BUILD_EXEEXT) > $@
  37. CLEANFILES += trigtables.c
  38. # XXX Use Automake's LEX & YACC support
  39. grub_script.tab.h: script/parser.y
  40. $(YACC) -d -p grub_script_yy -b grub_script $<
  41. grub_script.tab.c: grub_script.tab.h
  42. CLEANFILES += grub_script.tab.c grub_script.tab.h
  43. # For the lexer.
  44. grub_script.yy.h: script/yylex.l
  45. $(LEX) -o grub_script.yy.c --header-file=grub_script.yy.h $<
  46. grub_script.yy.c: grub_script.yy.h
  47. rs_decoder.h: $(srcdir)/lib/reed_solomon.c
  48. $(TARGET_CC) $(TARGET_CPPFLAGS) $(TARGET_CFLAGS) -Os -I$(top_builddir) -S -DSTANDALONE -o $@ $< -g0 -mregparm=3 -ffreestanding
  49. CLEANFILES += grub_script.yy.c grub_script.yy.h
  50. include $(srcdir)/Makefile.core.am
  51. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/cache.h
  52. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/command.h
  53. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/device.h
  54. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/disk.h
  55. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/dl.h
  56. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/env.h
  57. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/env_private.h
  58. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/err.h
  59. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/file.h
  60. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/fs.h
  61. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/i18n.h
  62. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/kernel.h
  63. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/list.h
  64. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/misc.h
  65. if COND_emu
  66. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/compiler-rt-emu.h
  67. else
  68. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/compiler-rt.h
  69. endif
  70. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/mm.h
  71. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/parser.h
  72. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/partition.h
  73. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/term.h
  74. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/time.h
  75. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/mm_private.h
  76. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/net.h
  77. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/memory.h
  78. if COND_i386_pc
  79. KERNEL_HEADER_FILES += $(top_builddir)/include/grub/machine/kernel.h
  80. KERNEL_HEADER_FILES += $(top_builddir)/include/grub/machine/pxe.h
  81. KERNEL_HEADER_FILES += $(top_builddir)/include/grub/machine/int.h
  82. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/i386/tsc.h
  83. endif
  84. if COND_i386_xen_pvh
  85. KERNEL_HEADER_FILES += $(top_builddir)/include/grub/machine/kernel.h
  86. KERNEL_HEADER_FILES += $(top_builddir)/include/grub/machine/int.h
  87. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/i386/tsc.h
  88. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/terminfo.h
  89. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/extcmd.h
  90. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/loader.h
  91. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/lib/arg.h
  92. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/xen.h
  93. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/i386/xen/hypercall.h
  94. endif
  95. if COND_i386_efi
  96. KERNEL_HEADER_FILES += $(top_builddir)/include/grub/machine/kernel.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/acpi.h
  101. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/pci.h
  102. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/i386/pmtimer.h
  103. endif
  104. if COND_i386_coreboot
  105. KERNEL_HEADER_FILES += $(top_builddir)/include/grub/machine/kernel.h
  106. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/i386/tsc.h
  107. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/coreboot/lbio.h
  108. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/video.h
  109. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/video_fb.h
  110. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/gfxterm.h
  111. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/font.h
  112. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/bufio.h
  113. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/acpi.h
  114. endif
  115. if COND_i386_multiboot
  116. KERNEL_HEADER_FILES += $(top_builddir)/include/grub/machine/kernel.h
  117. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/i386/tsc.h
  118. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/acpi.h
  119. endif
  120. if COND_i386_qemu
  121. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/pci.h
  122. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/i386/tsc.h
  123. endif
  124. if COND_i386_ieee1275
  125. KERNEL_HEADER_FILES += $(top_builddir)/include/grub/machine/kernel.h
  126. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/ieee1275/ieee1275.h
  127. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/terminfo.h
  128. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/extcmd.h
  129. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/lib/arg.h
  130. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/i386/tsc.h
  131. endif
  132. if COND_i386_xen
  133. KERNEL_HEADER_FILES += $(top_builddir)/include/grub/machine/kernel.h
  134. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/xen.h
  135. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/i386/xen/hypercall.h
  136. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/terminfo.h
  137. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/extcmd.h
  138. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/lib/arg.h
  139. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/loader.h
  140. endif
  141. if COND_x86_64_xen
  142. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/xen.h
  143. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/x86_64/xen/hypercall.h
  144. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/terminfo.h
  145. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/extcmd.h
  146. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/lib/arg.h
  147. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/loader.h
  148. endif
  149. if COND_x86_64_efi
  150. KERNEL_HEADER_FILES += $(top_builddir)/include/grub/machine/kernel.h
  151. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/efi/efi.h
  152. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/efi/disk.h
  153. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/i386/tsc.h
  154. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/pci.h
  155. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/acpi.h
  156. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/i386/pmtimer.h
  157. endif
  158. if COND_ia64_efi
  159. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/efi/efi.h
  160. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/efi/disk.h
  161. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/acpi.h
  162. endif
  163. if COND_mips
  164. KERNEL_HEADER_FILES += $(top_builddir)/include/grub/cpu/kernel.h
  165. endif
  166. if COND_mips_arc
  167. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/extcmd.h
  168. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/arc/arc.h
  169. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/terminfo.h
  170. endif
  171. if COND_mips_qemu_mips
  172. KERNEL_HEADER_FILES += $(top_builddir)/include/grub/keyboard_layouts.h
  173. KERNEL_HEADER_FILES += $(top_builddir)/include/grub/machine/kernel.h
  174. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/serial.h
  175. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/loader.h
  176. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/terminfo.h
  177. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/extcmd.h
  178. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/lib/arg.h
  179. endif
  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
  197. endif
  198. if COND_mips_qemu_mips
  199. KERNEL_HEADER_FILES += $(top_builddir)/include/grub/machine/memory.h
  200. KERNEL_HEADER_FILES += $(top_builddir)/include/grub/machine/kernel.h
  201. endif
  202. if COND_powerpc_ieee1275
  203. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/ieee1275/ieee1275.h
  204. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/terminfo.h
  205. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/extcmd.h
  206. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/lib/arg.h
  207. endif
  208. if COND_sparc64_ieee1275
  209. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/ieee1275/ieee1275.h
  210. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/sparc64/ieee1275/ieee1275.h
  211. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/terminfo.h
  212. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/extcmd.h
  213. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/lib/arg.h
  214. endif
  215. if COND_arm_uboot
  216. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/uboot/uboot.h
  217. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/uboot/disk.h
  218. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/extcmd.h
  219. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/lib/arg.h
  220. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/arm/system.h
  221. endif
  222. if COND_arm_coreboot
  223. KERNEL_HEADER_FILES += $(top_builddir)/include/grub/keyboard_layouts.h
  224. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/arm/system.h
  225. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/video.h
  226. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/video_fb.h
  227. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/gfxterm.h
  228. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/font.h
  229. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/bufio.h
  230. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/fdt.h
  231. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/dma.h
  232. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/arm/coreboot/kernel.h
  233. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/fdtbus.h
  234. endif
  235. if COND_arm_efi
  236. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/efi/efi.h
  237. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/efi/disk.h
  238. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/arm/system.h
  239. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/acpi.h
  240. endif
  241. if COND_arm64_efi
  242. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/efi/efi.h
  243. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/efi/disk.h
  244. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/acpi.h
  245. endif
  246. if COND_riscv32_efi
  247. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/efi/efi.h
  248. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/efi/disk.h
  249. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/acpi.h
  250. endif
  251. if COND_riscv64_efi
  252. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/efi/efi.h
  253. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/efi/disk.h
  254. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/acpi.h
  255. endif
  256. if COND_emu
  257. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/datetime.h
  258. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/emu/misc.h
  259. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/emu/net.h
  260. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/emu/hostdisk.h
  261. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/emu/hostfile.h
  262. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/extcmd.h
  263. if COND_GRUB_EMU_SDL
  264. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/sdl.h
  265. endif
  266. if COND_GRUB_EMU_PCI
  267. KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/libpciaccess.h
  268. endif
  269. endif
  270. symlist.h: $(top_builddir)/config.h $(KERNEL_HEADER_FILES)
  271. @list='$^'; \
  272. for p in $$list; do \
  273. echo "#include <$$p>" >> $@ || (rm -f $@; exit 1); \
  274. done
  275. CLEANFILES += symlist.h
  276. BUILT_SOURCES += symlist.h
  277. symlist.c: symlist.h gensymlist.sh
  278. $(TARGET_CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS_KERNEL) $(CPPFLAGS) -DGRUB_SYMBOL_GENERATOR=1 symlist.h > symlist.p || (rm -f symlist.p; exit 1)
  279. cat symlist.p | $(SHELL) $(srcdir)/gensymlist.sh $(top_builddir)/config.h $(KERNEL_HEADER_FILES) >$@ || (rm -f $@; exit 1)
  280. rm -f symlist.p
  281. CLEANFILES += symlist.c
  282. BUILT_SOURCES += symlist.c
  283. if COND_HAVE_ASM_USCORE
  284. ASM_PREFIX=_
  285. else
  286. ASM_PREFIX=
  287. endif
  288. noinst_DATA += kernel_syms.lst
  289. kernel_syms.lst: $(KERNEL_HEADER_FILES) $(top_builddir)/config.h
  290. $(TARGET_CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS_KERNEL) $(CPPFLAGS) $(CFLAGS) -DGRUB_SYMBOL_GENERATOR=1 $^ >kernel_syms.input
  291. cat kernel_syms.input | grep -v '^#' | sed -n \
  292. -e '/EXPORT_FUNC *([a-zA-Z0-9_]*)/{s/.*EXPORT_FUNC *(\([a-zA-Z0-9_]*\)).*/defined kernel '"$(ASM_PREFIX)"'\1/;p;}' \
  293. -e '/EXPORT_VAR *([a-zA-Z0-9_]*)/{s/.*EXPORT_VAR *(\([a-zA-Z0-9_]*\)).*/defined kernel '"$(ASM_PREFIX)"'\1/;p;}' \
  294. | sort -u >$@
  295. rm -f kernel_syms.input
  296. CLEANFILES += kernel_syms.lst
  297. if COND_emu
  298. kern/emu/grub_emu-main.$(OBJEXT):grub_emu_init.h
  299. grub_emu-grub_emu_init.$(OBJEXT):grub_emu_init.h
  300. kern/emu/grub_emu_dyn-main.$(OBJEXT):grub_emu_init.h
  301. grub_emu_dyn-grub_emu_init.$(OBJEXT):grub_emu_init.h
  302. grub_emu_init.h: genemuinitheader.sh $(MODULE_FILES)
  303. rm -f $@; echo $(MODULE_FILES) | sh $(srcdir)/genemuinitheader.sh $(TARGET_NM) > $@
  304. CLEANFILES += grub_emu_init.h
  305. grub_emu_init.c: grub_emu_init.h genemuinit.sh $(MODULE_FILES)
  306. rm -f $@; echo $(MODULE_FILES) | sh $(srcdir)/genemuinit.sh $(TARGET_NM) > $@
  307. CLEANFILES += grub_emu_init.c
  308. endif
  309. # List files
  310. fs.lst: $(MARKER_FILES)
  311. (for pp in $^; do \
  312. b=`basename $$pp .marker`; \
  313. if grep 'FS_LIST_MARKER' $$pp >/dev/null 2>&1; then \
  314. echo $$b; \
  315. fi; \
  316. done) | sort -u > $@
  317. platform_DATA += fs.lst
  318. CLEANFILES += fs.lst
  319. command.lst: $(MARKER_FILES)
  320. (for pp in $^; do \
  321. b=`basename $$pp .marker`; \
  322. sed -n \
  323. -e "/EXTCOMMAND_LIST_MARKER *( *\"/{s/.*( *\"\([^\"]*\)\".*/*\1: $$b/;p;}" \
  324. -e "/P1COMMAND_LIST_MARKER *( *\"/{s/.*( *\"\([^\"]*\)\".*/*\1: $$b/;p;}" \
  325. -e "/COMMAND_LIST_MARKER *( *\"/{s/.*( *\"\([^\"]*\)\".*/\1: $$b/;p;}" $$pp; \
  326. done) | sort -u > $@
  327. platform_DATA += command.lst
  328. CLEANFILES += command.lst
  329. partmap.lst: $(MARKER_FILES)
  330. (for pp in $^; do \
  331. b=`basename $$pp .marker`; \
  332. if grep 'PARTMAP_LIST_MARKER' $$pp >/dev/null 2>&1; then \
  333. echo $$b; \
  334. fi; \
  335. done) | sort -u > $@
  336. platform_DATA += partmap.lst
  337. CLEANFILES += partmap.lst
  338. terminal.lst: $(MARKER_FILES)
  339. (for pp in $^; do \
  340. b=`basename $$pp .marker`; \
  341. sed -n \
  342. -e "/INPUT_TERMINAL_LIST_MARKER *( *\"/{s/.*( *\"\([^\"]*\)\".*/i\1: $$b/;p;}" \
  343. -e "/OUTPUT_TERMINAL_LIST_MARKER *( *\"/{s/.*( *\"\([^\"]*\)\".*/o\1: $$b/;p;}" $$pp; \
  344. done) | sort -u > $@
  345. platform_DATA += terminal.lst
  346. CLEANFILES += terminal.lst
  347. fdt.lst: $(MARKER_FILES)
  348. (for pp in $^; do \
  349. b=`basename $$pp .marker`; \
  350. sed -n \
  351. -e "/FDT_DRIVER_LIST_MARKER *( *\"/{s/.*( *\"\([^\"]*\)\".*/i\1: $$b/;p;}" \
  352. -e "/FDT_DRIVER_LIST_MARKER *( *\"/{s/.*( *\"\([^\"]*\)\".*/o\1: $$b/;p;}" $$pp; \
  353. done) | sort -u > $@
  354. platform_DATA += fdt.lst
  355. CLEANFILES += fdt.lst
  356. parttool.lst: $(MARKER_FILES)
  357. (for pp in $^; do \
  358. b=`basename $$pp .marker`; \
  359. sed -n \
  360. -e "/PARTTOOL_LIST_MARKER *( *\"/{s/.*( *\"\([^\"]*\)\".*/\1: $$b/;p;}" $$pp; \
  361. done) | sort -u > $@
  362. platform_DATA += parttool.lst
  363. CLEANFILES += parttool.lst
  364. video.lst: $(MARKER_FILES)
  365. (for pp in $^; do \
  366. b=`basename $$pp .marker`; \
  367. if grep 'VIDEO_LIST_MARKER' $$pp >/dev/null 2>&1; then \
  368. echo $$b; \
  369. fi; \
  370. done) | sort -u > $@
  371. platform_DATA += video.lst
  372. CLEANFILES += video.lst
  373. # but, crypto.lst is simply copied
  374. crypto.lst: $(srcdir)/lib/libgcrypt-grub/cipher/crypto.lst
  375. cp $^ $@
  376. platform_DATA += crypto.lst
  377. CLEANFILES += crypto.lst
  378. syminfo.lst: gensyminfo.sh kernel_syms.lst $(MODULE_FILES)
  379. cat kernel_syms.lst > $@.new
  380. for m in $(MODULE_FILES); do \
  381. sh $< $$m >> $@.new || exit 1; \
  382. done
  383. mv $@.new $@
  384. # generate global module dependencies list
  385. moddep.lst: syminfo.lst genmoddep.awk video.lst
  386. cat $< | sort | $(AWK) -f $(srcdir)/genmoddep.awk > $@ || (rm -f $@; exit 1)
  387. platform_DATA += moddep.lst
  388. CLEANFILES += config.log syminfo.lst moddep.lst
  389. $(MOD_FILES): %.mod : genmod.sh moddep.lst %.module$(EXEEXT) build-grub-module-verifier$(BUILD_EXEEXT)
  390. TARGET_OBJ2ELF=@TARGET_OBJ2ELF@ sh $^ $@
  391. platform_DATA += $(MOD_FILES)
  392. platform_DATA += modinfo.sh
  393. CLEANFILES += $(MOD_FILES)
  394. if COND_ENABLE_EFIEMU
  395. efiemu32.o: efiemu/runtime/efiemu.c $(TARGET_OBJ2ELF)
  396. -rm -f $@
  397. -rm -f $@.bin
  398. $(TARGET_CC) $(DEFS) $(INCLUDES) $(CPPFLAGS_EFIEMU) $(CPPFLAGS_DEFAULT) -m32 -Wall -Werror -nostdlib -static -O2 -c -o $@.bin $<
  399. if test "x$(TARGET_APPLE_LINKER)" = x1; then \
  400. $(TARGET_OBJCONV) -felf32 -nu -nd $@.bin $@ || exit 1; \
  401. rm -f $@.bin ; \
  402. elif test ! -z "$(TARGET_OBJ2ELF)"; then \
  403. $(TARGET_OBJ2ELF) $@.bin || (rm -f $@.bin; exit 1); \
  404. mv $@.bin $@ ; \
  405. else \
  406. mv $@.bin $@ ; \
  407. fi
  408. # Link format -arch,x86_64 means Apple linker
  409. efiemu64_c.o: efiemu/runtime/efiemu.c
  410. $(TARGET_CC) $(DEFS) $(INCLUDES) $(CPPFLAGS_EFIEMU) $(CPPFLAGS_DEFAULT) -m64 -nostdlib -Wall -Werror -O2 -mcmodel=large -mno-red-zone -c -o $@ $<
  411. efiemu64_s.o: efiemu/runtime/efiemu.S
  412. $(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)
  414. -rm -f $@
  415. -rm -f $@.bin
  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; \
  419. rm -f $@.bin; \
  420. else \
  421. mv $@.bin $@ ; \
  422. fi
  423. platform_DATA += efiemu32.o efiemu64.o
  424. CLEANFILES += efiemu32.o efiemu64.o efiemu64_c.o efiemu64_s.o
  425. endif
  426. windowsdir=$(top_builddir)/$(PACKAGE)-$(VERSION)-for-windows
  427. windowsdir: $(PROGRAMS) $(starfield_DATA) $(platform_DATA)
  428. test -d $(windowsdir)/$(target_cpu)-$(platform) || mkdir $(windowsdir)/$(target_cpu)-$(platform)
  429. for x in $(platform_DATA); do \
  430. cp -fp $$x $(windowsdir)/$(target_cpu)-$(platform)/$$x; \
  431. done