Makefile revision 50472
1247835Skib# $FreeBSD: head/gnu/lib/libgcc/Makefile 50472 1999-08-27 23:37:10Z peter $
2247835Skib
3247835SkibGCCDIR=	${.CURDIR}/../../../contrib/egcs/gcc
4247835Skib
5247835Skib.PATH: ${GCCDIR}/cp ${GCCDIR}
6247835Skib
7247835SkibLIB=	gcc
8247835Skib
9247835Skib# Install libgcc_pic.a, since ld.so uses it.
10247835SkibINSTALL_PIC_ARCHIVE=  yes
11247835Skib
12247835Skib#
13247835Skib# XXX This is a hack, but it seems to work.  libgcc1.a is supposed to be
14247835Skib# compiled by the native compiler, and libgcc2.a is meant to be compiled
15247835Skib# by *this* version of gcc.
16247835Skib#
17247835Skib# Normally, this does not make any difference, since we only have gcc, but
18247835Skib# when bootstrapping from gcc-2.6.3, we have to use the freshly built 2.7.2
19247835Skib# compiler for some of the libgcc2.c __attribute__ stuff.
20247835Skib#
21247835Skib# We now depend on a bootstrap pass (normally in `make world') to build
22247835Skib# and install the new version of gcc before we get here.  This makes
23247835Skib# finding the new version (XCC) easy but may break finding the old version
24247835Skib# (CC).
25247835Skib#
26247835SkibXCC=	${CC}
27247835SkibXCXX=	${CXX}
28247835Skib
29247835Skib# Members of libgcc1.a.
30247835SkibLIB1FUNCS= _mulsi3 _udivsi3 _divsi3 _umodsi3 _modsi3 \
31247835Skib	   _lshrsi3 _ashrsi3 _ashlsi3 \
32247835Skib	   _divdf3 _muldf3 _negdf2 _adddf3 _subdf3 \
33247835Skib	   _fixdfsi _fixsfsi _floatsidf _floatsisf _truncdfsf2 _extendsfdf2 \
34247835Skib	   _addsf3 _negsf2 _subsf3 _mulsf3 _divsf3 \
35247835Skib	   _eqdf2 _nedf2 _gtdf2 _gedf2 _ltdf2 _ledf2 \
36247835Skib	   _eqsf2 _nesf2 _gtsf2 _gesf2 _ltsf2 _lesf2
37247835Skib
38247835Skib# Library members defined in libgcc2.c.
39247835SkibLIB2FUNCS= _muldi3 _divdi3 _moddi3 _udivdi3 _umoddi3 _negdi2 \
40247835Skib	   _lshrdi3 _ashldi3 _ashrdi3 _ffsdi2 \
41247835Skib	   _udiv_w_sdiv _udivmoddi4 _cmpdi2 _ucmpdi2 _floatdidf _floatdisf \
42247835Skib	   _fixunsdfsi _fixunssfsi _fixunsdfdi _fixdfdi _fixunssfdi _fixsfdi \
43247835Skib	   _fixxfdi _fixunsxfdi _floatdixf _fixunsxfsi \
44247835Skib	   _fixtfdi _fixunstfdi _floatditf \
45247835Skib	   __gcc_bcmp _varargs __dummy _eprintf \
46247835Skib	   _bb _shtab _clear_cache _trampoline __main _exit _ctors \
47247835Skib	   _eh _pure
48247835Skib
49247835Skib# Library members defined in new1.cc.
50247835SkibNEW1FUNCS= _op_new _op_newnt 
51247835Skib
52247835Skib# Library members defined in new2.cc.
53247835SkibNEW2FUNCS= _op_vnew _op_vnewnt _op_delete _op_delnt _op_vdel _op_vdelnt 
54247835Skib
55247835SkibSRCS=	frame.c tinfo.cc tinfo2.cc new.cc exception.cc
56247835Skib
57247835SkibCFLAGS+=	-I${GCCDIR}/config -I${GCCDIR} -I.
58247835SkibCFLAGS+=	-fexceptions
59247835SkibCFLAGS+=	-DIN_GCC
60247835SkibCXXFLAGS+=	-I${GCCDIR}/cp/inc
61247835SkibCXXFLAGS+=	-nostdinc++
62247835Skib
63247835SkibCOMMONHDRS=	config.h tconfig.h tm.h
64247835SkibCLEANFILES+=	${COMMONHDRS}
65247835SkibSRCS+=		${COMMONHDRS}
66247835Skib
67247835SkibLIB1OBJS=	${LIB1FUNCS:S/$/.o/}
68247835SkibLIB2OBJS=	${LIB2FUNCS:S/$/.o/}
69247835SkibLIB1SOBJS=	${LIB1FUNCS:S/$/.So/}
70247835SkibLIB2SOBJS=	${LIB2FUNCS:S/$/.So/}
71247835SkibLIB1POBJS=	${LIB1FUNCS:S/$/.po/}
72247835SkibLIB2POBJS=	${LIB2FUNCS:S/$/.po/}
73247835SkibNEW1OBJS=	${NEW1FUNCS:S/$/.o/}
74247835SkibNEW2OBJS=	${NEW2FUNCS:S/$/.o/}
75247835SkibNEW1SOBJS=	${NEW1FUNCS:S/$/.So/}
76247835SkibNEW2SOBJS=	${NEW2FUNCS:S/$/.So/}
77247835SkibNEW1POBJS=	${NEW1FUNCS:S/$/.po/}
78247835SkibNEW2POBJS=	${NEW2FUNCS:S/$/.po/}
79247835Skib
80247835SkibOBJS=		${LIB1OBJS} ${LIB2OBJS} ${NEW1OBJS} ${NEW2OBJS}
81247835Skib
82247835Skibconfig.h:
83247835Skib	echo '#include <${MACHINE_ARCH}/xm-${MACHINE_ARCH}.h>' > ${.TARGET}
84247835Skib	echo '#include <xm-freebsd.h>' >> ${.TARGET}
85247835Skib
86247835Skibtconfig.h:
87247835Skib	echo '#include "${MACHINE_ARCH}/xm-${MACHINE_ARCH}.h"' > ${.TARGET}
88247835Skib
89247835Skibtm.h:
90247835Skib	echo '#include "${MACHINE_ARCH}/${MACHINE_ARCH}.h"' > ${.TARGET}
91247835Skib.if ${MACHINE_ARCH} == "i386"
92247835Skib	echo '#include "${MACHINE_ARCH}/att.h"' >> ${.TARGET}
93247835Skib.endif
94247835Skib	echo '#include "${MACHINE_ARCH}/freebsd.h"' >> ${.TARGET}
95247835Skib.if ${MACHINE_ARCH} == "i386"
96247835Skib	echo '#include "${MACHINE_ARCH}/perform.h"' >> ${.TARGET}
97247835Skib.endif
98247835Skib
99247835Skib${OBJS}: ${COMMONHDRS}
100247835Skib
101247835Skib${LIB1OBJS}: libgcc1.c
102247835Skib	${CC} -c ${CFLAGS} -DL${.PREFIX} -o ${.TARGET} ${.ALLSRC:M*.c}
103247835Skib	@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
104247835Skib	@mv ${.TARGET}.tmp ${.TARGET}
105247835Skib
106247835Skib${LIB2OBJS}: libgcc2.c
107247835Skib	${XCC} -c ${CFLAGS} -DL${.PREFIX} -o ${.TARGET} ${.ALLSRC:M*.c}
108247835Skib	@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
109247835Skib	@mv ${.TARGET}.tmp ${.TARGET}
110247835Skib
111247835Skib${NEW1OBJS}: new1.cc
112247835Skib	${XCXX} -c ${CXXFLAGS} -DL${.PREFIX} -o ${.TARGET} ${.ALLSRC:M*.cc}
113247835Skib	@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
114247835Skib	@mv ${.TARGET}.tmp ${.TARGET}
115247835Skib
116247835Skib${NEW2OBJS}: new2.cc
117247835Skib	${CXX} -c ${CXXFLAGS} -DL${.PREFIX} -o ${.TARGET} ${.ALLSRC:M*.cc}
118247835Skib	@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
119247835Skib	@mv ${.TARGET}.tmp ${.TARGET}
120247835Skib
121247835Skib.if !defined(NOPIC)
122247835Skib${LIB1SOBJS}: libgcc1.c
123247835Skib	${CC} -c -fpic ${CFLAGS} -DL${.PREFIX} -o ${.TARGET} ${.ALLSRC:M*.c}
124247835Skib	@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
125247835Skib	@mv ${.TARGET}.tmp ${.TARGET}
126247835Skib
127247835Skib${LIB2SOBJS}: libgcc2.c
128247835Skib	${XCC} -c -fpic ${CFLAGS} -DL${.PREFIX} -o ${.TARGET} ${.ALLSRC:M*.c}
129247835Skib	@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
130247835Skib	@mv ${.TARGET}.tmp ${.TARGET}
131247835Skib
132247835Skib${NEW1SOBJS}: new1.cc
133247835Skib	${XCXX} -c -fpic ${CXXFLAGS} -DL${.PREFIX} -o ${.TARGET} ${.ALLSRC:M*.cc}
134247835Skib	@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
135247835Skib	@mv ${.TARGET}.tmp ${.TARGET}
136247835Skib
137247835Skib${NEW2SOBJS}: new2.cc
138247835Skib	${CXX} -c -fpic ${CXXFLAGS} -DL${.PREFIX} -o ${.TARGET} ${.ALLSRC:M*.cc}
139247835Skib	@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
140247835Skib	@mv ${.TARGET}.tmp ${.TARGET}
141247835Skib.endif
142247835Skib
143247835Skib.if !defined(NOPROFILE)
144247835Skib${LIB1POBJS}: libgcc1.c
145247835Skib	${CC} -c -p ${CFLAGS} -DL${.PREFIX} -o ${.TARGET} ${.ALLSRC:M*.c}
146247835Skib	@${LD} -o ${.TARGET}.tmp -X -r ${.TARGET}
147247835Skib	@mv ${.TARGET}.tmp ${.TARGET}
148247835Skib
149247835Skib${LIB2POBJS}: libgcc2.c
150247835Skib	${XCC} -c -p ${CFLAGS} -DL${.PREFIX} -o ${.TARGET} ${.ALLSRC:M*.c}
151247835Skib	@${LD} -o ${.TARGET}.tmp -X -r ${.TARGET}
152247835Skib	@mv ${.TARGET}.tmp ${.TARGET}
153247835Skib
154247835Skib${NEW1POBJS}: new1.cc
155247835Skib	${XCXX} -c -p ${CXXFLAGS} -DL${.PREFIX} -o ${.TARGET} ${.ALLSRC:M*.cc}
156247835Skib	@${LD} -o ${.TARGET}.tmp -X -r ${.TARGET}
157247835Skib	@mv ${.TARGET}.tmp ${.TARGET}
158247835Skib
159247835Skib${NEW2POBJS}: new2.cc
160247835Skib	${CXX} -c -p ${CXXFLAGS} -DL${.PREFIX} -o ${.TARGET} ${.ALLSRC:M*.cc}
161247835Skib	@${LD} -o ${.TARGET}.tmp -X -r ${.TARGET}
162247835Skib	@mv ${.TARGET}.tmp ${.TARGET}
163247835Skib.endif
164247835Skib
165247835Skib.include <bsd.lib.mk>
166247835Skib