# Rules of newlib library makefile of Andes NDS32 cpu for GNU compiler
# Copyright (C) 2012-2023 Free Software Foundation, Inc.
# Contributed by Andes Technology Corporation.
#
# 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/>.

# Compiler flags to use when compiling 'libgcc2.c'
HOST_LIBGCC2_CFLAGS = -O2 -fwrapv


#LIB1ASMSRC   = nds32/lib1asmsrc-newlib.S
#LIB1ASMFUNCS = _divsi3 _modsi3 _udivsi3 _umodsi3

# List of functions not to build from libgcc2.c.
#LIB2FUNCS_EXCLUDE = _clzsi2

# List of extra C and assembler files(*.S) to add to static libgcc2.
#LIB2ADD_ST += $(srcdir)/config/nds32/lib2csrc-newlib/_clzsi2.c

# ------------------------------------------------------------------------
