Makefile revision 294576
1112125Ssam# $FreeBSD: head/gnu/lib/libgcc/Makefile 294576 2016-01-22 16:47:36Z emaste $
2112125Ssam
3139749SimpGCCDIR=	${.CURDIR}/../../../contrib/gcc
4112125SsamGCCLIB=	${.CURDIR}/../../../contrib/gcclibs
5112125SsamCOMPILERRTDIR=	${.CURDIR}/../../../contrib/compiler-rt
6112125SsamUNWINDINCDIR=	${.CURDIR}/../../../contrib/llvm/projects/libunwind/include
7112125SsamUNWINDSRCDIR=	${.CURDIR}/../../../contrib/llvm/projects/libunwind/src
8112125Ssam
9112125SsamSHLIB_NAME=	libgcc_s.so.1
10112125SsamSHLIBDIR?=	/lib
11112125Ssam
12112125Ssam.include <src.opts.mk>
13112125Ssam#
14112125Ssam# libgcc is linked in last and thus cannot depend on ssp symbols coming
15112125Ssam# from earlier libraries. Disable stack protection for this library.
16112125Ssam#
17112125SsamMK_SSP=	no
18112125Ssam
19112125Ssam.include "${.CURDIR}/../../usr.bin/cc/Makefile.tgt"
20112125Ssam
21112125Ssam.if ${TARGET_CPUARCH} == "arm"
22112125SsamCFLAGS+=	-DTARGET_ARM_EABI
23112125Ssam.endif
24112125Ssam
25112125Ssam.PATH: ${GCCDIR}/config/${GCC_CPU} ${GCCDIR}/config ${GCCDIR}
26112125Ssam
27112125SsamCFLAGS+=	-DIN_GCC -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED \
28112125Ssam		-DHAVE_GTHR_DEFAULT \
29112125Ssam		-I${GCCLIB}/include \
30112125Ssam		-I${GCCDIR}/config -I${GCCDIR} -I. \
31112125Ssam		-I${.CURDIR}/../../usr.bin/cc/cc_tools
32112125Ssam
33112125SsamLDFLAGS+=	-nodefaultlibs
34119418SobrienLIBADD+=	c
35119418Sobrien
36119418SobrienOBJS=		# added to below in various ways depending on TARGET_CPUARCH
37112125Ssam
38112125Ssam#---------------------------------------------------------------------------
39112125Ssam#
40112125Ssam# Library members defined in libgcc2.c.
41112125Ssam# When upgrading GCC, obtain the following list from mklibgcc.in
42112125Ssam#
43112125SsamLIB2FUNCS= _muldi3 _negdi2 _lshrdi3 _ashldi3 _ashrdi3 \
44112125Ssam	_cmpdi2 _ucmpdi2 \
45112125Ssam	_enable_execute_stack _trampoline __main _absvsi2 _absvdi2 _addvsi3 \
46112125Ssam	_addvdi3 _subvsi3 _subvdi3 _mulvsi3 _mulvdi3 _negvsi2 _negvdi2 _ctors \
47112125Ssam	_ffssi2 _ffsdi2 _clz _clzsi2 _clzdi2 _ctzsi2 _ctzdi2 _popcount_tab \
48112125Ssam	_popcountsi2 _popcountdi2 _paritysi2 _paritydi2 _powisf2 _powidf2 \
49112125Ssam	_powixf2 _powitf2 _mulsc3 _muldc3 _mulxc3 _multc3 _divsc3 _divdc3 \
50112125Ssam	_divxc3 _divtc3 _bswapsi2 _bswapdi2
51112125Ssam.if ${COMPILER_TYPE} != "clang" || ${TARGET_CPUARCH} != "arm"
52112125SsamLIB2FUNCS+= _clear_cache
53112125Ssam.endif
54112125Ssam
55112125Ssam# The floating-point conversion routines that involve a single-word integer.
56112125Ssam.for mode in sf df xf
57112125SsamLIB2FUNCS+= _fixuns${mode}si
58112125Ssam.endfor
59112125Ssam
60112125Ssam# Likewise double-word routines.
61112125Ssam.if ${TARGET_CPUARCH} != "aarch64" && ${TARGET_CPUARCH} != "arm"
62112125Ssam# These are implemented in an ARM specific file but will not be filtered out
63112125Ssam.for mode in sf df xf tf
64112125SsamLIB2FUNCS+= _fix${mode}di _fixuns${mode}di
65112125SsamLIB2FUNCS+= _floatdi${mode} _floatundi${mode}
66112125Ssam.endfor
67112125Ssam.endif
68112125Ssam
69112125SsamLIB2ADD = $(LIB2FUNCS_EXTRA)
70112125SsamLIB2ADD_ST = $(LIB2FUNCS_STATIC_EXTRA)
71112125Ssam
72112125Ssam# Additional sources to handle exceptions; overridden by targets as needed.
73227309Sed.if ${MK_LLVM_LIBUNWIND} != "no"
74227309Sed
75112125Ssam.PATH: ${COMPILERRTDIR}/lib/builtins
76116815Ssam.PATH: ${UNWINDSRCDIR}
77112125SsamLIB2ADDEH = gcc_personality_v0.c \
78112125Ssam	int_util.c \
79112125Ssam	Unwind-EHABI.cpp \
80112125Ssam	Unwind-sjlj.c \
81112125Ssam	UnwindLevel1-gcc-ext.c \
82112125Ssam	UnwindLevel1.c \
83112125Ssam	UnwindRegistersRestore.S \
84112125Ssam	UnwindRegistersSave.S
85112125Ssam
86112125SsamCFLAGS+=	-I${UNWINDINCDIR} -I${.CURDIR}
87112125Ssam.if empty(CXXFLAGS:M-std=*)
88112125SsamCXXFLAGS+=	-std=c++11
89112125Ssam.endif
90112125SsamCXXFLAGS+=	-fno-rtti
91112125SsamSTATIC_CXXFLAGS+= -fvisibility=hidden -fPIC
92112125Ssam
93112125Ssam.else # MK_LLVM_LIBUNWIND
94112125Ssam
95112125Ssam.if ${TARGET_CPUARCH} == "arm"
96112125SsamLIB2ADDEH =	unwind-arm.c libunwind.S pr-support.c unwind-c.c
97112125Ssam.else
98116815SsamLIB2ADDEH = unwind-dw2.c unwind-dw2-fde-glibc.c unwind-sjlj.c gthr-gnat.c \
99116815Ssam	unwind-c.c
100116815Ssam.endif
101119137Ssam
102116815Ssam.endif # MK_LLVM_LIBUNWIND
103112125Ssam
104112125SsamLIB2ADDEHSTATIC = $(LIB2ADDEH)
105112125SsamLIB2ADDEHSHARED = $(LIB2ADDEH)
106112125Ssam
107112125Ssam# List of extra C and assembler files to add to static and shared libgcc2.
108112125Ssam# Assembler files should have names ending in `.asm'.
109112125SsamLIB2FUNCS_EXTRA =
110112125Ssam
111112125Ssam# List of extra C and assembler files to add to static libgcc2.
112112125Ssam# Assembler files should have names ending in `.asm'.
113112125SsamLIB2FUNCS_STATIC_EXTRA =
114112125Ssam
115112125Ssam# Defined in libgcc2.c, included only in the static library.
116112125Ssam# KAN: Excluded _sf_to_tf and _df_to_tf as TPBIT_FUNCS are not
117112125Ssam# built on any of our platforms.
118116815SsamLIB2FUNCS_ST = _eprintf __gcc_bcmp
119112125Ssam
120112125SsamFPBIT_FUNCS = _pack_sf _unpack_sf _addsub_sf _mul_sf _div_sf \
121112125Ssam    _fpcmp_parts_sf _compare_sf _eq_sf _ne_sf _gt_sf _ge_sf \
122112125Ssam    _lt_sf _le_sf _unord_sf _si_to_sf _sf_to_si _negate_sf _make_sf \
123112125Ssam    _sf_to_df _thenan_sf _sf_to_usi _usi_to_sf
124112125Ssam
125112125SsamDPBIT_FUNCS = _pack_df _unpack_df _addsub_df _mul_df _div_df \
126112125Ssam    _fpcmp_parts_df _compare_df _eq_df _ne_df _gt_df _ge_df \
127112125Ssam    _lt_df _le_df _unord_df _si_to_df _df_to_si _negate_df _make_df \
128112125Ssam    _df_to_sf _thenan_df _df_to_usi _usi_to_df
129112125Ssam
130112125SsamTPBIT_FUNCS = _pack_tf _unpack_tf _addsub_tf _mul_tf _div_tf \
131112125Ssam    _fpcmp_parts_tf _compare_tf _eq_tf _ne_tf _gt_tf _ge_tf \
132112125Ssam    _lt_tf _le_tf _unord_tf _si_to_tf _tf_to_si _negate_tf _make_tf \
133112125Ssam    _tf_to_df _tf_to_sf _thenan_tf _tf_to_usi _usi_to_tf
134112125Ssam
135112125Ssam# These might cause a divide overflow trap and so are compiled with
136112125Ssam# unwinder info.
137112125SsamLIB2_DIVMOD_FUNCS = _divdi3 _moddi3 _udivdi3 _umoddi3 _udiv_w_sdiv _udivmoddi4
138112125Ssam
139112125Ssam#-----------------------------------------------------------------------
140112125Ssam#
141112125Ssam#	Platform specific bits.
142112125Ssam#	When upgrading GCC, get the following definitions from config/<cpu>/t-*
143112125Ssam#
144112125Ssam.if ${TARGET_CPUARCH} == "arm"
145112125Ssam#	from config/arm/t-strongarm-elf
146112125SsamCFLAGS+=	-Dinhibit_libc -fno-inline
147112125SsamCFLAGS.clang+=	-fheinous-gnu-extensions
148116815Ssam
149116815SsamLIB1ASMSRC =	lib1funcs.asm
150116815SsamLIB1ASMFUNCS =  _dvmd_tls _bb_init_func
151116815Ssam# Some compilers generate __aeabi_ functions libgcc_s is missing
152116815SsamLIBADD+=	compiler_rt
153116815Ssam.endif
154116815Ssam
155256381Smarkm.if ${TARGET_CPUARCH} == mips
156116815SsamLIB2FUNCS_EXTRA = floatunsidf.c floatunsisf.c
157116815Ssam# ABIs other than o32 need this
158112125Ssam.if ${TARGET_ARCH} != "mips" && ${TARGET_ARCH} != "mipsel"
159112125SsamLIB2FUNCS_EXTRA+= floatdidf.c fixunsdfsi.c
160112125SsamLIB2FUNCS_EXTRA+= floatdisf.c floatundidf.c
161112125SsamLIB2FUNCS_EXTRA+= fixsfdi.c floatundisf.c
162112125SsamLIB2FUNCS_EXTRA+= fixdfdi.c fixunssfsi.c
163112125Ssam.endif
164112125Ssam.endif
165112125Ssam
166112125Ssam.if ${TARGET_ARCH} == "powerpc"
167112125Ssam#	from config/rs6000/t-ppccomm
168112125SsamLIB2FUNCS_EXTRA = tramp.asm
169112125SsamLIB2FUNCS_STATIC_EXTRA = eabi.asm
170112125Ssam.endif
171112125Ssam
172112125Ssam.if ${TARGET_ARCH} == "powerpc64"
173112125Ssam#	from config/rs6000/t-ppccomm
174112125SsamLIB2FUNCS_EXTRA = tramp.asm
175112125Ssam.endif
176112125Ssam
177112125Ssam.if ${TARGET_CPUARCH} == "sparc64"
178112125Ssam#	from config/sparc/t-elf
179112125SsamLIB1ASMSRC =   lb1spc.asm
180112125SsamLIB1ASMFUNCS = _mulsi3 _divsi3 _modsi3
181112125Ssam.endif
182112125Ssam
183112125Ssam#-----------------------------------------------------------------------
184112125Ssam
185112125Ssam# Remove any objects from LIB2FUNCS and LIB2_DIVMOD_FUNCS that are
186112125Ssam# defined as optimized assembly code in LIB1ASMFUNCS.
187112125Ssam.if defined(LIB1ASMFUNCS)
188112125Ssam.for sym in ${LIB1ASMFUNCS}
189112125SsamLIB2FUNCS:=	${LIB2FUNCS:S/${sym}//g}
190112125SsamLIB2_DIVMOD_FUNCS:= ${LIB2_DIVMOD_FUNCS:S/${sym}//g}
191112125Ssam.endfor
192112125Ssam.endif
193112125Ssam
194112125SsamCOMMONHDRS=	tm.h tconfig.h options.h gthr-default.h
195112125Ssam.if ${MK_LLVM_LIBUNWIND} != "no"
196112125Ssam# unwind.h is a generated file when MK_LLVM_LIBUNWIND == "no", and a stale
197112125Ssam# copy may be left behind in OBJDIR when switching, so remove it explicitly.
198112125Ssambeforebuild:
199112125Ssam	@rm -f ${.OBJDIR}/unwind.h
200112125Ssam.else
201112125SsamCOMMONHDRS+=	unwind.h
202112125Ssam.endif
203112125Ssam
204112125Ssam#-----------------------------------------------------------------------
205112125Ssam#
206112125Ssam# Helpful shortcuts for compiler invocations.
207112125Ssam#
208112125SsamHIDE =  -fvisibility=hidden -DHIDE_EXPORTS
209112125SsamCC_T =	${CC} -c ${CFLAGS} ${HIDE} -fPIC
210112125SsamCC_P =	${CC} -c ${CFLAGS} ${HIDE} -p -fPIC
211112125SsamCC_S =	${CC} -c ${CFLAGS} ${PICFLAG} -DSHARED
212112125Ssam
213112125Ssam#-----------------------------------------------------------------------
214112125Ssam#
215112125Ssam# Functions from libgcc2.c
216112125Ssam#
217112125SsamSTD_CFLAGS =
218112125SsamDIV_CFLAGS =	-fexceptions -fnon-call-exceptions
219112125Ssam
220112125SsamSTD_FUNCS =	${LIB2FUNCS}
221112125SsamDIV_FUNCS =	${LIB2_DIVMOD_FUNCS}
222112125Ssam
223112125SsamSTD_CFILE =	libgcc2.c
224112125SsamDIV_CFILE =	libgcc2.c
225112125Ssam
226112125SsamOBJ_GRPS =	STD DIV
227112125Ssam
228112125Ssam#-----------------------------------------------------------------------
229112125Ssam#
230112125Ssam# Floating point emulation functions
231112125Ssam#
232112125Ssam.if ${TARGET_CPUARCH} == "armNOT_YET" || \
233112125Ssam    ${TARGET_CPUARCH} == "powerpc" || ${TARGET_CPUARCH} == "sparc64"
234112125Ssam
235112125SsamFPBIT_CFLAGS =	-DFINE_GRAINED_LIBRARIES -DFLOAT
236112125SsamDPBIT_CFLAGS =	-DFINE_GRAINED_LIBRARIES
237112125Ssam
238112125SsamFPBIT_CFILE =	config/fp-bit.c
239112125SsamDPBIT_CFILE =	config/fp-bit.c
240112125Ssam
241112125SsamOBJ_GRPS +=	FPBIT DPBIT
242112125Ssam.endif
243112125Ssam
244112125Ssam#-----------------------------------------------------------------------
245112125Ssam#
246112125Ssam# Generic build rules for object groups defined above
247112125Ssam#
248112125Ssam.for T in ${OBJ_GRPS}
249112125Ssam${T}_OBJS_T =	${${T}_FUNCS:S/$/.o/}
250112125Ssam${T}_OBJS_P =	${${T}_FUNCS:S/$/.po/}
251112125Ssam${T}_OBJS_S =	${${T}_FUNCS:S/$/.So/}
252112125SsamOBJS +=		${${T}_FUNCS:S/$/.o/}
253112125Ssam
254112125Ssam${${T}_OBJS_T}: ${${T}_CFILE} ${COMMONHDRS}
255112125Ssam	${CC_T} ${${T}_CFLAGS} -DL${.PREFIX} -o ${.TARGET} ${.ALLSRC:M*.c}
256112125Ssam${${T}_OBJS_P}: ${${T}_CFILE} ${COMMONHDRS}
257112125Ssam	${CC_P} ${${T}_CFLAGS} -DL${.PREFIX} -o ${.TARGET} ${.ALLSRC:M*.c}
258112125Ssam${${T}_OBJS_S}: ${${T}_CFILE} ${COMMONHDRS}
259112125Ssam	${CC_S} ${${T}_CFLAGS} -DL${.PREFIX} -o ${.TARGET} ${.ALLSRC:M*.c}
260112125Ssam.endfor
261112125Ssam
262112125Ssam#-----------------------------------------------------------------------
263112125Ssam#
264112125Ssam# Extra objects coming from separate files
265112125Ssam#
266112125Ssam.if !empty(LIB2ADD)
267112125SsamOBJS  +=	${LIB2ADD:R:S/$/.o/}
268112125SsamSOBJS +=	${LIB2ADD:R:S/$/.So/}
269112125SsamPOBJS +=	${LIB2ADD:R:S/$/.po/}
270112125Ssam.endif
271112125Ssam
272112125Ssam#-----------------------------------------------------------------------
273112125Ssam#
274112125Ssam# Objects that should be in static library only.
275112125Ssam#
276112125SsamSYMS_ST =	${LIB2FUNCS_ST}	${LIB2ADD_ST}
277112125SsamSTAT_OBJS_T = 	${SYMS_ST:S/$/.o/}
278112125SsamSTAT_OBJS_P = 	${SYMS_ST:S/$/.po/}
279112125SsamSTATICOBJS  =	${SYMS_ST:S/$/.o/}
280112125Ssam
281112125Ssam${STAT_OBJS_T}:	${STD_CFILE} ${COMMONHDRS}
282112125Ssam	${CC_T} -DL${.PREFIX} -o ${.TARGET} ${.ALLSRC:M*.c}
283112125Ssam${STAT_OBJS_P}:	${STD_CFILE} ${COMMONHDRS}
284112125Ssam	${CC_P} -DL${.PREFIX} -o ${.TARGET} ${.ALLSRC:M*.c}
285112125Ssam
286112125Ssam#-----------------------------------------------------------------------
287112125Ssam#
288112125Ssam# Assembler files.
289112125Ssam#
290112125Ssam.if defined(LIB1ASMSRC)
291112125SsamASM_T =		${LIB1ASMFUNCS:S/$/.o/}
292112125SsamASM_P =		${LIB1ASMFUNCS:S/$/.po/}
293112125SsamASM_S =		${LIB1ASMFUNCS:S/$/.So/}
294112125SsamASM_V =		${LIB1ASMFUNCS:S/$/.vis/}
295112125SsamOBJS +=		${LIB1ASMFUNCS:S/$/.o/}
296112125Ssam
297112125Ssam${ASM_T}: ${LIB1ASMSRC} ${.PREFIX}.vis
298112125Ssam	${CC} -x assembler-with-cpp -c ${CFLAGS} -DL${.PREFIX} \
299112125Ssam	    -o ${.TARGET} -include ${.PREFIX}.vis ${.ALLSRC:N*.h:N*.vis}
300112125Ssam${ASM_P}: ${LIB1ASMSRC} ${.PREFIX}.vis
301112125Ssam	${CC} -x assembler-with-cpp -p -c ${CFLAGS} -DL${.PREFIX} \
302112125Ssam	    -o ${.TARGET} -include ${.PREFIX}.vis ${.ALLSRC:N*.h:N*.vis}
303112125Ssam${ASM_S}: ${LIB1ASMSRC}
304112125Ssam	${CC} -x assembler-with-cpp -c ${PICFLAG} ${CFLAGS} -DL${.PREFIX} \
305112125Ssam	    -o ${.TARGET} ${.ALLSRC:N*.h}
306112125Ssam${ASM_V}: ${LIB1ASMSRC}
307112125Ssam	${CC} -x assembler-with-cpp -c ${CFLAGS} -DL${.PREFIX} \
308112125Ssam	    -o ${.PREFIX}.vo ${.ALLSRC:N*.h}
309112125Ssam	( ${NM} -pg ${.PREFIX}.vo | \
310112125Ssam		awk 'NF == 3 && $$2 !~ /^[UN]$$/ { print "\t.hidden ", $$3 }'\
311112125Ssam	) > ${.TARGET}
312112125Ssam
313112125SsamCLEANFILES += ${ASM_V} ${ASM_V:R:S/$/.vo/}
314112125Ssam.endif
315112125Ssam
316112125Ssam#-----------------------------------------------------------------------
317112125Ssam#
318112125Ssam# Exception handling / unwinding support.
319112125Ssam#
320112125SsamEH_OBJS_T = ${LIB2ADDEHSTATIC:R:S/$/.o/}
321112125SsamEH_OBJS_P = ${LIB2ADDEHSTATIC:R:S/$/.po/}
322112125SsamEH_OBJS_S = ${LIB2ADDEHSHARED:R:S/$/.So/}
323112125SsamEH_CFLAGS = -fexceptions -D__GLIBC__=3 -DElfW=__ElfN
324112125SsamSOBJS    += ${EH_OBJS_S}
325112125Ssam
326112125Ssam.for _src in ${LIB2ADDEHSTATIC:M*.c}
327112125Ssam${_src:R:S/$/.o/}: ${_src} ${COMMONHDRS}
328112125Ssam	${CC_T} ${EH_CFLAGS} -o ${.TARGET} ${.IMPSRC}
329112125Ssam${_src:R:S/$/.po/}: ${_src} ${COMMONHDRS}
330112125Ssam	${CC_P} ${EH_CFLAGS} -o ${.TARGET} ${.IMPSRC}
331112125Ssam.endfor
332112125Ssam.for _src in ${LIB2ADDEHSHARED:M*.c}
333112125Ssam${_src:R:S/$/.So/}: ${_src} ${COMMONHDRS}
334112125Ssam	${CC_S} ${EH_CFLAGS} -o ${.TARGET} ${.IMPSRC}
335112125Ssam.endfor
336112125Ssam
337112125Ssam
338112125Ssam#-----------------------------------------------------------------------
339112125Ssam#
340112125Ssam# Generated headers
341112125Ssam#
342112125Ssam${COMMONHDRS}: ${.CURDIR}/../../usr.bin/cc/cc_tools/Makefile
343112125Ssam	(cd ${.CURDIR}; ${MAKE} -f ${.ALLSRC} MFILE=${.ALLSRC} GCCDIR=${GCCDIR} ${.TARGET})
344112125Ssam
345112125SsamCLEANFILES += ${COMMONHDRS}
346112125SsamCLEANFILES += cs-*.h option*
347112125Ssam
348112125Ssam#-----------------------------------------------------------------------
349112125Ssam#
350112125Ssam# Build symbol version map
351112125Ssam#
352112125SsamSHLIB_MKMAP      = ${GCCDIR}/mkmap-symver.awk
353112125SsamSHLIB_MKMAP_OPTS =
354112125SsamSHLIB_MAPFILES   = ${GCCDIR}/libgcc-std.ver
355112125Ssam.if ${TARGET_CPUARCH} == "arm"
356112125SsamSHLIB_MAPFILES  += ${GCCDIR}/config/arm/libgcc-bpabi.ver
357112125Ssam.endif
358112125SsamVERSION_MAP      = libgcc.map
359112125Ssam
360112125Ssamlibgcc.map: ${SHLIB_MKMAP} ${SHLIB_MAPFILES} ${SOBJS} ${OBJS:R:S/$/.So/}
361112125Ssam	(  ${NM} -pg ${SOBJS};echo %% ; \
362112125Ssam	  cat ${SHLIB_MAPFILES} \
363249582Sgabor	    | sed -e '/^[   ]*#/d' \
364112125Ssam	          -e 's/^%\(if\|else\|elif\|endif\|define\)/#\1/' \
365112125Ssam	    | ${CC} ${CFLAGS} -E -xassembler-with-cpp -; \
366112125Ssam	) | awk -f ${SHLIB_MKMAP} ${SHLIB_MKMAP_OPTS} > ${.TARGET}
367112125Ssam
368112125SsamCLEANFILES +=	libgcc.map
369112125Ssam
370112125Ssam#-----------------------------------------------------------------------
371112125Ssam#
372112125Ssam# Build additional static libgcc_eh[_p].a libraries.
373112125Ssam#
374112125Ssamlibgcc_eh.a:	${EH_OBJS_T}
375112125Ssam	@${ECHO} building static gcc_eh library
376112125Ssam	@rm -f ${.TARGET}
377112125Ssam	@${AR} ${ARFLAGS} ${.TARGET} `lorder ${EH_OBJS_T} | tsort -q`
378112125Ssam	${RANLIB} ${RANLIBFLAGS} ${.TARGET}
379112125Ssam
380112125Ssam_LIBS+= libgcc_eh.a
381112125Ssam
382112125Ssam.if ${MK_PROFILE} != "no"
383112125Ssamlibgcc_eh_p.a:	${EH_OBJS_P}
384112125Ssam	@${ECHO} building profiled gcc_eh library
385112125Ssam	@rm -f ${.TARGET}
386112125Ssam	@${AR} ${ARFLAGS} ${.TARGET} `lorder ${EH_OBJS_P} | tsort -q`
387112125Ssam	${RANLIB} ${RANLIBFLAGS} ${.TARGET}
388112125Ssam
389112125Ssam_LIBS+= libgcc_eh_p.a
390112125Ssam.endif
391112125Ssam
392112125Ssam_libinstall: _lib-eh-install
393112125Ssam
394112125Ssam_lib-eh-install:
395112125Ssam.if ${MK_INSTALLLIB} != "no"
396112125Ssam	${INSTALL} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
397112125Ssam		${_INSTALLFLAGS} libgcc_eh.a ${DESTDIR}${LIBDIR}
398112125Ssam.endif
399112125Ssam.if ${MK_PROFILE} != "no"
400112125Ssam	${INSTALL} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
401112125Ssam		${_INSTALLFLAGS} libgcc_eh_p.a ${DESTDIR}${LIBDIR}
402112125Ssam.endif
403112125Ssam
404112125SsamCLEANFILES+=	libgcc_eh.a libgcc_eh_p.a ${EH_OBJS_T} ${EH_OBJS_P}
405241394Skevlo
406112125Ssam.include <bsd.lib.mk>
407112125Ssam
408112125Ssam.SUFFIXES: .vis .vo
409