1 1.5 mrg # $NetBSD: Makefile.inc,v 1.5 2011/06/29 08:05:52 mrg Exp $ 2 1.1 mrg 3 1.1 mrg .if ${MKGCC} != "no" 4 1.1 mrg .if exists(${.CURDIR}/../arch/${MACHINE_ARCH}.mk) 5 1.1 mrg .include "${.CURDIR}/../arch/${MACHINE_ARCH}.mk" 6 1.1 mrg .endif 7 1.1 mrg .endif 8 1.1 mrg 9 1.1 mrg UNSUPPORTED_COMPILER.clang= # defined 10 1.1 mrg 11 1.2 mrg DIST= ${NETBSDSRCDIR}/external/gpl3/gcc/dist 12 1.1 mrg GNUHOSTDIST= ${DIST} 13 1.2 mrg GCCARCH= ${NETBSDSRCDIR}/external/gpl3/gcc/usr.bin/gcc/arch/${MACHINE_ARCH} 14 1.2 mrg GCCARCHLIBGCC= ${NETBSDSRCDIR}/external/gpl3/gcc/lib/libgcc/arch/${MACHINE_ARCH} 15 1.2 mrg GCCARCHXX= ${NETBSDSRCDIR}/external/gpl3/gcc/lib/libstdc++-v3/arch/${MACHINE_ARCH} 16 1.1 mrg 17 1.1 mrg GCPPFLAGS= ${G_LIBGCC2_CFLAGS} ${G_USE_COLLECT2} ${G_INCLUDES} 18 1.1 mrg CPPFLAGS+= -I${.CURDIR} -I${GCCARCHLIBGCC} 19 1.1 mrg CPPFLAGS+= -I${GCCARCH} ${GCPPFLAGS:M-D*} ${GCPPFLAGS:M-I*:N-I.*} 20 1.3 mrg CPPFLAGS+= ${G_EXTRA_HEADERS:M/*:H:u:S/^/-I/g} 21 1.1 mrg CPPFLAGS+= -I${DIST} -I${DIST}/gcc/cp -I${DIST}/gcc/config -I${GCCARCHXX} -I. 22 1.1 mrg 23 1.1 mrg .if ${MACHINE_ARCH} == "powerpc" || \ 24 1.1 mrg ${MACHINE_ARCH} == "sh3el" || \ 25 1.1 mrg ${MACHINE_ARCH} == "sh3eb" || \ 26 1.1 mrg ${MACHINE_ARCH} == "m68000" 27 1.1 mrg _TRADITIONAL_CPP= 28 1.1 mrg COMPILE.S= ${CC} ${AFLAGS} ${CPPFLAGS} -c 29 1.1 mrg .endif 30 1.1 mrg 31 1.1 mrg .if !defined(MKNATIVE_LIBGCC_NEW) 32 1.1 mrg 33 1.1 mrg # 34 1.1 mrg # Old style libgcc build procedure. 35 1.1 mrg # 36 1.1 mrg 37 1.1 mrg # This is copied from gcc/mklibgcc.in:$lib2funcs 38 1.5 mrg LIB2FUNCS_ALL= \ 39 1.5 mrg _muldi3 _negdi2 _lshrdi3 _ashldi3 _ashrdi3 _cmpdi2 _ucmpdi2 \ 40 1.5 mrg _clear_cache _enable_execute_stack _trampoline __main _absvsi2 \ 41 1.5 mrg _absvdi2 _addvsi3 _addvdi3 _subvsi3 _subvdi3 _mulvsi3 _mulvdi3 \ 42 1.5 mrg _negvsi2 _negvdi2 _ctors _ffssi2 _ffsdi2 _clz _clzsi2 _clzdi2 \ 43 1.5 mrg _ctzsi2 _ctzdi2 _popcount_tab _popcountsi2 _popcountdi2 \ 44 1.5 mrg _paritysi2 _paritydi2 _powisf2 _powidf2 _powixf2 _powitf2 \ 45 1.5 mrg _mulsc3 _muldc3 _mulxc3 _multc3 _divsc3 _divdc3 _divxc3 \ 46 1.5 mrg _divtc3 _bswapsi2 _bswapdi2 47 1.5 mrg 48 1.5 mrg # non swfloat versions 49 1.5 mrg .for _p in _fix _fixuns 50 1.5 mrg . for _s in sf df xf tf 51 1.5 mrg LIB2FUNCS_ALL+= ${_p}${_s}di 52 1.5 mrg . endfor 53 1.5 mrg .endfor 54 1.5 mrg .for _p in _float _floatun 55 1.5 mrg . for _s in sf df xf tf 56 1.5 mrg LIB2FUNCS_ALL+= ${_p}di${_s} 57 1.5 mrg . endfor 58 1.5 mrg .endfor 59 1.1 mrg 60 1.5 mrg .for _m in sf df xf 61 1.5 mrg LIB2FUNCS_ALL+= fixuns${_p}si 62 1.5 mrg .endfor 63 1.1 mrg 64 1.1 mrg LIB2FUNCS_SHORT:=${LIB2FUNCS_ALL} 65 1.1 mrg LIB2_DIVMOD_FUNCS:=${G_LIB2_DIVMOD_FUNCS} 66 1.1 mrg .for f in ${G_LIB1ASMFUNCS}; do 67 1.1 mrg LIB2FUNCS_SHORT:=${LIB2FUNCS_SHORT:N${f}} 68 1.1 mrg LIB2_DIVMOD_FUNCS:=${LIB2_DIVMOD_FUNCS:N${f}} 69 1.1 mrg .endfor 70 1.1 mrg 71 1.1 mrg LIB2FUNCS= ${LIB2FUNCS_SHORT:=.c} 72 1.1 mrg LIB2FUNCS_ST= ${G_LIB2FUNCS_ST:=.c} 73 1.1 mrg LIB2DIVMOD= ${LIB2_DIVMOD_FUNCS:=.c} 74 1.1 mrg LIB2_EH= ${G_LIB2ADDEH:M*.c:T} 75 1.1 mrg .if !empty(G_LIB1ASMFUNCS) 76 1.1 mrg LIB1ASMFUNCS= ${G_LIB1ASMFUNCS:=.S} 77 1.1 mrg .endif 78 1.1 mrg 79 1.1 mrg DPSRCS+= ${.CURDIR}/../arch/${MACHINE_ARCH}.mk 80 1.1 mrg CLEANFILES+= ${LIB2FUNCS} ${LIB2FUNCS_ST} ${LIB2DIVMOD} cs-tconfig.h 81 1.1 mrg .if !empty(G_LIB1ASMFUNCS) 82 1.1 mrg CLEANFILES+= ${LIB1ASMFUNCS} 83 1.1 mrg .endif 84 1.1 mrg 85 1.1 mrg .for file in ${G_LIB2ADD:M${GNUHOSTDIST}*} 86 1.1 mrg BUILDSYMLINKS+= ${file} ${file:T:S/.asm$/.S/} 87 1.1 mrg .endfor 88 1.1 mrg 89 1.1 mrg # XXX 90 1.1 mrg .if ${MACHINE_ARCH} == "m68000" 91 1.1 mrg CPICFLAGS:= 92 1.1 mrg BUILDSYMLINKS+= ${DIST}/gcc/config/m68k/fpgnulib.c fpgnulib.c 93 1.1 mrg BUILDSYMLINKS+= ${DIST}/gcc/config/m68k/fpgnulib.c xfgnulib.c 94 1.1 mrg CPPFLAGS.xfgnulib.c+=-DEXTFLOAT=1 95 1.1 mrg .endif 96 1.1 mrg 97 1.1 mrg .if ${MACHINE_ARCH} == "powerpc64" 98 1.1 mrg COPTS+= -mlong-double-128 99 1.1 mrg .endif 100 1.1 mrg 101 1.1 mrg ${LIB2FUNCS} ${LIB2FUNCS_ST}: ${.CURDIR}/Makefile 102 1.1 mrg ${_MKTARGET_CREATE} 103 1.1 mrg printf '#define L${.PREFIX}\n#include <libgcc2.c>\n' >${.TARGET} 104 1.1 mrg 105 1.1 mrg ${LIB2DIVMOD}: ${.CURDIR}/Makefile 106 1.1 mrg ${_MKTARGET_CREATE} 107 1.1 mrg printf '#define L${.PREFIX}\n#include <libgcc2.c>\n' >${.TARGET} 108 1.1 mrg 109 1.1 mrg .if !empty(G_LIB1ASMFUNCS) 110 1.1 mrg ${LIB1ASMFUNCS}: ${.CURDIR}/Makefile 111 1.1 mrg ${_MKTARGET_CREATE} 112 1.1 mrg printf '#define L${.PREFIX}\n#include <${G_LIB1ASMSRC}>\n' >${.TARGET} 113 1.1 mrg .endif 114 1.1 mrg 115 1.1 mrg ${LIB2_EH:.c=.o}: 116 1.1 mrg ${_MKTARGET_COMPILE} 117 1.1 mrg ${COMPILE.c} -fexceptions ${COPTS.${.IMPSRC:T}} -o ${.TARGET} ${.IMPSRC} 118 1.1 mrg 119 1.1 mrg ${LIB2_EH:.c=.pico}: 120 1.1 mrg ${_MKTARGET_COMPILE} 121 1.1 mrg ${COMPILE.c} ${CPICFLAGS} -fexceptions ${COPTS.${.IMPSRC:T}} -o ${.TARGET} ${.IMPSRC} 122 1.1 mrg 123 1.1 mrg ${G_LIB2_DIVMOD_FUNCS:=.o}: 124 1.1 mrg ${_MKTARGET_COMPILE} 125 1.1 mrg ${COMPILE.c} -fexceptions -fnon-call-exceptions ${COPTS.${.IMPSRC:T}} -o ${.TARGET} ${.IMPSRC} 126 1.1 mrg 127 1.1 mrg ${G_LIB2_DIVMOD_FUNCS:=.pico}: 128 1.1 mrg ${_MKTARGET_COMPILE} 129 1.1 mrg ${COMPILE.c} ${CPICFLAGS} -fexceptions -fnon-call-exceptions ${COPTS.${.IMPSRC:T}} -o ${.TARGET} ${.IMPSRC} 130 1.1 mrg 131 1.1 mrg dp-bit.c: ${.CURDIR}/Makefile 132 1.1 mrg ${_MKTARGET_CREATE} 133 1.1 mrg printf '#define FLOAT\n#include <fp-bit.c>\n' >${.TARGET} 134 1.1 mrg 135 1.1 mrg .else # defined(MKNATIVE_LIBGCC_NEW) 136 1.1 mrg 137 1.1 mrg # 138 1.1 mrg # New style libgcc build procedure. 139 1.1 mrg # 140 1.1 mrg 141 1.1 mrg .endif # defined(MKNATIVE_LIBGCC_NEW) 142 1.1 mrg 143 1.1 mrg # 144 1.1 mrg # Common rules. 145 1.1 mrg # 146 1.1 mrg 147 1.1 mrg .PATH: ${DIST}/gcc ${DIST}/gcc/cp ${DIST}/gcc/cp/inc ${DIST}/gcc/config \ 148 1.1 mrg ${G_CONFIGDIR} 149 1.1 mrg 150 1.4 mrg .include "../Makefile.tconfigh" 151 1.1 mrg DPSRCS+= tconfig.h 152 1.1 mrg 153 1.1 mrg BUILDSYMLINKS+= ${G_UNWIND_H} unwind.h 154 1.1 mrg DPSRCS+= unwind.h 155 1.1 mrg 156 1.1 mrg # these aren't necessary but are #include'd 157 1.1 mrg FAKEHEADERS=options.h insn-flags.h insn-constants.h 158 1.1 mrg ${FAKEHEADERS}: 159 1.1 mrg ${_MKTARGET_CREATE} 160 1.1 mrg touch ${.TARGET} 161 1.1 mrg DPSRCS+= ${FAKEHEADERS} 162 1.1 mrg CLEANFILES+= ${FAKEHEADERS} 163