1 1.29 adam # $NetBSD: Makefile.inc,v 1.29 2016/02/29 14:57:07 adam Exp $ 2 1.1 joerg 3 1.1 joerg COMPILER_RT_SRCDIR= ${NETBSDSRCDIR}/sys/external/bsd/compiler_rt/dist 4 1.1 joerg 5 1.25 joerg .if ${LIBC_MACHINE_ARCH} == "powerpc" || ${LIBC_MACHINE_ARCH} == "powerpc64" 6 1.15 joerg COMPILER_RT_CPU_DIR= ${COMPILER_RT_SRCDIR}/lib/builtins/ppc 7 1.15 joerg COMPILER_RT_ARCH_DIR= ${COMPILER_RT_SRCDIR}/lib/builtins/ppc 8 1.1 joerg .else 9 1.24 matt COMPILER_RT_CPU_DIR= ${COMPILER_RT_SRCDIR}/lib/builtins/${LIBC_MACHINE_CPU} 10 1.16 matt COMPILER_RT_ARCH_DIR= ${COMPILER_RT_SRCDIR}/lib/builtins/${LIBC_MACHINE_ARCH} 11 1.1 joerg .endif 12 1.1 joerg 13 1.1 joerg .PATH: ${COMPILER_RT_CPU_DIR} 14 1.1 joerg .PATH: ${COMPILER_RT_ARCH_DIR} 15 1.15 joerg .PATH: ${COMPILER_RT_SRCDIR}/lib/builtins 16 1.4 joerg .PATH: ${COMPILER_RT_SRCDIR}/lib/profile 17 1.1 joerg 18 1.1 joerg # Complex support needs parts of libm 19 1.1 joerg #GENERIC_SRCS+= 20 1.1 joerg # mulxc3.c \ 21 1.1 joerg # mulsc3.c \ 22 1.1 joerg # divxc3.c \ 23 1.1 joerg # divdc3.c \ 24 1.1 joerg # divsc3.c 25 1.1 joerg 26 1.21 joerg # Implemented on top of our atomic interface. 27 1.21 joerg #GENERIC_SRCS+= atomic.c 28 1.2 joerg 29 1.10 joerg .if ${HAVE_LIBGCC_EH} == "no" 30 1.2 joerg GENERIC_SRCS+= \ 31 1.2 joerg gcc_personality_v0.c 32 1.6 joerg .endif 33 1.2 joerg 34 1.8 joerg .if 0 35 1.2 joerg # Conflicts with soft-float 36 1.2 joerg GENERIC_SRCS+= \ 37 1.2 joerg comparedf2.c \ 38 1.3 joerg comparesf2.c \ 39 1.3 joerg adddf3.c \ 40 1.3 joerg addsf3.c \ 41 1.23 joerg addtf3.c \ 42 1.3 joerg divdf3.c \ 43 1.3 joerg divsf3.c \ 44 1.23 joerg divtf3.c \ 45 1.3 joerg extendsfdf2.c \ 46 1.23 joerg extendsftf2.c \ 47 1.23 joerg extenddftf2.c \ 48 1.11 joerg fixdfsi.c \ 49 1.3 joerg fixdfti.c \ 50 1.3 joerg fixsfsi.c \ 51 1.3 joerg fixsfti.c \ 52 1.3 joerg floatsidf.c \ 53 1.3 joerg floatsisf.c \ 54 1.7 joerg floatunsidf.c \ 55 1.7 joerg floatunsisf.c \ 56 1.3 joerg muldf3.c \ 57 1.3 joerg mulsf3.c \ 58 1.23 joerg multf3.c \ 59 1.3 joerg subdf3.c \ 60 1.3 joerg subsf3.c \ 61 1.23 joerg subtf3.c \ 62 1.23 joerg truncdfsf2.c \ 63 1.23 joerg trunctfdf2.c \ 64 1.23 joerg trunctfsf2.c 65 1.2 joerg .endif 66 1.2 joerg 67 1.1 joerg GENERIC_SRCS+= \ 68 1.1 joerg absvsi2.c \ 69 1.1 joerg absvti2.c \ 70 1.1 joerg addvsi3.c \ 71 1.1 joerg addvti3.c \ 72 1.1 joerg ashlti3.c \ 73 1.1 joerg ashrti3.c \ 74 1.1 joerg clzti2.c \ 75 1.1 joerg cmpti2.c \ 76 1.1 joerg ctzti2.c \ 77 1.1 joerg divti3.c \ 78 1.1 joerg ffsti2.c \ 79 1.11 joerg fixsfdi.c \ 80 1.7 joerg fixdfdi.c \ 81 1.1 joerg fixunsdfdi.c \ 82 1.1 joerg fixunsdfsi.c \ 83 1.1 joerg fixunssfdi.c \ 84 1.1 joerg fixunssfsi.c \ 85 1.1 joerg fixunsxfdi.c \ 86 1.1 joerg fixunsxfsi.c \ 87 1.1 joerg fixxfdi.c \ 88 1.1 joerg floatdidf.c \ 89 1.1 joerg floatdisf.c \ 90 1.1 joerg floatdixf.c \ 91 1.1 joerg floatundidf.c \ 92 1.1 joerg floatundisf.c \ 93 1.1 joerg floatundixf.c \ 94 1.1 joerg int_util.c \ 95 1.1 joerg lshrti3.c \ 96 1.1 joerg modti3.c \ 97 1.1 joerg muldc3.c \ 98 1.1 joerg mulosi4.c \ 99 1.1 joerg muloti4.c \ 100 1.1 joerg multi3.c \ 101 1.1 joerg mulvsi3.c \ 102 1.1 joerg mulvti3.c \ 103 1.1 joerg negdf2.c \ 104 1.1 joerg negsf2.c \ 105 1.1 joerg negti2.c \ 106 1.1 joerg negvsi2.c \ 107 1.1 joerg negvti2.c \ 108 1.1 joerg paritysi2.c \ 109 1.1 joerg parityti2.c \ 110 1.1 joerg popcountsi2.c \ 111 1.1 joerg popcountti2.c \ 112 1.1 joerg powidf2.c \ 113 1.1 joerg powisf2.c \ 114 1.1 joerg powitf2.c \ 115 1.1 joerg powixf2.c \ 116 1.1 joerg subvsi3.c \ 117 1.1 joerg subvti3.c \ 118 1.1 joerg ucmpti2.c \ 119 1.1 joerg udivmodti4.c \ 120 1.1 joerg udivti3.c \ 121 1.1 joerg umodti3.c 122 1.1 joerg 123 1.22 matt .if ${MACHINE_ARCH} != "aarch64" 124 1.22 matt GENERIC_SRCS+= \ 125 1.22 matt fixunsdfti.c \ 126 1.22 matt fixunssfti.c \ 127 1.22 matt fixunsxfti.c \ 128 1.22 matt fixxfti.c \ 129 1.22 matt floattidf.c \ 130 1.22 matt floattisf.c \ 131 1.22 matt floattixf.c \ 132 1.22 matt floatuntidf.c \ 133 1.22 matt floatuntisf.c \ 134 1.22 matt floatuntixf.c 135 1.22 matt .endif 136 1.22 matt 137 1.22 matt # These have h/w instructions which are always used. 138 1.27 matt .if ${LIBC_MACHINE_ARCH} != "alpha" && ${LIBC_MACHINE_CPU} != "aarch64" \ 139 1.27 matt && ${LIBC_MACHINE_CPU} != "powerpc" && ${LIBC_MACHINE_CPU} != "or1k" 140 1.26 matt GENERIC_SRCS+= \ 141 1.26 matt clzsi2.c 142 1.26 matt .endif 143 1.26 matt 144 1.26 matt # These have h/w instructions which are always used. 145 1.27 matt .if ${LIBC_MACHINE_ARCH} != "alpha" && ${LIBC_MACHINE_ARCH} != "vax" \ 146 1.27 matt && ${LIBC_MACHINE_CPU} != "aarch64" && ${LIBC_MACHINE_CPU} != "powerpc" \ 147 1.27 matt && ${LIBC_MACHINE_CPU} != "or1k" 148 1.27 matt GENERIC_SRCS+= \ 149 1.27 matt ctzsi2.c 150 1.27 matt .endif 151 1.27 matt 152 1.27 matt # These have h/w instructions which are always used. 153 1.26 matt .if ${LIBC_MACHINE_ARCH} != "alpha" && ${LIBC_MACHINE_CPU} != "powerpc" \ 154 1.24 matt && ${LIBC_MACHINE_CPU} != "aarch64" && ${LIBC_MACHINE_ARCH} != "vax" 155 1.22 matt GENERIC_SRCS+= \ 156 1.22 matt divmodsi4.c \ 157 1.22 matt divsi3.c \ 158 1.22 matt modsi3.c \ 159 1.22 matt udivmodsi4.c \ 160 1.22 matt umodsi3.c 161 1.22 matt 162 1.24 matt . if ${LIBC_MACHINE_CPU} != "sh3" 163 1.17 uwe # On sh3 __udivsi3 is gcc "millicode" with special calling convention 164 1.17 uwe # (less registers clobbered than usual). Each DSO that needs it gets 165 1.17 uwe # its own hidden copy from libgcc.a. 166 1.17 uwe GENERIC_SRCS+= \ 167 1.17 uwe udivsi3.c 168 1.22 matt . endif 169 1.17 uwe .endif 170 1.17 uwe 171 1.22 matt 172 1.4 joerg GENERIC_SRCS+= \ 173 1.5 matt absvdi2.c \ 174 1.5 matt addvdi3.c \ 175 1.5 matt mulodi4.c \ 176 1.5 matt mulvdi3.c \ 177 1.5 matt negvdi2.c \ 178 1.5 matt paritydi2.c \ 179 1.5 matt popcountdi2.c \ 180 1.5 matt subvdi3.c 181 1.5 matt 182 1.22 matt # These have h/w instructions which are always used. 183 1.24 matt .if ${LIBC_MACHINE_ARCH} != "alpha" && ${LIBC_MACHINE_CPU} != "powerpc64" \ 184 1.27 matt && ${LIBC_MACHINE_ARCH} != "aarch64" && ${LIBC_MACHINE_CPU} != "or1k" 185 1.22 matt GENERIC_SRCS+= \ 186 1.22 matt clzdi2.c \ 187 1.22 matt ctzdi2.c \ 188 1.22 matt ffsdi2.c 189 1.22 matt .endif 190 1.22 matt 191 1.22 matt # Don't need these on 64-bit machines. 192 1.12 joerg .if empty(LIBC_MACHINE_ARCH:M*64*) && ${LIBC_MACHINE_ARCH} != "alpha" 193 1.5 matt GENERIC_SRCS+= \ 194 1.5 matt cmpdi2.c \ 195 1.5 matt ashldi3.c \ 196 1.5 matt ashrdi3.c \ 197 1.5 matt divdi3.c \ 198 1.5 matt divmoddi4.c \ 199 1.5 matt lshrdi3.c \ 200 1.5 matt moddi3.c \ 201 1.5 matt muldi3.c \ 202 1.5 matt negdi2.c \ 203 1.5 matt ucmpdi2.c \ 204 1.5 matt udivdi3.c \ 205 1.5 matt udivmoddi4.c \ 206 1.5 matt umoddi3.c 207 1.5 matt .endif 208 1.5 matt 209 1.5 matt GENERIC_SRCS+= \ 210 1.4 joerg GCDAProfiling.c \ 211 1.18 joerg InstrProfiling.c \ 212 1.18 joerg InstrProfilingBuffer.c \ 213 1.18 joerg InstrProfilingFile.c \ 214 1.28 joerg InstrProfilingPlatformLinux.c \ 215 1.28 joerg InstrProfilingUtil.c \ 216 1.28 joerg InstrProfilingValue.c \ 217 1.28 joerg InstrProfilingWriter.c 218 1.28 joerg 219 1.29 adam .if ${MKPROFILE} != "no" 220 1.28 joerg POBJS+= InstrProfilingRuntime.po 221 1.29 adam .endif 222 1.4 joerg 223 1.25 joerg .if ${LIBC_MACHINE_ARCH} == "powerpc" || ${LIBC_MACHINE_ARCH} == "powerpc64" 224 1.1 joerg GENERIC_SRCS+= \ 225 1.1 joerg fixtfdi.c \ 226 1.1 joerg fixunstfdi.c \ 227 1.1 joerg floatditf.c \ 228 1.1 joerg floatunditf.c \ 229 1.1 joerg gcc_qadd.c \ 230 1.1 joerg gcc_qdiv.c \ 231 1.1 joerg gcc_qmul.c \ 232 1.1 joerg gcc_qsub.c 233 1.1 joerg .endif 234 1.1 joerg 235 1.24 matt .if ${LIBC_MACHINE_CPU} == "aarch64" 236 1.22 matt GENERIC_SRCS+= \ 237 1.22 matt clear_cache.c 238 1.22 matt .endif 239 1.22 matt 240 1.24 matt .if ${LIBC_MACHINE_CPU} == "arm" 241 1.2 joerg .if !empty(LIBC_MACHINE_ARCH:Mearm*) 242 1.2 joerg GENERIC_SRCS+= \ 243 1.2 joerg aeabi_idivmod.S \ 244 1.2 joerg aeabi_ldivmod.S \ 245 1.2 joerg aeabi_uidivmod.S \ 246 1.2 joerg aeabi_uldivmod.S 247 1.2 joerg .endif 248 1.13 joerg GENERIC_SRCS+= \ 249 1.13 joerg clear_cache.c 250 1.9 joerg # Not yet, overlaps with softfloat 251 1.9 joerg # aeabi_dcmp.S \ 252 1.9 joerg # aeabi_fcmp.S 253 1.3 joerg # Not yet, requires ARMv6 254 1.3 joerg #GENERIC_SRCS+= \ 255 1.3 joerg # bswapdi2.S \ 256 1.3 joerg # bswapsi2.S 257 1.2 joerg .endif 258 1.2 joerg 259 1.1 joerg .for src in ${GENERIC_SRCS} 260 1.1 joerg . if exists(${COMPILER_RT_CPU_DIR}/${src:R}.S) || \ 261 1.1 joerg exists(${COMPILER_RT_ARCH_DIR}/${src:R}.S) 262 1.1 joerg SRCS+= ${src:R}.S 263 1.1 joerg . else 264 1.1 joerg SRCS+= ${src} 265 1.19 joerg . if ${src:E} != "cc" 266 1.2 joerg COPTS.${src}+= -Wno-missing-prototypes \ 267 1.2 joerg -Wno-old-style-definition \ 268 1.2 joerg -Wno-strict-prototypes \ 269 1.20 joerg -Wno-uninitialized \ 270 1.20 joerg -Wno-cast-qual 271 1.19 joerg . endif 272 1.1 joerg . endif 273 1.1 joerg .endfor 274