14a5d661aSToomas Soome# 24a5d661aSToomas Soome# This file and its contents are supplied under the terms of the 34a5d661aSToomas Soome# Common Development and Distribution License ("CDDL"), version 1.0. 44a5d661aSToomas Soome# You may only use this file in accordance with the terms of version 54a5d661aSToomas Soome# 1.0 of the CDDL. 64a5d661aSToomas Soome# 74a5d661aSToomas Soome# A full copy of the text of the CDDL should have accompanied this 84a5d661aSToomas Soome# source. A copy of the CDDL is also available via the Internet at 94a5d661aSToomas Soome# http://www.illumos.org/license/CDDL. 104a5d661aSToomas Soome# 114a5d661aSToomas Soome 124a5d661aSToomas Soome# 134a5d661aSToomas Soome# Copyright 2015 Toomas Soome <tsoome@me.com> 142fb46810SAndrew Stormont# Copyright 2016 RackTop Systems. 154a5d661aSToomas Soome# 164a5d661aSToomas Soome 174a5d661aSToomas Soome# 184a5d661aSToomas Soome 194a5d661aSToomas Soomeinclude $(SRC)/Makefile.master 20*e95efc89SToomas Soomeinclude $(SRC)/boot/Makefile.version 214a5d661aSToomas Soome 224a5d661aSToomas SoomeAS= $(GNU_ROOT)/bin/gas 234a5d661aSToomas SoomeLD= $(GNU_ROOT)/bin/gld 244a5d661aSToomas SoomeCC= $(GCC_ROOT)/bin/gcc 254a5d661aSToomas SoomeOBJCOPY= $(GNU_ROOT)/bin/gobjcopy 264a5d661aSToomas Soome 274a5d661aSToomas SoomePROG= gptzfsboot 284a5d661aSToomas SoomeMAN= gptzfsboot.8 294a5d661aSToomas SoomeFILEMODE=0444 304a5d661aSToomas Soome 314a5d661aSToomas SoomeBOOT_COMCONSOLE_PORT= 0x3f8 324a5d661aSToomas SoomeBOOT_COMCONSOLE_SPEED= 9600 334a5d661aSToomas SoomeB2SIOFMT= 0x3 344a5d661aSToomas Soome 354a5d661aSToomas SoomeREL1= 0x700 364a5d661aSToomas SoomeORG1= 0x7c00 374a5d661aSToomas SoomeORG2= 0x0 384a5d661aSToomas Soome 394a5d661aSToomas SoomeCPPFLAGS= 404a5d661aSToomas SoomeCFLAGS= -nostdinc -DBOOTPROG=\"gptzfsboot\" \ 414a5d661aSToomas Soome -O1 \ 424a5d661aSToomas Soome -DGPT -DBOOT2 \ 434a5d661aSToomas Soome -DLOADER_MBR_SUPPORT -DLOADER_GPT_SUPPORT \ 444a5d661aSToomas Soome -DSIOPRT=${BOOT_COMCONSOLE_PORT} \ 454a5d661aSToomas Soome -DSIOFMT=${B2SIOFMT} \ 464a5d661aSToomas Soome -DSIOSPD=${BOOT_COMCONSOLE_SPEED} \ 474a5d661aSToomas Soome -I../../../../include \ 484a5d661aSToomas Soome -I../../../../lib/libstand \ 494a5d661aSToomas Soome -I../../common \ 504a5d661aSToomas Soome -I../common \ 514a5d661aSToomas Soome -I../../zfs \ 524a5d661aSToomas Soome -I../../../cddl/boot/zfs \ 534a5d661aSToomas Soome -I../btx/lib -I. \ 544a5d661aSToomas Soome -I../../.. \ 554a5d661aSToomas Soome -I../../../sys \ 564a5d661aSToomas Soome -I../libi386 \ 574a5d661aSToomas Soome -Wall -Waggregate-return -Wbad-function-cast -Wcast-align \ 584a5d661aSToomas Soome -Wmissing-declarations -Wmissing-prototypes -Wnested-externs \ 594a5d661aSToomas Soome -Wpointer-arith -Wshadow -Wwrite-strings \ 604a5d661aSToomas Soome -Winline -Wno-unknown-pragmas 614a5d661aSToomas Soome 624a5d661aSToomas SoomeCFLAGS += --param max-inline-insns-single=100 634a5d661aSToomas SoomeCFLAGS += -fno-reorder-functions 644a5d661aSToomas Soome 654a5d661aSToomas SoomeLD_FLAGS=-static -N --gc-sections 664a5d661aSToomas SoomeCCASFLAGS=-Wa,--divide 674a5d661aSToomas SoomeLIBSTAND= ../../libstand/i386/libstand.a 684a5d661aSToomas SoomeLIBZFSBOOT= ../../zfs/i386/libzfsboot.a 694a5d661aSToomas Soome 704a5d661aSToomas Soomeinclude ../Makefile.inc 714a5d661aSToomas Soome 724a5d661aSToomas Soome.PARALLEL: 734a5d661aSToomas Soome 742fb46810SAndrew Stormontall: $(PROG) 754a5d661aSToomas Soome 764a5d661aSToomas Soomeinstall: all $(ROOTBOOTPROG) 774a5d661aSToomas Soome 784a5d661aSToomas SoomeOBJS = multiboot.o zfsboot.o sio.o cons.o panic.o devopen.o \ 794a5d661aSToomas Soome part.o biosmem.o smbios.o biosdisk.o devicename.o disk.o bcache.o \ 804a5d661aSToomas Soome time.o crc32.o 814a5d661aSToomas Soome 824a5d661aSToomas SoomeCLEANFILES= gptzfsboot $(OBJS) 834a5d661aSToomas Soome 844a5d661aSToomas Soomegptzfsboot: gptldr.bin gptzfsboot.bin ${BTXKERN} 85*e95efc89SToomas Soome $(BTXLD) -E ${ORG2} -f bin -b ${BTXKERN} -V ${BOOT_VERSION} -l \ 864a5d661aSToomas Soome gptldr.bin -o $@ gptzfsboot.bin 874a5d661aSToomas Soome 884a5d661aSToomas SoomeCLEANFILES += gptldr.bin gptldr.out gptldr.o 894a5d661aSToomas Soome 904a5d661aSToomas Soomegptldr.bin: gptldr.out 914a5d661aSToomas Soome ${OBJCOPY} -S -O binary gptldr.out $@ 924a5d661aSToomas Soome 934a5d661aSToomas Soomegptldr.out: gptldr.o 944a5d661aSToomas Soome ${LD} ${LD_FLAGS} -e start -Ttext ${ORG1} -o $@ gptldr.o 954a5d661aSToomas Soome 964a5d661aSToomas SoomeCLEANFILES += gptzfsboot.bin gptzfsboot.out 974a5d661aSToomas Soome 984a5d661aSToomas Soomegptzfsboot.bin: gptzfsboot.out 994a5d661aSToomas Soome ${OBJCOPY} -S -O binary gptzfsboot.out $@ 1004a5d661aSToomas Soome 1014a5d661aSToomas Soomegptzfsboot.out: ${BTXCRT} ${OBJS} ${LIBZFSBOOT} ${LIBSTAND} 1024a5d661aSToomas Soome ${LD} ${LD_FLAGS} -Ttext ${ORG2} -o $@ ${BTXCRT} ${OBJS} \ 1034a5d661aSToomas Soome ${LIBZFSBOOT} ${LIBSTAND} 1044a5d661aSToomas Soome 1054a5d661aSToomas Soomemachine: 1064a5d661aSToomas Soome $(RM) machine 1074a5d661aSToomas Soome $(SYMLINK) ../../../i386/include machine 1084a5d661aSToomas Soome 1094a5d661aSToomas Soomex86: 1104a5d661aSToomas Soome $(RM) x86 1114a5d661aSToomas Soome $(SYMLINK) ../../../x86/include x86 1124a5d661aSToomas Soome 1132fb46810SAndrew Stormont$(OBJS): machine x86 1142fb46810SAndrew Stormont 1154a5d661aSToomas Soome%.o: ../common/%.c 1164a5d661aSToomas Soome $(COMPILE.c) -o $@ $< 1174a5d661aSToomas Soome 1184a5d661aSToomas Soome%.o: ../../common/%.c 1194a5d661aSToomas Soome $(COMPILE.c) -o $@ $< 1204a5d661aSToomas Soome 1214a5d661aSToomas Soomebiosdisk.o: ../libi386/biosdisk.c 1224a5d661aSToomas Soome $(CC) $(CFLAGS) $(CPPFLAGS) -Dalloca=__builtin_alloca -c -o $@ ../libi386/$*.c 1234a5d661aSToomas Soome 1244a5d661aSToomas Soomebiosmem.o: ../libi386/biosmem.c 1254a5d661aSToomas Soome $(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ ../libi386/$*.c 1264a5d661aSToomas Soome 1274a5d661aSToomas Soomesmbios.o: ../libi386/smbios.c 1284a5d661aSToomas Soome $(CC) $(CFLAGS) $(CPPFLAGS) \ 1294a5d661aSToomas Soome -DSMBIOS_SERIAL_NUMBERS -DSMBIOS_LITTLE_ENDIAN_UUID \ 1304a5d661aSToomas Soome -c -o $@ ../libi386/$*.c 1314a5d661aSToomas Soome 1324a5d661aSToomas Soomedevicename.o: ../libi386/devicename.c 1334a5d661aSToomas Soome $(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ ../libi386/$*.c 1344a5d661aSToomas Soome 1354a5d661aSToomas Soometime.o: ../libi386/time.c 1364a5d661aSToomas Soome $(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ ../libi386/$*.c 1374a5d661aSToomas Soome 1384a5d661aSToomas Soome.S.o: 1394a5d661aSToomas Soome $(CC) $(CFLAGS) $(CCASFLAGS) -c -o $@ $< 1404a5d661aSToomas Soome 1414a5d661aSToomas Soomeclobber: clean 1424a5d661aSToomas Soome 1434a5d661aSToomas Soomeclean: 1444a5d661aSToomas Soome $(RM) $(CLEANFILES) machine x86 145