# DP: Add D options and specs for the gcc driver.

Index: b/src/gcc/d/lang-specs.h
===================================================================
--- /dev/null
+++ b/src/gcc/d/lang-specs.h
@@ -0,0 +1,31 @@
+/* lang-specs.h -- D frontend for GCC.
+   Copyright (C) 2011, 2012 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/>.
+*/
+
+/* %{!M} probably doesn't make sense because we would need
+   to do that -- -MD and -MMD doesn't sound like a plan for D.... */
+
+{".d", "@d", 0, 1, 0 },
+{".D", "@d", 0, 1, 0 },
+{".dd", "@d", 0, 1, 0 },
+{".DD", "@d", 0, 1, 0 },
+{".di", "@d", 0, 1, 0 },
+{".DI", "@d", 0, 1, 0 },
+{"@d",
+  "%{!E:cc1d %i %(cc1_options) %(cc1d) %I %{nostdinc*} %{+e*} %{I*} %{J*}\
+    %{M} %{MM} %{!fsyntax-only:%(invoke_as)}}", 0, 1, 0 },
+
Index: b/src/gcc/d/lang.opt
===================================================================
--- /dev/null
+++ b/src/gcc/d/lang.opt
@@ -0,0 +1,208 @@
+; GDC -- D front-end for GCC
+; Copyright (C) 2011, 2012 Free Software Foundation, Inc.
+;
+; This program 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 2 of the License, or
+; (at your option) any later version.
+;
+; This program 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/>.
+
+Language
+D
+
+debuglib=
+Driver Joined
+Debug library to use instead of phobos
+
+defaultlib=
+Driver Joined
+Default library to use instead of phobos
+
+fassert
+D
+Permit the use of the assert keyword
+
+; For D: defaults to on
+fbounds-check
+D
+Generate code to check bounds before indexing arrays
+
+fbuiltin
+D Var(flag_no_builtin, 0)
+Recognize built-in functions
+
+fdebug
+D
+Compile in debug code
+
+fdebug=
+D Joined RejectNegative
+-fdebug,-fdebug=<level>,-fdebug=<ident> Compile in debug code, code <= level, or code identified by ident
+
+fdeps=
+D Joined RejectNegative
+-fdeps=<filename> Write module dependencies to filename
+
+fdoc
+D
+Generate documentation
+
+fdoc-dir=
+D Joined RejectNegative
+-fdoc-dir=<docdir> Write documentation file to docdir directory
+
+fdoc-file=
+D Joined RejectNegative
+-fdoc-file=<filename> Write documentation file to filename
+
+fdoc-inc=
+D Joined RejectNegative
+-fdoc-inc=<filename> Include a Ddoc macro file
+
+fdump-source
+D RejectNegative
+Dump decoded UTF-8 text and source from HTML
+
+fd-verbose
+D
+Print information about D language processing to stdout
+
+fd-vtls
+D
+List all variables going into thread local storage
+
+femit-templates
+D
+-femit-templates Emit templates code and data even if the linker cannot merge multiple copies
+
+fignore-unknown-pragmas
+D
+Ignore unsupported pragmas
+
+fin
+D
+Generate runtime code for in() contracts
+
+fintfc
+Generate D interface files
+
+fintfc-dir=
+D Joined RejectNegative
+-fintfc-dir=<dir> Write D interface files to directory <dir>
+
+fintfc-file=
+D Joined RejectNegative
+-fintfc-file=<filename> Write D interface file to <filename>
+
+finvariants
+D
+Generate runtime code for invariant()'s
+
+fmake-deps=
+D Joined RejectNegative
+-fmake-deps=<file> Write dependency output to the given file
+
+fmake-mdeps=
+D Joined RejectNegative
+Like -fmake-deps=<file> but ignore system modules
+
+femit-moduleinfo
+D
+Generate ModuleInfo struct for output module
+
+fonly=
+D Joined RejectNegative
+Process all modules specified on the command line, but only generate code for the module specified by the argument
+
+fout
+D
+Generate runtime code for out() contracts
+
+fproperty
+D
+Enforce property syntax
+
+frelease
+D
+Compile release version
+
+fsplit-dynamic-arrays
+D Var(flag_split_darrays)
+Split dynamic arrays into length and pointer when passing to functions
+
+funittest
+D
+Compile in unittest code
+
+fversion=
+D Joined RejectNegative
+-fversion=<level|ident> Compile in version code >= <level> or identified by <ident>
+
+fXf=
+D Joined RejectNegative
+-fXf=<filename> Write JSON file to <filename>
+
+imultilib
+D Joined Separate
+-imultilib <dir>	Set <dir> to be the multilib include subdirectory
+
+iprefix
+D Joined Separate
+-iprefix <path>	Specify <path> as a prefix for next two options
+
+isysroot
+D Joined Separate
+-isysroot <dir>	Set <dir> to be the system root directory
+
+isystem
+D Joined Separate
+-isystem <dir>	Add <dir> to the start of the system include path
+
+I
+D Joined Separate
+-I <dir>	Add <dir> to the end of the main include path
+
+J
+D Joined Separate
+-J<directory>	Put MODULE files in 'directory'
+
+nophoboslib
+Driver
+Do not link the standard D library in the compilation
+
+nostdinc
+D
+Do not search standard system include directories (those specified with -isystem will still be used)
+
+static-libphobos
+Driver
+Link the standard D library statically in the compilation
+
+Wall
+D
+; Documented in c.opt
+
+Wcast-result
+D Warning Var(warn_cast_result)
+Warn about casts that will produce a null or nil result
+
+Wdeprecated
+D
+; Documented in c.opt
+
+Werror
+D
+; Documented in common.opt
+
+Wunknown-pragmas
+D
+; Documented in c.opt
+
