# Rules of glibc library makefile of Andes NDS32 cpu for GNU compiler
# Copyright (C) 2012-2021 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 -fPIC -fwrapv
LIB2ADD += $(srcdir)/config/nds32/linux-atomic.c

#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

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