1# $FreeBSD$ 2 3MAN= 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.if defined(EFI_STAGING_SIZE) 48CFLAGS+= -DEFI_STAGING_SIZE=${EFI_STAGING_SIZE} 49.endif 50 51# Always add MI sources 52.PATH: ${.CURDIR}/../../common 53.include "${.CURDIR}/../../common/Makefile.inc" 54CFLAGS+= -I${.CURDIR}/../../common 55 56FILES= loader.efi 57FILESMODE_loader.efi= ${BINMODE} 58 59LDSCRIPT= ${.CURDIR}/ldscript.${MACHINE_CPUARCH} 60LDFLAGS= -Wl,-T${LDSCRIPT} -Wl,-Bsymbolic -shared -Wl,-znocombreloc 61 62${PROG}: ${LDSCRIPT} 63 64CLEANFILES= vers.c loader.efi 65 66NEWVERSWHAT= "EFI loader" ${MACHINE_CPUARCH} 67 68vers.c: ${.CURDIR}/../../common/newvers.sh ${.CURDIR}/version 69 sh ${.CURDIR}/../../common/newvers.sh ${.CURDIR}/version ${NEWVERSWHAT} 70 71OBJCOPY?= objcopy 72OBJDUMP?= objdump 73 74.if ${MACHINE_CPUARCH} == "amd64" 75EFI_TARGET= efi-app-x86_64 76.else 77EFI_TARGET= efi-app-ia32 78.endif 79 80loader.efi: loader.sym 81 if [ `${OBJDUMP} -t ${.ALLSRC} | fgrep '*UND*' | wc -l` != 0 ]; then \ 82 ${OBJDUMP} -t ${.ALLSRC} | fgrep '*UND*'; \ 83 exit 1; \ 84 fi 85 ${OBJCOPY} -j .text -j .sdata -j .data \ 86 -j .dynamic -j .dynsym -j .rel.dyn \ 87 -j .rela.dyn -j .reloc -j .eh_frame -j set_Xcommand_set \ 88 --target=${EFI_TARGET} ${.ALLSRC} ${.TARGET} 89 90LIBEFI= ${.OBJDIR}/../../efi/libefi/libefi.a 91CFLAGS+= -I${.CURDIR}/../../common 92 93DPADD= ${LIBFICL} ${LIBEFI} ${LIBSTAND} 94LDADD= ${LIBFICL} ${LIBEFI} ${LIBSTAND} 95 96.endif # ${COMPILER_TYPE} != "gcc" 97 98.include <bsd.prog.mk> 99 100beforedepend ${OBJS}: machine x86 101 102CLEANFILES+= machine x86 103 104machine: 105 ln -sf ${.CURDIR}/../../../amd64/include machine 106 107x86: 108 ln -sf ${.CURDIR}/../../../x86/include x86 109