# Copyright (C) 2004-2023 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/>.

# crtp, crtpg build rules
crtp.o: $(srcdir)/config/sol2/crtp.c
	$(crt_compile) $(CRTSTUFF_T_CFLAGS_S) -c $<
crtpg.o: $(srcdir)/config/sol2/crtpg.c
	$(crt_compile) $(CRTSTUFF_T_CFLAGS_S) -c $<

# gmon build rule
gmon.o:	$(srcdir)/config/sol2/gmon.c
	$(crt_compile) $(CRTSTUFF_T_CFLAGS_S) -c $<

# Assemble startup files.
crt1.o: $(srcdir)/config/$(cpu_type)/sol2-c1.S
	$(crt_compile) -c $<
gcrt1.o: $(srcdir)/config/$(cpu_type)/sol2-c1.S
	$(crt_compile) -c -DGCRT1 $<
