183b4671eSToomas Soome# 283b4671eSToomas Soome# This file and its contents are supplied under the terms of the 383b4671eSToomas Soome# Common Development and Distribution License ("CDDL"), version 1.0. 483b4671eSToomas Soome# You may only use this file in accordance with the terms of version 583b4671eSToomas Soome# 1.0 of the CDDL. 683b4671eSToomas Soome# 783b4671eSToomas Soome# A full copy of the text of the CDDL should have accompanied this 883b4671eSToomas Soome# source. A copy of the CDDL is also available via the Internet at 983b4671eSToomas Soome# http://www.illumos.org/license/CDDL. 1083b4671eSToomas Soome# 1183b4671eSToomas Soome 1283b4671eSToomas Soome# 1383b4671eSToomas Soome# Copyright 2016 Toomas Soome <tsoome@me.com> 1483b4671eSToomas Soome# 1583b4671eSToomas Soome 1683b4671eSToomas Soomeinclude $(SRC)/boot/Makefile.version 1722028508SToomas Soomeinclude $(SRC)/boot/Makefile.inc 1883b4671eSToomas Soome 1983b4671eSToomas SoomePROG= loader.sym 2083b4671eSToomas Soome 2183b4671eSToomas Soome# architecture-specific loader code 229890ff83SToomas SoomeSRCS= \ 239890ff83SToomas Soome acpi.c \ 247d1eae8cSToomas Soome autoload.c \ 257d1eae8cSToomas Soome bootinfo.c \ 267d1eae8cSToomas Soome conf.c \ 277d1eae8cSToomas Soome copy.c \ 287d1eae8cSToomas Soome efi_main.c \ 299890ff83SToomas Soome font.c \ 309890ff83SToomas Soome $(FONT).c \ 317d1eae8cSToomas Soome framebuffer.c \ 327d1eae8cSToomas Soome main.c \ 337d1eae8cSToomas Soome memmap.c \ 345ac07b12SToomas Soome mb_header.S \ 357d1eae8cSToomas Soome multiboot2.c \ 36b713c91eSToomas Soome nvstore.c \ 377d1eae8cSToomas Soome self_reloc.c \ 389890ff83SToomas Soome tem.c \ 397d1eae8cSToomas Soome vers.c 407d1eae8cSToomas Soome 419890ff83SToomas SoomeOBJS= \ 429890ff83SToomas Soome acpi.o \ 437d1eae8cSToomas Soome autoload.o \ 447d1eae8cSToomas Soome bootinfo.o \ 457d1eae8cSToomas Soome conf.o \ 467d1eae8cSToomas Soome copy.o \ 477d1eae8cSToomas Soome efi_main.o \ 489890ff83SToomas Soome font.o \ 499890ff83SToomas Soome $(FONT).o \ 507d1eae8cSToomas Soome framebuffer.o \ 517d1eae8cSToomas Soome main.o \ 527d1eae8cSToomas Soome memmap.o \ 535ac07b12SToomas Soome mb_header.o \ 547d1eae8cSToomas Soome multiboot2.o \ 55b713c91eSToomas Soome nvstore.o \ 567d1eae8cSToomas Soome self_reloc.o \ 579890ff83SToomas Soome tem.o \ 587d1eae8cSToomas Soome vers.o 5983b4671eSToomas Soome 60411d06f4SToomas Soomemodule.o := CPPFLAGS += -I$(CRYPTOSRC) 61e0721d5aSToomas Soometem.o := CPPFLAGS += $(DEFAULT_CONSOLE_COLOR) 62b713c91eSToomas Soomemain.o := CPPFLAGS += -I$(SRC)/uts/common/fs/zfs 633c562093SToomas Soome 6422028508SToomas SoomeCPPFLAGS += -I../../../include -I../../../sys 6522028508SToomas SoomeCPPFLAGS += -I../../../libsa 6683b4671eSToomas Soome 6783b4671eSToomas Soomeinclude ../../Makefile.inc 6883b4671eSToomas Soome 6983b4671eSToomas Soomeinclude ../arch/$(MACHINE)/Makefile.inc 7083b4671eSToomas Soome 7183b4671eSToomas SoomeCPPFLAGS += -I. -I.. 7283b4671eSToomas SoomeCPPFLAGS += -I../../include 7383b4671eSToomas SoomeCPPFLAGS += -I../../include/$(MACHINE) 7486fec011SToomas SoomeCPPFLAGS += -I$(ZFSSRC) 7522028508SToomas SoomeCPPFLAGS += -I../../../sys/cddl/boot/zfs 7683b4671eSToomas SoomeCPPFLAGS += -I$(SRC)/uts/intel/sys/acpi 779890ff83SToomas SoomeCPPFLAGS += -I$(PNGLITE) 789890ff83SToomas SoomeCPPFLAGS += -DNO_PCI -DEFI 7983b4671eSToomas Soome 8022028508SToomas SoomeDPLIBSA= ../../../libsa/$(MACHINE)/libsa_pics.a 8122028508SToomas SoomeLIBSA= -L../../../libsa/$(MACHINE) -lsa_pics 8283b4671eSToomas Soome 8383b4671eSToomas SoomeBOOT_FORTH= yes 8486fec011SToomas SoomeCPPFLAGS += -DBOOT_FORTH 8583b4671eSToomas SoomeCPPFLAGS += -I$(SRC)/common/ficl 8683b4671eSToomas SoomeCPPFLAGS += -I../../../libficl 87ff5d4039SToomas SoomeDPLIBFICL= ../../../libficl/$(MACHINE)/libficl_pics.a 88ff5d4039SToomas SoomeLIBFICL= -L../../../libficl/$(MACHINE) -lficl_pics 8983b4671eSToomas Soome 9083b4671eSToomas Soome# Always add MI sources 91ff5d4039SToomas Soome# 92ff5d4039SToomas SoomeSRCS += boot.c commands.c console.c devopen.c interp.c 93ff5d4039SToomas SoomeSRCS += interp_backslash.c interp_parse.c ls.c misc.c 94ff5d4039SToomas SoomeSRCS += module.c linenoise.c zfs_cmd.c 95ff5d4039SToomas Soome 96ff5d4039SToomas SoomeOBJS += boot.o commands.o console.o devopen.o interp.o \ 97ff5d4039SToomas Soome interp_backslash.o interp_parse.o ls.o misc.o \ 98ff5d4039SToomas Soome module.o linenoise.o zfs_cmd.o 99ff5d4039SToomas Soome 100ff5d4039SToomas SoomeSRCS += load_elf32.c load_elf32_obj.c reloc_elf32.c 101ff5d4039SToomas SoomeSRCS += load_elf64.c load_elf64_obj.c reloc_elf64.c 102ff5d4039SToomas Soome 103ff5d4039SToomas SoomeOBJS += load_elf32.o load_elf32_obj.o reloc_elf32.o \ 104ff5d4039SToomas Soome load_elf64.o load_elf64_obj.o reloc_elf64.o 105ff5d4039SToomas Soome 106ff5d4039SToomas SoomeSRCS += disk.c part.c dev_net.c vdisk.c 107ff5d4039SToomas SoomeOBJS += disk.o part.o dev_net.o vdisk.o 108ff5d4039SToomas SoomeCPPFLAGS += -DLOADER_DISK_SUPPORT 109ff5d4039SToomas SoomeCPPFLAGS += -DLOADER_GPT_SUPPORT 110ff5d4039SToomas SoomeCPPFLAGS += -DLOADER_MBR_SUPPORT 111ff5d4039SToomas Soome 112ff5d4039SToomas Soomepart.o := CPPFLAGS += -I$(ZLIB) 113ff5d4039SToomas Soome 114ff5d4039SToomas SoomeSRCS += bcache.c 115ff5d4039SToomas SoomeOBJS += bcache.o 116ff5d4039SToomas Soome 117ff5d4039SToomas Soome# Forth interpreter 118ff5d4039SToomas SoomeSRCS += interp_forth.c 119ff5d4039SToomas SoomeOBJS += interp_forth.o 12083b4671eSToomas SoomeCPPFLAGS += -I../../../common 12183b4671eSToomas Soome 12283b4671eSToomas Soome# For multiboot2.h, must be last, to avoid conflicts 12383b4671eSToomas SoomeCPPFLAGS += -I$(SRC)/uts/common 12483b4671eSToomas Soome 12583b4671eSToomas SoomeFILES= $(EFIPROG) 12683b4671eSToomas SoomeFILEMODE= 0555 12783b4671eSToomas SoomeROOT_BOOT= $(ROOT)/boot 12883b4671eSToomas SoomeROOTBOOTFILES=$(FILES:%=$(ROOT_BOOT)/%) 12983b4671eSToomas Soome 13083b4671eSToomas SoomeLDSCRIPT= ../arch/$(MACHINE)/ldscript.$(MACHINE) 13183b4671eSToomas SoomeLDFLAGS = -nostdlib --eh-frame-hdr 13283b4671eSToomas SoomeLDFLAGS += -shared --hash-style=both --enable-new-dtags 13383b4671eSToomas SoomeLDFLAGS += -T$(LDSCRIPT) -Bsymbolic 13483b4671eSToomas Soome 135ff5d4039SToomas SoomeCLEANFILES= $(EFIPROG) loader.sym loader.bin 1369890ff83SToomas SoomeCLEANFILES += $(FONT).c vers.c 13783b4671eSToomas Soome 13883b4671eSToomas SoomeNEWVERSWHAT= "EFI loader" $(MACHINE) 13983b4671eSToomas Soome 14083b4671eSToomas Soomeinstall: all $(ROOTBOOTFILES) 14183b4671eSToomas Soome 14283b4671eSToomas Soomevers.c: ../../../common/newvers.sh $(SRC)/boot/Makefile.version 14383b4671eSToomas Soome $(SH) ../../../common/newvers.sh $(LOADER_VERSION) $(NEWVERSWHAT) 14483b4671eSToomas Soome 1457d1eae8cSToomas Soome$(EFIPROG): loader.bin 1467d1eae8cSToomas Soome $(BTXLD) -V $(BOOT_VERSION) -o $@ loader.bin 1477d1eae8cSToomas Soome 1487d1eae8cSToomas Soomeloader.bin: loader.sym 14983b4671eSToomas Soome if [ `$(OBJDUMP) -t loader.sym | fgrep '*UND*' | wc -l` != 0 ]; then \ 15083b4671eSToomas Soome $(OBJDUMP) -t loader.sym | fgrep '*UND*'; \ 15183b4671eSToomas Soome exit 1; \ 15283b4671eSToomas Soome fi 15383b4671eSToomas Soome $(OBJCOPY) --readonly-text -j .peheader -j .text -j .sdata -j .data \ 15483b4671eSToomas Soome -j .dynamic -j .dynsym -j .rel.dyn \ 15583b4671eSToomas Soome -j .rela.dyn -j .reloc -j .eh_frame -j set_Xcommand_set \ 15683b4671eSToomas Soome -j set_Xficl_compile_set \ 15783b4671eSToomas Soome --output-target=$(EFI_TARGET) --subsystem efi-app loader.sym $@ 15883b4671eSToomas Soome 159411d06f4SToomas SoomeDPLIBEFI= ../../libefi/$(MACHINE)/libefi.a 160411d06f4SToomas SoomeLIBEFI= -L../../libefi/$(MACHINE) -lefi 16183b4671eSToomas Soome 16222028508SToomas SoomeDPADD= $(DPLIBFICL) $(DPLIBEFI) $(DPLIBSA) $(LDSCRIPT) 16322028508SToomas SoomeLDADD= $(LIBFICL) $(LIBEFI) $(LIBSA) 16483b4671eSToomas Soome 16583b4671eSToomas Soomeloader.sym: $(OBJS) $(DPADD) 166*db1a8debSToomas Soome $(GLD) $(LDFLAGS) -o $@ $(OBJS) $(LDADD) 16783b4671eSToomas Soome 16883b4671eSToomas Soomemachine: 16983b4671eSToomas Soome $(RM) machine 17022028508SToomas Soome $(SYMLINK) ../../../sys/$(MACHINE)/include machine 17183b4671eSToomas Soome 17283b4671eSToomas Soomex86: 17383b4671eSToomas Soome $(RM) x86 17422028508SToomas Soome $(SYMLINK) ../../../sys/x86/include x86 17583b4671eSToomas Soome 17683b4671eSToomas Soomeclean clobber: 177ff5d4039SToomas Soome $(RM) $(CLEANFILES) $(OBJS) machine x86 17883b4671eSToomas Soome 17983b4671eSToomas Soome%.o: ../%.c 18083b4671eSToomas Soome $(COMPILE.c) $< 18183b4671eSToomas Soome 18283b4671eSToomas Soome%.o: ../arch/$(MACHINE)/%.c 18383b4671eSToomas Soome $(COMPILE.c) $< 18483b4671eSToomas Soome 18583b4671eSToomas Soome# 18683b4671eSToomas Soome# using -W to silence gas here, as for 32bit build, it will generate warning 18783b4671eSToomas Soome# for start.S because hand crafted .reloc section does not have group name 18883b4671eSToomas Soome# 18983b4671eSToomas Soome%.o: ../arch/$(MACHINE)/%.S 19083b4671eSToomas Soome $(COMPILE.S) -Wa,-W $< 19183b4671eSToomas Soome 1927d1eae8cSToomas Soome%.o: ../../../common/%.S 1937d1eae8cSToomas Soome $(COMPILE.S) $< 1947d1eae8cSToomas Soome 19583b4671eSToomas Soome%.o: ../../../common/%.c 19683b4671eSToomas Soome $(COMPILE.c) $< 19783b4671eSToomas Soome 19883b4671eSToomas Soome%.o: ../../../common/linenoise/%.c 19983b4671eSToomas Soome $(COMPILE.c) $< 20083b4671eSToomas Soome 2019890ff83SToomas Soome%.o: $(SRC)/common/font/%.c 20283b4671eSToomas Soome $(COMPILE.c) $< 20383b4671eSToomas Soome 2049890ff83SToomas Soome$(FONT).c: $(FONT_DIR)/$(FONT_SRC) 2059890ff83SToomas Soome $(VTFONTCVT) -f compressed-source -o $@ $(FONT_DIR)/$(FONT_SRC) 2069890ff83SToomas Soome 20783b4671eSToomas Soome$(ROOT_BOOT)/%: % 20883b4671eSToomas Soome $(INS.file) 209