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