Makefile.mips revision 216498
1228753Smm# Makefile.mips
2228753Smm# $FreeBSD: head/sys/conf/Makefile.mips 216498 2010-12-17 09:14:25Z jchandra $
3228753Smm#
4228753Smm# Makefile for FreeBSD
5228753Smm#
6228753Smm# This makefile is constructed from a machine description:
7228753Smm#	config machineid
8228753Smm# Most changes should be made in the machine description
9228753Smm#	/sys/mips/conf/``machineid''
10228753Smm# after which you should do
11228753Smm#	 config machineid
12228753Smm# Generic makefile changes should be made in
13228753Smm#	/sys/conf/Makefile.mips
14228753Smm# after which config should be rerun for all machines.
15228753Smm#
16228753Smm
17228753Smm# Which version of config(8) is required.
18228753Smm%VERSREQ=	600004
19228753Smm
20228753SmmSTD8X16FONT?=	iso
21228753Smm
22228753Smm.if !defined(S)
23228753Smm.if exists(./@/.)
24228753SmmS=	./@
25228763Smm.else
26228753SmmS=	../../..
27228753Smm.endif
28228753Smm.endif
29228753Smm.include "$S/conf/kern.pre.mk"
30228753Smm
31228753SmmLDSCRIPT_NAME?=ldscript.$M
32228753SmmSYSTEM_LD:= ${SYSTEM_LD:$S/conf/${LDSCRIPT_NAME}=${LDSCRIPT_NAME}}
33228753SmmSYSTEM_DEP:= ${SYSTEM_DEP:$S/conf/${LDSCRIPT_NAME}=${LDSCRIPT_NAME}}
34228753Smm
35228753SmmKERNLOADADDR?=0x80001000
36228753Smm# This obscure value is defined by CFE for WR160N
37228753Smm# To be changed later
38228753SmmTRAMPLOADADDR?=0x807963c0
39228753Smm
40228753SmmMKMODULESENV+=	MACHINE=${MACHINE} MACHINE_ARCH=${MACHINE_ARCH}
41228753Smm
42228753Smm# We default to the MIPS32 ISA, if none specified in the
43228753Smm# kernel configuration file.
44228753SmmARCH_FLAGS?=-march=mips32
45228753SmmEXTRA_FLAGS=-fno-pic -mno-abicalls -G0
46228753Smm
47228753SmmHACK_EXTRA_FLAGS=-shared
48228753Smm
49228753Smm# We add the -fno-pic flag to kernels because otherwise performance
50228753Smm# is extremely poor, as well as -mno-abicalls to force no ABI usage.
51228753SmmCFLAGS+=${EXTRA_FLAGS} $(ARCH_FLAGS)
52228753SmmHACK_EXTRA_FLAGS+=${EXTRA_FLAGS} $(ARCH_FLAGS)
53228753SmmTRAMP_EXTRA_FLAGS=${EXTRA_FLAGS} $(ARCH_FLAGS)
54228753Smm
55228753Smm# XXX hardcoded kernel entry point
56228753SmmASM_CFLAGS+=${CFLAGS} -D_LOCORE -DLOCORE
57228753Smm
58228753SmmKERNEL_EXTRA=trampoline
59228753Smmtrampoline: ${KERNEL_KO}.tramp.bin
60228753Smm${KERNEL_KO}.tramp.bin: ${KERNEL_KO} $S/$M/$M/elf_trampoline.c \
61228753Smm	$S/$M/$M/inckern.S 
62228753Smm	${OBJCOPY} --strip-symbol '$$d' --strip-symbol '$$a' \
63228753Smm		-g --strip-symbol '$$t' ${FULLKERNEL} ${KERNEL_KO}.tmp
64228753Smm	sed -e s/${KERNLOADADDR}/${TRAMPLOADADDR}/ -e s/" + SIZEOF_HEADERS"// \
65228753Smm		 ${LDSCRIPT_NAME} > ${LDSCRIPT_NAME}.tramp.noheader
66228753Smm	${CC} -O -nostdlib -I. -I$S ${TRAMP_EXTRA_FLAGS} ${TRAMP_LDFLAGS} -Xlinker \
67228753Smm		-T -Xlinker ${LDSCRIPT_NAME}.tramp.noheader  \
68228753Smm		-DKERNNAME="\"${KERNEL_KO}.tmp\"" $S/$M/$M/elf_trampoline.c \
69228753Smm		$S/$M/$M/inckern.S  -o ${KERNEL_KO}.tramp.noheader 
70228753Smm	${OBJCOPY} -S -O binary ${KERNEL_KO}.tramp.noheader \
71228753Smm		${KERNEL_KO}.tramp.bin \
72228753Smm
73228753Smm%BEFORE_DEPEND
74228753Smm
75228753Smm%OBJS
76228753Smm
77228753Smm%FILES.c
78228753Smm
79228753Smm%FILES.s
80228753Smm
81228753Smm%FILES.m
82228753Smm
83228753Smm%CLEAN
84228753Smm
85228753SmmCLEAN+=	${LDSCRIPT_NAME} ${LDSCRIPT_NAME}.tramp.noheader \
86228753Smm	${KERNEL_KO}.tramp.noheader ${KERNEL_KO}.tramp.bin
87228753Smm
88228753Smm${LDSCRIPT_NAME}: $S/conf/${LDSCRIPT_NAME}
89228753Smm	cat $S/conf/${LDSCRIPT_NAME}|sed s/KERNLOADADDR/${KERNLOADADDR}/g \
90228753Smm		> ${LDSCRIPT_NAME}
91228753Smm%RULES
92228753Smm
93228753Smm.include "$S/conf/kern.post.mk"
94228753Smm