1# $FreeBSD$ 2 3NO_MAN= 4 5.include <bsd.own.mk> 6 7# In-tree GCC does not support __attribute__((ms_abi)). 8.if ${COMPILER_TYPE} != "gcc" 9 10MK_SSP= no 11 12PROG= loader.sym 13INTERNALPROG= 14 15# architecture-specific loader code 16SRCS= autoload.c \ 17 bootinfo.c \ 18 conf.c \ 19 copy.c \ 20 devicename.c \ 21 elf64_freebsd.c \ 22 framebuffer.c \ 23 main.c \ 24 reloc.c \ 25 vers.c 26SRCS+= amd64_tramp.S \ 27 start.S 28 29CFLAGS+= -fPIC 30CFLAGS+= -I. 31CFLAGS+= -I${.CURDIR}/../../efi/include 32CFLAGS+= -I${.CURDIR}/../../efi/include/${MACHINE_CPUARCH} 33CFLAGS+= -I${.CURDIR}/../../../contrib/dev/acpica/include 34CFLAGS+= -I${.CURDIR}/../../.. 35 36.if ${MK_FORTH} != "no" 37BOOT_FORTH= yes 38CFLAGS+= -DBOOT_FORTH 39CFLAGS+= -I${.CURDIR}/../../ficl 40CFLAGS+= -I${.CURDIR}/../../ficl/${MACHINE_CPUARCH} 41LIBFICL= ${.OBJDIR}/../../ficl/libficl.a 42.endif 43 44# Include bcache code. 45HAVE_BCACHE= yes 46 47# Always add MI sources 48.PATH: ${.CURDIR}/../../common 49.include "${.CURDIR}/../../common/Makefile.inc" 50CFLAGS+= -I${.CURDIR}/../../common 51 52FILES= loader.efi 53FILESMODE_loader.efi= ${BINMODE} 54 55LDSCRIPT= ${.CURDIR}/ldscript.${MACHINE_CPUARCH} 56LDFLAGS= -Wl,-T${LDSCRIPT} -Wl,-Bsymbolic -shared -Wl,-znocombreloc 57 58${PROG}: ${LDSCRIPT} 59 60CLEANFILES= vers.c loader.efi 61 62NEWVERSWHAT= "EFI loader" ${MACHINE_CPUARCH} 63 64vers.c: ${.CURDIR}/../../common/newvers.sh ${.CURDIR}/version 65 sh ${.CURDIR}/../../common/newvers.sh ${.CURDIR}/version ${NEWVERSWHAT} 66 67OBJCOPY?= objcopy 68OBJDUMP?= objdump 69 70.if ${MACHINE_CPUARCH} == "amd64" 71EFI_TARGET= efi-app-x86_64 72.else 73EFI_TARGET= efi-app-ia32 74.endif 75 76loader.efi: loader.sym 77 if [ `${OBJDUMP} -t ${.ALLSRC} | fgrep '*UND*' | wc -l` != 0 ]; then \ 78 ${OBJDUMP} -t ${.ALLSRC} | fgrep '*UND*'; \ 79 exit 1; \ 80 fi 81 ${OBJCOPY} -j .text -j .sdata -j .data \ 82 -j .dynamic -j .dynsym -j .rel.dyn \ 83 -j .rela.dyn -j .reloc -j .eh_frame -j set_Xcommand_set \ 84 --target=${EFI_TARGET} ${.ALLSRC} ${.TARGET} 85 86LIBEFI= ${.OBJDIR}/../../efi/libefi/libefi.a 87CFLAGS+= -I${.CURDIR}/../../common 88 89DPADD= ${LIBFICL} ${LIBEFI} ${LIBSTAND} 90LDADD= ${LIBFICL} ${LIBEFI} ${LIBSTAND} 91 92.endif # ${COMPILER_TYPE} != "gcc" 93 94.include <bsd.prog.mk> 95 96beforedepend ${OBJS}: machine x86 97 98CLEANFILES+= machine x86 99 100machine: 101 ln -sf ${.CURDIR}/../../../amd64/include machine 102 103x86: 104 ln -sf ${.CURDIR}/../../../x86/include x86 105