1 1.26 martin # $NetBSD: Makefile.inc,v 1.26 2014/05/03 16:43:10 martin 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.23 mrg DIST= ${NETBSDSRCDIR}/external/gpl3/gcc/dist 14 1.1 mrg GNUHOSTDIST= ${DIST} 15 1.23 mrg GCCARCH= ${NETBSDSRCDIR}/external/gpl3/gcc/usr.bin/gcc/arch/${LIBGCC_MACHINE_ARCH} 16 1.23 mrg GCCARCHLIBGCC= ${NETBSDSRCDIR}/external/gpl3/gcc/lib/libgcc/arch/${LIBGCC_MACHINE_ARCH} 17 1.23 mrg GCCARCHXX= ${NETBSDSRCDIR}/external/gpl3/gcc/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.23 mrg CPPFLAGS+= -I${DIST}/gcc -I${DIST}/include -I. 26 1.1 mrg 27 1.19 matt .if ${LIBGCC_MACHINE_ARCH} == "powerpc" || \ 28 1.19 matt ${LIBGCC_MACHINE_ARCH} == "sh3el" || \ 29 1.19 matt ${LIBGCC_MACHINE_ARCH} == "sh3eb" || \ 30 1.19 matt ${LIBGCC_MACHINE_ARCH} == "m68000" 31 1.1 mrg _TRADITIONAL_CPP= 32 1.1 mrg COMPILE.S= ${CC} ${AFLAGS} ${CPPFLAGS} -c 33 1.1 mrg .endif 34 1.1 mrg 35 1.23 mrg .if ${LIBGCC_MACHINE_ARCH} == "powerpc" 36 1.23 mrg CPPFLAGS+= -I${DIST}/gcc/config/rs6000 37 1.23 mrg .endif 38 1.23 mrg 39 1.1 mrg # 40 1.1 mrg # Old style libgcc build procedure. 41 1.1 mrg # 42 1.1 mrg 43 1.26 martin # This is copied from dist/libgcc/Makefile.in:$lib2funcs 44 1.5 mrg LIB2FUNCS_ALL= \ 45 1.5 mrg _muldi3 _negdi2 _lshrdi3 _ashldi3 _ashrdi3 _cmpdi2 _ucmpdi2 \ 46 1.23 mrg _clear_cache _trampoline __main \ 47 1.23 mrg _absvsi2 _absvdi2 _addvsi3 _addvdi3 \ 48 1.23 mrg _subvsi3 _subvdi3 _mulvsi3 _mulvdi3 \ 49 1.23 mrg _negvsi2 _negvdi2 \ 50 1.23 mrg _ctors \ 51 1.23 mrg _ffssi2 _ffsdi2 _clz _clzsi2 _clzdi2 _ctzsi2 _ctzdi2 \ 52 1.23 mrg _popcount_tab _popcountsi2 _popcountdi2 _paritysi2 _paritydi2 \ 53 1.23 mrg _powisf2 _powidf2 _powixf2 _powitf2 \ 54 1.23 mrg _mulsc3 _muldc3 _mulxc3 _multc3 _divsc3 _divdc3 _divxc3 _divtc3 \ 55 1.26 martin _bswapsi2 _bswapdi2 _clrsbsi2 _clrsbdi2 56 1.5 mrg 57 1.21 matt .if ${LIBGCC_MACHINE_ARCH} != "coldfire" && empty(LIBGCC_MACHINE_ARCH:Mearm*) 58 1.21 matt 59 1.21 matt LIB2FUNCS_ALL+= \ 60 1.21 matt _muldi3 _negdi2 _lshrdi3 _ashldi3 _ashrdi3 61 1.21 matt 62 1.21 matt .endif 63 1.21 matt 64 1.21 matt .if ${LIBGCC_MACHINE_ARCH} != "coldfire" && empty(LIBGCC_MACHINE_ARCH:Mearm*) 65 1.20 matt 66 1.5 mrg # non swfloat versions 67 1.5 mrg .for _p in _fix _fixuns 68 1.7 mrg . for _m in sf df xf tf 69 1.7 mrg LIB2FUNCS_ALL+= ${_p}${_m}di 70 1.5 mrg . endfor 71 1.5 mrg .endfor 72 1.7 mrg 73 1.5 mrg .for _p in _float _floatun 74 1.7 mrg . for _m in sf df xf tf 75 1.7 mrg LIB2FUNCS_ALL+= ${_p}di${_m} 76 1.5 mrg . endfor 77 1.5 mrg .endfor 78 1.1 mrg 79 1.5 mrg .for _m in sf df xf 80 1.7 mrg LIB2FUNCS_ALL+= _fixuns${_m}si 81 1.5 mrg .endfor 82 1.20 matt .endif 83 1.1 mrg 84 1.1 mrg LIB2FUNCS_SHORT:=${LIB2FUNCS_ALL} 85 1.1 mrg LIB2_DIVMOD_FUNCS:=${G_LIB2_DIVMOD_FUNCS} 86 1.1 mrg .for f in ${G_LIB1ASMFUNCS}; do 87 1.1 mrg LIB2FUNCS_SHORT:=${LIB2FUNCS_SHORT:N${f}} 88 1.1 mrg LIB2_DIVMOD_FUNCS:=${LIB2_DIVMOD_FUNCS:N${f}} 89 1.1 mrg .endfor 90 1.1 mrg 91 1.1 mrg LIB2FUNCS= ${LIB2FUNCS_SHORT:=.c} 92 1.1 mrg LIB2FUNCS_ST= ${G_LIB2FUNCS_ST:=.c} 93 1.1 mrg LIB2DIVMOD= ${LIB2_DIVMOD_FUNCS:=.c} 94 1.25 joerg .if ${HAVE_LIBGCC_EH} == "no" 95 1.25 joerg LIB2_EH= ${G_LIB2ADDEH:M*.c:T:Nunwind-dw2.c:Nunwind-dw2-fde-dip.c:Nunwind-sjlj.c:Nunwind-c.c} 96 1.25 joerg .else 97 1.1 mrg LIB2_EH= ${G_LIB2ADDEH:M*.c:T} 98 1.25 joerg .endif 99 1.14 matt LIB2_EHASM= ${G_LIB2ADDEH:M*.S:T} 100 1.24 mrg 101 1.24 mrg # We have to weed out any existing func.S file that may exist 102 1.24 mrg # from the list of files we create. 103 1.1 mrg .if !empty(G_LIB1ASMFUNCS) 104 1.24 mrg . for f in ${G_LIB1ASMFUNCS:=.S} 105 1.24 mrg . if !exists(${DIST}/libgcc/config/${MACHINE_GNU_ARCH}/${f}) 106 1.24 mrg LIB1ASMFUNCS+= ${f} 107 1.24 mrg . endif 108 1.24 mrg . endfor 109 1.1 mrg .endif 110 1.1 mrg 111 1.23 mrg .if exists(${.CURDIR}/../arch/${LIBGCC_MACHINE_ARCH}/defs.mk) 112 1.23 mrg DPSRCS+= ${.CURDIR}/../arch/${LIBGCC_MACHINE_ARCH}/defs.mk 113 1.23 mrg .endif 114 1.1 mrg CLEANFILES+= ${LIB2FUNCS} ${LIB2FUNCS_ST} ${LIB2DIVMOD} cs-tconfig.h 115 1.1 mrg .if !empty(G_LIB1ASMFUNCS) 116 1.1 mrg CLEANFILES+= ${LIB1ASMFUNCS} 117 1.1 mrg .endif 118 1.1 mrg 119 1.6 mrg .for file in ${G_LIB2ADD:M${GNUHOSTDIST}*:N*.c} 120 1.1 mrg BUILDSYMLINKS+= ${file} ${file:T:S/.asm$/.S/} 121 1.1 mrg .endfor 122 1.1 mrg 123 1.1 mrg # XXX 124 1.23 mrg .if (${LIBGCC_MACHINE_ARCH} == "m68000" || ${LIBGCC_MACHINE_ARCH} == "m68k" || \ 125 1.23 mrg ${LIBGCC_MACHINE_ARCH} == "coldfire") 126 1.1 mrg CPICFLAGS:= 127 1.23 mrg BUILDSYMLINKS+= ${DIST}/libgcc/config/m68k/fpgnulib.c fpgnulib.c 128 1.23 mrg BUILDSYMLINKS+= ${DIST}/libgcc/config/m68k/fpgnulib.c xfgnulib.c 129 1.23 mrg CPPFLAGS.xfgnulib.c+= -DEXTFLOAT=1 130 1.1 mrg .endif 131 1.1 mrg 132 1.19 matt .if ${LIBGCC_MACHINE_ARCH} == "powerpc64" 133 1.1 mrg COPTS+= -mlong-double-128 134 1.1 mrg .endif 135 1.1 mrg 136 1.1 mrg ${LIB2FUNCS} ${LIB2FUNCS_ST}: ${.CURDIR}/Makefile 137 1.1 mrg ${_MKTARGET_CREATE} 138 1.1 mrg printf '#define L${.PREFIX}\n#include <libgcc2.c>\n' >${.TARGET} 139 1.1 mrg 140 1.1 mrg ${LIB2DIVMOD}: ${.CURDIR}/Makefile 141 1.1 mrg ${_MKTARGET_CREATE} 142 1.1 mrg printf '#define L${.PREFIX}\n#include <libgcc2.c>\n' >${.TARGET} 143 1.1 mrg 144 1.1 mrg .if !empty(G_LIB1ASMFUNCS) 145 1.1 mrg ${LIB1ASMFUNCS}: ${.CURDIR}/Makefile 146 1.1 mrg ${_MKTARGET_CREATE} 147 1.1 mrg printf '#define L${.PREFIX}\n#include <${G_LIB1ASMSRC}>\n' >${.TARGET} 148 1.1 mrg .endif 149 1.1 mrg 150 1.1 mrg ${LIB2_EH:.c=.o}: 151 1.1 mrg ${_MKTARGET_COMPILE} 152 1.1 mrg ${COMPILE.c} -fexceptions ${COPTS.${.IMPSRC:T}} -o ${.TARGET} ${.IMPSRC} 153 1.1 mrg 154 1.1 mrg ${LIB2_EH:.c=.pico}: 155 1.1 mrg ${_MKTARGET_COMPILE} 156 1.1 mrg ${COMPILE.c} ${CPICFLAGS} -fexceptions ${COPTS.${.IMPSRC:T}} -o ${.TARGET} ${.IMPSRC} 157 1.1 mrg 158 1.1 mrg ${G_LIB2_DIVMOD_FUNCS:=.o}: 159 1.1 mrg ${_MKTARGET_COMPILE} 160 1.1 mrg ${COMPILE.c} -fexceptions -fnon-call-exceptions ${COPTS.${.IMPSRC:T}} -o ${.TARGET} ${.IMPSRC} 161 1.1 mrg 162 1.1 mrg ${G_LIB2_DIVMOD_FUNCS:=.pico}: 163 1.1 mrg ${_MKTARGET_COMPILE} 164 1.1 mrg ${COMPILE.c} ${CPICFLAGS} -fexceptions -fnon-call-exceptions ${COPTS.${.IMPSRC:T}} -o ${.TARGET} ${.IMPSRC} 165 1.1 mrg 166 1.1 mrg dp-bit.c: ${.CURDIR}/Makefile 167 1.1 mrg ${_MKTARGET_CREATE} 168 1.1 mrg printf '#define FLOAT\n#include <fp-bit.c>\n' >${.TARGET} 169 1.1 mrg 170 1.1 mrg # 171 1.1 mrg # Common rules. 172 1.1 mrg # 173 1.1 mrg 174 1.1 mrg .PATH: ${DIST}/gcc ${DIST}/gcc/cp ${DIST}/gcc/cp/inc ${DIST}/gcc/config \ 175 1.23 mrg ${G_LIB2ADD:H:O:u} ${G_LIB2ADDEH:H:O:u} ${GCCARCHLIBGCC} 176 1.1 mrg 177 1.4 mrg .include "../Makefile.tconfigh" 178 1.1 mrg DPSRCS+= tconfig.h 179 1.1 mrg 180 1.23 mrg .if ${MKGCC} != "no" 181 1.23 mrg .if defined(G_CONFIGLINKS) && !empty(G_CONFIGLINKS) 182 1.23 mrg BUILDSYMLINKS+= ${G_CONFIGLINKS} 183 1.23 mrg .for _src _dst in ${G_CONFIGLINKS} 184 1.23 mrg DPSRCS+= ${_dst} 185 1.23 mrg .endfor 186 1.23 mrg .endif 187 1.15 msaitoh .endif 188 1.1 mrg 189 1.23 mrg EXTRA_FAKEHEADERS= options.h libgcc_tm.h 190 1.23 mrg .include "../../Makefile.hacks" 191 1.7 mrg 192 1.9 mrg # XXX 193 1.19 matt .if defined(HAVE_GCC) && ${HAVE_GCC} == 45 && ${LIBGCC_MACHINE_ARCH} == "m68k" 194 1.9 mrg COPTS._fixunsxfdi.c+= -O0 195 1.9 mrg .endif 196