Makefile.arm revision 175984
198184Sgordon# Makefile.arm -- with config changes.
278344Sobrien# Copyright 1990 W. Jolitz
3156813Sru#	from: @(#)Makefile.i386	7.1 5/10/91
4156813Sru# $FreeBSD: head/sys/conf/Makefile.arm 175984 2008-02-05 10:46:30Z raj $
5228541Spjd#
6228541Spjd# Makefile for FreeBSD
7228541Spjd#
8228541Spjd# This makefile is constructed from a machine description:
9228541Spjd#	config machineid
10228541Spjd# Most changes should be made in the machine description
11228541Spjd#	/sys/arm/conf/``machineid''
12228541Spjd# after which you should do
13228541Spjd#	 config machineid
14228541Spjd# Generic makefile changes should be made in
15228541Spjd#	/sys/conf/Makefile.arm
16228541Spjd# after which config should be rerun for all machines.
17228541Spjd#
18243752Srwatson
19228541Spjd# Which version of config(8) is required.
20256022Sgjb%VERSREQ=	600004
21228541Spjd
22256022Sgjb# Temporary stuff while we're still embryonic
23228541SpjdNO_MODULES=
24228541Spjd
25228541SpjdSTD8X16FONT?=	iso
26255570Strasz
27228541Spjd.if !defined(S)
28228541Spjd.if exists(./@/.)
29228541SpjdS=	./@
30228541Spjd.else
31228541SpjdS=	../../..
32228541Spjd.endif
33228541Spjd.endif
34228541Spjd.include "$S/conf/kern.pre.mk"
35228541Spjd
36228541SpjdSYSTEM_LD:= ${SYSTEM_LD:$S/conf/ldscript.$M=ldscript.$M}
37228541SpjdSYSTEM_DEP:= ${SYSTEM_DEP:$S/conf/ldscript.$M=ldscript.$M}
38228541Spjd
39228541Spjd.if defined(ARM_BIG_ENDIAN)
40284009ScpercivaCC += -mbig-endian
41228541SpjdSYSTEM_LD += -EB
42256022SgjbLD += -EB
43228541Spjd.endif
44228541Spjd
45228541Spjd
46228541Spjd.if !defined(DEBUG) && !defined(PROFLEVEL)
47228541SpjdSTRIP_FLAGS = -S
48228541Spjd.endif
49228541Spjd
50228541SpjdDDB_ENABLED!=	grep DDB opt_ddb.h || true
51228541Spjd
52228541Spjd.if empty(DDB_ENABLED)
53228541SpjdCFLAGS += -mno-apcs-frame
54228541Spjd.endif
55273286Shrs
56273286ShrsSYSTEM_LD_ = ${LD} -Bdynamic -T ldscript.$M.noheader \
57273286Shrs	  -warn-common -export-dynamic -dynamic-linker /red/herring -o \
58228541Spjd	   ${FULLKERNEL}.noheader -X ${SYSTEM_OBJS} vers.o
59228541SpjdSYSTEM_LD_TAIL +=;sed s/" + SIZEOF_HEADERS"// ldscript.$M\
60273286Shrs		>ldscript.$M.noheader; \
61228541Spjd		${SYSTEM_LD_}; \
62228541Spjd		${OBJCOPY} -S -O binary ${FULLKERNEL}.noheader \
63228541Spjd		${KERNEL_KO}.bin; \
64228541Spjd		rm ${FULLKERNEL}.noheader
65228541Spjd
66228541Spjd.if defined(MFS_IMAGE)
67228541SpjdSYSTEM_LD_TAIL += ;sh ${S}/tools/embed_mfs.sh ${KERNEL_KO}.bin ${MFS_IMAGE};
68228541Spjd.endif
69228541Spjd
70228541SpjdFILES_CPU_FUNC =	$S/$M/$M/cpufunc_asm_arm7tdmi.S \
71228541Spjd	$S/$M/$M/cpufunc_asm_arm8.S $S/$M/$M/cpufunc_asm_arm9.S \
72228541Spjd	$S/$M/$M/cpufunc_asm_sa1.S $S/$M/$M/cpufunc_asm_arm10.S \
73228541Spjd	$S/$M/$M/cpufunc_asm_xscale.S $S/$M/$M/cpufunc_asm.S \
74228541Spjd	$S/$M/$M/cpufunc_asm_xscale_c3.S
75228541Spjdtrampoline: ${KERNEL_KO}.tramp
76228541Spjd${KERNEL_KO}.tramp: ${KERNEL_KO} $S/$M/$M/inckern.S $S/$M/$M/elf_trampoline.c
77228541Spjd	echo "#define KERNNAME \"${KERNEL_KO}.tmp\"" >opt_kernname.h 
78228541Spjd	sed s/${KERNVIRTADDR}/${KERNPHYSADDR}/ ldscript.$M > ldscript.$M.tramp
79228541Spjd	sed s/" + SIZEOF_HEADERS"// ldscript.$M.tramp > \
80228541Spjd	ldscript.$M.tramp.noheader
81228541Spjd	echo "#include <machine/asm.h>" >tmphack.S
82228541Spjd	echo "ENTRY(_start)" >>tmphack.S
83228541Spjd	echo "bl _startC" >>tmphack.S
84228541Spjd	${OBJCOPY} --strip-symbol '$$d' --strip-symbol '$$a' \
85228541Spjd	-g --strip-symbol '$$t' ${FULLKERNEL} ${KERNEL_KO}.tmp
86228541Spjd	eval $$(stat -s ${KERNEL_KO}.tmp) && \
87228541Spjd	echo "#define KERNSIZE $$st_size" >>opt_kernname.h
88228541Spjd	${CC} -O -nostdlib -I. -Xlinker -T -Xlinker ldscript.$M.tramp \
89228541Spjd	tmphack.S $S/$M/$M/elf_trampoline.c $S/$M/$M/inckern.S \
90228541Spjd	${FILES_CPU_FUNC} -o ${KERNEL_KO}.tramp
91228541Spjd	${CC} -O -nostdlib -I. -Xlinker -T -Xlinker ldscript.$M.tramp.noheader \
92228541Spjd	tmphack.S $S/$M/$M/elf_trampoline.c $S/$M/$M/inckern.S \
93240334Sobrien	${FILES_CPU_FUNC} -o ${KERNEL_KO}.tramp.noheader 
94228541Spjd	${OBJCOPY} -S -O binary ${KERNEL_KO}.tramp.noheader \
95228541Spjd	${KERNEL_KO}.tramp.bin 
96228541Spjd	${OBJCOPY} ${STRIP_FLAGS} ${KERNEL_KO}.tmp 
97118224Smtm	echo "#define KERNNAME \"${KERNEL_KO}.tmp.gz\"" \
98228541Spjd	>opt_kernname.h 
99228541Spjd	eval $$(stat -s ${KERNEL_KO}.tmp) && \
100228541Spjd	echo "#define KERNSIZE $$st_size" >>opt_kernname.h
101228541Spjd	gzip -9 ${KERNEL_KO}.tmp
102228541Spjd	eval $$(stat -s ${KERNEL_KO}.tmp.gz) && \
103228541Spjd	echo "#define KERNCOMPSIZE $$st_size" >>opt_kernname.h
104228541Spjd	${CC} -O2 -DKZIP -I. -c $S/kern/inflate.c -o inflate-tramp.o
105228541Spjd	${CC} -O -nostdlib -I. -Xlinker -T -Xlinker ldscript.$M.tramp \
106228541Spjd	-DKZIP tmphack.S $S/$M/$M/elf_trampoline.c inflate-tramp.o \
107228541Spjd	$S/$M/$M/inckern.S ${FILES_CPU_FUNC} -o ${KERNEL_KO}.gz.tramp
108228541Spjd	${CC} -O -nostdlib -I. -Xlinker -T -Xlinker ldscript.$M.tramp.noheader \
109228541Spjd	-DKZIP tmphack.S $S/$M/$M/elf_trampoline.c inflate-tramp.o \
110228541Spjd	$S/$M/$M/inckern.S ${FILES_CPU_FUNC} -o ${KERNEL_KO}.tramp.noheader
111228541Spjd	${OBJCOPY} -S -O binary ${KERNEL_KO}.tramp.noheader \
112228541Spjd	${KERNEL_KO}.gz.tramp.bin
113228541Spjd	rm ${KERNEL_KO}.tmp.gz ${KERNEL_KO}.tramp.noheader opt_kernname.h \
114228541Spjd	inflate-tramp.o tmphack.S
115228541Spjd
116228541Spjd%BEFORE_DEPEND
117228541Spjd
118228541Spjd%OBJS
119252310Shrs
120252310Shrs%FILES.c
121228541Spjd
122228541Spjd%FILES.s
123228541Spjd
124228541Spjd%FILES.m
125153430Siedowse
126255809Sdes%CLEAN
127231534Sed
128228541SpjdCLEAN+=	ldscript.$M ${KERNEL_KO}.bin ldscript.$M.noheader
129228541Spjd
130228541Spjd.if ${DDB_ENABLED} != ""
131228541SpjdCLEAN+= ${KERNEL_KO}.tramp ${KERNEL_KO}.tramp.bin ldscript.$M.tramp \
132228541Spjd	ldscript.$M.tramp.noheader ${KERNEL_KO}.gz.tramp \
133228541Spjd	${KERNEL_KO}.gz.tramp.bin
134228541Spjd
135228541Spjd.endif
136228541Spjdldscript.$M: $S/conf/ldscript.$M
137150490Swollman	cat $S/conf/ldscript.$M|sed s/KERNPHYSADDR/${KERNPHYSADDR}/g| \
138278574Sngie	  sed s/KERNVIRTADDR/${KERNVIRTADDR}/g > ldscript.$M
139278574Sngie%RULES
140278574Sngie	
141278574Sngie.include "$S/conf/kern.post.mk"
142278246Sngie