NetBSD/gnu/lib/libgcc3/Makefile.inc
skrll b263dbdd73 Be more gcc like in the way we deal with libgcc so that sh3/hppa millicode
and exception handling have a chance of working properly.

        - creates libgcc, libgcc_eh and libgcc_s

        - updates LIBGCC_SPEC to use them appropriately.

          There's a hack in here at the moment with respect to libgcc_so in that it
          is preferable to link against libgcc_so will only when -shared-libgcc is
          specified (the c++ frontend does this automatically.) Configurations where
          LINK_EH_SPEC is defined already do this. The gcc configuration for
          NetBSD/alpha and another NetBSD platform (I forget which) actually define
          LINK_EH_SPEC probably by accident rather than design.

        - updates share/mk to use the compiler's knowledge of what needs linking into
          libraries and executables. This removes an hppa hack.

        - updates the sets for the newly created libgcc* files.

	- support for linking against the _pg version of libgcc has been removed.
2004-02-15 19:52:27 +00:00

91 lines
2.7 KiB
Makefile

# $NetBSD: Makefile.inc,v 1.1 2004/02/15 19:52:27 skrll Exp $
.if exists(${.CURDIR}/arch/${MACHINE_ARCH}.mk) && ${MKGCC} != "no"
.include "${.CURDIR}/arch/${MACHINE_ARCH}.mk"
.endif
DIST= ${NETBSDSRCDIR}/gnu/dist/gcc
GNUHOSTDIST= ${DIST}
GCCARCH= ${NETBSDSRCDIR}/gnu/usr.bin/gcc3/arch/${MACHINE_ARCH}
GCCARCHXX= ${NETBSDSRCDIR}/gnu/lib/libstdc++-v3/arch/${MACHINE_ARCH}
GCPPFLAGS= ${G_LIBGCC2_CFLAGS} ${G_USE_COLLECT2} ${G_INCLUDES}
CPPFLAGS+= -I${.CURDIR}
CPPFLAGS+= -I${GCCARCH} ${GCPPFLAGS:M-D*} ${GCPPFLAGS:M-I*:N-I.*}
CPPFLAGS+= -I${G_EXTRA_HEADERS:H:u}
CPPFLAGS+= -I${DIST}/gcc/cp -I${GCCARCHXX} -I.
LIB2FUNCS= ${G_LIB2FUNCS_1:=.c} ${G_LIB2FUNCS_2:=.c} ${G_LIB2FUNCS_ST:=.c}
LIB2DIVMOD= ${G_LIB2_DIVMOD_FUNCS:=.c}
LIB2_EH= ${G_LIB2ADDEH:M*.c:T}
.if !empty(G_LIB1ASMFUNCS)
LIB1ASMFUNCS= ${G_LIB1ASMFUNCS:=.S}
.endif
DPSRCS+= ${.CURDIR}/../arch/${MACHINE_ARCH}.mk tconfig.h
CLEANFILES+= ${LIB2FUNCS} ${LIB2DIVMOD} cs-tconfig.h tconfig.h
# XXX
.if ${MACHINE_ARCH} == "m68000"
CPICFLAGS:=
COMPILE.S= ${CC} ${AFLAGS} ${CPPFLAGS} -c
_TRADITIONAL_CPP=
fpgnulib.c: ${DIST}/gcc/config/m68k/fpgnulib.c
cp ${DIST}/gcc/config/m68k/fpgnulib.c fpgnulib.c
xfgnulib.c: ${DIST}/gcc/config/m68k/fpgnulib.c
echo '#define EXTFLOAT' > xfgnulib.c
cat ${DIST}/gcc/config/m68k/fpgnulib.c >> xfgnulib.c
CLEANFILES+= fpgnulib.c xfgnulib.c
.endif
.if ${MACHINE_ARCH} == "powerpc" || \
${MACHINE_ARCH} == "sh3el" || \
${MACHINE_ARCH} == "sh3eb"
_TRADITIONAL_CPP=
COMPILE.S= ${CC} ${AFLAGS} ${CPPFLAGS} -c
.endif
${LIB2FUNCS}: ${.CURDIR}/Makefile
${_MKTARGET_CREATE}
printf '#define L${.PREFIX}\n#include <libgcc2.c>\n' >${.TARGET}
${LIB2DIVMOD}: ${.CURDIR}/Makefile
${_MKTARGET_CREATE}
printf '#define L${.PREFIX}\n#include <libgcc2.c>\n' >${.TARGET}
.if !empty(LIB1ASMFUNCS)
${LIB1ASMFUNCS}: ${.CURDIR}/Makefile
${_MKTARGET_CREATE}
printf '#define L${.PREFIX}\n#include <${G_LIB1ASMSRC}>\n' >${.TARGET}
.endif
${G_LIB2ADD:M${GNUHOSTDIST}/*:T:S/.asm/.S/}: ${.CURDIR}/Makefile ${G_LIB2ADD}
@echo copying ${G_LIB2ADD}
for i in ${G_LIB2ADD}; do \
j=$${i##*/}; \
j=`echo $$j | sed 's/\.asm$$/\.S/'`; \
cp $$i $$j; \
done
@echo copying ${G_LIB2ADD} complete
${LIB2_EH:.c=.o}:
${_MKTARGET_COMPILE}
${COMPILE.c} ${CPICFLAGS} -fexceptions -o ${.TARGET} ${.IMPSRC}
${G_LIB2_DIVMOD_FUNCS:=.o}:
${_MKTARGET_COMPILE}
${COMPILE.c} ${CPICFLAGS} -fexceptions -fnon-call-exceptions -o ${.TARGET} ${.IMPSRC}
dp-bit.c: ${.CURDIR}/Makefile
${_MKTARGET_CREATE}
printf '#define FLOAT\n#include <fp-bit.c>\n' >${.TARGET}
.PATH: ${DIST}/gcc ${DIST}/gcc/cp ${DIST}/gcc/cp/inc ${DIST}/gcc/config \
${G_CONFIGDIR}
tconfig.h:
${_MKTARGET_CREATE}
TM_DEFINES="$(G_tm_defines)" \
HEADERS="$(G_xm_file)" XM_DEFINES="$(G_xm_defines)" \
TARGET_CPU_DEFAULT="" \
${HOST_SH} $(GNUHOSTDIST)/gcc/mkconfig.sh tconfig.h