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