summaryrefslogtreecommitdiffstats
path: root/gnu/usr.bin/cc/libgcc/Makefile
blob: 2707b1158b6461faddf4620c78a91049114ab2c0 (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
#
# $FreeBSD$
#

LIB=	gcc

# Install libgcc_pic.a, since ld.so uses it.
INSTALL_PIC_ARCHIVE=  yes

#
# XXX This is a hack, but it seems to work.  libgcc1.a is supposed to be
# compiled by the native compiler, and libgcc2.a is meant to be compiled
# by *this* version of gcc.
#
# Normally, this does not make any difference, since we only have gcc, but
# when bootstrapping from gcc-2.6.3, we have to use the freshly built 2.7.2
# compiler for some of the libgcc2.c __attribute__ stuff.
#
.if exists(${.OBJDIR}/../cc)
XCC=	${.OBJDIR}/../cc/cc
.else
XCC=	${.CURDIR}/../cc/cc
.endif

.if exists(${.OBJDIR}/../cc1)
XCC+=	-B${.OBJDIR}/../cc1/
.else
XCC+=	-B${.CURDIR}/../cc1/
.endif

.if exists(${.OBJDIR}/../cpp)
XCC+=	-B${.OBJDIR}/../cpp/
.else
XCC+=	-B${.CURDIR}/../cpp/
.endif

# Members of libgcc1.a.
LIB1FUNCS= _mulsi3 _udivsi3 _divsi3 _umodsi3 _modsi3 \
	   _lshrsi3 _ashrsi3 _ashlsi3 \
	   _divdf3 _muldf3 _negdf2 _adddf3 _subdf3 \
	   _fixdfsi _fixsfsi _floatsidf _floatsisf _truncdfsf2 _extendsfdf2 \
	   _addsf3 _negsf2 _subsf3 _mulsf3 _divsf3 \
	   _eqdf2 _nedf2 _gtdf2 _gedf2 _ltdf2 _ledf2 \
	   _eqsf2 _nesf2 _gtsf2 _gesf2 _ltsf2 _lesf2

# Library members defined in libgcc2.c.
LIB2FUNCS= _muldi3 _divdi3 _moddi3 _udivdi3 _umoddi3 _negdi2 \
	   _lshrdi3 _ashldi3 _ashrdi3 _ffsdi2 \
	   _udiv_w_sdiv _udivmoddi4 _cmpdi2 _ucmpdi2 _floatdidf _floatdisf \
	   _fixunsdfsi _fixunssfsi _fixunsdfdi _fixdfdi _fixunssfdi _fixsfdi \
	   _fixxfdi _fixunsxfdi _floatdixf _fixunsxfsi \
	   _fixtfdi _fixunstfdi _floatditf \
	   __gcc_bcmp _varargs _eprintf _op_new _op_vnew _new_handler \
	   _op_delete \
	   _op_vdel _bb _shtab _clear_cache _trampoline __main _exit _ctors \
	   _eh _pure

LIB1OBJS=${LIB1FUNCS:T:S@$@.o@}
LIB2OBJS=${LIB2FUNCS:T:S@$@.o@}
LIB1SOBJS=${LIB1FUNCS:T:S@$@.so@}
LIB2SOBJS=${LIB2FUNCS:T:S@$@.so@}
P1OBJS=${LIB1FUNCS:T:S@$@.po@}
P2OBJS=${LIB2FUNCS:T:S@$@.po@}

OBJS= ${LIB1OBJS} ${LIB2OBJS}

${LIB1OBJS}: libgcc1.c
	${CC} -c ${CFLAGS} -DL${.PREFIX} -o ${.TARGET} ${GCCDIR}/libgcc1.c
	@${LD} -O ${.TARGET} -x -r ${.TARGET}

${LIB2OBJS}: libgcc2.c
	${XCC} -c ${CFLAGS} -DL${.PREFIX} -o ${.TARGET} ${GCCDIR}/libgcc2.c
	@${LD} -O ${.TARGET} -x -r ${.TARGET}

.if !defined(NOPIC)
${LIB1SOBJS}: libgcc1.c
	${CC} -c -fpic ${CFLAGS} -DL${.PREFIX} -o ${.TARGET} ${GCCDIR}/libgcc1.c
	@${LD} -O ${.TARGET} -x -r ${.TARGET}

${LIB2SOBJS}: libgcc2.c
	${XCC} -c -fpic ${CFLAGS} -DL${.PREFIX} -o ${.TARGET} ${GCCDIR}/libgcc2.c
	@${LD} -O ${.TARGET} -x -r ${.TARGET}
.endif

.if !defined(NOPROFILE)
${P1OBJS}: libgcc1.c
	${CC} -c -p ${CFLAGS} -DL${.PREFIX} -o ${.TARGET} ${GCCDIR}/libgcc1.c
	@${LD} -O ${.TARGET} -X -r ${.TARGET}

${P2OBJS}: libgcc2.c
	${XCC} -c -p ${CFLAGS} -DL${.PREFIX} -o ${.TARGET} ${GCCDIR}/libgcc2.c
	@${LD} -O ${.TARGET} -X -r ${.TARGET}
.endif

.include <bsd.lib.mk>
OpenPOWER on IntegriCloud