Home | History | Annotate | Line # | Download | only in libgcc
Makefile.inc revision 1.41
      1  1.41       mrg #	$NetBSD: Makefile.inc,v 1.41 2019/04/03 02:13:56 mrg Exp $
      2  1.23       mrg 
      3  1.23       mrg LIBGCC_MACHINE_ARCH?=${MACHINE_ARCH:S/earmv5/earm/}
      4   1.1       mrg 
      5   1.1       mrg .if ${MKGCC} != "no"
      6  1.23       mrg .if exists(${.CURDIR}/../arch/${LIBGCC_MACHINE_ARCH}/defs.mk)
      7  1.23       mrg .include "${.CURDIR}/../arch/${LIBGCC_MACHINE_ARCH}/defs.mk"
      8   1.1       mrg .endif
      9   1.1       mrg .endif
     10   1.1       mrg 
     11   1.1       mrg UNSUPPORTED_COMPILER.clang=	# defined
     12   1.1       mrg 
     13  1.28       mrg DIST=		${GCCDIST}
     14   1.1       mrg GNUHOSTDIST=	${DIST}
     15  1.28       mrg GCCARCH=	${GCC_SUBDIR}/usr.bin/gcc/arch/${LIBGCC_MACHINE_ARCH}
     16  1.28       mrg GCCARCHLIBGCC=	${GCC_SUBDIR}/lib/libgcc/arch/${LIBGCC_MACHINE_ARCH}
     17  1.28       mrg GCCARCHXX=	${GCC_SUBDIR}/lib/libstdc++-v3/arch/${LIBGCC_MACHINE_ARCH}
     18   1.1       mrg 
     19   1.1       mrg GCPPFLAGS=	${G_LIBGCC2_CFLAGS} ${G_USE_COLLECT2} ${G_INCLUDES}
     20   1.1       mrg CPPFLAGS+=	-I${.CURDIR} -I${GCCARCHLIBGCC}
     21   1.1       mrg CPPFLAGS+=	-I${GCCARCH} ${GCPPFLAGS:M-D*} ${GCPPFLAGS:M-I*:N-I.*}
     22  1.12       mrg CPPFLAGS+=	${GCPPFLAGS:M-m*} ${GCPPFLAGS:M-f*}
     23   1.3       mrg CPPFLAGS+=	${G_EXTRA_HEADERS:M/*:H:u:S/^/-I/g}
     24  1.23       mrg CPPFLAGS+=	-I${DIST}/libgcc -I${DIST}/libgcc/config
     25  1.35  christos .if ${LIBGCC_MACHINE_ARCH} == "x86_64"
     26  1.34  christos CPPFLAGS+=	-I${DIST}/libgcc/config/i386
     27  1.34  christos .else
     28  1.34  christos CPPFLAGS+=	-I${DIST}/libgcc/config/${LIBGCC_MACHINE_ARCH}
     29  1.34  christos .endif
     30  1.23       mrg CPPFLAGS+=	-I${DIST}/gcc -I${DIST}/include -I.
     31  1.37       mrg CPPFLAGS+=	${G_INTERNAL_CFLAGS:M-DHAVE_CC_TLS}
     32   1.1       mrg 
     33  1.19      matt .if ${LIBGCC_MACHINE_ARCH} == "powerpc" || \
     34  1.19      matt     ${LIBGCC_MACHINE_ARCH} == "sh3el" || \
     35  1.19      matt     ${LIBGCC_MACHINE_ARCH} == "sh3eb" || \
     36  1.19      matt     ${LIBGCC_MACHINE_ARCH} == "m68000"
     37   1.1       mrg _TRADITIONAL_CPP=
     38   1.1       mrg COMPILE.S=	${CC} ${AFLAGS} ${CPPFLAGS} -c
     39   1.1       mrg .endif
     40   1.1       mrg 
     41  1.23       mrg .if ${LIBGCC_MACHINE_ARCH} == "powerpc"
     42  1.23       mrg CPPFLAGS+=	-I${DIST}/gcc/config/rs6000
     43  1.23       mrg .endif
     44  1.23       mrg 
     45   1.1       mrg #
     46   1.1       mrg # Old style libgcc build procedure.
     47   1.1       mrg #
     48   1.1       mrg 
     49  1.26    martin # This is copied from dist/libgcc/Makefile.in:$lib2funcs
     50   1.5       mrg LIB2FUNCS_ALL= \
     51   1.5       mrg 	_muldi3 _negdi2 _lshrdi3 _ashldi3 _ashrdi3 _cmpdi2 _ucmpdi2    \
     52  1.23       mrg 	_clear_cache _trampoline __main \
     53  1.23       mrg 	_absvsi2 _absvdi2 _addvsi3 _addvdi3 \
     54  1.23       mrg 	_subvsi3 _subvdi3 _mulvsi3 _mulvdi3 \
     55  1.23       mrg 	_negvsi2 _negvdi2 \
     56  1.23       mrg 	_ctors \
     57  1.23       mrg 	_ffssi2 _ffsdi2 _clz _clzsi2 _clzdi2  _ctzsi2 _ctzdi2 \
     58  1.23       mrg 	_popcount_tab _popcountsi2 _popcountdi2 _paritysi2 _paritydi2 \
     59  1.23       mrg 	_powisf2 _powidf2 _powixf2 _powitf2 \
     60  1.23       mrg 	_mulsc3 _muldc3 _mulxc3 _multc3 _divsc3 _divdc3 _divxc3 _divtc3 \
     61  1.26    martin 	_bswapsi2 _bswapdi2 _clrsbsi2 _clrsbdi2
     62   1.5       mrg 
     63  1.21      matt .if ${LIBGCC_MACHINE_ARCH} != "coldfire" && empty(LIBGCC_MACHINE_ARCH:Mearm*)
     64  1.21      matt 
     65  1.21      matt LIB2FUNCS_ALL+= \
     66  1.21      matt 	_muldi3 _negdi2 _lshrdi3 _ashldi3 _ashrdi3
     67  1.21      matt 
     68  1.21      matt .endif
     69  1.21      matt 
     70  1.33       mrg .if ${LIBGCC_MACHINE_ARCH} != "coldfire" && \
     71  1.33       mrg     empty(LIBGCC_MACHINE_ARCH:Mearm*) && \
     72  1.36  christos     empty(LIBGCC_MACHINE_ARCH:Maarch64*) && \
     73  1.33       mrg     empty(LIBGCC_MACHINE_ARCH:Mmips64*)
     74  1.20      matt 
     75  1.39       mrg EXTRA_FUNC_SIZES=	sf df xf
     76  1.39       mrg 
     77  1.40       mrg .if ${LIBGCC_MACHINE_ARCH} != "x86_64" && \
     78  1.40       mrg     ${LIBGCC_MACHINE_ARCH} != "i386" && \
     79  1.41       mrg     ${LIBGCC_MACHINE_ARCH} != "ia64"
     80  1.39       mrg EXTRA_FUNC_SIZES+=	tf
     81  1.39       mrg .endif
     82  1.39       mrg 
     83   1.5       mrg # non swfloat versions
     84   1.5       mrg .for _p in _fix _fixuns
     85  1.39       mrg . for _m in ${EXTRA_FUNC_SIZES}
     86   1.7       mrg LIB2FUNCS_ALL+=	${_p}${_m}di
     87   1.5       mrg . endfor
     88   1.5       mrg .endfor
     89   1.7       mrg 
     90   1.5       mrg .for _p in _float _floatun
     91  1.39       mrg . for _m in ${EXTRA_FUNC_SIZES}
     92   1.7       mrg LIB2FUNCS_ALL+=	${_p}di${_m}
     93   1.5       mrg . endfor
     94   1.5       mrg .endfor
     95   1.1       mrg 
     96   1.5       mrg .for _m in sf df xf
     97   1.7       mrg LIB2FUNCS_ALL+=	_fixuns${_m}si
     98   1.5       mrg .endfor
     99  1.20      matt .endif
    100   1.1       mrg 
    101   1.1       mrg LIB2FUNCS_SHORT:=${LIB2FUNCS_ALL}
    102   1.1       mrg LIB2_DIVMOD_FUNCS:=${G_LIB2_DIVMOD_FUNCS}
    103   1.1       mrg .for f in ${G_LIB1ASMFUNCS}; do
    104   1.1       mrg LIB2FUNCS_SHORT:=${LIB2FUNCS_SHORT:N${f}}
    105   1.1       mrg LIB2_DIVMOD_FUNCS:=${LIB2_DIVMOD_FUNCS:N${f}}
    106   1.1       mrg .endfor
    107   1.1       mrg 
    108   1.1       mrg LIB2FUNCS=	${LIB2FUNCS_SHORT:=.c}
    109   1.1       mrg LIB2FUNCS_ST=	${G_LIB2FUNCS_ST:=.c}
    110   1.1       mrg LIB2DIVMOD=	${LIB2_DIVMOD_FUNCS:=.c}
    111  1.25     joerg .if ${HAVE_LIBGCC_EH} == "no"
    112  1.27     joerg LIB2_EH=	${G_LIB2ADDEH:M*.c:T:Nunwind-dw2.c:Nunwind-dw2-fde-dip.c:Nunwind-sjlj.c:Nunwind-c.c:Nunwind-arm.c:Npr-support.c}
    113  1.27     joerg LIB2_EHASM=	${G_LIB2ADDEH:M*.S:T:Nlibunwind.S}
    114  1.25     joerg .else
    115   1.1       mrg LIB2_EH=	${G_LIB2ADDEH:M*.c:T}
    116  1.27     joerg LIB2_EHASM=	${G_LIB2ADDEH:M*.S:T}
    117  1.25     joerg .endif
    118  1.24       mrg 
    119  1.24       mrg # We have to weed out any existing func.S file that may exist
    120  1.24       mrg # from the list of files we create.
    121   1.1       mrg .if !empty(G_LIB1ASMFUNCS)
    122  1.24       mrg . for f in ${G_LIB1ASMFUNCS:=.S}
    123  1.32       mrg .  if !exists(${DIST}/libgcc/config/${MACHINE_CPU}/${f})
    124  1.24       mrg LIB1ASMFUNCS+=	${f}
    125  1.24       mrg .  endif
    126  1.24       mrg . endfor
    127   1.1       mrg .endif
    128   1.1       mrg 
    129  1.23       mrg .if exists(${.CURDIR}/../arch/${LIBGCC_MACHINE_ARCH}/defs.mk)
    130  1.23       mrg DPSRCS+=	${.CURDIR}/../arch/${LIBGCC_MACHINE_ARCH}/defs.mk
    131  1.23       mrg .endif
    132   1.1       mrg CLEANFILES+=	${LIB2FUNCS} ${LIB2FUNCS_ST} ${LIB2DIVMOD} cs-tconfig.h
    133   1.1       mrg .if !empty(G_LIB1ASMFUNCS)
    134   1.1       mrg CLEANFILES+=	${LIB1ASMFUNCS}
    135   1.1       mrg .endif
    136   1.1       mrg 
    137   1.6       mrg .for file in ${G_LIB2ADD:M${GNUHOSTDIST}*:N*.c}
    138   1.1       mrg BUILDSYMLINKS+=	${file} ${file:T:S/.asm$/.S/}
    139   1.1       mrg .endfor
    140   1.1       mrg 
    141   1.1       mrg # XXX
    142  1.23       mrg .if (${LIBGCC_MACHINE_ARCH} == "m68000" || ${LIBGCC_MACHINE_ARCH} == "m68k" || \
    143  1.23       mrg      ${LIBGCC_MACHINE_ARCH} == "coldfire")
    144   1.1       mrg CPICFLAGS:=
    145  1.23       mrg BUILDSYMLINKS+=	${DIST}/libgcc/config/m68k/fpgnulib.c fpgnulib.c
    146  1.23       mrg BUILDSYMLINKS+=	${DIST}/libgcc/config/m68k/fpgnulib.c xfgnulib.c
    147  1.23       mrg CPPFLAGS.xfgnulib.c+=	-DEXTFLOAT=1
    148   1.1       mrg .endif
    149   1.1       mrg 
    150  1.19      matt .if ${LIBGCC_MACHINE_ARCH} == "powerpc64"
    151   1.1       mrg COPTS+=	-mlong-double-128
    152   1.1       mrg .endif
    153   1.1       mrg 
    154   1.1       mrg ${LIB2FUNCS} ${LIB2FUNCS_ST}: ${.CURDIR}/Makefile
    155   1.1       mrg 	${_MKTARGET_CREATE}
    156   1.1       mrg 	printf '#define L${.PREFIX}\n#include <libgcc2.c>\n' >${.TARGET}
    157   1.1       mrg 
    158   1.1       mrg ${LIB2DIVMOD}: ${.CURDIR}/Makefile
    159   1.1       mrg 	${_MKTARGET_CREATE}
    160   1.1       mrg 	printf '#define L${.PREFIX}\n#include <libgcc2.c>\n' >${.TARGET}
    161   1.1       mrg 
    162   1.1       mrg .if !empty(G_LIB1ASMFUNCS)
    163   1.1       mrg ${LIB1ASMFUNCS}: ${.CURDIR}/Makefile
    164   1.1       mrg 	${_MKTARGET_CREATE}
    165   1.1       mrg 	printf '#define L${.PREFIX}\n#include <${G_LIB1ASMSRC}>\n' >${.TARGET}
    166   1.1       mrg .endif
    167   1.1       mrg 
    168  1.29  christos # Use dynamic sources to arrange for the C file to be the first dependency
    169  1.29  christos # so ${.IMPSRC} will work.
    170  1.29  christos 
    171  1.29  christos ${LIB2_EH:.c=.o}: $(.PREFIX).c
    172   1.1       mrg 	${_MKTARGET_COMPILE}
    173   1.1       mrg 	${COMPILE.c} -fexceptions ${COPTS.${.IMPSRC:T}} -o ${.TARGET} ${.IMPSRC}
    174   1.1       mrg 
    175  1.29  christos ${LIB2_EH:.c=.pico}: $(.PREFIX).c
    176   1.1       mrg 	${_MKTARGET_COMPILE}
    177   1.1       mrg 	${COMPILE.c} ${CPICFLAGS} -fexceptions ${COPTS.${.IMPSRC:T}} -o ${.TARGET} ${.IMPSRC}
    178   1.1       mrg 
    179  1.29  christos ${G_LIB2_DIVMOD_FUNCS:=.o}: $(.PREFIX).c
    180   1.1       mrg 	${_MKTARGET_COMPILE}
    181   1.1       mrg 	${COMPILE.c} -fexceptions -fnon-call-exceptions ${COPTS.${.IMPSRC:T}} -o ${.TARGET} ${.IMPSRC}
    182   1.1       mrg 
    183  1.29  christos ${G_LIB2_DIVMOD_FUNCS:=.pico}: $(.PREFIX).c
    184   1.1       mrg 	${_MKTARGET_COMPILE}
    185   1.1       mrg 	${COMPILE.c} ${CPICFLAGS} -fexceptions -fnon-call-exceptions ${COPTS.${.IMPSRC:T}} -o ${.TARGET} ${.IMPSRC}
    186   1.1       mrg 
    187   1.1       mrg dp-bit.c: ${.CURDIR}/Makefile
    188   1.1       mrg 	${_MKTARGET_CREATE}
    189   1.1       mrg 	printf '#define FLOAT\n#include <fp-bit.c>\n' >${.TARGET}
    190   1.1       mrg 
    191   1.1       mrg #
    192   1.1       mrg # Common rules.
    193   1.1       mrg #
    194   1.1       mrg 
    195   1.1       mrg .PATH: ${DIST}/gcc ${DIST}/gcc/cp ${DIST}/gcc/cp/inc ${DIST}/gcc/config \
    196  1.32       mrg 	${DIST}/libgcc/config ${DIST}/libgcc/config/${MACHINE_CPU} \
    197  1.23       mrg 	${G_LIB2ADD:H:O:u} ${G_LIB2ADDEH:H:O:u} ${GCCARCHLIBGCC}
    198   1.1       mrg 
    199   1.4       mrg .include "../Makefile.tconfigh"
    200   1.1       mrg DPSRCS+=	tconfig.h
    201   1.1       mrg 
    202  1.38       mrg .include "../Makefile.gthr"
    203   1.1       mrg 
    204  1.23       mrg EXTRA_FAKEHEADERS=	options.h libgcc_tm.h
    205  1.23       mrg .include "../../Makefile.hacks"
    206  1.31       mrg 
    207  1.31       mrg # XXX insn-modes.h
    208  1.31       mrg BINBACKENDOBJ!=	cd ${.CURDIR}/../../../usr.bin/backend && ${PRINTOBJDIR}
    209  1.31       mrg CPPFLAGS+=	-I${BINBACKENDOBJ}
    210