Makefile revision 45306
1218885Sdim#
2218885Sdim# $Id: Makefile,v 1.21 1999/04/04 16:36:29 obrien Exp $
3218885Sdim#
4218885Sdim
5218885SdimGCCDIR=	${.CURDIR}/../../../contrib/egcs/gcc
6218885Sdim
7218885Sdim.PATH:  ${GCCDIR}/cp ${GCCDIR}
8218885Sdim
9218885SdimLIB=	gcc
10218885Sdim
11218885Sdim# Install libgcc_pic.a, since ld.so uses it.
12218885SdimINSTALL_PIC_ARCHIVE=  yes
13218885Sdim
14218885Sdim#
15218885Sdim# XXX This is a hack, but it seems to work.  libgcc1.a is supposed to be
16218885Sdim# compiled by the native compiler, and libgcc2.a is meant to be compiled
17218885Sdim# by *this* version of gcc.
18218885Sdim#
19218885Sdim# Normally, this does not make any difference, since we only have gcc, but
20218885Sdim# when bootstrapping from gcc-2.6.3, we have to use the freshly built 2.7.2
21218885Sdim# compiler for some of the libgcc2.c __attribute__ stuff.
22218885Sdim#
23218885Sdim# We now depend on a bootstrap pass (normally in `make world') to build
24218885Sdim# and install the new version of gcc before we get here.  This makes
25218885Sdim# finding the new version (XCC) easy but may break finding the old version
26218885Sdim# (CC).
27218885Sdim#
28218885SdimXCC=	${CC}
29218885SdimXCXX=	${CXX}
30218885Sdim
31218885Sdim# Members of libgcc1.a.
32218885SdimLIB1FUNCS= _mulsi3 _udivsi3 _divsi3 _umodsi3 _modsi3 \
33218885Sdim	   _lshrsi3 _ashrsi3 _ashlsi3 \
34218885Sdim	   _divdf3 _muldf3 _negdf2 _adddf3 _subdf3 \
35218885Sdim	   _fixdfsi _fixsfsi _floatsidf _floatsisf _truncdfsf2 _extendsfdf2 \
36218885Sdim	   _addsf3 _negsf2 _subsf3 _mulsf3 _divsf3 \
37218885Sdim	   _eqdf2 _nedf2 _gtdf2 _gedf2 _ltdf2 _ledf2 \
38218885Sdim	   _eqsf2 _nesf2 _gtsf2 _gesf2 _ltsf2 _lesf2
39218885Sdim
40218885Sdim# Library members defined in libgcc2.c.
41218885SdimLIB2FUNCS= _muldi3 _divdi3 _moddi3 _udivdi3 _umoddi3 _negdi2 \
42218885Sdim	   _lshrdi3 _ashldi3 _ashrdi3 _ffsdi2 \
43218885Sdim	   _udiv_w_sdiv _udivmoddi4 _cmpdi2 _ucmpdi2 _floatdidf _floatdisf \
44218885Sdim	   _fixunsdfsi _fixunssfsi _fixunsdfdi _fixdfdi _fixunssfdi _fixsfdi \
45218885Sdim	   _fixxfdi _fixunsxfdi _floatdixf _fixunsxfsi \
46218885Sdim	   _fixtfdi _fixunstfdi _floatditf \
47218885Sdim	   __gcc_bcmp _varargs __dummy _eprintf \
48218885Sdim	   _bb _shtab _clear_cache _trampoline __main _exit _ctors \
49218885Sdim	   _eh _pure
50218885Sdim
51218885Sdim# Library members defined in new1.cc.
52218885SdimNEW1FUNCS= _op_new _op_newnt 
53218885Sdim
54218885Sdim# Library members defined in new2.cc.
55218885SdimNEW2FUNCS= _op_vnew _op_vnewnt _op_delete _op_delnt _op_vdel _op_vdelnt 
56218885Sdim
57218885SdimSRCS=	frame.c tinfo.cc tinfo2.cc new.cc exception.cc
58218885Sdim
59CFLAGS+=	-I${GCCDIR}/config -I${GCCDIR} -I.
60CFLAGS+=	-fexceptions
61CFLAGS+=	-DIN_GCC
62CXXFLAGS+=	-I${GCCDIR}/cp/inc
63CXXFLAGS+=	-nostdinc++
64
65COMMONHDRS=	config.h tconfig.h tm.h
66CLEANFILES+=	${COMMONHDRS}
67SRCS+=		${COMMONHDRS}
68
69LIB1OBJS=	${LIB1FUNCS:S/$/.o/}
70LIB2OBJS=	${LIB2FUNCS:S/$/.o/}
71LIB1SOBJS=	${LIB1FUNCS:S/$/.So/}
72LIB2SOBJS=	${LIB2FUNCS:S/$/.So/}
73LIB1POBJS=	${LIB1FUNCS:S/$/.po/}
74LIB2POBJS=	${LIB2FUNCS:S/$/.po/}
75NEW1OBJS=	${NEW1FUNCS:S/$/.o/}
76NEW2OBJS=	${NEW2FUNCS:S/$/.o/}
77NEW1SOBJS=	${NEW1FUNCS:S/$/.So/}
78NEW2SOBJS=	${NEW2FUNCS:S/$/.So/}
79NEW1POBJS=	${NEW1FUNCS:S/$/.po/}
80NEW2POBJS=	${NEW2FUNCS:S/$/.po/}
81
82OBJS=		${LIB1OBJS} ${LIB2OBJS} ${NEW1OBJS} ${NEW2OBJS}
83
84config.h:
85	echo '#include "${MACHINE_ARCH}/xm-freebsd.h"' > ${.TARGET}
86
87tconfig.h:
88	echo '#include "${MACHINE_ARCH}/xm-${MACHINE_ARCH}.h"' > ${.TARGET}
89
90tm.h:
91	echo '#include "${MACHINE_ARCH}/${MACHINE_ARCH}.h"' > ${.TARGET}
92	echo '#include "${MACHINE_ARCH}/att.h"' >> ${.TARGET}
93	echo '#include "${MACHINE_ARCH}/freebsd.h"' >> ${.TARGET}
94.if ${MACHINE_ARCH} == "i386"
95	echo '#include "${MACHINE_ARCH}/perform.h"' >> ${.TARGET}
96.elif ${MACHINE_ARCH} == "alpha"
97	echo '#include "${MACHINE_ARCH}/freebsd-elf.h"' >> ${.TARGET}
98.endif
99
100${OBJS}: ${COMMONHDRS}
101
102${LIB1OBJS}: libgcc1.c
103	${CC} -c ${CFLAGS} -DL${.PREFIX} -o ${.TARGET} ${.ALLSRC:M*.c}
104	@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
105	@mv ${.TARGET}.tmp ${.TARGET}
106
107${LIB2OBJS}: libgcc2.c
108	${XCC} -c ${CFLAGS} -DL${.PREFIX} -o ${.TARGET} ${.ALLSRC:M*.c}
109	@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
110	@mv ${.TARGET}.tmp ${.TARGET}
111
112${NEW1OBJS}: new1.cc
113	${XCXX} -c ${CXXFLAGS} -DL${.PREFIX} -o ${.TARGET} ${.ALLSRC:M*.cc}
114	@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
115	@mv ${.TARGET}.tmp ${.TARGET}
116
117${NEW2OBJS}: new2.cc
118	${CXX} -c ${CXXFLAGS} -DL${.PREFIX} -o ${.TARGET} ${.ALLSRC:M*.cc}
119	@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
120	@mv ${.TARGET}.tmp ${.TARGET}
121
122.if !defined(NOPIC)
123${LIB1SOBJS}: libgcc1.c
124	${CC} -c -fpic ${CFLAGS} -DL${.PREFIX} -o ${.TARGET} ${.ALLSRC:M*.c}
125	@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
126	@mv ${.TARGET}.tmp ${.TARGET}
127
128${LIB2SOBJS}: libgcc2.c
129	${XCC} -c -fpic ${CFLAGS} -DL${.PREFIX} -o ${.TARGET} ${.ALLSRC:M*.c}
130	@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
131	@mv ${.TARGET}.tmp ${.TARGET}
132
133${NEW1SOBJS}: new1.cc
134	${XCXX} -c -fpic ${CXXFLAGS} -DL${.PREFIX} -o ${.TARGET} ${.ALLSRC:M*.cc}
135	@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
136	@mv ${.TARGET}.tmp ${.TARGET}
137
138${NEW2SOBJS}: new2.cc
139	${CXX} -c -fpic ${CXXFLAGS} -DL${.PREFIX} -o ${.TARGET} ${.ALLSRC:M*.cc}
140	@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
141	@mv ${.TARGET}.tmp ${.TARGET}
142.endif
143
144.if !defined(NOPROFILE)
145${LIB1POBJS}: libgcc1.c
146	${CC} -c -p ${CFLAGS} -DL${.PREFIX} -o ${.TARGET} ${.ALLSRC:M*.c}
147	@${LD} -o ${.TARGET}.tmp -X -r ${.TARGET}
148	@mv ${.TARGET}.tmp ${.TARGET}
149
150${LIB2POBJS}: libgcc2.c
151	${XCC} -c -p ${CFLAGS} -DL${.PREFIX} -o ${.TARGET} ${.ALLSRC:M*.c}
152	@${LD} -o ${.TARGET}.tmp -X -r ${.TARGET}
153	@mv ${.TARGET}.tmp ${.TARGET}
154
155${NEW1POBJS}: new1.cc
156	${XCXX} -c -p ${CXXFLAGS} -DL${.PREFIX} -o ${.TARGET} ${.ALLSRC:M*.cc}
157	@${LD} -o ${.TARGET}.tmp -X -r ${.TARGET}
158	@mv ${.TARGET}.tmp ${.TARGET}
159
160${NEW2POBJS}: new2.cc
161	${CXX} -c -p ${CXXFLAGS} -DL${.PREFIX} -o ${.TARGET} ${.ALLSRC:M*.cc}
162	@${LD} -o ${.TARGET}.tmp -X -r ${.TARGET}
163	@mv ${.TARGET}.tmp ${.TARGET}
164.endif
165
166.include <bsd.lib.mk>
167