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