Home | History | Annotate | Line # | Download | only in compiler_rt
Makefile.inc revision 1.55
      1 # $NetBSD: Makefile.inc,v 1.55 2025/09/10 23:07:39 nat Exp $
      2 
      3 COMPILER_RT_DIR=	${NETBSDSRCDIR}/sys/external/bsd/compiler_rt
      4 COMPILER_RT_SRCDIR=	${COMPILER_RT_DIR}/dist
      5 
      6 .if ${LIBC_MACHINE_ARCH} == "powerpc" || ${LIBC_MACHINE_ARCH} == "powerpc64"
      7 COMPILER_RT_CPU_DIR=	${COMPILER_RT_SRCDIR}/lib/builtins/ppc
      8 COMPILER_RT_ARCH_DIR=	${COMPILER_RT_SRCDIR}/lib/builtins/ppc
      9 .else
     10 COMPILER_RT_CPU_DIR=	${COMPILER_RT_SRCDIR}/lib/builtins/${LIBC_MACHINE_CPU}
     11 COMPILER_RT_ARCH_DIR=	${COMPILER_RT_SRCDIR}/lib/builtins/${LIBC_MACHINE_ARCH}
     12 .endif
     13 
     14 .PATH: ${COMPILER_RT_CPU_DIR}
     15 .PATH: ${COMPILER_RT_ARCH_DIR}
     16 .PATH: ${COMPILER_RT_SRCDIR}/lib/builtins
     17 .PATH: ${COMPILER_RT_SRCDIR}/lib/profile
     18 
     19 # Complex support needs parts of libm
     20 #GENERIC_SRCS+=
     21 #	mulxc3.c \
     22 #	mulsc3.c \
     23 #	divxc3.c \
     24 #	divdc3.c \
     25 #	divsc3.c
     26 
     27 # Implemented on top of our atomic interface.
     28 #GENERIC_SRCS+= atomic.c
     29 
     30 .if ${HAVE_LIBGCC_EH} == "no"
     31 GENERIC_SRCS+= \
     32 	gcc_personality_v0.c
     33 .endif
     34 
     35 GENERIC_SRCS+= \
     36 	absvsi2.c \
     37 	absvti2.c \
     38 	addvsi3.c \
     39 	addvti3.c \
     40 	ashlti3.c \
     41 	ashrti3.c \
     42 	clzti2.c \
     43 	cmpti2.c \
     44 	ctzti2.c \
     45 	divti3.c \
     46 	ffsti2.c \
     47 	fixsfdi.c \
     48 	fixdfdi.c \
     49 	fixunsdfdi.c \
     50 	fixunsdfsi.c \
     51 	fixunssfdi.c \
     52 	fixunssfsi.c \
     53 	fixunsxfdi.c \
     54 	fixunsxfsi.c \
     55 	int_util.c \
     56 	lshrti3.c \
     57 	modti3.c \
     58 	muldc3.c \
     59 	mulosi4.c \
     60 	muloti4.c \
     61 	multi3.c \
     62 	mulvsi3.c \
     63 	mulvti3.c \
     64 	negti2.c \
     65 	negvsi2.c \
     66 	negvti2.c \
     67 	paritysi2.c \
     68 	parityti2.c \
     69 	popcountsi2.c \
     70 	popcountti2.c \
     71 	subvsi3.c \
     72 	subvti3.c \
     73 	ucmpti2.c \
     74 	udivmodti4.c \
     75 	udivti3.c \
     76 	umodti3.c
     77 
     78 # only used for machines using IEEE 754 floating point formats
     79 .if ${LIBC_MACHINE_ARCH} != "vax"
     80 
     81 .if 0
     82 # Conflicts with soft-float
     83 GENERIC_SRCS+= \
     84 	comparedf2.c \
     85 	comparesf2.c \
     86 	adddf3.c \
     87 	addsf3.c \
     88 	addtf3.c \
     89 	divdf3.c \
     90 	divsf3.c \
     91 	divtf3.c \
     92 	extendsfdf2.c \
     93 	extendsftf2.c \
     94 	extenddftf2.c \
     95 	fixdfsi.c \
     96 	fixdfti.c \
     97 	fixsfsi.c \
     98 	fixsfti.c \
     99 	floatsidf.c \
    100 	floatsisf.c \
    101 	floatunsidf.c \
    102 	floatunsisf.c \
    103 	muldf3.c \
    104 	mulsf3.c \
    105 	multf3.c \
    106 	subdf3.c \
    107 	subsf3.c \
    108 	subtf3.c \
    109 	truncdfsf2.c \
    110 	trunctfdf2.c \
    111 	trunctfsf2.c
    112 .endif
    113 
    114 GENERIC_SRCS+=	\
    115 	floatdidf.c \
    116 	floatdisf.c \
    117 	floatdixf.c \
    118 	floatundidf.c \
    119 	floatundisf.c \
    120 	floatundixf.c \
    121 	powidf2.c \
    122 	powisf2.c \
    123 	powitf2.c \
    124 	powixf2.c
    125 
    126 .  if ${MKLIBCSOFTFLOAT} != "no" || ${MKSOFTFLOAT} == "no"
    127 GENERIC_SRCS+=	\
    128 	negdf2.c \
    129 	negsf2.c
    130 .  endif
    131 .endif # IEEE 754 only machines
    132 
    133 .if ${LIBC_MACHINE_ARCH} != "m68k"
    134 GENERIC_SRCS+= \
    135 	fixxfdi.c
    136 .endif
    137 
    138 
    139 .if ${LIBC_MACHINE_CPU} == "aarch64"
    140 GENERIC_SRCS+= \
    141 	comparetf2.c
    142 LINTFLAGS.comparetf2.c += -X 132
    143 .endif
    144 
    145 GENERIC_SRCS+= \
    146 	fixunsdfti.c \
    147 	fixunssfti.c \
    148 	fixunsxfti.c \
    149 	fixxfti.c \
    150 	floattidf.c \
    151 	floattisf.c \
    152 	floattixf.c \
    153 	floatuntidf.c \
    154 	floatuntisf.c \
    155 	floatuntixf.c
    156 
    157 # These have h/w instructions which are always used.
    158 .if ${LIBC_MACHINE_ARCH} != "alpha" && ${LIBC_MACHINE_CPU} != "aarch64" \
    159     && ${LIBC_MACHINE_CPU} != "powerpc" && ${LIBC_MACHINE_CPU} != "or1k"
    160 GENERIC_SRCS+= \
    161 	clzsi2.c
    162 .endif
    163 
    164 # These have h/w instructions which are always used.
    165 .if ${LIBC_MACHINE_ARCH} != "alpha" && ${LIBC_MACHINE_ARCH} != "vax" \
    166     && ${LIBC_MACHINE_CPU} != "aarch64" && ${LIBC_MACHINE_CPU} != "powerpc" \
    167     && ${LIBC_MACHINE_CPU} != "or1k"
    168 GENERIC_SRCS+= \
    169 	ctzsi2.c
    170 .endif
    171 
    172 # These have h/w instructions which are always used.
    173 .if ${LIBC_MACHINE_ARCH} != "alpha" && ${LIBC_MACHINE_CPU} != "powerpc" \
    174     && ${LIBC_MACHINE_CPU} != "aarch64" && ${LIBC_MACHINE_ARCH} != "vax"
    175 GENERIC_SRCS+= \
    176 	divmodsi4.c \
    177 	divsi3.c \
    178 	modsi3.c \
    179 	udivmodsi4.c \
    180 	umodsi3.c
    181 
    182 . if ${LIBC_MACHINE_CPU} != "sh3"
    183 # On sh3 __udivsi3 is gcc "millicode" with special calling convention
    184 # (less registers clobbered than usual).  Each DSO that needs it gets
    185 # its own hidden copy from libgcc.a.
    186 GENERIC_SRCS+= \
    187 	udivsi3.c
    188 . endif
    189 .endif
    190 
    191 
    192 GENERIC_SRCS+= \
    193 	absvdi2.c \
    194 	addvdi3.c \
    195 	mulodi4.c \
    196 	mulvdi3.c \
    197 	negvdi2.c \
    198 	paritydi2.c \
    199 	popcountdi2.c \
    200 	subvdi3.c
    201 
    202 # These have h/w instructions which are always used.
    203 .if ${LIBC_MACHINE_ARCH} != "alpha" && ${LIBC_MACHINE_CPU} != "powerpc64" \
    204     && ${LIBC_MACHINE_CPU} != "aarch64" && ${LIBC_MACHINE_CPU} != "or1k"
    205 GENERIC_SRCS+= \
    206 	clzdi2.c \
    207 	ctzdi2.c \
    208 	ffsdi2.c
    209 .endif
    210 
    211 # Don't need these on 64-bit machines.
    212 .if empty(LIBC_MACHINE_ARCH:M*64*) && ${LIBC_MACHINE_ARCH} != "alpha"
    213 GENERIC_SRCS+= \
    214 	cmpdi2.c \
    215 	ashldi3.c \
    216 	ashrdi3.c \
    217 	divdi3.c \
    218 	divmoddi4.c \
    219 	lshrdi3.c \
    220 	moddi3.c \
    221 	muldi3.c \
    222 	negdi2.c \
    223 	ucmpdi2.c \
    224 	udivdi3.c \
    225 	udivmoddi4.c \
    226 	umoddi3.c
    227 .endif
    228 
    229 GENERIC_SRCS+= \
    230 	GCDAProfiling.c \
    231 	InstrProfiling.c \
    232 	InstrProfilingBuffer.c \
    233 	InstrProfilingFile.c \
    234 	InstrProfilingPlatformLinux.c \
    235 	InstrProfilingUtil.c \
    236 	InstrProfilingValue.c \
    237 	InstrProfilingWriter.c
    238 
    239 .if ${MKPROFILE} != "no"
    240 POBJS+= InstrProfilingRuntime.po
    241 .endif
    242 
    243 .if ${LIBC_MACHINE_ARCH} == "powerpc" || ${LIBC_MACHINE_ARCH} == "powerpc64"
    244 GENERIC_SRCS+= \
    245 	fixtfdi.c \
    246 	fixunstfdi.c \
    247 	floatditf.c \
    248 	floatunditf.c \
    249 	gcc_qadd.c \
    250 	gcc_qdiv.c \
    251 	gcc_qmul.c \
    252 	gcc_qsub.c
    253 .endif
    254 
    255 .if ${LIBC_MACHINE_CPU} == "aarch64"
    256 GENERIC_SRCS+= \
    257 	clear_cache.c \
    258 	addtf3.c \
    259 	divtf3.c \
    260 	multf3.c \
    261 	subtf3.c \
    262 	trunctfsf2.c \
    263 	trunctfdf2.c \
    264 	fixdfti.c \
    265 	fixtfsi.c \
    266 	fixtfdi.c \
    267 	extendsftf2.c \
    268 	extenddftf2.c \
    269 	floatunsitf.c \
    270 	floatunditf.c \
    271 	floatsitf.c \
    272 	floatditf.c
    273 LINTFLAGS.addtf3.c += -X 132
    274 LINTFLAGS.divtf3.c += -X 132
    275 LINTFLAGS.extenddftf2.c += -X 117,132
    276 LINTFLAGS.extendsftf2.c += -X 117,132
    277 LINTFLAGS.fixdfti.c += -X 132,309
    278 LINTFLAGS.fixtfdi.c += -X 132
    279 LINTFLAGS.fixtfsi.c += -X 132
    280 LINTFLAGS.floatditf.c += -X 132
    281 LINTFLAGS.floatsitf.c += -X 132
    282 LINTFLAGS.floatunsitf.c += -X 132
    283 LINTFLAGS.floatunditf.c += -X 132
    284 LINTFLAGS.multf3.c += -X 132
    285 LINTFLAGS.subtf3.c += -X 132
    286 LINTFLAGS.trunctfdf2.c += -X 117,132
    287 LINTFLAGS.trunctfsf2.c += -X 117,132
    288 .endif
    289 
    290 .if ${LIBC_MACHINE_ARCH} == "powerpc" || ${LIBC_MACHINE_ARCH} == "powerpc64"
    291 GENERIC_SRCS+= \
    292 	clear_cache.c
    293 .endif
    294 
    295 .if ${LIBC_MACHINE_ARCH} == "sparc" || ${LIBC_MACHINE_ARCH} == "sparc64"
    296 GENERIC_SRCS+= \
    297 	clear_cache.c
    298 .endif
    299 
    300 .if ${LIBC_MACHINE_CPU} == "arm"
    301 .if !empty(LIBC_MACHINE_ARCH:Mearm*)
    302 GENERIC_SRCS+= \
    303 	aeabi_idivmod.S \
    304 	aeabi_ldivmod.S \
    305 	aeabi_uidivmod.S \
    306 	aeabi_uldivmod.S
    307 .endif
    308 GENERIC_SRCS+= \
    309 	clear_cache.c
    310 # Not yet, overlaps with softfloat
    311 #	aeabi_dcmp.S \
    312 #	aeabi_fcmp.S
    313 # Not yet, requires ARMv6
    314 #GENERIC_SRCS+= \
    315 #	bswapdi2.S \
    316 #	bswapsi2.S
    317 .endif
    318 
    319 .for src in ${GENERIC_SRCS}
    320 .  if exists(${COMPILER_RT_CPU_DIR}/${src:R}.S) || \
    321       exists(${COMPILER_RT_ARCH_DIR}/${src:R}.S)
    322 SRCS+=	${src:R}.S
    323 .  else
    324 SRCS+=	${src}
    325 .    if ${src:E} != "cc"
    326 COPTS.${src}+=	-Wno-missing-prototypes \
    327 		-Wno-old-style-definition \
    328 		-Wno-strict-prototypes \
    329 		-Wno-uninitialized \
    330 		-Wno-cast-qual
    331 .    endif
    332 .  endif
    333 .if ${MKSOFTFLOAT:Uno} != "no"
    334 COPTS.${src}+=	-D__SOFT_FP__
    335 .endif
    336 .endfor
    337 
    338 LINTFLAGS.GCDAProfiling.c += -X 123,132,351 # Ok, this is just sloppy
    339 LINTFLAGS.GCDAProfiling.c += -X 286,287 # missing prototypes
    340 LINTFLAGS.GCDAProfiling.c += -X 298 # vax
    341 LINTFLAGS.InstrProfiling.c += -X 298 # vax
    342 LINTFLAGS.InstrProfiling.c += -X 351
    343 LINTFLAGS.InstrProfilingFile.c += -X 351
    344 LINTFLAGS.InstrProfilingPlatformLinux.c += -X 190,351
    345 LINTFLAGS.InstrProfilingValue.c += -X 132,231,275,351
    346 LINTFLAGS.InstrProfilingValue.c += -X 298 # vax
    347 LINTFLAGS.InstrProfilingWriter.c += -X 132
    348 LINTFLAGS.absvdi2.c += -X 117,351
    349 LINTFLAGS.absvsi2.c += -X 117,351
    350 LINTFLAGS.absvsi3.c += -X 351
    351 LINTFLAGS.absvti2.c += -X 117,351
    352 LINTFLAGS.addvdi3.c += -X 351
    353 LINTFLAGS.addvsi3.c += -X 351
    354 LINTFLAGS.addvti3.c += -X 351
    355 LINTFLAGS.ashlti3.c += -X 351
    356 LINTFLAGS.ashrdi3.c += -X 117 # vax
    357 LINTFLAGS.ashrti3.c += -X 117,351
    358 LINTFLAGS.clzdi2.c += -X 351
    359 LINTFLAGS.clzsi2.c += -X 351
    360 LINTFLAGS.cmpti2.c += -X 351
    361 LINTFLAGS.crtzi.c += -X 351
    362 LINTFLAGS.crzdi2.c += -X 351
    363 LINTFLAGS.ctzdi2.c += -X 351
    364 LINTFLAGS.ctzsi2.c += -X 351
    365 LINTFLAGS.ctzti2.c += -X 351
    366 LINTFLAGS.divdi3.c += -X 117 # vax
    367 LINTFLAGS.divmodsi4.c += -X 351
    368 LINTFLAGS.divsi3.c += -X 117
    369 LINTFLAGS.divtc3.c += -X 351	# ppc
    370 LINTFLAGS.divti3.c += -X 117,351
    371 LINTFLAGS.dlfcn_elf.c += -X 351
    372 LINTFLAGS.ffsdi2.c += -X 132,351
    373 LINTFLAGS.ffsti2.c += -X 132,351
    374 LINTFLAGS.fixdfdi.c += -X 132,309,351
    375 LINTFLAGS.fixdfsi.c += -X 132
    376 LINTFLAGS.fixsfdi.c += -X 132,351
    377 LINTFLAGS.fixunsdfdi.c += -X 132,309,351
    378 LINTFLAGS.fixunsdfsi.c += -X 132,309,351
    379 LINTFLAGS.fixunsdfti.c += -X 132,309,351
    380 LINTFLAGS.fixunssfdi.c += -X 132,309,351
    381 LINTFLAGS.fixunssfsi.c += -X 132,351
    382 LINTFLAGS.fixunssfti.c += -X 132,351
    383 LINTFLAGS.fixunsxfdi.c += -X 351
    384 LINTFLAGS.fixunsxfsi.c += -X 132,309,351
    385 LINTFLAGS.fixunsxfti.c += -X 132,351
    386 LINTFLAGS.fixxfdi.c += -X 351
    387 LINTFLAGS.fixxfti.c += -X 117,132,351
    388 LINTFLAGS.floatdidf.c += -X 117	# alpha
    389 LINTFLAGS.floatdidf.c += -X 351
    390 LINTFLAGS.floatdisf.c += -X 117	# alpha
    391 LINTFLAGS.floatdisf.c += -X 351
    392 LINTFLAGS.floatdixf.c += -X 117	# alpha
    393 LINTFLAGS.floatdixf.c += -X 351
    394 LINTFLAGS.floattidf.c += -X 117,122,141,267,351
    395 LINTFLAGS.floattisf.c += -X 117,351
    396 LINTFLAGS.floattisf.c += -X 117,351
    397 LINTFLAGS.floattixf.c += -X 117,122,351
    398 LINTFLAGS.floattixf.c += -X 141	# alpha
    399 LINTFLAGS.floatuntidf.c += -X 122,141,267,351
    400 LINTFLAGS.floatuntisf.c += -X 351
    401 LINTFLAGS.floatuntixf.c += -X 122,351
    402 LINTFLAGS.floatuntixf.c += -X 141 # alpha
    403 LINTFLAGS.gcc_personality_v0.c += -X 132,193,231
    404 LINTFLAGS.int_util.c += -X 231
    405 LINTFLAGS.lshrti3.c += -X 351
    406 LINTFLAGS.moddi3.c += -X 117 # vax
    407 LINTFLAGS.modsi3.c += -X 117,351
    408 LINTFLAGS.modti3.c += -X 117,351
    409 LINTFLAGS.muldc3.c += -X 117,351
    410 LINTFLAGS.mulodi4.c += -X 117,351
    411 LINTFLAGS.mulosi4.c += -X 117,351
    412 LINTFLAGS.muloti4.c += -X 117,351
    413 LINTFLAGS.multi3.c += -X 351
    414 LINTFLAGS.mulvdi3.c += -X 117,351
    415 LINTFLAGS.mulvsi3.c += -X 117,351
    416 LINTFLAGS.mulvti3.c += -X 117,351
    417 LINTFLAGS.negdf2.c += -X 309,351
    418 LINTFLAGS.negsf2.c += -X 132,351
    419 LINTFLAGS.negti2.c += -X 351
    420 LINTFLAGS.negvdi2.c += -X 141,351
    421 LINTFLAGS.negvsi2.c += -X 141,351
    422 LINTFLAGS.negvti2.c += -X 141,351
    423 LINTFLAGS.parityti2.c += -X 351
    424 LINTFLAGS.popcountdi2.c += -X 351
    425 LINTFLAGS.popcountsi2.c += -X 351
    426 LINTFLAGS.popcountti2.c += -X 122,132,351
    427 LINTFLAGS.powidf2.c += -X 351
    428 LINTFLAGS.powisf2.c += -X 351
    429 LINTFLAGS.powixf2.c += -X 351
    430 LINTFLAGS.subvdi3.c += -X 351
    431 LINTFLAGS.subvsi3.c += -X 351
    432 LINTFLAGS.subvti3.c += -X 351
    433 LINTFLAGS.ucmpti2.c += -X 351
    434 LINTFLAGS.ucmpti2.c += -X 351
    435 LINTFLAGS.udivmoddi4.c += -X 117 # vax
    436 LINTFLAGS.udivmodti4.c += -X 117,132
    437 LINTFLAGS.udivsi3.c += -X 117
    438 LINTFLAGS.udivti3.c += -X 351
    439 LINTFLAGS.umodsi3.c += -X 351
    440 LINTFLAGS.umodti3.c += -X 351
    441 LINTFLAGS.gcc_personality_v0.c += ${${ACTIVE_CC} == "clang":? -X 298:}
    442 
    443 .include "${COMPILER_RT_DIR}/abi.mk"
    444