122028508SToomas Soome# 222028508SToomas Soome# This file and its contents are supplied under the terms of the 322028508SToomas Soome# Common Development and Distribution License ("CDDL"), version 1.0. 422028508SToomas Soome# You may only use this file in accordance with the terms of version 522028508SToomas Soome# 1.0 of the CDDL. 622028508SToomas Soome# 722028508SToomas Soome# A full copy of the text of the CDDL should have accompanied this 822028508SToomas Soome# source. A copy of the CDDL is also available via the Internet at 922028508SToomas Soome# http://www.illumos.org/license/CDDL. 1022028508SToomas Soome# 1122028508SToomas Soome 1222028508SToomas Soome# 1322028508SToomas Soome# Copyright 2016 Toomas Soome <tsoome@me.com> 1422028508SToomas Soome# 1522028508SToomas Soome 1622028508SToomas Soomeinclude $(SRC)/boot/Makefile.version 1722028508SToomas Soomeinclude $(SRC)/boot/Makefile.inc 1822028508SToomas Soome 1922028508SToomas SoomePROG= loader.sym 2022028508SToomas Soome 2122028508SToomas Soome# architecture-specific loader code 2222028508SToomas SoomeOBJS= \ 2322028508SToomas Soome acpi.o \ 2422028508SToomas Soome autoload.o \ 2522028508SToomas Soome bootinfo.o \ 2622028508SToomas Soome conf.o \ 2722028508SToomas Soome copy.o \ 2822028508SToomas Soome efi_main.o \ 2922028508SToomas Soome font.o \ 3022028508SToomas Soome $(FONT).o \ 3122028508SToomas Soome framebuffer.o \ 3222028508SToomas Soome main.o \ 3322028508SToomas Soome memmap.o \ 3422028508SToomas Soome mb_header.o \ 3522028508SToomas Soome multiboot2.o \ 3622028508SToomas Soome nvstore.o \ 3722028508SToomas Soome self_reloc.o \ 3822028508SToomas Soome tem.o \ 3922028508SToomas Soome vers.o 4022028508SToomas Soome 4122028508SToomas Soomemodule.o := CPPFLAGS += -I$(CRYPTOSRC) 4222028508SToomas Soometem.o := CPPFLAGS += $(DEFAULT_CONSOLE_COLOR) 4322028508SToomas Soomemain.o := CPPFLAGS += -I$(SRC)/uts/common/fs/zfs 4422028508SToomas Soome 4522028508SToomas SoomeCPPFLAGS += -I../../../include -I../../../sys 4622028508SToomas SoomeCPPFLAGS += -I../../../libsa 4722028508SToomas Soome 4822028508SToomas Soomeinclude ../../Makefile.inc 4922028508SToomas Soome 5022028508SToomas Soomeinclude ../arch/$(MACHINE)/Makefile.inc 5122028508SToomas Soome 5222028508SToomas SoomeCPPFLAGS += -I. -I.. 5322028508SToomas SoomeCPPFLAGS += -I../../include 5422028508SToomas SoomeCPPFLAGS += -I../../include/$(MACHINE) 5522028508SToomas SoomeCPPFLAGS += -I$(ZFSSRC) 5622028508SToomas SoomeCPPFLAGS += -I../../../sys/cddl/boot/zfs 5722028508SToomas SoomeCPPFLAGS += -I$(SRC)/uts/intel/sys/acpi 5822028508SToomas SoomeCPPFLAGS += -I$(PNGLITE) 5922028508SToomas SoomeCPPFLAGS += -DNO_PCI -DEFI 6022028508SToomas Soome 6122028508SToomas SoomeDPLIBSA= ../../../libsa/$(MACHINE)/libsa_pics.a 6222028508SToomas SoomeLIBSA= -L../../../libsa/$(MACHINE) -lsa_pics 6322028508SToomas Soome 6422028508SToomas SoomeBOOT_FORTH= yes 6522028508SToomas SoomeCPPFLAGS += -DBOOT_FORTH 6622028508SToomas SoomeCPPFLAGS += -I$(SRC)/common/ficl 6722028508SToomas SoomeCPPFLAGS += -I../../../libficl 6822028508SToomas SoomeDPLIBFICL= ../../../libficl/$(MACHINE)/libficl_pics.a 6922028508SToomas SoomeLIBFICL= -L../../../libficl/$(MACHINE) -lficl_pics 7022028508SToomas Soome 7122028508SToomas Soome# Always add MI sources 7222028508SToomas Soome# 7322028508SToomas SoomeOBJS += boot.o commands.o console.o devopen.o interp.o \ 7422028508SToomas Soome interp_backslash.o interp_parse.o ls.o misc.o \ 7522028508SToomas Soome module.o linenoise.o zfs_cmd.o 7622028508SToomas Soome 7722028508SToomas SoomeOBJS += load_elf32.o load_elf32_obj.o reloc_elf32.o \ 7822028508SToomas Soome load_elf64.o load_elf64_obj.o reloc_elf64.o 7922028508SToomas Soome 8022028508SToomas SoomeOBJS += disk.o part.o dev_net.o vdisk.o 8122028508SToomas SoomeCPPFLAGS += -DLOADER_DISK_SUPPORT 8222028508SToomas SoomeCPPFLAGS += -DLOADER_GPT_SUPPORT 8322028508SToomas SoomeCPPFLAGS += -DLOADER_MBR_SUPPORT 8422028508SToomas Soome 8522028508SToomas Soomepart.o := CPPFLAGS += -I$(ZLIB) 8622028508SToomas Soome 8722028508SToomas SoomeOBJS += bcache.o 8822028508SToomas Soome 8922028508SToomas Soome# Forth interpreter 9022028508SToomas SoomeOBJS += interp_forth.o 9122028508SToomas SoomeCPPFLAGS += -I../../../common 9222028508SToomas Soome 9322028508SToomas Soome# For multiboot2.h, must be last, to avoid conflicts 9422028508SToomas SoomeCPPFLAGS += -I$(SRC)/uts/common 9522028508SToomas Soome 9622028508SToomas SoomeFILES= $(EFIPROG) 9722028508SToomas SoomeFILEMODE= 0555 9822028508SToomas SoomeROOT_BOOT= $(ROOT)/boot 9922028508SToomas SoomeROOTBOOTFILES=$(FILES:%=$(ROOT_BOOT)/%) 10022028508SToomas Soome 10122028508SToomas SoomeLDSCRIPT= ../arch/$(MACHINE)/ldscript.$(MACHINE) 10222028508SToomas SoomeLDFLAGS = -nostdlib --eh-frame-hdr 10322028508SToomas SoomeLDFLAGS += -shared --hash-style=both --enable-new-dtags 10422028508SToomas SoomeLDFLAGS += -T$(LDSCRIPT) -Bsymbolic 10522028508SToomas Soome 10622028508SToomas SoomeCLEANFILES= $(EFIPROG) loader.sym loader.bin 10722028508SToomas SoomeCLEANFILES += $(FONT).c vers.c 10822028508SToomas Soome 10922028508SToomas SoomeNEWVERSWHAT= "EFI loader" $(MACHINE) 11022028508SToomas Soome 11122028508SToomas Soomeinstall: all $(ROOTBOOTFILES) 11222028508SToomas Soome 11322028508SToomas Soomevers.c: ../../../common/newvers.sh $(SRC)/boot/Makefile.version 11422028508SToomas Soome $(SH) ../../../common/newvers.sh $(LOADER_VERSION) $(NEWVERSWHAT) 11522028508SToomas Soome 11622028508SToomas Soome$(EFIPROG): loader.bin 11722028508SToomas Soome $(BTXLD) -V $(BOOT_VERSION) -o $@ loader.bin 11822028508SToomas Soome 11922028508SToomas Soomeloader.bin: loader.sym 12022028508SToomas Soome if [ `$(OBJDUMP) -t loader.sym | fgrep '*UND*' | wc -l` != 0 ]; then \ 12122028508SToomas Soome $(OBJDUMP) -t loader.sym | fgrep '*UND*'; \ 12222028508SToomas Soome exit 1; \ 12322028508SToomas Soome fi 12422028508SToomas Soome $(OBJCOPY) --readonly-text -j .peheader -j .text -j .sdata -j .data \ 12522028508SToomas Soome -j .dynamic -j .dynsym -j .rel.dyn \ 12622028508SToomas Soome -j .rela.dyn -j .reloc -j .eh_frame -j set_Xcommand_set \ 12722028508SToomas Soome -j set_Xficl_compile_set \ 12822028508SToomas Soome --output-target=$(EFI_TARGET) --subsystem efi-app loader.sym $@ 12922028508SToomas Soome 13022028508SToomas SoomeDPLIBEFI= ../../libefi/$(MACHINE)/libefi.a 13122028508SToomas SoomeLIBEFI= -L../../libefi/$(MACHINE) -lefi 13222028508SToomas Soome 13322028508SToomas SoomeDPADD= $(DPLIBFICL) $(DPLIBEFI) $(DPLIBSA) $(LDSCRIPT) 13422028508SToomas SoomeLDADD= $(LIBFICL) $(LIBEFI) $(LIBSA) 13522028508SToomas Soome 13622028508SToomas Soomeloader.sym: $(OBJS) $(DPADD) 137*db1a8debSToomas Soome $(GLD) $(LDFLAGS) -o $@ $(OBJS) $(LDADD) 13822028508SToomas Soome 13922028508SToomas Soomemachine: 14022028508SToomas Soome $(RM) machine 14122028508SToomas Soome $(SYMLINK) ../../../sys/$(MACHINE)/include machine 14222028508SToomas Soome 14322028508SToomas Soomex86: 14422028508SToomas Soome $(RM) x86 14522028508SToomas Soome $(SYMLINK) ../../../sys/x86/include x86 14622028508SToomas Soome 14722028508SToomas Soomeclean clobber: 14822028508SToomas Soome $(RM) $(CLEANFILES) $(OBJS) machine x86 14922028508SToomas Soome 15022028508SToomas Soome%.o: ../%.c 15122028508SToomas Soome $(COMPILE.c) $< 15222028508SToomas Soome 15322028508SToomas Soome%.o: ../arch/$(MACHINE)/%.c 15422028508SToomas Soome $(COMPILE.c) $< 15522028508SToomas Soome 15622028508SToomas Soome# 15722028508SToomas Soome# using -W to silence gas here, as for 32bit build, it will generate warning 15822028508SToomas Soome# for start.S because hand crafted .reloc section does not have group name 15922028508SToomas Soome# 16022028508SToomas Soome%.o: ../arch/$(MACHINE)/%.S 16122028508SToomas Soome $(COMPILE.S) -Wa,-W $< 16222028508SToomas Soome 16322028508SToomas Soome%.o: ../../../common/%.S 16422028508SToomas Soome $(COMPILE.S) $< 16522028508SToomas Soome 16622028508SToomas Soome%.o: ../../../common/%.c 16722028508SToomas Soome $(COMPILE.c) $< 16822028508SToomas Soome 16922028508SToomas Soome%.o: ../../../common/linenoise/%.c 17022028508SToomas Soome $(COMPILE.c) $< 17122028508SToomas Soome 17222028508SToomas Soome%.o: $(SRC)/common/font/%.c 17322028508SToomas Soome $(COMPILE.c) $< 17422028508SToomas Soome 17522028508SToomas Soome$(FONT).c: $(FONT_DIR)/$(FONT_SRC) 17622028508SToomas Soome $(VTFONTCVT) -f compressed-source -o $@ $(FONT_DIR)/$(FONT_SRC) 17722028508SToomas Soome 17822028508SToomas Soome$(ROOT_BOOT)/%: % 17922028508SToomas Soome $(INS.file) 180