1S=	${.CURDIR}/../../../../..
2
3VERSIONFILE= ${.CURDIR}/version
4
5.include "../Makefile.booters"
6
7PROG=		loader.sym
8
9MAN=#		Tell bsd.prog.mk that loader.sym is not a man page.
10
11INTERNALPROG=
12
13
14SRCS=		start.S conf.c efimd.c vers.c main.c
15
16CPPFLAGS+=	-I${IA64_STAND_DIR}/efi/include
17CPPFLAGS+=	-I${IA64_STAND_DIR}/efi/include/${MACHINE_ARCH}
18CPPFLAGS+=	-I${IA64_STAND_DIR}/efi/libefi/
19CPPFLAGS+=	-I${IA64_STAND_DIR}/efi/libshell/
20CPPFLAGS+=	-I${IA64_STAND_DIR}/common/
21CPPFLAGS+=	-I${S}
22
23CPPFLAGS+=	-DLOADER
24
25CPPFLAGS+= 	-DLIBKERN_OPTIMISE_SPACE \
26		-DHEAP_VARIABLE
27
28
29# Pick up FreeBSD glue
30#CPPFLAGS+= -I${.CURDIR}/../../
31
32# Always add MI sources
33.PATH: ${.CURDIR}/../../common
34.include "${.CURDIR}/../../common/Makefile.inc"
35
36
37FILES=		loader.efi
38
39
40LDSCRIPT=	${.CURDIR}/ldscript.${MACHINE_ARCH}
41LDFLAGS=	-Wl,-T${LDSCRIPT} -shared -symbolic -nostdlib
42
43${PROG}: ${LDSCRIPT}
44
45CLEANFILES+=	vers.c loader.efi ${OBJS}
46
47NEWVERSWHAT=	"EFI boot" ${MACHINE_ARCH}
48
49vers.c: ${VERSIONFILE} ${SOURCES}
50	${HOST_SH} ${S}/conf/newvers_stand.sh ${${MKREPRO} == "yes" :?:-D} \
51	    ${.ALLSRC} ${MACHINE} ${NEWVERSWHAT}
52
53loader.efi: ${PROG}
54	if [ `${OBJDUMP} -t ${.ALLSRC} | fgrep '*UND*' | wc -l` != 0 ]; then \
55		${OBJDUMP} -t ${.ALLSRC} | fgrep '*UND*'; \
56		exit 1; \
57	fi
58	${OBJCOPY} -j .data -j .dynamic -j .dynstr -j .dynsym -j .hash \
59	    -j .rela.dyn -j .reloc -j .sdata -j .text \
60	    --target=efi-app-${MACHINE_ARCH} ${.ALLSRC} ${.TARGET}
61	@echo link finished.
62
63all: loader.efi
64
65# Pull in libefi
66.include "${IA64_STAND_DIR}/efi/libefi/Makefile.inc"
67LIBEFI=		${EFILIB}
68
69DPADD=		${LIBEFI} ${LIBLIST}
70
71# Cross dependencies between LIBEFI and LIB(SA|KERN). Need to elaborate below.
72LDADD=		${LIBEFI} ${LIBLIST} ${LIBEFI} ${LIBLIST}
73
74.include <bsd.prog.mk>
75