1# $FreeBSD: stable/10/lib/libcompiler_rt/Makefile 323189 2017-09-05 17:32:14Z dim $ 2 3.include <bsd.own.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 18 19.PATH: ${CRTSRC}/${CRTARCH} ${CRTSRC} 20 21SRCF= absvdi2 \ 22 absvsi2 \ 23 absvti2 \ 24 addvdi3 \ 25 addvsi3 \ 26 addvti3 \ 27 ashldi3 \ 28 ashlti3 \ 29 ashrdi3 \ 30 ashrti3 \ 31 clear_cache \ 32 clzdi2 \ 33 clzsi2 \ 34 clzti2 \ 35 cmpdi2 \ 36 cmpti2 \ 37 comparedf2 \ 38 comparesf2 \ 39 ctzdi2 \ 40 ctzsi2 \ 41 ctzti2 \ 42 divdc3 \ 43 divdi3 \ 44 divmoddi4 \ 45 divmodsi4 \ 46 divsc3 \ 47 divti3 \ 48 divxc3 \ 49 enable_execute_stack \ 50 eprintf \ 51 ffsdi2 \ 52 ffsti2 \ 53 fixdfdi \ 54 fixdfti \ 55 fixsfdi \ 56 fixsfti \ 57 fixunsdfdi \ 58 fixunsdfsi \ 59 fixunsdfti \ 60 fixunssfdi \ 61 fixunssfsi \ 62 fixunssfti \ 63 fixunsxfdi \ 64 fixunsxfsi \ 65 fixunsxfti \ 66 fixxfdi \ 67 fixxfti \ 68 floattidf \ 69 floattisf \ 70 floattixf \ 71 floatunsidf \ 72 floatunsisf \ 73 floatuntidf \ 74 floatuntisf \ 75 floatuntixf \ 76 int_util \ 77 lshrdi3 \ 78 lshrti3 \ 79 moddi3 \ 80 modti3 \ 81 muldc3 \ 82 muldi3 \ 83 mulodi4 \ 84 mulosi4 \ 85 muloti4 \ 86 mulsc3 \ 87 multi3 \ 88 mulvdi3 \ 89 mulvsi3 \ 90 mulvti3 \ 91 mulxc3 \ 92 negdf2 \ 93 negdi2 \ 94 negsf2 \ 95 negti2 \ 96 negvdi2 \ 97 negvsi2 \ 98 negvti2 \ 99 paritydi2 \ 100 paritysi2 \ 101 parityti2 \ 102 popcountdi2 \ 103 popcountsi2 \ 104 popcountti2 \ 105 powidf2 \ 106 powisf2 \ 107 powitf2 \ 108 powixf2 \ 109 subvdi3 \ 110 subvsi3 \ 111 subvti3 \ 112 trampoline_setup \ 113 ucmpdi2 \ 114 ucmpti2 \ 115 udivdi3 \ 116 udivmoddi4 \ 117 udivmodsi4 \ 118 udivmodti4 \ 119 udivti3 \ 120 umoddi3 \ 121 umodti3 122 123# Avoid using SSE2 instructions on i386, if unsupported. 124.if ${MACHINE_CPUARCH} == "i386" && empty(MACHINE_CPU:Msse2) 125SRCS+= floatdidf.c 126SRCS+= floatdisf.c 127SRCS+= floatdixf.c 128SRCS+= floatundidf.c 129SRCS+= floatundisf.c 130SRCS+= floatundixf.c 131.else 132SRCF+= floatdidf 133SRCF+= floatdisf 134SRCF+= floatdixf 135SRCF+= floatundidf 136SRCF+= floatundisf 137SRCF+= floatundixf 138.endif 139 140# These are already shipped by libc.a on arm and mips 141.if ${MACHINE_CPUARCH} != "arm" && ${MACHINE_CPUARCH} != "mips" 142SRCF+= adddf3 \ 143 addsf3 \ 144 divdf3 \ 145 divsf3 \ 146 extendsfdf2 \ 147 fixdfsi \ 148 fixsfsi \ 149 floatsidf \ 150 floatsisf \ 151 muldf3 \ 152 mulsf3 \ 153 subdf3 \ 154 subsf3 \ 155 truncdfsf2 156.endif 157 158.if ${MACHINE_CPUARCH} != "mips" && \ 159 (${MACHINE_CPUARCH} != "arm" || ${MK_ARM_EABI} != "no") 160SRCF+= divsi3 \ 161 modsi3 \ 162 udivsi3 \ 163 umodsi3 164.endif 165 166# FreeBSD-specific atomic intrinsics. 167.if ${MACHINE_CPUARCH} == "arm" || ${MACHINE_CPUARCH} == "armv6" 168.PATH: ${.CURDIR}/../../sys/arm/arm 169 170SRCF+= stdatomic 171CFLAGS+= -DEMIT_SYNC_ATOMICS 172.elif ${MACHINE_CPUARCH} == "mips" 173.PATH: ${.CURDIR}/../../sys/mips/mips 174 175SRCF+= stdatomic 176.endif 177 178.for file in ${SRCF} 179. if ${MACHINE_CPUARCH} != "arm" && exists(${CRTSRC}/${CRTARCH}/${file}.S) 180SRCS+= ${file}.S 181. else 182SRCS+= ${file}.c 183. endif 184.endfor 185 186.if ${MACHINE_CPUARCH} == "arm" && ${MK_ARM_EABI} != "no" 187SRCS+= aeabi_idivmod.S \ 188 aeabi_ldivmod.S \ 189 aeabi_memcmp.S \ 190 aeabi_memcpy.S \ 191 aeabi_memmove.S \ 192 aeabi_memset.S \ 193 aeabi_uidivmod.S \ 194 aeabi_uldivmod.S 195.endif 196 197.if ${MK_INSTALLLIB} != "no" 198SYMLINKS+=libcompiler_rt.a ${LIBDIR}/libgcc.a 199.endif 200.if ${MK_PROFILE} != "no" 201SYMLINKS+=libcompiler_rt_p.a ${LIBDIR}/libgcc_p.a 202.endif 203 204.if ${MACHINE_CPUARCH} == "amd64" || ${MACHINE_CPUARCH} == "i386" || \ 205 ${MACHINE_CPUARCH} == "powerpc" 206AFLAGS+=--noexecstack 207ACFLAGS+=-Wa,--noexecstack 208.endif 209 210 211.include <bsd.lib.mk> 212