1 # $NetBSD: Makefile.compiler-rt,v 1.14 2023/11/13 19:07:00 mrg Exp $ 2 3 COMPILER_RT_DIR= ${.PARSEDIR}/../../external/bsd/compiler_rt 4 COMPILER_RT_SRCDIR= ${COMPILER_RT_DIR}/dist 5 6 .if ${MACHINE_ARCH} == "powerpc" 7 COMPILER_RT_CPU_DIR= ${COMPILER_RT_SRCDIR}/lib/builtins/ppc 8 COMPILER_RT_ARCH_DIR= ${COMPILER_RT_SRCDIR}/lib/builtins/ppc 9 .else 10 COMPILER_RT_CPU_DIR= ${COMPILER_RT_SRCDIR}/lib/builtins/${MACHINE_CPU} 11 COMPILER_RT_ARCH_DIR= ${COMPILER_RT_SRCDIR}/lib/builtins/${MACHINE_ARCH} 12 .endif 13 14 .PATH: ${COMPILER_RT_CPU_DIR} 15 .PATH: ${COMPILER_RT_ARCH_DIR} 16 .PATH: ${COMPILER_RT_SRCDIR}/lib/builtins 17 18 GENERIC_SRCS+= \ 19 absvdi2.c \ 20 absvsi2.c \ 21 absvti2.c \ 22 addvdi3.c \ 23 addvsi3.c \ 24 addvti3.c \ 25 ashlti3.c \ 26 ashrti3.c \ 27 clzti2.c \ 28 cmpti2.c \ 29 ctzti2.c \ 30 divti3.c \ 31 ffsti2.c \ 32 int_util.c \ 33 lshrti3.c \ 34 modti3.c \ 35 mulodi4.c \ 36 mulosi4.c \ 37 muloti4.c \ 38 multi3.c \ 39 mulvdi3.c \ 40 mulvsi3.c \ 41 mulvti3.c \ 42 negti2.c \ 43 negvdi2.c \ 44 negvsi2.c \ 45 negvti2.c \ 46 paritydi2.c \ 47 paritysi2.c \ 48 parityti2.c \ 49 popcountdi2.c \ 50 popcountsi2.c \ 51 popcountti2.c \ 52 subvdi3.c \ 53 subvsi3.c \ 54 subvti3.c \ 55 ucmpti2.c \ 56 udivmodti4.c \ 57 udivti3.c \ 58 umodti3.c 59 60 .if ${MACHINE_CPU} != "aarch64" && ${MACHINE} != "alpha" 61 GENERIC_SRCS+= \ 62 clzsi2.c \ 63 ctzsi2.c 64 .endif 65 66 .if ${MACHINE_CPU} != "aarch64" && ${MACHINE} != "alpha" && \ 67 ${MACHINE_ARCH} != "m68k" 68 GENERIC_SRCS+= \ 69 divmodsi4.c \ 70 divsi3.c \ 71 modsi3.c \ 72 udivmodsi4.c \ 73 udivsi3.c \ 74 umodsi3.c 75 .endif 76 77 .if ${MACHINE_CPU} != "aarch64" 78 GENERIC_SRCS+= \ 79 clzdi2.c \ 80 ctzdi2.c \ 81 ffsdi2.c 82 .endif 83 84 .if ${MACHINE_CPU} != "aarch64" && ${MACHINE} != "alpha" 85 GENERIC_SRCS+= \ 86 ashldi3.c \ 87 ashrdi3.c \ 88 lshrdi3.c 89 .endif 90 91 .if ${MACHINE_CPU} != "aarch64" && ${MACHINE} != "alpha" 92 GENERIC_SRCS+= \ 93 cmpdi2.c \ 94 divdi3.c \ 95 divmoddi4.c \ 96 moddi3.c \ 97 muldi3.c \ 98 negdi2.c \ 99 ucmpdi2.c \ 100 udivdi3.c \ 101 udivmoddi4.c \ 102 umoddi3.c 103 .endif 104 105 .if ${MACHINE_CPU} == "arm" 106 . if !empty(MACHINE_ARCH:Mearm*) 107 GENERIC_SRCS+= \ 108 aeabi_idivmod.S \ 109 aeabi_ldivmod.S \ 110 aeabi_uidivmod.S \ 111 aeabi_uldivmod.S \ 112 __aeabi_idiv0.c \ 113 __aeabi_ldiv0.c 114 . endif 115 .endif 116 117 .for src in ${GENERIC_SRCS} 118 . if exists(${COMPILER_RT_CPU_DIR}/${src:R}.S) || \ 119 exists(${COMPILER_RT_ARCH_DIR}/${src:R}.S) 120 SRCS+= ${src:R}.S 121 . else 122 SRCS+= ${src} 123 COPTS.${src}+= -Wno-missing-prototypes \ 124 -Wno-old-style-definition \ 125 -Wno-strict-prototypes \ 126 -Wno-uninitialized 127 . endif 128 .endfor 129 130 CPPFLAGS.int_util.c+= -DKERNEL_USE 131 132 # XXX Explicit divide by zero in udivmoddi4.c -> abort(). 133 .if defined(HAVE_GCC) && ${HAVE_GCC} >= 7 && ${ACTIVE_CC} == "gcc" 134 . if ${MACHINE_CPU} != "arm" 135 COPTS.udivmoddi4.c+= -fnon-call-exceptions 136 . endif 137 .endif 138 139 # XXX This makes no binary changes at the moment. 140 .include "${COMPILER_RT_DIR}/abi.mk" 141