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