Home | History | Annotate | Line # | Download | only in compiler_rt
Makefile.inc revision 1.30
      1  1.30  martin # $NetBSD: Makefile.inc,v 1.30 2016/03/26 07:31:11 martin 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.29    adam .if ${MKPROFILE} != "no"
    220  1.28   joerg POBJS+= InstrProfilingRuntime.po
    221  1.29    adam .endif
    222   1.4   joerg 
    223  1.25   joerg .if ${LIBC_MACHINE_ARCH} == "powerpc" || ${LIBC_MACHINE_ARCH} == "powerpc64"
    224   1.1   joerg GENERIC_SRCS+= \
    225   1.1   joerg 	fixtfdi.c \
    226   1.1   joerg 	fixunstfdi.c \
    227   1.1   joerg 	floatditf.c \
    228   1.1   joerg 	floatunditf.c \
    229   1.1   joerg 	gcc_qadd.c \
    230   1.1   joerg 	gcc_qdiv.c \
    231   1.1   joerg 	gcc_qmul.c \
    232   1.1   joerg 	gcc_qsub.c
    233   1.1   joerg .endif
    234   1.1   joerg 
    235  1.24    matt .if ${LIBC_MACHINE_CPU} == "aarch64"
    236  1.22    matt GENERIC_SRCS+= \
    237  1.22    matt 	clear_cache.c
    238  1.22    matt .endif
    239  1.22    matt 
    240  1.24    matt .if ${LIBC_MACHINE_CPU} == "arm"
    241   1.2   joerg .if !empty(LIBC_MACHINE_ARCH:Mearm*)
    242   1.2   joerg GENERIC_SRCS+= \
    243   1.2   joerg 	aeabi_idivmod.S \
    244   1.2   joerg 	aeabi_ldivmod.S \
    245   1.2   joerg 	aeabi_uidivmod.S \
    246   1.2   joerg 	aeabi_uldivmod.S
    247   1.2   joerg .endif
    248  1.13   joerg GENERIC_SRCS+= \
    249  1.13   joerg 	clear_cache.c
    250   1.9   joerg # Not yet, overlaps with softfloat
    251   1.9   joerg #	aeabi_dcmp.S \
    252   1.9   joerg #	aeabi_fcmp.S
    253   1.3   joerg # Not yet, requires ARMv6
    254   1.3   joerg #GENERIC_SRCS+= \
    255   1.3   joerg #	bswapdi2.S \
    256   1.3   joerg #	bswapsi2.S
    257   1.2   joerg .endif
    258   1.2   joerg 
    259   1.1   joerg .for src in ${GENERIC_SRCS}
    260   1.1   joerg .  if exists(${COMPILER_RT_CPU_DIR}/${src:R}.S) || \
    261   1.1   joerg       exists(${COMPILER_RT_ARCH_DIR}/${src:R}.S)
    262   1.1   joerg SRCS+=	${src:R}.S
    263   1.1   joerg .  else
    264   1.1   joerg SRCS+=	${src}
    265  1.19   joerg .    if ${src:E} != "cc"
    266   1.2   joerg COPTS.${src}+=	-Wno-missing-prototypes \
    267   1.2   joerg 		-Wno-old-style-definition \
    268   1.2   joerg 		-Wno-strict-prototypes \
    269  1.20   joerg 		-Wno-uninitialized \
    270  1.20   joerg 		-Wno-cast-qual
    271  1.19   joerg .    endif
    272   1.1   joerg .  endif
    273  1.30  martin .if ${MKSOFTFLOAT:Uno} != "no"
    274  1.30  martin COPTS.${src}+=	-D__SOFT_FP__
    275  1.30  martin .endif
    276   1.1   joerg .endfor
    277