# Make-lang.in -- Top level -*- makefile -*- fragment for the D frontend.
# Copyright (C) 2006-2021 Free Software Foundation, Inc.

# 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/>.

# This file provides the language dependent support in the main Makefile.

# Installation name.

D_INSTALL_NAME = $(shell echo gdc|sed '$(program_transform_name)')
D_TARGET_INSTALL_NAME = $(target_noncanonical)-$(shell echo gdc|sed '$(program_transform_name)')

# Name of phobos library
D_LIBPHOBOS = -DLIBPHOBOS=\"gphobos\"

# The name for selecting d in LANGUAGES.
d: d21$(exeext)
d.serial = d21$(exeext)

# Tell GNU make to ignore these if they exist.
.PHONY: d

# Create the compiler driver for D.
CFLAGS-d/d-spec.o += $(DRIVER_DEFINES) $(D_LIBPHOBOS)

GDC_OBJS = $(GCC_OBJS) d/d-spec.o
gdc$(exeext): $(GDC_OBJS) $(EXTRA_GCC_OBJS) libcommon-target.a $(LIBDEPS)
	+$(LINKER) $(ALL_LINKERFLAGS) $(LDFLAGS) -o $@ \
	  $(GDC_OBJS) $(EXTRA_GCC_OBJS) libcommon-target.a \
	  $(EXTRA_GCC_LIBS) $(LIBS)

# Create a version of the gdc driver which calls the cross-compiler.
gdc-cross$(exeext): gdc$(exeext)
	-rm -f gdc-cross$(exeext)
	cp gdc$(exeext) gdc-cross$(exeext)

# Filter out pedantic and virtual overload warnings.
d-warn = $(filter-out -pedantic -Woverloaded-virtual, $(STRICT_WARN))

# Also filter out warnings for missing format attributes in the D Frontend.
DMD_WARN_CXXFLAGS = $(filter-out -Wmissing-format-attribute, $(WARN_CXXFLAGS))
DMD_COMPILE = $(subst $(WARN_CXXFLAGS), $(DMD_WARN_CXXFLAGS), $(COMPILE))

# D Frontend object files.
D_FRONTEND_OBJS = \
	d/aav.o \
	d/access.o \
	d/aliasthis.o \
	d/apply.o \
	d/arrayop.o \
	d/attrib.o \
	d/blockexit.o \
	d/canthrow.o \
	d/checkedint.o \
	d/chkformat.o \
	d/clone.o \
	d/cond.o \
	d/constfold.o \
	d/cppmangle.o \
	d/ctfeexpr.o \
	d/dcast.o \
	d/dclass.o \
	d/declaration.o \
	d/delegatize.o \
	d/denum.o \
	d/dimport.o \
	d/dinterpret.o \
	d/dmacro.o \
	d/dmangle.o \
	d/dmodule.o \
	d/doc.o \
	d/dscope.o \
	d/dstruct.o \
	d/dsymbol.o \
	d/dsymbolsem.o \
	d/dtemplate.o \
	d/dversion.o \
	d/entity.o \
	d/escape.o \
	d/expression.o \
	d/expressionsem.o \
	d/file.o \
	d/filename.o \
	d/func.o \
	d/hdrgen.o \
	d/iasm.o \
	d/iasmgcc.o \
	d/identifier.o \
	d/imphint.o \
	d/init.o \
	d/initsem.o \
	d/intrange.o \
	d/json.o \
	d/lexer.o \
	d/mtype.o \
	d/nogc.o \
	d/nspace.o \
	d/objc.o \
	d/opover.o \
	d/optimize.o \
	d/outbuffer.o \
	d/parse.o \
	d/rmem.o \
	d/rootobject.o \
	d/safe.o \
	d/sapply.o \
	d/semantic2.o \
	d/semantic3.o \
	d/sideeffect.o \
	d/speller.o \
	d/statement.o \
	d/statementsem.o \
	d/staticassert.o \
	d/staticcond.o \
	d/stringtable.o \
	d/templateparamsem.o \
	d/tokens.o \
	d/traits.o \
	d/typesem.o \
	d/utf.o \
	d/utils.o

# D Frontend generated files.
D_GENERATED_SRCS = d/id.c d/id.h d/impcnvtab.c
D_GENERATED_OBJS = d/id.o d/impcnvtab.o

# Language-specific object files for D.
D_OBJS = \
	d/d-attribs.o \
	d/d-builtins.o \
	d/d-codegen.o \
	d/d-compiler.o \
	d/d-convert.o \
	d/d-ctfloat.o \
	d/d-diagnostic.o \
	d/d-frontend.o \
	d/d-gimplify.o \
	d/d-incpath.o \
	d/d-lang.o \
	d/d-longdouble.o \
	d/d-port.o \
	d/d-target.o \
	d/decl.o \
	d/expr.o \
	d/imports.o \
	d/intrinsics.o \
	d/modules.o \
	d/runtime.o \
	d/toir.o \
	d/typeinfo.o \
	d/types.o

# All language-specific object files for D.
D_ALL_OBJS = $(D_FRONTEND_OBJS) $(D_GENERATED_OBJS) $(D_OBJS) $(D_TARGET_OBJS)

d_OBJS = $(D_ALL_OBJS) d/d-spec.o

d21$(exeext): $(D_ALL_OBJS) attribs.o $(BACKEND) $(LIBDEPS) $(d.prev)
	@$(call LINK_PROGRESS,$(INDEX.d),start)
	+$(LLINKER) $(ALL_LINKERFLAGS) $(LDFLAGS) -o $@ \
		$(D_ALL_OBJS) attribs.o $(BACKEND) $(LIBS) $(BACKENDLIBS)
	@$(call LINK_PROGRESS,$(INDEX.d),end)

# Documentation.

D_TEXI_FILES = \
	d/gdc.texi \
	$(gcc_docdir)/include/fdl.texi \
	$(gcc_docdir)/include/gpl_v3.texi \
	$(gcc_docdir)/include/gcc-common.texi \
	gcc-vers.texi

doc/gdc.info: $(D_TEXI_FILES)
	if test "x$(BUILD_INFO)" = xinfo; then \
	  rm -f doc/gdc.info*; \
	  $(MAKEINFO) $(MAKEINFOFLAGS) -I $(gcc_docdir) \
		-I $(gcc_docdir)/include -o $@ $<; \
	else true; fi

doc/gdc.dvi: $(D_TEXI_FILES)
	$(TEXI2DVI) -I $(abs_docdir) -I $(abs_docdir)/include -o $@ $<

doc/gdc.pdf: $(D_TEXI_FILES)
	$(TEXI2PDF) -I $(abs_docdir) -I $(abs_docdir)/include -o $@ $<

$(build_htmldir)/d/index.html: $(D_TEXI_FILES)
	$(mkinstalldirs) $(@D)
	rm -f $(@D)/*
	$(TEXI2HTML) -I $(gcc_docdir) -I $(gcc_docdir)/include \
		-I $(srcdir)/d -o $(@D) $<

.INTERMEDIATE: gdc.pod

gdc.pod: d/gdc.texi
	-$(TEXI2POD) -D gdc < $< > $@

# Build hooks.

d.all.cross: gdc-cross$(exeext)
d.start.encap: gdc$(exeext)
d.rest.encap:
d.info: doc/gdc.info
d.dvi: doc/gdc.dvi
d.pdf: doc/gdc.pdf
d.html: $(build_htmldir)/d/index.html
d.srcinfo: doc/gdc.info
	-cp -p $^ $(srcdir)/doc
d.srcextra:

d.tags: force
	cd $(srcdir)/d; \
	etags -o TAGS.sub *.c *.cc *.h dmd/*.c dmd/*.h dmd/root/*.h dmd/root/*.c; \
	etags --include TAGS.sub --include ../TAGS.sub

d.man: doc/gdc.1
d.srcman: doc/gdc.1
	-cp -p $^ $(srcdir)/doc

# 'make check' in gcc/ looks for check-d, as do all toplevel D-related
# check targets.  However, our DejaGNU framework requires 'check-gdc' as its
# entry point.  We feed the former to the latter here.
check-d: check-gdc
lang_checks += check-gdc
lang_checks_parallelized += check-gdc
check_gdc_parallelize = 10

# No D-specific selftests.
selftest-d:

# Install hooks.

d.install-common: installdirs
	-rm -f $(DESTDIR)$(bindir)/$(D_INSTALL_NAME)$(exeext)
	$(INSTALL_PROGRAM) gdc$(exeext) $(DESTDIR)$(bindir)/$(D_INSTALL_NAME)$(exeext)
	-if test -f d21$(exeext); then \
	  if test -f gdc-cross$(exeext); then \
	    :; \
	  else \
	    rm -f $(DESTDIR)$(bindir)/$(D_TARGET_INSTALL_NAME)$(exeext); \
	    ( cd $(DESTDIR)$(bindir) && \
	      $(LN) $(D_INSTALL_NAME)$(exeext) $(D_TARGET_INSTALL_NAME)$(exeext) ); \
	  fi; \
	fi

d.install-plugin:

d.install-info: $(DESTDIR)$(infodir)/gdc.info

d.install-pdf: doc/gdc.pdf
	@$(NORMAL_INSTALL)
	test -z "$(pdfdir)" || $(mkinstalldirs) "$(DESTDIR)$(pdfdir)/gcc"
	@for p in doc/gdc.pdf; do \
	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
	  f=$(pdf__strip_dir) \
	  echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(pdfdir)/gcc/$$f'"; \
	  $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(pdfdir)/gcc/$$f"; \
	done

d.install-dvi: doc/gdc.dvi
	@$(NORMAL_INSTALL)
	test -z "$(dvidir)" || $(mkinstalldirs) "$(DESTDIR)$(dvidir)/gcc"
	@for p in doc/gdc.dvi; do \
	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
	  f=$(dvi__strip_dir) \
	  echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(dvidir)/gcc/$$f'"; \
	  $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(dvidir)/gcc/$$f"; \
	done

d.install-html: $(build_htmldir)/d
	@$(NORMAL_INSTALL)
	test -z "$(htmldir)" || $(mkinstalldirs) "$(DESTDIR)$(htmldir)"
	@for p in $(build_htmldir)/d; do \
	  if test -f "$$p" || test -d "$$p"; then d=""; else d="$(srcdir)/"; fi; \
	  f=$(html__strip_dir) \
	  if test -d "$$d$$p"; then \
	    echo " $(mkinstalldirs) '$(DESTDIR)$(htmldir)/$$f'"; \
	    $(mkinstalldirs) "$(DESTDIR)$(htmldir)/$$f" || exit 1; \
	    echo " $(INSTALL_DATA) '$$d$$p'/* '$(DESTDIR)$(htmldir)/$$f'"; \
	    $(INSTALL_DATA) "$$d$$p"/* "$(DESTDIR)$(htmldir)/$$f"; \
	  else \
	    echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(htmldir)/$$f'"; \
	    $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(htmldir)/$$f"; \
	  fi; \
	done

d.install-man: $(DESTDIR)$(man1dir)/$(D_INSTALL_NAME)$(man1ext)

$(DESTDIR)$(man1dir)/$(D_INSTALL_NAME)$(man1ext): doc/gdc.1 installdirs
	-rm -f $@
	-$(INSTALL_DATA) $< $@
	-chmod a-x $@

d.uninstall:
	-rm -rf $(DESTDIR)$(bindir)/$(D_INSTALL_NAME)$(exeext)
	-rm -rf $(DESTDIR)$(man1dir)/$(D_INSTALL_NAME)$(man1ext)
	-rm -rf $(DESTDIR)$(bindir)/$(D_TARGET_INSTALL_NAME)$(exeext)
	-rm -rf $(DESTDIR)$(infodir)/gdc.info*

# Clean hooks.

d.mostlyclean:
	-rm -f d/*$(objext)
	-rm -f d/*$(coverageexts)
	-rm -f $(D_GENERATED_SRCS)
	-rm -f d/idgen$(build_exeext) d/impcnvgen$(build_exeext)
	-rm -f gdc$(exeext) gdc-cross$(exeext) d21$(exeext)
d.clean:
d.distclean:
d.maintainer-clean:
	-rm -f $(docobjdir)/gdc.1

# Stage hooks.

d.stage1: stage1-start
	-mv d/*$(objext) stage1/d
d.stage2: stage2-start
	-mv d/*$(objext) stage2/d
d.stage3: stage3-start
	-mv d/*$(objext) stage3/d
d.stage4: stage4-start
	-mv d/*$(objext) stage4/d
d.stageprofile: stageprofile-start
	-mv d/*$(objext) stageprofile/d
d.stagefeedback: stagefeedback-start
	-mv d/*$(objext) stagefeedback/d

# Include the dfrontend and build directories for headers.
D_INCLUDES = -I$(srcdir)/d -I$(srcdir)/d/dmd -Id

CFLAGS-d/id.o += $(D_INCLUDES)
CFLAGS-d/impcnvtab.o += $(D_INCLUDES)

# Override build rules for D frontend.
d/%.o: d/dmd/%.c $(D_GENERATED_SRCS)
	$(DMD_COMPILE) $(D_INCLUDES) $<
	$(POSTCOMPILE)

d/%.o: d/dmd/root/%.c $(D_GENERATED_SRCS)
	$(DMD_COMPILE) $(D_INCLUDES) $<
	$(POSTCOMPILE)

# Generated programs.
d/idgen$(build_exeext): d/idgen.dmdgen.o $(BUILD_LIBDEPS)
	+$(LINKER_FOR_BUILD) $(BUILD_LINKERFLAGS) $(BUILD_LDFLAGS) -o $@ \
	    $(filter-out $(BUILD_LIBDEPS), $^) $(BUILD_LIBS)

d/impcnvgen$(build_exeext): d/impcnvgen.dmdgen.o $(BUILD_LIBDEPS)
	+$(LINKER_FOR_BUILD) $(BUILD_LINKERFLAGS) $(BUILD_LDFLAGS) -o $@ \
	    $(filter-out $(BUILD_LIBDEPS), $^) $(BUILD_LIBS)

# Generated sources.
d/id.c: d/idgen$(build_exeext)
	cd d && ./idgen$(build_exeext)

# idgen also generates id.h; just verify it exists.
d/id.h: d/id.c

d/impcnvtab.c: d/impcnvgen$(build_exeext)
	cd d && ./impcnvgen$(build_exeext)

# Compile the generator programs.
d/%.dmdgen.o: $(srcdir)/d/dmd/%.c
	$(COMPILER_FOR_BUILD) -c $(BUILD_COMPILERFLAGS) $(D_INCLUDES) \
		$(BUILD_CPPFLAGS) -o $@ $<

# Header dependencies for the generator programs.
D_SYSTEM_H = d/dmd/root/dsystem.h d/d-system.h

d/idgen.dmdgen.o: d/dmd/idgen.c $(D_SYSTEM_H) $(BCONFIG_H) $(SYSTEM_H)

d/impcnvgen.dmdgen.o: d/dmd/impcnvgen.c d/dmd/mtype.h $(D_SYSTEM_H) \
	$(BCONFIG_H) $(SYSTEM_H)
