xref: /illumos-gate/usr/src/boot/i386/loader/Makefile (revision 22028508fd28d36ff74dc02c5774a8ba1f0db045)
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