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 floatdixf \ 82 floatsitf \ 83 floattidf \ 84 floattisf \ 85 floattixf \ 86 floatundidf \ 87 floatundisf \ 88 floatundixf \ 89 floatunsidf \ 90 floatunsisf \ 91 floatuntidf \ 92 floatuntisf \ 93 floatuntixf \ 94 gcc_personality_v0 \ 95 int_util \ 96 lshrdi3 \ 97 lshrti3 \ 98 moddi3 \ 99 modti3 \ 100 muldc3 \ 101 muldi3 \ 102 mulodi4 \ 103 mulosi4 \ 104 muloti4 \ 105 mulsc3 \ 106 multf3 \ 107 multi3 \ 108 mulvdi3 \ 109 mulvsi3 \ 110 mulvti3 \ 111 mulxc3 \ 112 negdf2 \ 113 negdi2 \ 114 negsf2 \ 115 negti2 \ 116 negvdi2 \ 117 negvsi2 \ 118 negvti2 \ 119 paritydi2 \ 120 paritysi2 \ 121 parityti2 \ 122 popcountdi2 \ 123 popcountsi2 \ 124 popcountti2 \ 125 powidf2 \ 126 powisf2 \ 127 powitf2 \ 128 powixf2 \ 129 subtf3 \ 130 subvdi3 \ 131 subvsi3 \ 132 subvti3 \ 133 trampoline_setup \ 134 trunctfdf2 \ 135 trunctfsf2 \ 136 ucmpdi2 \ 137 ucmpti2 \ 138 udivdi3 \ 139 udivmoddi4 \ 140 udivmodsi4 \ 141 udivmodti4 \ 142 udivti3 \ 143 umoddi3 \ 144 umodti3 145 146# These are already shipped by libc.a on arm and mips 147.if ${MACHINE_CPUARCH} != "arm" && ${MACHINE_CPUARCH} != "mips" 148SRCF+= adddf3 \ 149 addsf3 \ 150 divdf3 \ 151 divsf3 \ 152 extendsfdf2 \ 153 fixdfsi \ 154 fixsfsi \ 155 floatsidf \ 156 floatsisf \ 157 muldf3 \ 158 mulsf3 \ 159 subdf3 \ 160 subsf3 \ 161 truncdfsf2 162.endif 163 164.if ${MACHINE_CPUARCH} != "arm" 165SRCF+= comparedf2 \ 166 comparesf2 167.endif 168 169.if ${MACHINE_CPUARCH} != "mips" 170SRCF+= divsi3 \ 171 modsi3 \ 172 udivsi3 \ 173 umodsi3 174.endif 175 176# FreeBSD-specific atomic intrinsics. 177.if ${MACHINE_CPUARCH} == "arm" || ${MACHINE_CPUARCH} == "armv6" 178.PATH: ${.CURDIR}/../../sys/arm/arm 179 180SRCF+= stdatomic 181CFLAGS+= -DEMIT_SYNC_ATOMICS 182.elif ${MACHINE_CPUARCH} == "mips" 183.PATH: ${.CURDIR}/../../sys/mips/mips 184 185SRCF+= stdatomic 186.endif 187 188.for file in ${SRCF} 189. if ${MACHINE_ARCH:Marm*hf*} != "" && exists(${CRTSRC}/${CRTARCH}/${file}vfp.S) 190SRCS+= ${file}vfp.S 191. elif !(${MACHINE_CPUARCH} == "arm" && ${MACHINE_ARCH:Marm*hf*} == "") && exists(${CRTSRC}/${CRTARCH}/${file}.S) 192SRCS+= ${file}.S 193. else 194SRCS+= ${file}.c 195. endif 196.endfor 197 198.if ${MACHINE_CPUARCH} == "arm" 199SRCS+= aeabi_div0.c \ 200 aeabi_idivmod.S \ 201 aeabi_ldivmod.S \ 202 aeabi_memcmp.S \ 203 aeabi_memcpy.S \ 204 aeabi_memmove.S \ 205 aeabi_memset.S \ 206 aeabi_uidivmod.S \ 207 aeabi_uldivmod.S \ 208 bswapdi2.S \ 209 bswapsi2.S \ 210 switch16.S \ 211 switch32.S \ 212 switch8.S \ 213 switchu8.S \ 214 sync_synchronize.S 215.endif 216 217.if ${MK_INSTALLLIB} != "no" 218SYMLINKS+=libcompiler_rt.a ${LIBDIR}/libgcc.a 219.endif 220.if ${MK_PROFILE} != "no" 221SYMLINKS+=libcompiler_rt_p.a ${LIBDIR}/libgcc_p.a 222.endif 223 224.if ${MACHINE_CPUARCH} == "amd64" || ${MACHINE_CPUARCH} == "i386" || \ 225 ${MACHINE_CPUARCH} == "powerpc" 226AFLAGS+=--noexecstack 227ACFLAGS+=-Wa,--noexecstack 228.endif 229 230 231.include <bsd.lib.mk> 232