# Don't build libgcc.a with debug info
LIBGCC2_DEBUG_CFLAGS =

# We provide our own implementation for __clear_cache, using a
# VxWorks specific entry point.
LIB2FUNCS_EXCLUDE += _clear_cache

# Arrange to have the correct target headers used when compiling
# libgcc.  We specifically need to handle VxWorks system headers
# having names that collide with GCC's internal headers.
#
# For example, compiling gthr-vxworks.c #includes <taskLib.h>
# which in turn #includes <regs.h>, which exists both in the gcc
# source tree and as a VxWorks system header.  We need that
# #include to get the VxWorks version, not the compiler one.
#
# We still need to make sure that the local libgcc headers prevail
# (e.g. ./unwind.h), and that gcc provided header files intended
# to be user visible eventually are visible as well (gcc/include
# and gcc/include-fixed).
#
# The latter are added unconditionally as -isystem during regular
# cross builds via the %I spec processing and search paths introduced
# by -B options. These take priority over whatever we can add here,
# even with -nostdinc, and end up at the tail of the search chain.
#
# We keep explicit options nevertheless, to accommodate canadian
# setups where the libraries are built with an installed cross compiler,
# without -B.  Also note, incidentally, that the detection of duplicate
# paths differs between Windows and Linux hosts as the latter can perform
# inode based checks while the former may only rely on name comparisons.

LIBGCC2_INCLUDES = -nostdinc -include vxworks-predef.h -I. \
  $(if $(findstring vxworks7, $(target_noncanonical)), \
    -I=/../../h -I=/../../share/h -I=/system -I=/public, \
    -I=/ -I=/wrn/coreip) \
  -isystem $(MULTIBUILDTOP)../../gcc/include-fixed$(MULTISUBDIR) \
  -isystem $(MULTIBUILDTOP)../../gcc/include

# The aarch64-vx7r2 objLibP.h defines an inline function with unused
# parameters.  Ideally using -isystem instead of -I above would work
# around that, but then we get conflicts between GCC's and VxWorks'
# regs.h.

LIBGCC2_CFLAGS += -Wno-error=unused-parameter

# aarch64-vx7r2 also gets complaints about dropping volatile
# qualifiers in vxTas calls taking a pointer to __vx_tas_t.
# An explicit cast doesn't avoid the warning, alas.

LIBGCC2_CFLAGS += -Wno-error=discarded-qualifiers

# Use these also for the vxcrstuff objects (.e.g for version.h), on top of
# the options possibly already set specifically for the target:
CRTSTUFF_T_CFLAGS += $(LIBGCC2_INCLUDES)
