Home | History | Annotate | Line # | Download | only in compiler_rt
Makefile.inc revision 1.24.2.1
      1  1.24.2.1  martin # $NetBSD: Makefile.inc,v 1.24.2.1 2014/08/20 13:49:28 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.16    matt .if ${LIBC_MACHINE_ARCH} == "powerpc"
      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.24    matt .if ${LIBC_MACHINE_ARCH} != "alpha" && ${LIBC_MACHINE_CPU} != "powerpc" \
    139  1.24.2.1  martin     && ${LIBC_MACHINE_CPU} != "aarch64"
    140  1.24.2.1  martin GENERIC_SRCS+= \
    141  1.24.2.1  martin 	clzsi2.c
    142  1.24.2.1  martin .endif
    143  1.24.2.1  martin 
    144  1.24.2.1  martin # These have h/w instructions which are always used.
    145  1.24.2.1  martin .if ${LIBC_MACHINE_ARCH} != "alpha" && ${LIBC_MACHINE_CPU} != "powerpc" \
    146      1.24    matt     && ${LIBC_MACHINE_CPU} != "aarch64" && ${LIBC_MACHINE_ARCH} != "vax"
    147      1.22    matt GENERIC_SRCS+= \
    148      1.22    matt 	ctzsi2.c \
    149      1.22    matt 	divmodsi4.c \
    150      1.22    matt 	divsi3.c \
    151      1.22    matt 	modsi3.c \
    152      1.22    matt 	udivmodsi4.c \
    153      1.22    matt 	umodsi3.c
    154      1.22    matt 
    155      1.24    matt . if ${LIBC_MACHINE_CPU} != "sh3"
    156      1.17     uwe # On sh3 __udivsi3 is gcc "millicode" with special calling convention
    157      1.17     uwe # (less registers clobbered than usual).  Each DSO that needs it gets
    158      1.17     uwe # its own hidden copy from libgcc.a.
    159      1.17     uwe GENERIC_SRCS+= \
    160      1.17     uwe 	udivsi3.c
    161      1.22    matt . endif
    162      1.17     uwe .endif
    163      1.17     uwe 
    164      1.22    matt 
    165       1.4   joerg GENERIC_SRCS+= \
    166       1.5    matt 	absvdi2.c \
    167       1.5    matt 	addvdi3.c \
    168       1.5    matt 	mulodi4.c \
    169       1.5    matt 	mulvdi3.c \
    170       1.5    matt 	negvdi2.c \
    171       1.5    matt 	paritydi2.c \
    172       1.5    matt 	popcountdi2.c \
    173       1.5    matt 	subvdi3.c
    174       1.5    matt 
    175      1.22    matt # These have h/w instructions which are always used.
    176      1.24    matt .if ${LIBC_MACHINE_ARCH} != "alpha" && ${LIBC_MACHINE_CPU} != "powerpc64" \
    177      1.24    matt     && ${LIBC_MACHINE_ARCH} != "aarch64"
    178      1.22    matt GENERIC_SRCS+= \
    179      1.22    matt 	clzdi2.c \
    180      1.22    matt 	ctzdi2.c \
    181      1.22    matt 	ffsdi2.c
    182      1.22    matt .endif
    183      1.22    matt 
    184      1.22    matt # Don't need these on 64-bit machines.
    185      1.12   joerg .if empty(LIBC_MACHINE_ARCH:M*64*) && ${LIBC_MACHINE_ARCH} != "alpha"
    186       1.5    matt GENERIC_SRCS+= \
    187       1.5    matt 	cmpdi2.c \
    188       1.5    matt 	ashldi3.c \
    189       1.5    matt 	ashrdi3.c \
    190       1.5    matt 	divdi3.c \
    191       1.5    matt 	divmoddi4.c \
    192       1.5    matt 	lshrdi3.c \
    193       1.5    matt 	moddi3.c \
    194       1.5    matt 	muldi3.c \
    195       1.5    matt 	negdi2.c \
    196       1.5    matt 	ucmpdi2.c \
    197       1.5    matt 	udivdi3.c \
    198       1.5    matt 	udivmoddi4.c \
    199       1.5    matt 	umoddi3.c
    200       1.5    matt .endif
    201       1.5    matt 
    202       1.5    matt GENERIC_SRCS+= \
    203       1.4   joerg 	GCDAProfiling.c \
    204      1.18   joerg 	InstrProfiling.c \
    205      1.18   joerg 	InstrProfilingBuffer.c \
    206      1.18   joerg 	InstrProfilingFile.c \
    207      1.18   joerg 	InstrProfilingPlatformOther.c
    208       1.4   joerg 
    209      1.16    matt .if ${LIBC_MACHINE_ARCH} == "powerpc"
    210       1.1   joerg GENERIC_SRCS+= \
    211       1.1   joerg 	fixtfdi.c \
    212       1.1   joerg 	fixunstfdi.c \
    213       1.1   joerg 	floatditf.c \
    214       1.1   joerg 	floatunditf.c \
    215       1.1   joerg 	gcc_qadd.c \
    216       1.1   joerg 	gcc_qdiv.c \
    217       1.1   joerg 	gcc_qmul.c \
    218       1.1   joerg 	gcc_qsub.c
    219       1.1   joerg .endif
    220       1.1   joerg 
    221      1.24    matt .if ${LIBC_MACHINE_CPU} == "aarch64"
    222      1.22    matt GENERIC_SRCS+= \
    223      1.22    matt 	clear_cache.c
    224      1.22    matt .endif
    225      1.22    matt 
    226      1.24    matt .if ${LIBC_MACHINE_CPU} == "arm"
    227       1.2   joerg .if !empty(LIBC_MACHINE_ARCH:Mearm*)
    228       1.2   joerg GENERIC_SRCS+= \
    229       1.2   joerg 	aeabi_idivmod.S \
    230       1.2   joerg 	aeabi_ldivmod.S \
    231       1.2   joerg 	aeabi_uidivmod.S \
    232       1.2   joerg 	aeabi_uldivmod.S
    233       1.2   joerg .endif
    234      1.13   joerg GENERIC_SRCS+= \
    235      1.13   joerg 	clear_cache.c
    236       1.9   joerg # Not yet, overlaps with softfloat
    237       1.9   joerg #	aeabi_dcmp.S \
    238       1.9   joerg #	aeabi_fcmp.S
    239       1.3   joerg # Not yet, requires ARMv6
    240       1.3   joerg #GENERIC_SRCS+= \
    241       1.3   joerg #	bswapdi2.S \
    242       1.3   joerg #	bswapsi2.S
    243       1.2   joerg .endif
    244       1.2   joerg 
    245       1.1   joerg .for src in ${GENERIC_SRCS}
    246       1.1   joerg .  if exists(${COMPILER_RT_CPU_DIR}/${src:R}.S) || \
    247       1.1   joerg       exists(${COMPILER_RT_ARCH_DIR}/${src:R}.S)
    248       1.1   joerg SRCS+=	${src:R}.S
    249       1.1   joerg .  else
    250       1.1   joerg SRCS+=	${src}
    251      1.19   joerg .    if ${src:E} != "cc"
    252       1.2   joerg COPTS.${src}+=	-Wno-missing-prototypes \
    253       1.2   joerg 		-Wno-old-style-definition \
    254       1.2   joerg 		-Wno-strict-prototypes \
    255      1.20   joerg 		-Wno-uninitialized \
    256      1.20   joerg 		-Wno-cast-qual
    257      1.19   joerg .    endif
    258       1.1   joerg .  endif
    259       1.1   joerg .endfor
    260