Makefile revision 53173
1169691Skan# $FreeBSD: head/gnu/lib/libgcc/Makefile 53173 1999-11-15 04:16:19Z obrien $
2169691Skan
3169691SkanGCCDIR=	${.CURDIR}/../../../contrib/gcc
4169691Skan
5169691Skan.PATH: ${GCCDIR}/cp ${GCCDIR}
6169691Skan
7169691Skan.if !defined(LIB) || ${LIB} != "gcc_r"
8169691SkanLIB=	gcc
9169691Skan.endif
10169691Skan
11169691Skan# Install libgcc_pic.a, since ld.so uses it.
12169691SkanINSTALL_PIC_ARCHIVE=  yes
13169691Skan
14169691Skan#
15169691Skan# XXX This is a hack, but it seems to work.  libgcc1.a is supposed to be
16169691Skan# compiled by the native compiler, and libgcc2.a is meant to be compiled
17169691Skan# by *this* version of gcc.
18169691Skan#
19169691Skan# Normally, this does not make any difference, since we only have gcc, but
20169691Skan# when bootstrapping from gcc-2.6.3, we have to use the freshly built 2.7.2
21169691Skan# compiler for some of the libgcc2.c __attribute__ stuff.
22169691Skan#
23169691Skan# We now depend on a bootstrap pass (normally in `make world') to build
24169691Skan# and install the new version of gcc before we get here.  This makes
25169691Skan# finding the new version (XCC) easy but may break finding the old version
26169691Skan# (CC).
27169691Skan#
28169691SkanXCC=	${CC}
29169691SkanXCXX=	${CXX}
30169691Skan
31169691Skan# Members of libgcc1.a.
32169691SkanLIB1FUNCS= _mulsi3 _udivsi3 _divsi3 _umodsi3 _modsi3 \
33169691Skan	   _lshrsi3 _ashrsi3 _ashlsi3 \
34169691Skan	   _divdf3 _muldf3 _negdf2 _adddf3 _subdf3 \
35169691Skan	   _fixdfsi _fixsfsi _floatsidf _floatsisf _truncdfsf2 _extendsfdf2 \
36169691Skan	   _addsf3 _negsf2 _subsf3 _mulsf3 _divsf3 \
37169691Skan	   _eqdf2 _nedf2 _gtdf2 _gedf2 _ltdf2 _ledf2 \
38169691Skan	   _eqsf2 _nesf2 _gtsf2 _gesf2 _ltsf2 _lesf2
39169691Skan
40169691Skan# Library members defined in libgcc2.c.
41169691SkanLIB2FUNCS= _muldi3 _divdi3 _moddi3 _udivdi3 _umoddi3 _negdi2 \
42169691Skan	   _lshrdi3 _ashldi3 _ashrdi3 _ffsdi2 \
43169691Skan	   _udiv_w_sdiv _udivmoddi4 _cmpdi2 _ucmpdi2 _floatdidf _floatdisf \
44169691Skan	   _fixunsdfsi _fixunssfsi _fixunsdfdi _fixdfdi _fixunssfdi _fixsfdi \
45169691Skan	   _fixxfdi _fixunsxfdi _floatdixf _fixunsxfsi \
46169691Skan	   _fixtfdi _fixunstfdi _floatditf \
47169691Skan	   __gcc_bcmp _varargs __dummy _eprintf \
48169691Skan	   _bb _shtab _clear_cache _trampoline __main _exit _ctors \
49169691Skan	   _eh _pure
50169691Skan
51169691Skan# Library members defined in new1.cc.
52169691SkanNEW1FUNCS= _op_new _op_newnt 
53169691Skan
54169691Skan# Library members defined in new2.cc.
55169691SkanNEW2FUNCS= _op_vnew _op_vnewnt _op_delete _op_delnt _op_vdel _op_vdelnt 
56169691Skan
57169691SkanSRCS=	frame.c tinfo.cc tinfo2.cc new.cc exception.cc
58169691Skan
59169691SkanCFLAGS+=	-I${GCCDIR}/config -I${GCCDIR} -I.
60169691SkanCFLAGS+=	-fexceptions
61169691SkanCFLAGS+=	-DIN_GCC
62169691SkanCXXFLAGS+=	-I${GCCDIR}/cp/inc
63169691SkanCXXFLAGS+=	-nostdinc++
64169691Skan
65169691SkanCOMMONHDRS=	config.h tconfig.h tm.h
66169691SkanCLEANFILES+=	${COMMONHDRS}
67169691SkanSRCS+=		${COMMONHDRS}
68169691Skan
69169691SkanLIB1OBJS=	${LIB1FUNCS:S/$/.o/}
70169691SkanLIB2OBJS=	${LIB2FUNCS:S/$/.o/}
71169691SkanLIB1SOBJS=	${LIB1FUNCS:S/$/.So/}
72169691SkanLIB2SOBJS=	${LIB2FUNCS:S/$/.So/}
73169691SkanLIB1POBJS=	${LIB1FUNCS:S/$/.po/}
74169691SkanLIB2POBJS=	${LIB2FUNCS:S/$/.po/}
75169691SkanNEW1OBJS=	${NEW1FUNCS:S/$/.o/}
76169691SkanNEW2OBJS=	${NEW2FUNCS:S/$/.o/}
77169691SkanNEW1SOBJS=	${NEW1FUNCS:S/$/.So/}
78169691SkanNEW2SOBJS=	${NEW2FUNCS:S/$/.So/}
79169691SkanNEW1POBJS=	${NEW1FUNCS:S/$/.po/}
80169691SkanNEW2POBJS=	${NEW2FUNCS:S/$/.po/}
81169691Skan
82169691SkanOBJS=		${LIB1OBJS} ${LIB2OBJS} ${NEW1OBJS} ${NEW2OBJS}
83169691Skan
84169691Skanconfig.h:
85169691Skan	echo '#include <${MACHINE_ARCH}/xm-${MACHINE_ARCH}.h>'	> ${.TARGET}
86169691Skan	echo '#include <xm-freebsd.h>'				>> ${.TARGET}
87169691Skan
88169691Skantconfig.h:
89169691Skan	echo '#include "gansidecl.h"'				> ${.TARGET}
90169691Skan	echo '#include "${MACHINE_ARCH}/xm-${MACHINE_ARCH}.h"'	>> ${.TARGET}
91169691Skan
92169691Skan#	KEEP THIS IN SYNC with src/gcc/usr.bin/cc/cc_tools/Makefile !!
93169691Skantm.h:
94169691Skan	echo '#include "${MACHINE_ARCH}/${MACHINE_ARCH}.h"'	> ${.TARGET}
95169691Skan.if ${MACHINE_ARCH} == "i386"
96169691Skan	echo '#include "${MACHINE_ARCH}/att.h"'			>> ${.TARGET}
97169691Skan	echo '#include "svr4.h"'				>> ${.TARGET}
98169691Skan.endif
99169691Skan	echo '#include <freebsd.h>'				>> ${.TARGET}
100169691Skan.if ${MACHINE_ARCH} == "alpha"
101169691Skan	echo '#include "${MACHINE_ARCH}/freebsd4.h"'		>> ${.TARGET}
102169691Skan.else
103169691Skan	echo '#include "${MACHINE_ARCH}/freebsd.h"'		>> ${.TARGET}
104169691Skan.endif
105169691Skan.if ${MACHINE_ARCH} == "i386"
106169691Skan	echo '#include "${MACHINE_ARCH}/perform.h"'		>> ${.TARGET}
107169691Skan.endif
108169691Skan
109169691Skan${OBJS}: ${COMMONHDRS}
110169691Skan
111169691Skan${LIB1OBJS}: libgcc1.c
112169691Skan	${CC} -c ${CFLAGS} -DL${.PREFIX} -o ${.TARGET} ${.ALLSRC:M*.c}
113169691Skan	@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
114169691Skan	@mv ${.TARGET}.tmp ${.TARGET}
115169691Skan
116169691Skan${LIB2OBJS}: libgcc2.c
117169691Skan	${XCC} -c ${CFLAGS} -DL${.PREFIX} -o ${.TARGET} ${.ALLSRC:M*.c}
118169691Skan	@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
119169691Skan	@mv ${.TARGET}.tmp ${.TARGET}
120169691Skan
121169691Skan${NEW1OBJS}: new1.cc
122169691Skan	${XCXX} -c ${CXXFLAGS} -DL${.PREFIX} -o ${.TARGET} ${.ALLSRC:M*.cc}
123169691Skan	@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
124169691Skan	@mv ${.TARGET}.tmp ${.TARGET}
125169691Skan
126169691Skan${NEW2OBJS}: new2.cc
127169691Skan	${CXX} -c ${CXXFLAGS} -DL${.PREFIX} -o ${.TARGET} ${.ALLSRC:M*.cc}
128169691Skan	@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
129169691Skan	@mv ${.TARGET}.tmp ${.TARGET}
130169691Skan
131169691Skan.if !defined(NOPIC)
132169691Skan${LIB1SOBJS}: libgcc1.c
133169691Skan	${CC} -c -fpic ${CFLAGS} -DL${.PREFIX} -o ${.TARGET} ${.ALLSRC:M*.c}
134169691Skan	@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
135169691Skan	@mv ${.TARGET}.tmp ${.TARGET}
136169691Skan
137169691Skan${LIB2SOBJS}: libgcc2.c
138169691Skan	${XCC} -c -fpic ${CFLAGS} -DL${.PREFIX} -o ${.TARGET} ${.ALLSRC:M*.c}
139169691Skan	@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
140169691Skan	@mv ${.TARGET}.tmp ${.TARGET}
141169691Skan
142169691Skan${NEW1SOBJS}: new1.cc
143169691Skan	${XCXX} -c -fpic ${CXXFLAGS} -DL${.PREFIX} -o ${.TARGET} ${.ALLSRC:M*.cc}
144169691Skan	@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
145169691Skan	@mv ${.TARGET}.tmp ${.TARGET}
146169691Skan
147169691Skan${NEW2SOBJS}: new2.cc
148169691Skan	${CXX} -c -fpic ${CXXFLAGS} -DL${.PREFIX} -o ${.TARGET} ${.ALLSRC:M*.cc}
149169691Skan	@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
150169691Skan	@mv ${.TARGET}.tmp ${.TARGET}
151169691Skan.endif
152169691Skan
153169691Skan.if !defined(NOPROFILE)
154169691Skan${LIB1POBJS}: libgcc1.c
155169691Skan	${CC} -c -p ${CFLAGS} -DL${.PREFIX} -o ${.TARGET} ${.ALLSRC:M*.c}
156169691Skan	@${LD} -o ${.TARGET}.tmp -X -r ${.TARGET}
157169691Skan	@mv ${.TARGET}.tmp ${.TARGET}
158169691Skan
159169691Skan${LIB2POBJS}: libgcc2.c
160169691Skan	${XCC} -c -p ${CFLAGS} -DL${.PREFIX} -o ${.TARGET} ${.ALLSRC:M*.c}
161169691Skan	@${LD} -o ${.TARGET}.tmp -X -r ${.TARGET}
162169691Skan	@mv ${.TARGET}.tmp ${.TARGET}
163169691Skan
164169691Skan${NEW1POBJS}: new1.cc
165169691Skan	${XCXX} -c -p ${CXXFLAGS} -DL${.PREFIX} -o ${.TARGET} ${.ALLSRC:M*.cc}
166169691Skan	@${LD} -o ${.TARGET}.tmp -X -r ${.TARGET}
167169691Skan	@mv ${.TARGET}.tmp ${.TARGET}
168169691Skan
169169691Skan${NEW2POBJS}: new2.cc
170169691Skan	${CXX} -c -p ${CXXFLAGS} -DL${.PREFIX} -o ${.TARGET} ${.ALLSRC:M*.cc}
171169691Skan	@${LD} -o ${.TARGET}.tmp -X -r ${.TARGET}
172169691Skan	@mv ${.TARGET}.tmp ${.TARGET}
173169691Skan.endif
174169691Skan
175169691Skan.include <bsd.lib.mk>
176169691Skan