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