# Copyright (C) 2000-2021 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/>.

HAVE_DOUBLE32 = $(findstring HAVE_DOUBLE32, $(tm_defines))
HAVE_DOUBLE64 = $(findstring HAVE_DOUBLE64, $(tm_defines))
HAVE_LONG_DOUBLE32 = $(findstring HAVE_LONG_DOUBLE32, $(tm_defines))
HAVE_LONG_DOUBLE64 = $(findstring HAVE_LONG_DOUBLE64, $(tm_defines))
HAVE_LONG_DOUBLE_IS_DOUBLE = $(findstring HAVE_LONG_DOUBLE_IS_DOUBLE, $(tm_defines))

ifeq (WITH_DOUBLE32, $(findstring WITH_DOUBLE32, $(tm_defines)))
WITH_DOUBLE=32
endif

ifeq (WITH_DOUBLE64, $(findstring WITH_DOUBLE64, $(tm_defines)))
WITH_DOUBLE=64
endif

ifeq (WITH_LONG_DOUBLE32, $(findstring WITH_LONG_DOUBLE32, $(tm_defines)))
WITH_LONG_DOUBLE=32
endif

ifeq (WITH_LONG_DOUBLE64, $(findstring WITH_LONG_DOUBLE64, $(tm_defines)))
WITH_LONG_DOUBLE=64
endif

PASSES_EXTRA += $(srcdir)/config/avr/avr-passes.def

driver-avr.o: $(srcdir)/config/avr/driver-avr.c \
  $(CONFIG_H) $(SYSTEM_H) coretypes.h \
  $(srcdir)/config/avr/avr-arch.h $(TM_H)
	$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $<

avr-devices.o: $(srcdir)/config/avr/avr-devices.c \
  $(srcdir)/config/avr/avr-mcus.def \
  $(srcdir)/config/avr/avr-arch.h \
  $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H)
	$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $<

avr-c.o: $(srcdir)/config/avr/avr-c.c \
  $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) $(C_COMMON_H)
	$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $<

avr-log.o: $(srcdir)/config/avr/avr-log.c \
  $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) $(INPUT_H) dumpfile.h
	$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $<

avr.o avr-c.o: $(srcdir)/config/avr/builtins.def

# This overrides stdfix.h from USER_H which we supply and include
# in our own stdfix.h as stdfix-gcc.h.

EXTRA_HEADERS = $(srcdir)/config/avr/stdfix.h \
	      	stdfix-gcc.h

stdfix-gcc.h: $(srcdir)/ginclude/stdfix.h
	-cp $< $@

# Files and Variables auto-generated from avr-mcus.def

AVR_MCUS = $(srcdir)/config/avr/avr-mcus.def

# Run `avr-mcus' after you changed or added devices in  avr-mcus.def

.PHONY: avr-mcus

avr-mcus: $(srcdir)/doc/avr-mmcu.texi ; @true

# Make sure that native -mmcu= support is in sync with -mmcu= documentation.
gen-avr-mmcu-texi$(build_exeext): $(srcdir)/config/avr/gen-avr-mmcu-texi.c \
  $(AVR_MCUS) $(srcdir)/config/avr/avr-devices.c \
  $(srcdir)/config/avr/avr-arch.h
	$(CC_FOR_BUILD) $(CFLAGS_FOR_BUILD) $< -o $@

gen-avr-mmcu-specs$(build_exeext): $(srcdir)/config/avr/gen-avr-mmcu-specs.c \
  $(AVR_MCUS) $(srcdir)/config/avr/avr-devices.c \
  $(srcdir)/config/avr/avr-arch.h $(TM_H)
	$(CXX_FOR_BUILD) $(CXXFLAGS_FOR_BUILD) $< -o $@ $(INCLUDES)

$(srcdir)/doc/avr-mmcu.texi: gen-avr-mmcu-texi$(build_exeext)
	$(RUN_GEN) ./$< > $@

s-device-specs: gen-avr-mmcu-specs$(build_exeext)
	rm -rf device-specs
	mkdir device-specs && cd device-specs && $(RUN_GEN) ../$<
	$(STAMP) s-device-specs

GCC_PASSES+=s-device-specs

install-driver: install-device-specs

install-device-specs: s-device-specs installdirs
	-rm -rf $(DESTDIR)$(libsubdir)/device-specs
	mkdir $(DESTDIR)$(libsubdir)/device-specs
	-for file in device-specs/*; do \
		$(INSTALL_DATA) $${file} $(DESTDIR)$(libsubdir)/$${file}; \
	done

# Get multilib layout
# MULTILIB_OPTIONS
# MULTILIB_DIRNAMES
# MULTILIB_REQUIRED
# MULTILIB_REUSE

multilib.h Makefile s-mlib: t-multilib-avr

t-multilib-avr: $(srcdir)/config/avr/genmultilib.awk \
				 $(AVR_MCUS)
	$(AWK)	-v HAVE_LONG_DOUBLE_IS_DOUBLE=$(HAVE_LONG_DOUBLE_IS_DOUBLE) \
		-v HAVE_DOUBLE32=$(HAVE_DOUBLE32) 			\
		-v HAVE_DOUBLE64=$(HAVE_DOUBLE64) 			\
		-v HAVE_LONG_DOUBLE32=$(HAVE_LONG_DOUBLE32)		\
		-v HAVE_LONG_DOUBLE64=$(HAVE_LONG_DOUBLE64) 		\
		-v with_double=$(WITH_DOUBLE) 				\
		-v with_long_double=$(WITH_LONG_DOUBLE)			\
		-f $< $< $(AVR_MCUS) > $@

include t-multilib-avr
