Makefile.arm revision 278715
1191665Sbms# Makefile.arm -- with config changes. 2191665Sbms# Copyright 1990 W. Jolitz 3191665Sbms# from: @(#)Makefile.i386 7.1 5/10/91 4191665Sbms# $FreeBSD: stable/10/sys/conf/Makefile.arm 278715 2015-02-13 21:26:45Z ian $ 5191665Sbms# 6191665Sbms# Makefile for FreeBSD 7191665Sbms# 8191665Sbms# This makefile is constructed from a machine description: 9191665Sbms# config machineid 10191665Sbms# Most changes should be made in the machine description 11191665Sbms# /sys/arm/conf/``machineid'' 12191665Sbms# after which you should do 13191665Sbms# config machineid 14191665Sbms# Generic makefile changes should be made in 15191665Sbms# /sys/conf/Makefile.arm 16191665Sbms# after which config should be rerun for all machines. 17191665Sbms# 18191665Sbms 19191665Sbms# Which version of config(8) is required. 20191665Sbms%VERSREQ= 600004 21191665Sbms 22191665SbmsSTD8X16FONT?= iso 23191665Sbms 24191665Sbms.if !defined(S) 25191665Sbms.if exists(./@/.) 26191665SbmsS= ./@ 27191665Sbms.else 28191665SbmsS= ../../.. 29191665Sbms.endif 30191665Sbms.endif 31191665Sbms.include "$S/conf/kern.pre.mk" 32191672Sbms 33191665SbmsINCLUDES+= -I$S/contrib/libfdt 34191665Sbms 35191665SbmsSYSTEM_LD:= ${SYSTEM_LD:$S/conf/ldscript.$M=ldscript.$M} 36191665SbmsSYSTEM_DEP:= ${SYSTEM_DEP:$S/conf/ldscript.$M=ldscript.$M} 37191665Sbms 38191665Sbms.if !defined(DEBUG) && !defined(PROFLEVEL) 39191665SbmsSTRIP_FLAGS = -S 40191665Sbms.endif 41191665Sbms 42191665Sbms.if ${COMPILER_TYPE} != "clang" 43191665SbmsCFLAGS += -mno-thumb-interwork 44191665Sbms.else 45191665Sbms# We generally don't want fpu instructions in the kernel. 46191665SbmsCFLAGS += -mfpu=none 47191665Sbms.endif 48191665Sbms 49191665Sbms.if empty(DDB_ENABLED) 50191665Sbms.if defined(WITHOUT_ARM_EABI) && ${COMPILER_TYPE} != "clang" 51191665SbmsCFLAGS += -mno-apcs-frame 52191665Sbms.endif 53191665Sbms.elif !defined(WITHOUT_ARM_EABI) 54191665SbmsCFLAGS += -funwind-tables 55191665Sbms.if ${COMPILER_TYPE} == "clang" 56191665Sbms# clang requires us to tell it to emit assembly with unwind information 57191665SbmsCFLAGS += -mllvm -arm-enable-ehabi 58191665Sbms.endif 59191665Sbms.endif 60191665Sbms 61191665Sbms# hack because genassym.c includes sys/bus.h which includes these. 62191665Sbmsgenassym.o: bus_if.h device_if.h 63191665Sbms 64191665SbmsSYSTEM_LD_ = ${LD} -Bdynamic -T ldscript.$M.noheader ${LDFLAGS} \ 65191665Sbms -warn-common -export-dynamic -dynamic-linker /red/herring -o \ 66191665Sbms ${FULLKERNEL}.noheader -X ${SYSTEM_OBJS} vers.o 67191665SbmsSYSTEM_LD_TAIL +=;sed s/" + SIZEOF_HEADERS"// ldscript.$M\ 68191665Sbms >ldscript.$M.noheader; \ 69195699Srwatson ${SYSTEM_LD_}; \ 70191665Sbms ${OBJCOPY} -S -O binary ${FULLKERNEL}.noheader \ 71191665Sbms ${KERNEL_KO}.bin; \ 72191665Sbms rm ${FULLKERNEL}.noheader 73191665Sbms 74191665Sbms.if defined(MFS_IMAGE) 75191665SbmsSYSTEM_LD_TAIL += ;sh ${S}/tools/embed_mfs.sh ${KERNEL_KO}.bin ${MFS_IMAGE}; 76191665Sbms.endif 77191665Sbms 78191665SbmsFILES_CPU_FUNC = \ 79191665Sbms $S/$M/$M/cpufunc_asm_arm9.S \ 80191665Sbms $S/$M/$M/cpufunc_asm_arm10.S \ 81191665Sbms $S/$M/$M/cpufunc_asm_xscale.S $S/$M/$M/cpufunc_asm.S \ 82191665Sbms $S/$M/$M/cpufunc_asm_xscale_c3.S $S/$M/$M/cpufunc_asm_armv5_ec.S \ 83191665Sbms $S/$M/$M/cpufunc_asm_fa526.S $S/$M/$M/cpufunc_asm_sheeva.S \ 84191665Sbms $S/$M/$M/cpufunc_asm_pj4b.S $S/$M/$M/cpufunc_asm_armv6.S \ 85191665Sbms $S/$M/$M/cpufunc_asm_armv7.S 86191665Sbms 87191665Sbms.if defined(KERNPHYSADDR) 88191665SbmsKERNEL_EXTRA=trampoline 89191665SbmsKERNEL_EXTRA_INSTALL=kernel.gz.tramp 90191665Sbmstrampoline: ${KERNEL_KO}.tramp 91191665Sbms${KERNEL_KO}.tramp: ${KERNEL_KO} $S/$M/$M/inckern.S $S/$M/$M/elf_trampoline.c 92191665Sbms echo "#define KERNNAME \"${KERNEL_KO}.tmp\"" >opt_kernname.h 93191665Sbms sed s/${KERNVIRTADDR}/${KERNPHYSADDR}/ ldscript.$M > ldscript.$M.tramp 94191665Sbms sed s/" + SIZEOF_HEADERS"// ldscript.$M.tramp > \ 95191665Sbms ldscript.$M.tramp.noheader 96191665Sbms echo "#include <machine/asm.h>" >tmphack.S 97191665Sbms echo "ENTRY(_start)" >>tmphack.S 98191665Sbms echo "bl _startC" >>tmphack.S 99191665Sbms ${OBJCOPY} --strip-symbol '$$d' --strip-symbol '$$a' \ 100191665Sbms -g --strip-symbol '$$t' ${FULLKERNEL} ${KERNEL_KO}.tmp 101191665Sbms eval $$(stat -s ${KERNEL_KO}.tmp) && \ 102191665Sbms echo "#define KERNSIZE $$st_size" >>opt_kernname.h 103191665Sbms ${CC} -O -nostdlib -I. -I$S -Xlinker -T -Xlinker ldscript.$M.tramp \ 104191665Sbms tmphack.S $S/$M/$M/elf_trampoline.c $S/$M/$M/inckern.S \ 105191665Sbms ${FILES_CPU_FUNC} -o ${KERNEL_KO}.tramp 106191665Sbms ${CC} -O -nostdlib -I. -I$S -Xlinker -T -Xlinker \ 107191665Sbms ldscript.$M.tramp.noheader \ 108191665Sbms tmphack.S $S/$M/$M/elf_trampoline.c $S/$M/$M/inckern.S \ 109191665Sbms ${FILES_CPU_FUNC} -o ${KERNEL_KO}.tramp.noheader 110191665Sbms ${OBJCOPY} -S -O binary ${KERNEL_KO}.tramp.noheader \ 111191665Sbms ${KERNEL_KO}.tramp.bin 112191665Sbms ${OBJCOPY} ${STRIP_FLAGS} ${KERNEL_KO}.tmp 113191665Sbms echo "#define KERNNAME \"${KERNEL_KO}.tmp.gz\"" >opt_kernname.h 114191665Sbms eval $$(stat -s ${KERNEL_KO}.tmp) && \ 115191665Sbms echo "#define KERNSIZE $$st_size" >>opt_kernname.h 116191665Sbms gzip -f9 ${KERNEL_KO}.tmp 117191665Sbms eval $$(stat -s ${KERNEL_KO}.tmp.gz) && \ 118191665Sbms echo "#define KERNCOMPSIZE $$st_size" >>opt_kernname.h 119191665Sbms ${CC} -O2 -ffreestanding -DKZIP -I. -I$S -c $S/kern/inflate.c -o \ 120191665Sbms inflate-tramp.o 121191665Sbms ${CC} -O -nostdlib -I. -I$S -Xlinker -T -Xlinker ldscript.$M.tramp \ 122191665Sbms -DKZIP tmphack.S $S/$M/$M/elf_trampoline.c inflate-tramp.o \ 123191665Sbms $S/$M/$M/inckern.S ${FILES_CPU_FUNC} -o ${KERNEL_KO}.gz.tramp 124191665Sbms ${CC} -O -nostdlib -I. -I$S -Xlinker -T -Xlinker \ 125191665Sbms ldscript.$M.tramp.noheader \ 126191665Sbms -DKZIP tmphack.S $S/$M/$M/elf_trampoline.c inflate-tramp.o \ 127191665Sbms $S/$M/$M/inckern.S ${FILES_CPU_FUNC} -o ${KERNEL_KO}.tramp.noheader 128191665Sbms ${OBJCOPY} -S -O binary ${KERNEL_KO}.tramp.noheader \ 129191665Sbms ${KERNEL_KO}.gz.tramp.bin 130191665Sbms rm ${KERNEL_KO}.tmp.gz ${KERNEL_KO}.tramp.noheader opt_kernname.h \ 131191665Sbms inflate-tramp.o tmphack.S 132191665Sbms.endif 133191665Sbms 134259983SdimMKMODULESENV+= MACHINE=${MACHINE} 135191665Sbms 136259983Sdim%BEFORE_DEPEND 137191665Sbms 138191665Sbms%OBJS 139191665Sbms 140191665Sbms%FILES.c 141191665Sbms 142191665Sbms%FILES.s 143191665Sbms 144191665Sbms%FILES.m 145191672Sbms 146191672Sbms%CLEAN 147191672Sbms 148191665SbmsCLEAN+= ldscript.$M ${KERNEL_KO}.bin ldscript.$M.noheader 149191665Sbms 150191665SbmsCLEAN+= ${KERNEL_KO}.tramp ${KERNEL_KO}.tramp.bin ldscript.$M.tramp \ 151191665Sbms ldscript.$M.tramp.noheader ${KERNEL_KO}.gz.tramp \ 152191665Sbms ${KERNEL_KO}.gz.tramp.bin 153191665Sbms 154191665Sbmsldscript.$M: $S/conf/ldscript.$M 155227309Sed cat $S/conf/ldscript.$M|sed s/KERNPHYSADDR/${KERNPHYSADDR}/g| \ 156227309Sed sed s/KERNVIRTADDR/${KERNVIRTADDR}/g > ldscript.$M 157191665Sbms%RULES 158191665Sbms 159191665Sbms.include "$S/conf/kern.post.mk" 160191665Sbms