# Makefile fragment for building LIBGCC for the Renesas RL78 target.
# Copyright (C) 2011-2023 Free Software Foundation, Inc.
# Contributed by Red Hat.
#
# This file is part of GCC.
#
# GCC is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published
# by the Free Software Foundation; either version 3, or (at your
# option) any later version.
#
# GCC is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.   See
# the GNU General Public License for more details.
#
# You should have received a copy of the  GNU General Public
# License along with GCC; see the file COPYING3.  If not see
# <http://www.gnu.org/licenses/>.

LIB2ADD = \
	$(srcdir)/config/rl78/trampoline.S \
	$(srcdir)/config/rl78/lib2shift.c \
	$(srcdir)/config/rl78/lshrsi3.S \
	$(srcdir)/config/rl78/mulsi3.S \
	$(srcdir)/config/rl78/divmodsi.S \
	$(srcdir)/config/rl78/divmodhi.S \
	$(srcdir)/config/rl78/divmodqi.S \
	$(srcdir)/config/rl78/signbit.S \
	$(srcdir)/config/rl78/bit-count.S \
	$(srcdir)/config/rl78/fpbit-sf.S \
	$(srcdir)/config/rl78/fpmath-sf.S \
	$(srcdir)/config/rl78/cmpsi2.S \
	$(srcdir)/config/rl78/adddi3.S \
	$(srcdir)/config/rl78/subdi3.S \
	$(srcdir)/config/rl78/umindi3.S \
	$(srcdir)/config/rl78/umaxdi3.S \
	$(srcdir)/config/rl78/smindi3.S \
	$(srcdir)/config/rl78/smaxdi3.S \
	$(srcdir)/config/rl78/anddi3.S

LIB2FUNCS_EXCLUDE = _clzhi2 _clzsi2 _ctzhi2 _ctzsi2 \
  _popcounthi2 _popcountsi2 \
  _parityhi2 _paritysi2 _ffssi2 _ffshi2 \
  _negate_sf _compare_sf _eq_sf _ne_sf _gt_sf _ge_sf \
  _lt_sf _le_sf _unord_sf \
  _si_to_sf _usi_to_sf \
  _sf_to_si   _sf_to_usi \
  _fixunssfsi _fixsfsi \
  _addsub_sf _mul_sf _div_sf

# Remove __gcc_bcmp from LIB2FUNCS_ST
LIB2FUNCS_ST = _eprintf
	
HOST_LIBGCC2_CFLAGS += -Os -ffunction-sections -fdata-sections
