Makefile.inc revision 360784
1# $FreeBSD: stable/11/lib/libcompiler_rt/Makefile.inc 360784 2020-05-07 16:34:01Z dim $ 2 3CRTARCH= ${MACHINE_CPUARCH:C/amd64/x86_64/} 4 5CRTSRC= ${SRCTOP}/contrib/llvm-project/compiler-rt/lib/builtins 6 7.PATH: ${CRTSRC}/${CRTARCH} 8.PATH: ${CRTSRC} 9 10SRCF+= absvdi2 11SRCF+= absvsi2 12SRCF+= absvti2 13SRCF+= addvdi3 14SRCF+= addvsi3 15SRCF+= addvti3 16SRCF+= apple_versioning 17SRCF+= ashldi3 18SRCF+= ashlti3 19SRCF+= ashrdi3 20SRCF+= ashrti3 21SRCF+= clear_cache 22SRCF+= clzdi2 23SRCF+= clzsi2 24SRCF+= clzti2 25SRCF+= cmpdi2 26SRCF+= cmpti2 27SRCF+= ctzdi2 28SRCF+= ctzsi2 29SRCF+= ctzti2 30SRCF+= divdc3 31SRCF+= divdi3 32SRCF+= divmoddi4 33SRCF+= divmodsi4 34SRCF+= divsc3 35SRCF+= divtc3 36SRCF+= divti3 37SRCF+= divxc3 38SRCF+= enable_execute_stack 39SRCF+= eprintf 40SRCF+= extendhfsf2 41SRCF+= ffsdi2 42SRCF+= ffssi2 43SRCF+= ffsti2 44SRCF+= fixdfdi 45SRCF+= fixdfti 46SRCF+= fixsfdi 47SRCF+= fixsfti 48SRCF+= fixunsdfdi 49SRCF+= fixunsdfsi 50SRCF+= fixunsdfti 51SRCF+= fixunssfdi 52SRCF+= fixunssfsi 53SRCF+= fixunssfti 54SRCF+= fixunsxfdi 55SRCF+= fixunsxfsi 56SRCF+= fixunsxfti 57SRCF+= fixxfdi 58SRCF+= fixxfti 59SRCF+= floatditf 60SRCF+= floattidf 61SRCF+= floattisf 62SRCF+= floattixf 63SRCF+= floatunditf 64SRCF+= floatunsidf 65SRCF+= floatunsisf 66SRCF+= floatuntidf 67SRCF+= floatuntisf 68SRCF+= floatuntixf 69SRCF+= gcc_personality_v0 # not in upstream 70SRCF+= int_util 71SRCF+= lshrdi3 72SRCF+= lshrti3 73SRCF+= moddi3 74SRCF+= modti3 75SRCF+= muldc3 76SRCF+= muldi3 77SRCF+= mulodi4 78SRCF+= mulosi4 79SRCF+= muloti4 80SRCF+= mulsc3 81SRCF+= multc3 82SRCF+= multi3 83SRCF+= mulvdi3 84SRCF+= mulvsi3 85SRCF+= mulvti3 86SRCF+= mulxc3 87SRCF+= negdf2 88SRCF+= negdi2 89SRCF+= negsf2 90SRCF+= negti2 91SRCF+= negvdi2 92SRCF+= negvsi2 93SRCF+= negvti2 94SRCF+= paritydi2 95SRCF+= paritysi2 96SRCF+= parityti2 97SRCF+= popcountdi2 98SRCF+= popcountsi2 99SRCF+= popcountti2 100SRCF+= powidf2 101SRCF+= powisf2 102SRCF+= powitf2 103SRCF+= powixf2 104SRCF+= subvdi3 105SRCF+= subvsi3 106SRCF+= subvti3 107SRCF+= trampoline_setup 108SRCF+= truncdfhf2 109SRCF+= truncsfhf2 110SRCF+= ucmpdi2 111SRCF+= ucmpti2 112SRCF+= udivdi3 113SRCF+= udivmoddi4 114SRCF+= udivmodsi4 115SRCF+= udivmodti4 116SRCF+= udivti3 117SRCF+= umoddi3 118SRCF+= umodti3 119 120# Avoid using SSE2 instructions on i386, if unsupported. 121.if ${MACHINE_CPUARCH} == "i386" && empty(MACHINE_CPU:Msse2) 122SRCS+= floatdidf.c 123SRCS+= floatdisf.c 124SRCS+= floatdixf.c 125SRCS+= floatundidf.c 126SRCS+= floatundisf.c 127SRCS+= floatundixf.c 128.else 129SRCF+= floatdidf 130SRCF+= floatdisf 131SRCF+= floatdixf 132SRCF+= floatundidf 133SRCF+= floatundisf 134SRCF+= floatundixf 135.endif 136 137# __cpu_model support, only used on x86 138.if ${MACHINE_CPUARCH} == "amd64" || ${MACHINE_CPUARCH} == "i386" 139SRCF+= cpu_model 140.endif 141 142# The fp_mode implementation for amd64 and i386 is shared, while other 143# architectures use the regular approach. 144.if ${MACHINE_CPUARCH} == "amd64" || ${MACHINE_CPUARCH} == "i386" 145SRCS+= i386/fp_mode.c 146.else 147SRCF+= fp_mode 148.endif 149 150# 151# 128-bit quad precision long double support, 152# only used on some architectures. 153# 154.if ${MACHINE_CPUARCH} == "aarch64" || ${MACHINE_CPUARCH} == "riscv" 155SRCF+= addtf3 156SRCF+= comparetf2 157SRCF+= divtf3 158SRCF+= extenddftf2 159SRCF+= extendsftf2 160SRCF+= fixtfdi 161SRCF+= fixtfsi 162SRCF+= fixtfti 163SRCF+= fixunstfdi 164SRCF+= fixunstfsi 165SRCF+= fixunstfti 166SRCF+= floatsitf 167SRCF+= floattitf 168SRCF+= floatunsitf 169SRCF+= floatuntitf 170SRCF+= multf3 171SRCF+= subtf3 172SRCF+= trunctfdf2 173SRCF+= trunctfsf2 174.endif 175 176# These are already shipped by libc.a on arm and mips 177.if ${MACHINE_CPUARCH} != "arm" && ${MACHINE_CPUARCH} != "mips" 178SRCF+= adddf3 179SRCF+= addsf3 180SRCF+= divdf3 181SRCF+= divsf3 182SRCF+= extendsfdf2 183SRCF+= fixdfsi 184SRCF+= fixsfsi 185SRCF+= floatsidf 186SRCF+= floatsisf 187SRCF+= muldf3 188SRCF+= mulsf3 189SRCF+= subdf3 190SRCF+= subsf3 191SRCF+= truncdfsf2 192.endif 193 194.if ${MACHINE_CPUARCH} != "arm" 195SRCF+= comparedf2 196SRCF+= comparesf2 197.endif 198 199.if ${MACHINE_CPUARCH} != "mips" 200SRCF+= divsi3 201SRCF+= modsi3 202SRCF+= udivsi3 203SRCF+= umodsi3 204.endif 205 206# FreeBSD-specific atomic intrinsics. 207.if ${MACHINE_CPUARCH} == "arm" || ${MACHINE_CPUARCH} == "armv6" 208.PATH: ${SRCTOP}/sys/arm/arm 209 210SRCF+= stdatomic 211CFLAGS+= -DEMIT_SYNC_ATOMICS 212.elif ${MACHINE_CPUARCH} == "mips" 213.PATH: ${SRCTOP}/sys/mips/mips 214 215SRCF+= stdatomic 216.endif 217 218.if "${COMPILER_TYPE}" == "clang" && \ 219 (${MACHINE_ARCH} == "powerpc" || ${MACHINE_ARCH} == "powerpcspe") 220SRCS+= atomic.c 221CFLAGS.atomic.c+= -Wno-atomic-alignment 222.endif 223 224.for file in ${SRCF} 225.if ${MACHINE_ARCH:Marmv6*} && (!defined(CPUTYPE) || ${CPUTYPE:M*soft*} == "") \ 226 && exists(${CRTSRC}/${CRTARCH}/${file}vfp.S) 227SRCS+= ${file}vfp.S 228. elif exists(${CRTSRC}/${CRTARCH}/${file}.S) 229SRCS+= ${file}.S 230. else 231SRCS+= ${file}.c 232. endif 233.endfor 234 235.if ${MACHINE_CPUARCH} == "arm" 236SRCS+= aeabi_div0.c 237SRCS+= aeabi_idivmod.S 238SRCS+= aeabi_ldivmod.S 239SRCS+= aeabi_memcmp.S 240SRCS+= aeabi_memcpy.S 241SRCS+= aeabi_memmove.S 242SRCS+= aeabi_memset.S 243SRCS+= aeabi_uidivmod.S 244SRCS+= aeabi_uldivmod.S 245SRCS+= bswapdi2.S 246SRCS+= bswapsi2.S 247SRCS+= switch16.S 248SRCS+= switch32.S 249SRCS+= switch8.S 250SRCS+= switchu8.S 251SRCS+= sync_synchronize.S 252.endif 253 254# GCC-6.3 on mips32 requires bswap32 built-in. 255.if ${MACHINE_CPUARCH} == "mips" 256SRCS+= bswapdi2.c 257SRCS+= bswapsi2.c 258.endif 259 260