view usr/src/boot/sys/boot/efi/boot1/Makefile @ 18357:11a2d819935f

Merge branch 'master' of git://github.com/illumos/illumos-gate
author Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
date Fri, 10 Mar 2017 18:57:44 -0500
parents e671712ccb7a 731fca242cc9
children 48522e7e119a
line wrap: on
line source

#
# This file and its contents are supplied under the terms of the
# Common Development and Distribution License ("CDDL"), version 1.0.
# You may only use this file in accordance with the terms of version
# 1.0 of the CDDL.
#
# A full copy of the text of the CDDL should have accompanied this
# source.  A copy of the CDDL is also available via the Internet at
# http://www.illumos.org/license/CDDL.
#

#
# Copyright 2016 Toomas Soome <tsoome@me.com>
# Copyright 2016 RackTop Systems.
#

include $(SRC)/Makefile.master
include $(SRC)/boot/Makefile.version

CC=	$(GCC_ROOT)/bin/gcc
LD=	$(GNU_ROOT)/bin/gld
OBJCOPY= $(GNU_ROOT)/bin/gobjcopy
OBJDUMP= $(GNU_ROOT)/bin/gobjdump

PROG=		boot1.sym
MACHINE=$(MACH64)

# architecture-specific loader code
SRCS=	boot1.c self_reloc.c start.S ufs_module.c zfs_module.c devopen.c
OBJS=	boot1.o self_reloc.o start.o ufs_module.o zfs_module.o devopen.o

ASFLAGS=-m64 -fPIC
CFLAGS= -O2
CPPFLAGS=	-nostdinc
CPPFLAGS +=	-I.
CPPFLAGS +=	-I./../include
CPPFLAGS +=	-I./../include/${MACHINE}
CPPFLAGS +=	-I$(CODEMGR_WS)/kernel/arch/x86/include/sys/acpi
CPPFLAGS +=	-I./../../../../include
CPPFLAGS +=	-I./../../../sys
CPPFLAGS +=	-I./../../..
CPPFLAGS +=	-I../../../../lib/libstand
CPPFLAGS +=	-DEFI_UFS_BOOT
# CPPFLAGS +=	-DEFI_DEBUG

CPPFLAGS +=	-I./../../zfs/
CPPFLAGS +=	-I./../../../cddl/boot/zfs/
CPPFLAGS +=	-DEFI_ZFS_BOOT

# Always add MI sources and REGULAR efi loader bits
CPPFLAGS +=	-I./../../common

include ../Makefile.inc

FILES=  boot1.efi
FILEMODE=	0555
ROOT_BOOT=	$(ROOT)/boot
ROOTBOOTFILES=$(FILES:%=$(ROOT_BOOT)/%)

LDSCRIPT=	./../loader/arch/${MACHINE}/ldscript.${MACHINE}
LDFLAGS=	-nostdlib --eh-frame-hdr -znocombreloc
LDFLAGS +=	-shared --hash-style=both --enable-new-dtags
LDFLAGS +=	-T${LDSCRIPT} -Bsymbolic

all: boot1.efi

install: all $(ROOTBOOTFILES)

#
# Add libstand for the runtime functions used by the compiler - for example
# __aeabi_* (arm) or __divdi3 (i386).
# as well as required string and memory functions for all platforms.
#
LIBSTAND=	../../libstand/$(MACH64)/libstand.a
LIBZFSBOOT=	../../zfs/$(MACH64)/libzfsboot.a
DPADD=		${LIBSTAND} ${LIBZFSBOOT}
LDADD=		-L../../zfs/$(MACH64) -lzfsboot -L../../libstand/$(MACH64) -lstand

DPADD +=	${LDSCRIPT}

EFI_TARGET=	pei-x86-64

boot1.efi: ${PROG}
	if [ `${OBJDUMP} -t ${PROG} | fgrep '*UND*' | wc -l` != 0 ]; then \
		${OBJDUMP} -t ${PROG} | fgrep '*UND*'; \
		exit 1; \
	fi
	${OBJCOPY} --readonly-text -j .peheader -j .text -j .sdata -j .data \
		-j .dynamic -j .dynsym -j .rel.dyn \
		-j .rela.dyn -j .reloc -j .eh_frame \
		--output-target=${EFI_TARGET} --subsystem efi-app ${PROG} $@

boot1.o: ./../../common/ufsread.c

CLEANFILES= boot1.efi ${PROG}

${PROG}:	$(OBJS) $(DPADD)
	$(LD) $(LDFLAGS) -o $@ $(OBJS) $(LDADD)

CLEANFILES +=   machine x86

machine:
	$(RM) machine
	$(SYMLINK) ./../../../${MACHINE}/include machine

x86:
	$(RM) x86
	$(SYMLINK) ./../../../x86/include x86

$(OBJS): machine x86

clean clobber:
	$(RM) $(CLEANFILES) $(OBJS)

%.o:	../loader/arch/${MACHINE}/%.S
	$(COMPILE.S) $<

%.o:	../loader/%.c
	$(COMPILE.c) $<

%.o:	../../common/%.c
	$(COMPILE.c) $<

$(ROOT_BOOT)/%: %
	$(INS.file)