Makefile revision 70703
1# $FreeBSD: head/gnu/lib/libgcc/Makefile 70703 2001-01-06 06:16:31Z obrien $
2
3GCCDIR=	${.CURDIR}/../../../contrib/gcc.295
4
5.PATH: ${GCCDIR}/cp ${GCCDIR}
6
7# allow to be overridden for the a.out case
8.if !defined(LIB) || ${LIB} != "gcc_r"
9LIB=	gcc
10.endif
11
12.if ${OBJFORMAT} == aout
13# Install libgcc_pic.a, since ld.so uses it.
14INSTALL_PIC_ARCHIVE=  yes
15.endif
16
17#
18# XXX This is a hack, but it seems to work.  libgcc1.a is supposed to be
19# compiled by the native compiler, and libgcc2.a is meant to be compiled
20# by *this* version of gcc.
21#
22# Normally, this does not make any difference, since we only have gcc, but
23# when bootstrapping from gcc-2.6.3, we have to use the freshly built 2.7.2
24# compiler for some of the libgcc2.c __attribute__ stuff.
25#
26# We now depend on a bootstrap pass (normally in `make world') to build
27# and install the new version of gcc before we get here.  This makes
28# finding the new version (XCC) easy but may break finding the old version
29# (CC).
30#
31XCC=	${CC}
32XCXX=	${CXX}
33
34# Members of libgcc1.a.
35LIB1FUNCS= _mulsi3 _udivsi3 _divsi3 _umodsi3 _modsi3 \
36	   _lshrsi3 _ashrsi3 _ashlsi3 \
37	   _divdf3 _muldf3 _negdf2 _adddf3 _subdf3 \
38	   _fixdfsi _fixsfsi _floatsidf _floatsisf _truncdfsf2 _extendsfdf2 \
39	   _addsf3 _negsf2 _subsf3 _mulsf3 _divsf3 \
40	   _eqdf2 _nedf2 _gtdf2 _gedf2 _ltdf2 _ledf2 \
41	   _eqsf2 _nesf2 _gtsf2 _gesf2 _ltsf2 _lesf2
42
43# Library members defined in libgcc2.c.
44LIB2FUNCS= _muldi3 _divdi3 _moddi3 _udivdi3 _umoddi3 _negdi2 \
45	   _lshrdi3 _ashldi3 _ashrdi3 _ffsdi2 \
46	   _udiv_w_sdiv _udivmoddi4 _cmpdi2 _ucmpdi2 _floatdidf _floatdisf \
47	   _fixunsdfsi _fixunssfsi _fixunsdfdi _fixdfdi _fixunssfdi _fixsfdi \
48	   _fixxfdi _fixunsxfdi _floatdixf _fixunsxfsi \
49	   _fixtfdi _fixunstfdi _floatditf \
50	   __gcc_bcmp _varargs __dummy _eprintf \
51	   _bb _shtab _clear_cache _trampoline __main _exit _ctors \
52	   _eh _pure
53
54# Library members defined in new1.cc.
55NEW1FUNCS= _op_new _op_newnt 
56
57# Library members defined in new2.cc.
58NEW2FUNCS= _op_vnew _op_vnewnt _op_delete _op_delnt _op_vdel _op_vdelnt 
59
60SRCS=	frame.c tinfo.cc tinfo2.cc new.cc exception.cc
61
62CFLAGS+=	-I${GCCDIR}/config -I${GCCDIR} -I.
63CFLAGS+=	-fexceptions
64CFLAGS+=	-DIN_GCC
65.if ${OBJFORMAT} != aout
66#CFLAGS+=	-D_PTHREADS -fPIC -DGTHREAD_USE_WEAK
67CFLAGS+=	-D_PTHREADS -DGTHREAD_USE_WEAK
68.endif
69CXXFLAGS+=	-I${GCCDIR}/cp/inc
70CXXFLAGS+=	-nostdinc++
71
72COMMONHDRS=	config.h tconfig.h tm.h
73CLEANFILES+=	${COMMONHDRS}
74SRCS+=		${COMMONHDRS}
75
76LIB1OBJS=	${LIB1FUNCS:S/$/.o/}
77LIB2OBJS=	${LIB2FUNCS:S/$/.o/}
78LIB1SOBJS=	${LIB1FUNCS:S/$/.So/}
79LIB2SOBJS=	${LIB2FUNCS:S/$/.So/}
80LIB1POBJS=	${LIB1FUNCS:S/$/.po/}
81LIB2POBJS=	${LIB2FUNCS:S/$/.po/}
82NEW1OBJS=	${NEW1FUNCS:S/$/.o/}
83NEW2OBJS=	${NEW2FUNCS:S/$/.o/}
84NEW1SOBJS=	${NEW1FUNCS:S/$/.So/}
85NEW2SOBJS=	${NEW2FUNCS:S/$/.So/}
86NEW1POBJS=	${NEW1FUNCS:S/$/.po/}
87NEW2POBJS=	${NEW2FUNCS:S/$/.po/}
88
89OBJS=		${LIB1OBJS} ${LIB2OBJS} ${NEW1OBJS} ${NEW2OBJS}
90
91config.h:
92	echo '#include <${MACHINE_ARCH}/xm-${MACHINE_ARCH}.h>'	> ${.TARGET}
93	echo '#include <xm-freebsd.h>'				>> ${.TARGET}
94
95tconfig.h:
96	echo '#include "gansidecl.h"'				> ${.TARGET}
97	echo '#include "${MACHINE_ARCH}/xm-${MACHINE_ARCH}.h"'	>> ${.TARGET}
98
99#	KEEP THIS IN SYNC with src/gcc/usr.bin/cc/cc_tools/Makefile !!
100tm.h:
101	echo '#include "${MACHINE_ARCH}/${MACHINE_ARCH}.h"'	> ${.TARGET}
102.if ${MACHINE_ARCH} == "i386"
103	echo '#include "${MACHINE_ARCH}/att.h"'			>> ${.TARGET}
104.endif
105	echo '#include <freebsd.h>'				>> ${.TARGET}
106	echo '#include "${MACHINE_ARCH}/freebsd.h"'		>> ${.TARGET}
107.if ${MACHINE_ARCH} == "i386"
108	echo '#include "${MACHINE_ARCH}/perform.h"'		>> ${.TARGET}
109.endif
110
111${OBJS}: ${COMMONHDRS}
112
113${LIB1OBJS}: libgcc1.c
114	${CC} -c ${CFLAGS} -DL${.PREFIX} -o ${.TARGET} ${.ALLSRC:M*.c}
115	@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
116	@mv ${.TARGET}.tmp ${.TARGET}
117
118${LIB2OBJS}: libgcc2.c
119	${XCC} -c ${CFLAGS} -DL${.PREFIX} -o ${.TARGET} ${.ALLSRC:M*.c}
120	@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
121	@mv ${.TARGET}.tmp ${.TARGET}
122
123${NEW1OBJS}: new1.cc
124	${XCXX} -c ${CXXFLAGS} -DL${.PREFIX} -o ${.TARGET} ${.ALLSRC:M*.cc}
125	@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
126	@mv ${.TARGET}.tmp ${.TARGET}
127
128${NEW2OBJS}: new2.cc
129	${CXX} -c ${CXXFLAGS} -DL${.PREFIX} -o ${.TARGET} ${.ALLSRC:M*.cc}
130	@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
131	@mv ${.TARGET}.tmp ${.TARGET}
132
133.if !defined(NOPIC)
134${LIB1SOBJS}: libgcc1.c
135	${CC} -c -fpic ${CFLAGS} -DL${.PREFIX} -o ${.TARGET} ${.ALLSRC:M*.c}
136	@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
137	@mv ${.TARGET}.tmp ${.TARGET}
138
139${LIB2SOBJS}: libgcc2.c
140	${XCC} -c -fpic ${CFLAGS} -DL${.PREFIX} -o ${.TARGET} ${.ALLSRC:M*.c}
141	@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
142	@mv ${.TARGET}.tmp ${.TARGET}
143
144${NEW1SOBJS}: new1.cc
145	${XCXX} -c -fpic ${CXXFLAGS} -DL${.PREFIX} -o ${.TARGET} ${.ALLSRC:M*.cc}
146	@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
147	@mv ${.TARGET}.tmp ${.TARGET}
148
149${NEW2SOBJS}: new2.cc
150	${CXX} -c -fpic ${CXXFLAGS} -DL${.PREFIX} -o ${.TARGET} ${.ALLSRC:M*.cc}
151	@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
152	@mv ${.TARGET}.tmp ${.TARGET}
153.endif
154
155.if !defined(NOPROFILE)
156${LIB1POBJS}: libgcc1.c
157	${CC} -c -p ${CFLAGS} -DL${.PREFIX} -o ${.TARGET} ${.ALLSRC:M*.c}
158	@${LD} -o ${.TARGET}.tmp -X -r ${.TARGET}
159	@mv ${.TARGET}.tmp ${.TARGET}
160
161${LIB2POBJS}: libgcc2.c
162	${XCC} -c -p ${CFLAGS} -DL${.PREFIX} -o ${.TARGET} ${.ALLSRC:M*.c}
163	@${LD} -o ${.TARGET}.tmp -X -r ${.TARGET}
164	@mv ${.TARGET}.tmp ${.TARGET}
165
166${NEW1POBJS}: new1.cc
167	${XCXX} -c -p ${CXXFLAGS} -DL${.PREFIX} -o ${.TARGET} ${.ALLSRC:M*.cc}
168	@${LD} -o ${.TARGET}.tmp -X -r ${.TARGET}
169	@mv ${.TARGET}.tmp ${.TARGET}
170
171${NEW2POBJS}: new2.cc
172	${CXX} -c -p ${CXXFLAGS} -DL${.PREFIX} -o ${.TARGET} ${.ALLSRC:M*.cc}
173	@${LD} -o ${.TARGET}.tmp -X -r ${.TARGET}
174	@mv ${.TARGET}.tmp ${.TARGET}
175.endif
176
177.include <bsd.lib.mk>
178