1*22028508SToomas Soome# 2*22028508SToomas Soome# This file and its contents are supplied under the terms of the 3*22028508SToomas Soome# Common Development and Distribution License ("CDDL"), version 1.0. 4*22028508SToomas Soome# You may only use this file in accordance with the terms of version 5*22028508SToomas Soome# 1.0 of the CDDL. 6*22028508SToomas Soome# 7*22028508SToomas Soome# A full copy of the text of the CDDL should have accompanied this 8*22028508SToomas Soome# source. A copy of the CDDL is also available via the Internet at 9*22028508SToomas Soome# http://www.illumos.org/license/CDDL. 10*22028508SToomas Soome# 11*22028508SToomas Soome 12*22028508SToomas Soome# 13*22028508SToomas Soome# Copyright 2015 Toomas Soome <tsoome@me.com> 14*22028508SToomas Soome# Copyright 2016 RackTop Systems. 15*22028508SToomas Soome# 16*22028508SToomas Soome 17*22028508SToomas Soomeinclude $(SRC)/Makefile.master 18*22028508SToomas Soomeinclude $(SRC)/boot/Makefile.version 19*22028508SToomas Soomeinclude $(SRC)/boot/Makefile.inc 20*22028508SToomas Soome 21*22028508SToomas SoomeCPPFLAGS += -I../../include -I../../sys 22*22028508SToomas SoomeCPPFLAGS += -I$(SRC)/uts/intel/sys/acpi 23*22028508SToomas SoomeCPPFLAGS += -I$(ZLIB) 24*22028508SToomas SoomeLOADER= loader 25*22028508SToomas SoomeNEWVERSWHAT= "ZFS enabled bootstrap loader" x86 26*22028508SToomas Soome 27*22028508SToomas Soome# Set by loader Makefile 28*22028508SToomas SoomeCPPFLAGS += -I$(ZFSSRC) 29*22028508SToomas SoomeCPPFLAGS += -I../libi386 30*22028508SToomas SoomeDPLIBI386= ../libi386/libi386.a 31*22028508SToomas SoomeLIBI386= -L../libi386 -li386 32*22028508SToomas Soome 33*22028508SToomas SoomeROOT_BOOT= $(ROOT)/boot 34*22028508SToomas SoomeROOTBOOTFILES=$(FILES:%=$(ROOT_BOOT)/%) 35*22028508SToomas SoomeFILEMODE=0444 36*22028508SToomas Soome 37*22028508SToomas Soomeall: $(LOADER) loader.help 38*22028508SToomas Soome 39*22028508SToomas Soomeinstall: all $(ROOTBOOTLOADER) 40*22028508SToomas Soome 41*22028508SToomas SoomePROG= $(LOADER).sym 42*22028508SToomas Soome 43*22028508SToomas Soome# architecture-specific loader code 44*22028508SToomas SoomeSRCS= main.c conf.c vers.c chain.c 45*22028508SToomas Soome 46*22028508SToomas SoomeCPPFLAGS += -DLOADER_GZIP_SUPPORT 47*22028508SToomas Soome 48*22028508SToomas Soome# Enable BootForth 49*22028508SToomas SoomeCPPFLAGS += -DBOOT_FORTH -I$(SRC)/common/ficl -I../../libficl 50*22028508SToomas SoomeDPLIBFICL= ../../libficl/$(MACH)/libficl.a 51*22028508SToomas SoomeLIBFICL= -L../../libficl/$(MACH) -lficl 52*22028508SToomas Soome 53*22028508SToomas Soome# Always add MI sources 54*22028508SToomas SoomeSRCS += boot.c commands.c console.c devopen.c interp.c 55*22028508SToomas SoomeSRCS += interp_backslash.c interp_parse.c ls.c misc.c 56*22028508SToomas SoomeSRCS += module.c linenoise.c multiboot2.c nvstore.c 57*22028508SToomas SoomeSRCS += zfs_cmd.c 58*22028508SToomas SoomeSRCS += font.c $(FONT).c tem.c 59*22028508SToomas Soome 60*22028508SToomas Soomemodule.o := CPPFLAGS += -I$(CRYPTOSRC) 61*22028508SToomas Soometem.o := CPPFLAGS += $(DEFAULT_CONSOLE_COLOR) 62*22028508SToomas Soome 63*22028508SToomas SoomeSRCS += load_elf32.c load_elf32_obj.c reloc_elf32.c 64*22028508SToomas SoomeSRCS += load_elf64.c load_elf64_obj.c reloc_elf64.c 65*22028508SToomas Soome 66*22028508SToomas SoomeSRCS += dev_net.c 67*22028508SToomas Soome 68*22028508SToomas SoomeSRCS += disk.c part.c vdisk.c 69*22028508SToomas SoomeCPPFLAGS += -DLOADER_DISK_SUPPORT 70*22028508SToomas SoomeCPPFLAGS += -DLOADER_GPT_SUPPORT 71*22028508SToomas SoomeCPPFLAGS += -DLOADER_MBR_SUPPORT 72*22028508SToomas Soome 73*22028508SToomas SoomeSRCS += bcache.c 74*22028508SToomas Soome 75*22028508SToomas SoomeSRCS += isapnp.c 76*22028508SToomas SoomeSRCS += pnp.c 77*22028508SToomas Soome 78*22028508SToomas Soome# Forth interpreter 79*22028508SToomas SoomeSRCS += interp_forth.c 80*22028508SToomas Soome 81*22028508SToomas SoomeCPPFLAGS += -I../../common 82*22028508SToomas SoomeCPPFLAGS += -I. 83*22028508SToomas Soome 84*22028508SToomas SoomeCLEANFILES= vers.c $(LOADER) $(LOADER).sym $(LOADER).bin loader.help 85*22028508SToomas SoomeCLEANFILES += $(FONT).c 86*22028508SToomas Soome 87*22028508SToomas SoomeLDSCRIPT= ldscript.i386 88*22028508SToomas SoomeLDFLAGS= -static -T $(LDSCRIPT) -N --gc-sections 89*22028508SToomas Soome 90*22028508SToomas Soome# i386 standalone support library 91*22028508SToomas SoomeCPPFLAGS += -I.. -I../../libsa 92*22028508SToomas SoomeDPLIBSA= ../../libsa/$(MACH)/libsa.a 93*22028508SToomas SoomeLIBSA= -L../../libsa/$(MACH) -lsa 94*22028508SToomas Soome 95*22028508SToomas Soome# BTX components 96*22028508SToomas SoomeCPPFLAGS += -I../btx/lib 97*22028508SToomas Soome 98*22028508SToomas Soome# Debug me! 99*22028508SToomas Soome#CFLAGS+= -g 100*22028508SToomas Soome#LDFLAGS+= -g 101*22028508SToomas Soome 102*22028508SToomas Soomeinclude ../Makefile.inc 103*22028508SToomas Soome 104*22028508SToomas Soomeconf.o := CPPFLAGS += -I../../sys/cddl/boot/zfs 105*22028508SToomas Soomemultiboot2.o := CPPFLAGS += -I../../sys/cddl/boot/zfs 106*22028508SToomas Soomemain.o := CPPFLAGS += -I../../sys/cddl/boot/zfs -I$(SRC)/uts/common/fs/zfs 107*22028508SToomas Soomezfs_cmd.o := CPPFLAGS += -I../../sys/cddl/boot/zfs 108*22028508SToomas Soome 109*22028508SToomas Soome# For multiboot2.h, must be last, to avoid conflicts 110*22028508SToomas SoomeCPPFLAGS += -I$(SRC)/uts/common 111*22028508SToomas Soome 112*22028508SToomas Soomevers.c: ../../common/newvers.sh $(SRC)/boot/Makefile.version 113*22028508SToomas Soome $(SH) ../../common/newvers.sh $(LOADER_VERSION) $(NEWVERSWHAT) 114*22028508SToomas Soome 115*22028508SToomas Soome$(LOADER): $(LOADER).bin $(BTXLDR) $(BTXKERN) 116*22028508SToomas Soome $(BTXLD) -f aout -e $(LOADER_ADDRESS) -o $@ -l $(BTXLDR) \ 117*22028508SToomas Soome -b $(BTXKERN) $(LOADER).bin 118*22028508SToomas Soome 119*22028508SToomas Soome$(LOADER).bin: $(LOADER).sym 120*22028508SToomas Soome $(CP) $^ $@ 121*22028508SToomas Soome $(GSTRIP) -R .comment -R .note $@ 122*22028508SToomas Soome 123*22028508SToomas Soomeloader.help: ../../common/help.common help.i386 124*22028508SToomas Soome $(CAT) $^ | $(AWK) -f ../../common/merge_help.awk > $@ 125*22028508SToomas Soome 126*22028508SToomas SoomeFILES= $(LOADER) loader.help 127*22028508SToomas Soome 128*22028508SToomas Soome# XXX crt0.o needs to be first for pxeboot(8) to work 129*22028508SToomas Soome 130*22028508SToomas SoomeDPADD= $(DPLIBFICL) $(DPLIBI386) $(DPLIBSA) 131*22028508SToomas SoomeLDADD= $(LIBFICL) $(LIBI386) $(LIBSA) 132*22028508SToomas Soome 133*22028508SToomas SoomeCLEANFILES += machine x86 134*22028508SToomas Soome 135*22028508SToomas Soomemachine: 136*22028508SToomas Soome $(RM) machine 137*22028508SToomas Soome $(SYMLINK) ../../sys/i386/include machine 138*22028508SToomas Soome 139*22028508SToomas Soomex86: 140*22028508SToomas Soome $(RM) x86 141*22028508SToomas Soome $(SYMLINK) ../../sys/x86/include x86 142*22028508SToomas Soome 143*22028508SToomas SoomeOBJS= $(SRCS:%.c=%.o) 144*22028508SToomas Soome 145*22028508SToomas Soome$(OBJS): machine x86 146*22028508SToomas Soome 147*22028508SToomas Soome$(PROG): $(OBJS) $(DPADD) 148*22028508SToomas Soome $(LD) $(LDFLAGS) -o $@ $(BTXCRT) $(OBJS) $(LDADD) 149*22028508SToomas Soome 150*22028508SToomas Soomeclean: clobber 151*22028508SToomas Soomeclobber: 152*22028508SToomas Soome $(RM) $(CLEANFILES) $(OBJS) 153*22028508SToomas Soome 154*22028508SToomas Soomeinstall: all $(ROOTBOOTFILES) 155*22028508SToomas Soome 156*22028508SToomas Soome%.o: ../../common/%.c 157*22028508SToomas Soome $(COMPILE.c) -o $@ $< 158*22028508SToomas Soome 159*22028508SToomas Soome%.o: ../../common/linenoise/%.c 160*22028508SToomas Soome $(COMPILE.c) -o $@ $< 161*22028508SToomas Soome 162*22028508SToomas Soome%.o: $(SRC)/common/font/%.c 163*22028508SToomas Soome $(COMPILE.c) $< 164*22028508SToomas Soome 165*22028508SToomas Soome$(FONT).c: $(FONT_DIR)/$(FONT_SRC) 166*22028508SToomas Soome $(VTFONTCVT) -f compressed-source -o $@ $(FONT_DIR)/$(FONT_SRC) 167*22028508SToomas Soome 168*22028508SToomas Soome$(ROOT_BOOT)/%: ../../forth/% $(ROOT_BOOT) 169*22028508SToomas Soome $(INS.file) 170