Home | History | Annotate | Line # | Download | only in compiler_rt
Makefile.inc revision 1.35.6.1
      1  1.35.6.1  martin # $NetBSD: Makefile.inc,v 1.35.6.1 2021/08/08 10:11:39 martin Exp $
      2       1.1   joerg 
      3  1.35.6.1  martin COMPILER_RT_DIR=	${NETBSDSRCDIR}/sys/external/bsd/compiler_rt
      4  1.35.6.1  martin COMPILER_RT_SRCDIR=	${COMPILER_RT_DIR}/dist
      5       1.1   joerg 
      6      1.25   joerg .if ${LIBC_MACHINE_ARCH} == "powerpc" || ${LIBC_MACHINE_ARCH} == "powerpc64"
      7      1.15   joerg COMPILER_RT_CPU_DIR=	${COMPILER_RT_SRCDIR}/lib/builtins/ppc
      8      1.15   joerg COMPILER_RT_ARCH_DIR=	${COMPILER_RT_SRCDIR}/lib/builtins/ppc
      9       1.1   joerg .else
     10      1.24    matt COMPILER_RT_CPU_DIR=	${COMPILER_RT_SRCDIR}/lib/builtins/${LIBC_MACHINE_CPU}
     11      1.16    matt COMPILER_RT_ARCH_DIR=	${COMPILER_RT_SRCDIR}/lib/builtins/${LIBC_MACHINE_ARCH}
     12       1.1   joerg .endif
     13       1.1   joerg 
     14       1.1   joerg .PATH: ${COMPILER_RT_CPU_DIR}
     15       1.1   joerg .PATH: ${COMPILER_RT_ARCH_DIR}
     16      1.15   joerg .PATH: ${COMPILER_RT_SRCDIR}/lib/builtins
     17       1.4   joerg .PATH: ${COMPILER_RT_SRCDIR}/lib/profile
     18       1.1   joerg 
     19       1.1   joerg # Complex support needs parts of libm
     20       1.1   joerg #GENERIC_SRCS+=
     21       1.1   joerg #	mulxc3.c \
     22       1.1   joerg #	mulsc3.c \
     23       1.1   joerg #	divxc3.c \
     24       1.1   joerg #	divdc3.c \
     25       1.1   joerg #	divsc3.c
     26       1.1   joerg 
     27      1.21   joerg # Implemented on top of our atomic interface.
     28      1.21   joerg #GENERIC_SRCS+= atomic.c
     29       1.2   joerg 
     30      1.10   joerg .if ${HAVE_LIBGCC_EH} == "no"
     31       1.2   joerg GENERIC_SRCS+= \
     32       1.2   joerg 	gcc_personality_v0.c
     33       1.6   joerg .endif
     34       1.2   joerg 
     35      1.35  martin GENERIC_SRCS+= \
     36      1.35  martin 	absvsi2.c \
     37      1.35  martin 	absvti2.c \
     38      1.35  martin 	addvsi3.c \
     39      1.35  martin 	addvti3.c \
     40      1.35  martin 	ashlti3.c \
     41      1.35  martin 	ashrti3.c \
     42      1.35  martin 	clzti2.c \
     43      1.35  martin 	cmpti2.c \
     44      1.35  martin 	ctzti2.c \
     45      1.35  martin 	divti3.c \
     46      1.35  martin 	ffsti2.c \
     47      1.35  martin 	fixsfdi.c \
     48      1.35  martin 	fixdfdi.c \
     49      1.35  martin 	fixunsdfdi.c \
     50      1.35  martin 	fixunsdfsi.c \
     51      1.35  martin 	fixunssfdi.c \
     52      1.35  martin 	fixunssfsi.c \
     53      1.35  martin 	fixunsxfdi.c \
     54      1.35  martin 	fixunsxfsi.c \
     55      1.35  martin 	int_util.c \
     56      1.35  martin 	lshrti3.c \
     57      1.35  martin 	modti3.c \
     58      1.35  martin 	muldc3.c \
     59      1.35  martin 	mulosi4.c \
     60      1.35  martin 	muloti4.c \
     61      1.35  martin 	multi3.c \
     62      1.35  martin 	mulvsi3.c \
     63      1.35  martin 	mulvti3.c \
     64      1.35  martin 	negti2.c \
     65      1.35  martin 	negvsi2.c \
     66      1.35  martin 	negvti2.c \
     67      1.35  martin 	paritysi2.c \
     68      1.35  martin 	parityti2.c \
     69      1.35  martin 	popcountsi2.c \
     70      1.35  martin 	popcountti2.c \
     71      1.35  martin 	subvsi3.c \
     72      1.35  martin 	subvti3.c \
     73      1.35  martin 	ucmpti2.c \
     74      1.35  martin 	udivmodti4.c \
     75      1.35  martin 	udivti3.c \
     76      1.35  martin 	umodti3.c
     77      1.35  martin 
     78      1.35  martin # only used for machines using IEEE 754 floating point formats
     79      1.35  martin .if ${MACHINE_ARCH} != "vax"
     80      1.35  martin 
     81       1.8   joerg .if 0
     82       1.2   joerg # Conflicts with soft-float
     83       1.2   joerg GENERIC_SRCS+= \
     84       1.2   joerg 	comparedf2.c \
     85       1.3   joerg 	comparesf2.c \
     86       1.3   joerg 	adddf3.c \
     87       1.3   joerg 	addsf3.c \
     88      1.23   joerg 	addtf3.c \
     89       1.3   joerg 	divdf3.c \
     90       1.3   joerg 	divsf3.c \
     91      1.23   joerg 	divtf3.c \
     92       1.3   joerg 	extendsfdf2.c \
     93      1.23   joerg 	extendsftf2.c \
     94      1.23   joerg 	extenddftf2.c \
     95      1.11   joerg 	fixdfsi.c \
     96       1.3   joerg 	fixdfti.c \
     97       1.3   joerg 	fixsfsi.c \
     98       1.3   joerg 	fixsfti.c \
     99       1.3   joerg 	floatsidf.c \
    100       1.3   joerg 	floatsisf.c \
    101       1.7   joerg 	floatunsidf.c \
    102       1.7   joerg 	floatunsisf.c \
    103       1.3   joerg 	muldf3.c \
    104       1.3   joerg 	mulsf3.c \
    105      1.23   joerg 	multf3.c \
    106       1.3   joerg 	subdf3.c \
    107       1.3   joerg 	subsf3.c \
    108      1.23   joerg 	subtf3.c \
    109      1.23   joerg 	truncdfsf2.c \
    110      1.23   joerg 	trunctfdf2.c \
    111      1.23   joerg 	trunctfsf2.c
    112       1.2   joerg .endif
    113       1.2   joerg 
    114      1.35  martin GENERIC_SRCS+=	\
    115       1.1   joerg 	floatdidf.c \
    116       1.1   joerg 	floatdisf.c \
    117       1.1   joerg 	floatdixf.c \
    118       1.1   joerg 	floatundidf.c \
    119       1.1   joerg 	floatundisf.c \
    120       1.1   joerg 	floatundixf.c \
    121       1.1   joerg 	negdf2.c \
    122       1.1   joerg 	negsf2.c \
    123       1.1   joerg 	powidf2.c \
    124       1.1   joerg 	powisf2.c \
    125       1.1   joerg 	powitf2.c \
    126      1.35  martin 	powixf2.c
    127      1.35  martin 
    128      1.35  martin .endif # IEEE 754 only machines
    129       1.1   joerg 
    130      1.31  martin .if ${MACHINE_ARCH} != "m68k"
    131      1.31  martin GENERIC_SRCS+= \
    132      1.31  martin 	fixxfdi.c
    133      1.31  martin .endif
    134      1.31  martin 
    135      1.31  martin 
    136      1.22    matt .if ${MACHINE_ARCH} != "aarch64"
    137      1.22    matt GENERIC_SRCS+= \
    138      1.22    matt 	fixunsdfti.c \
    139      1.22    matt 	fixunssfti.c \
    140      1.22    matt 	fixunsxfti.c \
    141      1.22    matt 	fixxfti.c \
    142      1.22    matt 	floattidf.c \
    143      1.22    matt 	floattisf.c \
    144      1.22    matt 	floattixf.c \
    145      1.22    matt 	floatuntidf.c \
    146      1.22    matt 	floatuntisf.c \
    147      1.22    matt 	floatuntixf.c
    148      1.22    matt .endif
    149      1.22    matt 
    150      1.22    matt # These have h/w instructions which are always used.
    151      1.27    matt .if ${LIBC_MACHINE_ARCH} != "alpha" && ${LIBC_MACHINE_CPU} != "aarch64" \
    152      1.27    matt     && ${LIBC_MACHINE_CPU} != "powerpc" && ${LIBC_MACHINE_CPU} != "or1k"
    153      1.26    matt GENERIC_SRCS+= \
    154      1.26    matt 	clzsi2.c
    155      1.26    matt .endif
    156      1.26    matt 
    157      1.26    matt # These have h/w instructions which are always used.
    158      1.27    matt .if ${LIBC_MACHINE_ARCH} != "alpha" && ${LIBC_MACHINE_ARCH} != "vax" \
    159      1.27    matt     && ${LIBC_MACHINE_CPU} != "aarch64" && ${LIBC_MACHINE_CPU} != "powerpc" \
    160      1.27    matt     && ${LIBC_MACHINE_CPU} != "or1k"
    161      1.27    matt GENERIC_SRCS+= \
    162      1.27    matt 	ctzsi2.c
    163      1.27    matt .endif
    164      1.27    matt 
    165      1.27    matt # These have h/w instructions which are always used.
    166      1.26    matt .if ${LIBC_MACHINE_ARCH} != "alpha" && ${LIBC_MACHINE_CPU} != "powerpc" \
    167      1.24    matt     && ${LIBC_MACHINE_CPU} != "aarch64" && ${LIBC_MACHINE_ARCH} != "vax"
    168      1.22    matt GENERIC_SRCS+= \
    169      1.22    matt 	divmodsi4.c \
    170      1.22    matt 	divsi3.c \
    171      1.22    matt 	modsi3.c \
    172      1.22    matt 	udivmodsi4.c \
    173      1.22    matt 	umodsi3.c
    174      1.22    matt 
    175      1.24    matt . if ${LIBC_MACHINE_CPU} != "sh3"
    176      1.17     uwe # On sh3 __udivsi3 is gcc "millicode" with special calling convention
    177      1.17     uwe # (less registers clobbered than usual).  Each DSO that needs it gets
    178      1.17     uwe # its own hidden copy from libgcc.a.
    179      1.17     uwe GENERIC_SRCS+= \
    180      1.17     uwe 	udivsi3.c
    181      1.22    matt . endif
    182      1.17     uwe .endif
    183      1.17     uwe 
    184      1.22    matt 
    185       1.4   joerg GENERIC_SRCS+= \
    186       1.5    matt 	absvdi2.c \
    187       1.5    matt 	addvdi3.c \
    188       1.5    matt 	mulodi4.c \
    189       1.5    matt 	mulvdi3.c \
    190       1.5    matt 	negvdi2.c \
    191       1.5    matt 	paritydi2.c \
    192       1.5    matt 	popcountdi2.c \
    193       1.5    matt 	subvdi3.c
    194       1.5    matt 
    195      1.22    matt # These have h/w instructions which are always used.
    196      1.24    matt .if ${LIBC_MACHINE_ARCH} != "alpha" && ${LIBC_MACHINE_CPU} != "powerpc64" \
    197      1.27    matt     && ${LIBC_MACHINE_ARCH} != "aarch64" && ${LIBC_MACHINE_CPU} != "or1k"
    198      1.22    matt GENERIC_SRCS+= \
    199      1.22    matt 	clzdi2.c \
    200      1.22    matt 	ctzdi2.c \
    201      1.22    matt 	ffsdi2.c
    202      1.22    matt .endif
    203      1.22    matt 
    204      1.22    matt # Don't need these on 64-bit machines.
    205      1.12   joerg .if empty(LIBC_MACHINE_ARCH:M*64*) && ${LIBC_MACHINE_ARCH} != "alpha"
    206       1.5    matt GENERIC_SRCS+= \
    207       1.5    matt 	cmpdi2.c \
    208       1.5    matt 	ashldi3.c \
    209       1.5    matt 	ashrdi3.c \
    210       1.5    matt 	divdi3.c \
    211       1.5    matt 	divmoddi4.c \
    212       1.5    matt 	lshrdi3.c \
    213       1.5    matt 	moddi3.c \
    214       1.5    matt 	muldi3.c \
    215       1.5    matt 	negdi2.c \
    216       1.5    matt 	ucmpdi2.c \
    217       1.5    matt 	udivdi3.c \
    218       1.5    matt 	udivmoddi4.c \
    219       1.5    matt 	umoddi3.c
    220       1.5    matt .endif
    221       1.5    matt 
    222       1.5    matt GENERIC_SRCS+= \
    223       1.4   joerg 	GCDAProfiling.c \
    224      1.18   joerg 	InstrProfiling.c \
    225      1.18   joerg 	InstrProfilingBuffer.c \
    226      1.18   joerg 	InstrProfilingFile.c \
    227      1.28   joerg 	InstrProfilingPlatformLinux.c \
    228      1.28   joerg 	InstrProfilingUtil.c \
    229      1.28   joerg 	InstrProfilingValue.c \
    230      1.28   joerg 	InstrProfilingWriter.c
    231      1.28   joerg 
    232      1.29    adam .if ${MKPROFILE} != "no"
    233      1.28   joerg POBJS+= InstrProfilingRuntime.po
    234      1.29    adam .endif
    235       1.4   joerg 
    236      1.25   joerg .if ${LIBC_MACHINE_ARCH} == "powerpc" || ${LIBC_MACHINE_ARCH} == "powerpc64"
    237       1.1   joerg GENERIC_SRCS+= \
    238       1.1   joerg 	fixtfdi.c \
    239       1.1   joerg 	fixunstfdi.c \
    240       1.1   joerg 	floatditf.c \
    241       1.1   joerg 	floatunditf.c \
    242       1.1   joerg 	gcc_qadd.c \
    243       1.1   joerg 	gcc_qdiv.c \
    244       1.1   joerg 	gcc_qmul.c \
    245       1.1   joerg 	gcc_qsub.c
    246       1.1   joerg .endif
    247       1.1   joerg 
    248      1.24    matt .if ${LIBC_MACHINE_CPU} == "aarch64"
    249      1.22    matt GENERIC_SRCS+= \
    250      1.22    matt 	clear_cache.c
    251      1.22    matt .endif
    252      1.22    matt 
    253      1.34   joerg .if ${LIBC_MACHINE_ARCH} == "powerpc" || ${LIBC_MACHINE_ARCH} == "powerpc64"
    254      1.34   joerg GENERIC_SRCS+= \
    255      1.34   joerg 	clear_cache.c
    256      1.34   joerg .endif
    257      1.34   joerg 
    258      1.33   joerg .if ${LIBC_MACHINE_ARCH} == "sparc" || ${LIBC_MACHINE_ARCH} == "sparc64"
    259      1.32   joerg GENERIC_SRCS+= \
    260      1.32   joerg 	clear_cache.c
    261      1.32   joerg .endif
    262      1.32   joerg 
    263      1.24    matt .if ${LIBC_MACHINE_CPU} == "arm"
    264       1.2   joerg .if !empty(LIBC_MACHINE_ARCH:Mearm*)
    265       1.2   joerg GENERIC_SRCS+= \
    266       1.2   joerg 	aeabi_idivmod.S \
    267       1.2   joerg 	aeabi_ldivmod.S \
    268       1.2   joerg 	aeabi_uidivmod.S \
    269       1.2   joerg 	aeabi_uldivmod.S
    270       1.2   joerg .endif
    271      1.13   joerg GENERIC_SRCS+= \
    272      1.13   joerg 	clear_cache.c
    273       1.9   joerg # Not yet, overlaps with softfloat
    274       1.9   joerg #	aeabi_dcmp.S \
    275       1.9   joerg #	aeabi_fcmp.S
    276       1.3   joerg # Not yet, requires ARMv6
    277       1.3   joerg #GENERIC_SRCS+= \
    278       1.3   joerg #	bswapdi2.S \
    279       1.3   joerg #	bswapsi2.S
    280       1.2   joerg .endif
    281       1.2   joerg 
    282       1.1   joerg .for src in ${GENERIC_SRCS}
    283       1.1   joerg .  if exists(${COMPILER_RT_CPU_DIR}/${src:R}.S) || \
    284       1.1   joerg       exists(${COMPILER_RT_ARCH_DIR}/${src:R}.S)
    285       1.1   joerg SRCS+=	${src:R}.S
    286       1.1   joerg .  else
    287       1.1   joerg SRCS+=	${src}
    288      1.19   joerg .    if ${src:E} != "cc"
    289       1.2   joerg COPTS.${src}+=	-Wno-missing-prototypes \
    290       1.2   joerg 		-Wno-old-style-definition \
    291       1.2   joerg 		-Wno-strict-prototypes \
    292      1.20   joerg 		-Wno-uninitialized \
    293      1.20   joerg 		-Wno-cast-qual
    294      1.19   joerg .    endif
    295       1.1   joerg .  endif
    296      1.30  martin .if ${MKSOFTFLOAT:Uno} != "no"
    297      1.30  martin COPTS.${src}+=	-D__SOFT_FP__
    298      1.30  martin .endif
    299       1.1   joerg .endfor
    300  1.35.6.1  martin 
    301  1.35.6.1  martin .include "${COMPILER_RT_DIR}/abi.mk"
    302