Home | History | Annotate | Line # | Download | only in compiler_rt
Makefile.inc revision 1.31
      1  1.31  martin # $NetBSD: Makefile.inc,v 1.31 2016/03/30 07:25:33 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 	floatdidf.c \
     88   1.1   joerg 	floatdisf.c \
     89   1.1   joerg 	floatdixf.c \
     90   1.1   joerg 	floatundidf.c \
     91   1.1   joerg 	floatundisf.c \
     92   1.1   joerg 	floatundixf.c \
     93   1.1   joerg 	int_util.c \
     94   1.1   joerg 	lshrti3.c \
     95   1.1   joerg 	modti3.c \
     96   1.1   joerg 	muldc3.c \
     97   1.1   joerg 	mulosi4.c \
     98   1.1   joerg 	muloti4.c \
     99   1.1   joerg 	multi3.c \
    100   1.1   joerg 	mulvsi3.c \
    101   1.1   joerg 	mulvti3.c \
    102   1.1   joerg 	negdf2.c \
    103   1.1   joerg 	negsf2.c \
    104   1.1   joerg 	negti2.c \
    105   1.1   joerg 	negvsi2.c \
    106   1.1   joerg 	negvti2.c \
    107   1.1   joerg 	paritysi2.c \
    108   1.1   joerg 	parityti2.c \
    109   1.1   joerg 	popcountsi2.c \
    110   1.1   joerg 	popcountti2.c \
    111   1.1   joerg 	powidf2.c \
    112   1.1   joerg 	powisf2.c \
    113   1.1   joerg 	powitf2.c \
    114   1.1   joerg 	powixf2.c \
    115   1.1   joerg 	subvsi3.c \
    116   1.1   joerg 	subvti3.c \
    117   1.1   joerg 	ucmpti2.c \
    118   1.1   joerg 	udivmodti4.c \
    119   1.1   joerg 	udivti3.c \
    120   1.1   joerg 	umodti3.c
    121   1.1   joerg 
    122  1.31  martin .if ${MACHINE_ARCH} != "m68k"
    123  1.31  martin GENERIC_SRCS+= \
    124  1.31  martin 	fixxfdi.c
    125  1.31  martin .endif
    126  1.31  martin 
    127  1.31  martin 
    128  1.22    matt .if ${MACHINE_ARCH} != "aarch64"
    129  1.22    matt GENERIC_SRCS+= \
    130  1.22    matt 	fixunsdfti.c \
    131  1.22    matt 	fixunssfti.c \
    132  1.22    matt 	fixunsxfti.c \
    133  1.22    matt 	fixxfti.c \
    134  1.22    matt 	floattidf.c \
    135  1.22    matt 	floattisf.c \
    136  1.22    matt 	floattixf.c \
    137  1.22    matt 	floatuntidf.c \
    138  1.22    matt 	floatuntisf.c \
    139  1.22    matt 	floatuntixf.c
    140  1.22    matt .endif
    141  1.22    matt 
    142  1.22    matt # These have h/w instructions which are always used.
    143  1.27    matt .if ${LIBC_MACHINE_ARCH} != "alpha" && ${LIBC_MACHINE_CPU} != "aarch64" \
    144  1.27    matt     && ${LIBC_MACHINE_CPU} != "powerpc" && ${LIBC_MACHINE_CPU} != "or1k"
    145  1.26    matt GENERIC_SRCS+= \
    146  1.26    matt 	clzsi2.c
    147  1.26    matt .endif
    148  1.26    matt 
    149  1.26    matt # These have h/w instructions which are always used.
    150  1.27    matt .if ${LIBC_MACHINE_ARCH} != "alpha" && ${LIBC_MACHINE_ARCH} != "vax" \
    151  1.27    matt     && ${LIBC_MACHINE_CPU} != "aarch64" && ${LIBC_MACHINE_CPU} != "powerpc" \
    152  1.27    matt     && ${LIBC_MACHINE_CPU} != "or1k"
    153  1.27    matt GENERIC_SRCS+= \
    154  1.27    matt 	ctzsi2.c
    155  1.27    matt .endif
    156  1.27    matt 
    157  1.27    matt # These have h/w instructions which are always used.
    158  1.26    matt .if ${LIBC_MACHINE_ARCH} != "alpha" && ${LIBC_MACHINE_CPU} != "powerpc" \
    159  1.24    matt     && ${LIBC_MACHINE_CPU} != "aarch64" && ${LIBC_MACHINE_ARCH} != "vax"
    160  1.22    matt GENERIC_SRCS+= \
    161  1.22    matt 	divmodsi4.c \
    162  1.22    matt 	divsi3.c \
    163  1.22    matt 	modsi3.c \
    164  1.22    matt 	udivmodsi4.c \
    165  1.22    matt 	umodsi3.c
    166  1.22    matt 
    167  1.24    matt . if ${LIBC_MACHINE_CPU} != "sh3"
    168  1.17     uwe # On sh3 __udivsi3 is gcc "millicode" with special calling convention
    169  1.17     uwe # (less registers clobbered than usual).  Each DSO that needs it gets
    170  1.17     uwe # its own hidden copy from libgcc.a.
    171  1.17     uwe GENERIC_SRCS+= \
    172  1.17     uwe 	udivsi3.c
    173  1.22    matt . endif
    174  1.17     uwe .endif
    175  1.17     uwe 
    176  1.22    matt 
    177   1.4   joerg GENERIC_SRCS+= \
    178   1.5    matt 	absvdi2.c \
    179   1.5    matt 	addvdi3.c \
    180   1.5    matt 	mulodi4.c \
    181   1.5    matt 	mulvdi3.c \
    182   1.5    matt 	negvdi2.c \
    183   1.5    matt 	paritydi2.c \
    184   1.5    matt 	popcountdi2.c \
    185   1.5    matt 	subvdi3.c
    186   1.5    matt 
    187  1.22    matt # These have h/w instructions which are always used.
    188  1.24    matt .if ${LIBC_MACHINE_ARCH} != "alpha" && ${LIBC_MACHINE_CPU} != "powerpc64" \
    189  1.27    matt     && ${LIBC_MACHINE_ARCH} != "aarch64" && ${LIBC_MACHINE_CPU} != "or1k"
    190  1.22    matt GENERIC_SRCS+= \
    191  1.22    matt 	clzdi2.c \
    192  1.22    matt 	ctzdi2.c \
    193  1.22    matt 	ffsdi2.c
    194  1.22    matt .endif
    195  1.22    matt 
    196  1.22    matt # Don't need these on 64-bit machines.
    197  1.12   joerg .if empty(LIBC_MACHINE_ARCH:M*64*) && ${LIBC_MACHINE_ARCH} != "alpha"
    198   1.5    matt GENERIC_SRCS+= \
    199   1.5    matt 	cmpdi2.c \
    200   1.5    matt 	ashldi3.c \
    201   1.5    matt 	ashrdi3.c \
    202   1.5    matt 	divdi3.c \
    203   1.5    matt 	divmoddi4.c \
    204   1.5    matt 	lshrdi3.c \
    205   1.5    matt 	moddi3.c \
    206   1.5    matt 	muldi3.c \
    207   1.5    matt 	negdi2.c \
    208   1.5    matt 	ucmpdi2.c \
    209   1.5    matt 	udivdi3.c \
    210   1.5    matt 	udivmoddi4.c \
    211   1.5    matt 	umoddi3.c
    212   1.5    matt .endif
    213   1.5    matt 
    214   1.5    matt GENERIC_SRCS+= \
    215   1.4   joerg 	GCDAProfiling.c \
    216  1.18   joerg 	InstrProfiling.c \
    217  1.18   joerg 	InstrProfilingBuffer.c \
    218  1.18   joerg 	InstrProfilingFile.c \
    219  1.28   joerg 	InstrProfilingPlatformLinux.c \
    220  1.28   joerg 	InstrProfilingUtil.c \
    221  1.28   joerg 	InstrProfilingValue.c \
    222  1.28   joerg 	InstrProfilingWriter.c
    223  1.28   joerg 
    224  1.29    adam .if ${MKPROFILE} != "no"
    225  1.28   joerg POBJS+= InstrProfilingRuntime.po
    226  1.29    adam .endif
    227   1.4   joerg 
    228  1.25   joerg .if ${LIBC_MACHINE_ARCH} == "powerpc" || ${LIBC_MACHINE_ARCH} == "powerpc64"
    229   1.1   joerg GENERIC_SRCS+= \
    230   1.1   joerg 	fixtfdi.c \
    231   1.1   joerg 	fixunstfdi.c \
    232   1.1   joerg 	floatditf.c \
    233   1.1   joerg 	floatunditf.c \
    234   1.1   joerg 	gcc_qadd.c \
    235   1.1   joerg 	gcc_qdiv.c \
    236   1.1   joerg 	gcc_qmul.c \
    237   1.1   joerg 	gcc_qsub.c
    238   1.1   joerg .endif
    239   1.1   joerg 
    240  1.24    matt .if ${LIBC_MACHINE_CPU} == "aarch64"
    241  1.22    matt GENERIC_SRCS+= \
    242  1.22    matt 	clear_cache.c
    243  1.22    matt .endif
    244  1.22    matt 
    245  1.24    matt .if ${LIBC_MACHINE_CPU} == "arm"
    246   1.2   joerg .if !empty(LIBC_MACHINE_ARCH:Mearm*)
    247   1.2   joerg GENERIC_SRCS+= \
    248   1.2   joerg 	aeabi_idivmod.S \
    249   1.2   joerg 	aeabi_ldivmod.S \
    250   1.2   joerg 	aeabi_uidivmod.S \
    251   1.2   joerg 	aeabi_uldivmod.S
    252   1.2   joerg .endif
    253  1.13   joerg GENERIC_SRCS+= \
    254  1.13   joerg 	clear_cache.c
    255   1.9   joerg # Not yet, overlaps with softfloat
    256   1.9   joerg #	aeabi_dcmp.S \
    257   1.9   joerg #	aeabi_fcmp.S
    258   1.3   joerg # Not yet, requires ARMv6
    259   1.3   joerg #GENERIC_SRCS+= \
    260   1.3   joerg #	bswapdi2.S \
    261   1.3   joerg #	bswapsi2.S
    262   1.2   joerg .endif
    263   1.2   joerg 
    264   1.1   joerg .for src in ${GENERIC_SRCS}
    265   1.1   joerg .  if exists(${COMPILER_RT_CPU_DIR}/${src:R}.S) || \
    266   1.1   joerg       exists(${COMPILER_RT_ARCH_DIR}/${src:R}.S)
    267   1.1   joerg SRCS+=	${src:R}.S
    268   1.1   joerg .  else
    269   1.1   joerg SRCS+=	${src}
    270  1.19   joerg .    if ${src:E} != "cc"
    271   1.2   joerg COPTS.${src}+=	-Wno-missing-prototypes \
    272   1.2   joerg 		-Wno-old-style-definition \
    273   1.2   joerg 		-Wno-strict-prototypes \
    274  1.20   joerg 		-Wno-uninitialized \
    275  1.20   joerg 		-Wno-cast-qual
    276  1.19   joerg .    endif
    277   1.1   joerg .  endif
    278  1.30  martin .if ${MKSOFTFLOAT:Uno} != "no"
    279  1.30  martin COPTS.${src}+=	-D__SOFT_FP__
    280  1.30  martin .endif
    281   1.1   joerg .endfor
    282