Home | History | Annotate | Line # | Download | only in libkern
      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