# Copyright (C) 2002-2022 Free Software Foundation, Inc.
#
# 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/>.

vxworks-driver.o: $(srcdir)/config/vxworks-driver.cc
	$(COMPILE) $<
	$(POSTCOMPILE)

vxworks.o: $(srcdir)/config/vxworks.cc
	$(COMPILE) $<
	$(POSTCOMPILE)

vxworks-c.o: $(srcdir)/config/vxworks-c.cc
	$(COMPILE) $<
	$(POSTCOMPILE)

# We leverage $sysroot to find target system headers only, distributed
# in a VxWorks (a)typical fashion with a different set of headers for
# rtp vs kernel mode.  We setup SYSROOT_HEADERS_SUFFIX_SPEC to handle
# this, and need to clear NATIVE_SYSTEM_HEADER_DIR to prevent it from
# interfering.

NATIVE_SYSTEM_HEADER_DIR =

# Both the kernel and RTP headers provide limits.h.  They embed VxWorks
# specificities and are dated on some configurations so we both need to
# provide our own version and make sure the system one gets exposed.

LIMITS_H_TEST = true

# VxWorks system environments have been GCC based for a long time and
# we need to make sure that our files and the system ones use distinct
# macro names to protect against recursive inclusions.  We achieve
# this by modifying the GLIMITS_H fragment that goes into limits.h
# with some version indication in the inclusion-protection macro
# names.

T_GLIMITS_H = vxw-glimits.h

vxw-glimits.h: $(srcdir)/glimits.h
	ID=`echo $(BASEVER_c) | sed -e 's/\./_/g'` && \
	sed -e "s/_LIMITS_H__/_LIMITS_H__$${ID}_/" < $< > $@T
	mv $@T $@

# Arrange to "provide" a tailored version of stdint-gcc.h

T_STDINT_GCC_H = vxw-stdint-gcc.h

vxw-stdint-gcc.h: $(srcdir)/ginclude/stdint-gcc.h
	sed -e "/#define _GCC_STDINT_H/ a #include <_yvals.h>" < $< > $@T
	mv $@T $@
