blob: c3aaa72fd12b07b7ba682b957799e3e2eb59dab0 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
|
# $NetBSD: Makefile.inc,v 1.23 2011/05/30 19:03:09 joerg Exp $
.if ${MKGCC} != "no"
.if exists(${.CURDIR}/../arch/${MACHINE_ARCH}.mk)
.include "${.CURDIR}/../arch/${MACHINE_ARCH}.mk"
.endif
.endif
UNSUPPORTED_COMPILER.clang= # defined
DIST= ${NETBSDSRCDIR}/gnu/dist/gcc4
GNUHOSTDIST= ${DIST}
GCCARCH= ${NETBSDSRCDIR}/gnu/usr.bin/gcc4/arch/${MACHINE_ARCH}
GCCARCHLIBGCC= ${NETBSDSRCDIR}/gnu/lib/libgcc4/arch/${MACHINE_ARCH}
GCCARCHXX= ${NETBSDSRCDIR}/gnu/lib/libstdc++-v3_4/arch/${MACHINE_ARCH}
GCPPFLAGS= ${G_LIBGCC2_CFLAGS} ${G_USE_COLLECT2} ${G_INCLUDES}
CPPFLAGS+= -I${.CURDIR} -I${GCCARCHLIBGCC}
CPPFLAGS+= -I${GCCARCH} ${GCPPFLAGS:M-D*} ${GCPPFLAGS:M-I*:N-I.*}
CPPFLAGS+= -I${G_EXTRA_HEADERS:M/*:H:u}
CPPFLAGS+= -I${DIST} -I${DIST}/gcc/cp -I${DIST}/gcc/config -I${GCCARCHXX} -I.
.if ${MACHINE_ARCH} == "powerpc" || \
${MACHINE_ARCH} == "sh3el" || \
${MACHINE_ARCH} == "sh3eb" || \
${MACHINE_ARCH} == "m68000"
_TRADITIONAL_CPP=
COMPILE.S= ${CC} ${AFLAGS} ${CPPFLAGS} -c
.endif
.if !defined(MKNATIVE_LIBGCC_NEW)
#
# Old style libgcc build procedure.
#
# This is copied from gcc/mklibgcc.in:$lib2funcs
LIB2FUNCS_ALL= _muldi3 _negdi2 _lshrdi3 _ashldi3 _ashrdi3 \
_cmpdi2 _ucmpdi2 _floatdidf _floatdisf _fixunsdfsi _fixunssfsi \
_fixunsdfdi _fixdfdi _fixunssfdi _fixsfdi _fixxfdi _fixunsxfdi \
_floatdixf _fixunsxfsi _fixtfdi _fixunstfdi _floatditf _clear_cache \
_enable_execute_stack _trampoline __main _absvsi2 _absvdi2 _addvsi3 \
_addvdi3 _subvsi3 _subvdi3 _mulvsi3 _mulvdi3 _negvsi2 _negvdi2 _ctors \
_ffssi2 _ffsdi2 _clz _clzsi2 _clzdi2 _ctzsi2 _ctzdi2 _popcount_tab \
_popcountsi2 _popcountdi2 _paritysi2 _paritydi2 _powisf2 _powidf2 \
_powixf2 _powitf2 \
LIB2FUNCS_ALL+= \
_mulsc3 _muldc3 _mulxc3 _multc3 _divsc3 _divdc3 _divxc3 _divtc3
LIB2FUNCS_SHORT:=${LIB2FUNCS_ALL}
LIB2_DIVMOD_FUNCS:=${G_LIB2_DIVMOD_FUNCS}
.for f in ${G_LIB1ASMFUNCS}; do
LIB2FUNCS_SHORT:=${LIB2FUNCS_SHORT:N${f}}
LIB2_DIVMOD_FUNCS:=${LIB2_DIVMOD_FUNCS:N${f}}
.endfor
LIB2FUNCS= ${LIB2FUNCS_SHORT:=.c}
LIB2FUNCS_ST= ${G_LIB2FUNCS_ST:=.c}
LIB2DIVMOD= ${LIB2_DIVMOD_FUNCS:=.c}
LIB2_EH= ${G_LIB2ADDEH:M*.c:T}
.if !empty(G_LIB1ASMFUNCS)
LIB1ASMFUNCS= ${G_LIB1ASMFUNCS:=.S}
.endif
DPSRCS+= ${.CURDIR}/../arch/${MACHINE_ARCH}.mk
CLEANFILES+= ${LIB2FUNCS} ${LIB2FUNCS_ST} ${LIB2DIVMOD} cs-tconfig.h
.if !empty(G_LIB1ASMFUNCS)
CLEANFILES+= ${LIB1ASMFUNCS}
.endif
.for file in ${G_LIB2ADD:M${GNUHOSTDIST}*}
BUILDSYMLINKS+= ${file} ${file:T:S/.asm$/.S/}
.endfor
# XXX
.if ${MACHINE_ARCH} == "m68000"
CPICFLAGS:=
BUILDSYMLINKS+= ${DIST}/gcc/config/m68k/fpgnulib.c fpgnulib.c
BUILDSYMLINKS+= ${DIST}/gcc/config/m68k/fpgnulib.c xfgnulib.c
CPPFLAGS.xfgnulib.c+=-DEXTFLOAT=1
.endif
.if ${MACHINE_ARCH} == "powerpc64"
COPTS+= -mlong-double-128
.endif
${LIB2FUNCS} ${LIB2FUNCS_ST}: ${.CURDIR}/Makefile
${_MKTARGET_CREATE}
printf '#define L${.PREFIX}\n#include <libgcc2.c>\n' >${.TARGET}
${LIB2DIVMOD}: ${.CURDIR}/Makefile
${_MKTARGET_CREATE}
printf '#define L${.PREFIX}\n#include <libgcc2.c>\n' >${.TARGET}
.if !empty(G_LIB1ASMFUNCS)
${LIB1ASMFUNCS}: ${.CURDIR}/Makefile
${_MKTARGET_CREATE}
printf '#define L${.PREFIX}\n#include <${G_LIB1ASMSRC}>\n' >${.TARGET}
.endif
${LIB2_EH:.c=.o}:
${_MKTARGET_COMPILE}
${COMPILE.c} -fexceptions ${COPTS.${.IMPSRC:T}} -o ${.TARGET} ${.IMPSRC}
${LIB2_EH:.c=.pico}:
${_MKTARGET_COMPILE}
${COMPILE.c} ${CPICFLAGS} -fexceptions ${COPTS.${.IMPSRC:T}} -o ${.TARGET} ${.IMPSRC}
${G_LIB2_DIVMOD_FUNCS:=.o}:
${_MKTARGET_COMPILE}
${COMPILE.c} -fexceptions -fnon-call-exceptions ${COPTS.${.IMPSRC:T}} -o ${.TARGET} ${.IMPSRC}
${G_LIB2_DIVMOD_FUNCS:=.pico}:
${_MKTARGET_COMPILE}
${COMPILE.c} ${CPICFLAGS} -fexceptions -fnon-call-exceptions ${COPTS.${.IMPSRC:T}} -o ${.TARGET} ${.IMPSRC}
dp-bit.c: ${.CURDIR}/Makefile
${_MKTARGET_CREATE}
printf '#define FLOAT\n#include <fp-bit.c>\n' >${.TARGET}
.else # defined(MKNATIVE_LIBGCC_NEW)
#
# New style libgcc build procedure.
#
.endif # defined(MKNATIVE_LIBGCC_NEW)
#
# Common rules.
#
.PATH: ${DIST}/gcc ${DIST}/gcc/cp ${DIST}/gcc/cp/inc ${DIST}/gcc/config \
${G_CONFIGDIR}
tconfig.h:
${_MKTARGET_CREATE}
TARGET_CPU_DEFAULT="" \
HEADERS="$(G_xm_include_list)" DEFINES="USED_FOR_TARGET $(G_xm_defines)" \
${HOST_SH} $(GNUHOSTDIST)/gcc/mkconfig.sh tconfig.h
DPSRCS+= tconfig.h
CLEANFILES+= tconfig.h
BUILDSYMLINKS+= ${G_UNWIND_H} unwind.h
DPSRCS+= unwind.h
# these aren't necessary but are #include'd
FAKEHEADERS=options.h insn-flags.h insn-constants.h
${FAKEHEADERS}:
${_MKTARGET_CREATE}
touch ${.TARGET}
DPSRCS+= ${FAKEHEADERS}
CLEANFILES+= ${FAKEHEADERS}
|