Makefile.mips revision 1.68 1 1.68 christos # $NetBSD: Makefile.mips,v 1.68 2018/06/05 11:39:49 christos Exp $
2 1.1 matt
3 1.1 matt # Makefile for NetBSD
4 1.1 matt #
5 1.1 matt # This makefile is constructed from a machine description:
6 1.1 matt # config machineid
7 1.1 matt # Most changes should be made in the machine description
8 1.1 matt # /sys/arch/<machine>/conf/``machineid''
9 1.1 matt # after which you should do
10 1.1 matt # config machineid
11 1.1 matt # Machine generic makefile changes should be made in
12 1.1 matt # /sys/arch/mips/conf/Makefile.mips
13 1.1 matt # after which config should be rerun for all machines of that type.
14 1.25 atatat #
15 1.25 atatat # To specify debugging, add the config line: makeoptions DEBUG="-g"
16 1.25 atatat # A better way is to specify -g only for a few files.
17 1.25 atatat #
18 1.25 atatat # makeoptions DEBUGLIST="uvm* trap if_*"
19 1.23 jmc
20 1.23 jmc USETOOLS?= no
21 1.25 atatat NEED_OWN_INSTALL_TARGET?=no
22 1.13 hubertf .include <bsd.own.mk>
23 1.34 tsutsui
24 1.34 tsutsui ##
25 1.34 tsutsui ## (0) toolchain settings for things that aren't part of the standard
26 1.34 tsutsui ## toolchain
27 1.34 tsutsui ##
28 1.34 tsutsui ELF2ECOFF?= elf2ecoff
29 1.1 matt
30 1.25 atatat ##
31 1.25 atatat ## (1) port identification
32 1.25 atatat ##
33 1.1 matt .ifndef S
34 1.25 atatat S= ../../../..
35 1.1 matt .endif
36 1.21 thorpej THISMIPS= $S/arch/${MACHINE}
37 1.1 matt MIPS= $S/arch/mips
38 1.39 christos GENASSYM_CONF= ${MIPS}/mips/genassym.cf
39 1.25 atatat .-include "${THISMIPS}/conf/Makefile.${MACHINE}.inc"
40 1.1 matt
41 1.25 atatat ##
42 1.25 atatat ## (2) compile settings
43 1.25 atatat ##
44 1.45 yamt ## Note: -ffixed-?? must be kept in sync with cpu.h.
45 1.45 yamt ##
46 1.25 atatat CPPFLAGS+= -D${MACHINE}
47 1.25 atatat DEFGP?= -G 0
48 1.8 matt GP?= ${DEFGP}
49 1.63 macallan
50 1.67 maya .if ${ACTIVE_CC} == "gcc"
51 1.67 maya COPTS.mips_fpu.c+= -mhard-float -Wa,-mhard-float
52 1.67 maya AFLAGS.fp.S+= -Wa,-mhard-float
53 1.67 maya .endif
54 1.67 maya
55 1.58 matt CFLAGS+= ${GP} -mno-abicalls -msoft-float -ffixed-24
56 1.55 matt .if defined(LP64) && ${LP64} == "yes"
57 1.44 matt .if ${MACHINE_ARCH} == "mips64eb" || ${MACHINE_ARCH} == "mips64el"
58 1.55 matt CFLAGS+= -msym32 -mabi=64
59 1.55 matt AFLAGS+= -msym32 -mabi=64
60 1.44 matt .endif
61 1.55 matt .if ${MACHINE_ARCH} == "mips64eb"
62 1.68 christos LDFLAGS+= -Wl,-m,elf64btsmip
63 1.55 matt LINKFORMAT+= -m elf64btsmip
64 1.55 matt SYSTEM_LD_TAIL_EXTRA+= \
65 1.57 matt ;echo ${OBJCOPY} -O elf32-ntradbigmips $@ $@.elf32; \
66 1.57 matt ${OBJCOPY} -O elf32-ntradbigmips $@ $@.elf32
67 1.55 matt .endif
68 1.55 matt .if ${MACHINE_ARCH} == "mips64el"
69 1.68 christos LDFLAGS+= -Wl,-m,elf64ltsmip
70 1.55 matt LINKFORMAT+= -m elf64ltsmip
71 1.55 matt SYSTEM_LD_TAIL_EXTRA+= \
72 1.57 matt ;echo ${OBJCOPY} -O elf32-ntradlittlemips $@ $@.elf32; \
73 1.57 matt ${OBJCOPY} -O elf32-ntradlittlemips $@ $@.elf32
74 1.55 matt .endif
75 1.55 matt .endif # LP64=yes
76 1.56 joerg AFLAGS+= -mno-abicalls -x assembler-with-cpp ${AOPTS}
77 1.1 matt
78 1.25 atatat ##
79 1.25 atatat ## (3) libkern and compat
80 1.25 atatat ##
81 1.54 cube OPT_MODULAR= %MODULAR%
82 1.53 apb .if !empty(OPT_MODULAR)
83 1.40 simonb KERN_AS= obj
84 1.59 christos .else
85 1.59 christos KERN_AS= library
86 1.40 simonb .endif
87 1.25 atatat
88 1.25 atatat ##
89 1.25 atatat ## (4) local objects, compile rules, and dependencies
90 1.25 atatat ##
91 1.25 atatat MD_OBJS= locore.o locore_machdep.o
92 1.25 atatat MD_CFILES=
93 1.25 atatat MD_SFILES= ${MIPS}/mips/locore.S ${THISMIPS}/${MACHINE}/locore_machdep.S
94 1.1 matt
95 1.25 atatat locore.o: ${MIPS}/mips/locore.S assym.h
96 1.25 atatat ${NORMAL_S}
97 1.1 matt
98 1.25 atatat locore_machdep.o: ${THISMIPS}/${MACHINE}/locore_machdep.S assym.h
99 1.25 atatat ${NORMAL_S}
100 1.1 matt
101 1.25 atatat ##
102 1.25 atatat ## (5) link settings
103 1.25 atatat ##
104 1.43 matt .if ${MACHINE_ARCH} == "mips64eb" || ${MACHINE_ARCH} == "mips64el"
105 1.43 matt TEXTADDR?= ${DEFTEXTADDR:C/0x8/0xFFFFFFFF8/}
106 1.43 matt .else
107 1.32 simonb TEXTADDR?= ${DEFTEXTADDR}
108 1.43 matt .endif
109 1.32 simonb KERNLDSCRIPT?= ${MIPS}/conf/kern.ldscript
110 1.25 atatat # some mips ports specify a "magic" format
111 1.36 sekiya EXTRA_LINKFLAGS= ${GP} ${LDOPTS}
112 1.46 tsutsui LINKFLAGS_NORMAL= -X
113 1.46 tsutsui STRIPFLAGS= -g -X
114 1.1 matt
115 1.25 atatat ##
116 1.25 atatat ## (6) port specific target dependencies
117 1.25 atatat ##
118 1.1 matt
119 1.1 matt # depend on CPU configuration
120 1.1 matt machdep.o mainbus.o trap.o: Makefile
121 1.1 matt
122 1.1 matt # depend on System V IPC/shmem options
123 1.1 matt mips_machdep.o pmap.o: Makefile
124 1.33 simonb
125 1.33 simonb # various assembly files that depend on assym.h
126 1.48 joerg copy.o fp.o locore.o locore_mips1.o locore_mips3.o: assym.h
127 1.58 matt lock_stubs.o mips32_subr.o mips3_subr.o: assym.h
128 1.50 tsutsui mips64_subr.o mipsX_subr.o sigcode.o: assym.h
129 1.33 simonb
130 1.1 matt
131 1.25 atatat ##
132 1.25 atatat ## (7) misc settings
133 1.25 atatat ##
134 1.25 atatat
135 1.25 atatat ##
136 1.25 atatat ## (8) config(8) generated machinery
137 1.25 atatat ##
138 1.25 atatat %INCLUDES
139 1.1 matt
140 1.25 atatat %OBJS
141 1.1 matt
142 1.25 atatat %CFILES
143 1.20 uch
144 1.25 atatat %SFILES
145 1.20 uch
146 1.25 atatat %LOAD
147 1.1 matt
148 1.25 atatat %RULES
149 1.1 matt
150 1.25 atatat ##
151 1.25 atatat ## (9) port independent kernel machinery
152 1.25 atatat ##
153 1.25 atatat .include "$S/conf/Makefile.kern.inc"
154 1.35 thorpej
155 1.35 thorpej ##
156 1.35 thorpej ## (10) Appending make options.
157 1.35 thorpej ##
158 1.35 thorpej %MAKEOPTIONSAPPEND
159