# 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,53 @@ +/* GDC -- D front-end for GCC + Copyright (C) 2004 David Friedman + + 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 this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +#ifndef D_D_SPEC +#define D_D_SPEC 0 +#endif + +/* %{!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_options) ? */ + +#if D_DRIVER_ONLY +{".html", "@d", 0, 1, 0 }, +{".HTML", "@d", 0, 1, 0 }, +{".htm", "@d", 0, 1, 0 }, +{".HTM", "@d", 0, 1, 0 }, +{".xhtml", "@d", 0, 1, 0 }, +{".XHTML", "@d", 0, 1, 0 }, +{".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 %N %{nostdinc*} %{+e*} %{I*} %{J*}\ + %{M} %{MM} %{!fsyntax-only:%(invoke_as)}}", D_D_SPEC, 1, 0 }, +#else +{".d", "@d", 0, 1, 0 }, +{".D", "@d", 0, 1, 0 }, +{".di", "@d", 0, 1, 0 }, +{".DI", "@d", 0, 1, 0 }, +{"@d", + "%{!E:cc1d %i %(cc1_options) %(cc1d) %I %N %{nostdinc*} %{+e*} %{I*} %{J*}\ + %{M} %{MM} %{!fsyntax-only:%(invoke_as)}}", D_D_SPEC, 1, 0 }, +#endif + Index: b/src/gcc/d/lang.opt =================================================================== --- /dev/null +++ b/src/gcc/d/lang.opt @@ -0,0 +1,215 @@ +; GDC -- D front-end for GCC +; Copyright (C) 2004 David Friedman +; +; 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 this program; if not, write to the Free Software +; Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +; This is used in GCC 3.4+ +; %% TODO cleanup in ASCII collating order. + +Language +D + +I +D Joined Separate +-I Add to the end of the main include path. + +J +D Joined Separate +-J Add to the end of the string import path. + +fdeprecated +D +Allow use of deprecated features + +fassert +D +Generate runtime code for assert()'s + +frelease +D +Compile release version + +; For D: defaults to on +fbounds-check +D +Generate code to check bounds before indexing arrays + +funittest +D +Compile in unittest code + +fversion= +D Joined RejectNegative +-fversion= Compile in version code >= or identified by + +fdebug= +D Joined RejectNegative +-fdebug,-fdebug=,-fdebug= Compile in debug code, code <= level, or code identified by ident + +fdebug +D +Compile in debug code + +fdebug-c +D +With -g, generate C debug information for debugger compatibility + +fdeps= +D Joined RejectNegative +-fdeps= Write module dependencies to filename + +fd-verbose +D +Print information about D language processing to stdout + +fd-vtls +D +List all variables going into thread local storage + +fd-version=1 +D RejectNegative +Compile as D language version 1 + +femit-templates= +D Joined RejectNegative +-femit-templates=[normal|private|all|none|auto] Control template emission + +femit-templates +D +-femit-templates Emit templates code and data even if the linker cannot merge multiple copies + +nostdinc +D +Do not search standard system include directories + +fonly= +D Joined RejectNegative +Process all modules specified on the command line, but only generate code for the module specified by the argument. + +fignore-unknown-pragmas +D +Ignore unsupported pragmas + +fproperty +D +Enforce property syntax + +fintfc +Generate D interface files + +fintfc-dir= +D Joined RejectNegative +-fintfc-dir= Write D interface files to directory + +fintfc-file= +D Joined RejectNegative +-fintfc-file= Write D interface file to + +fdoc +D +Generate documentation + +fdoc-dir= +D Joined RejectNegative +-fdoc-dir= Write documentation file to docdir directory + +fdoc-file= +D Joined RejectNegative +-fdoc-file= Write documentation file to filename + +fdoc-inc= +D Joined RejectNegative +-fdoc-inc= Include a Ddoc macro file + +fmultilib-dir= +D Joined RejectNegative +-fmultilib-dir= Select header multilib subdirectory + +Wsign-compare +D +Warn about signed-unsigned comparisons + +fdump-source +D RejectNegative +Dump decoded UTF-8 text and source from HTML + +fasm +D +Recognize the \"asm\" keyword + +fbuiltin +D +Recognize built-in functions + +funsigned-char +D +Make \"char\" unsigned by default (silently ignored in D) + +fsigned-char +D +Make \"char\" signed by default (silently ignored in D) + +imultilib +D Joined Separate +-imultilib Set to be the multilib include subdirectory + +iprefix +D Joined Separate +-iprefix Specify as a prefix for next two options + +isysroot +D Joined Separate +-isysroot Set to be the system root directory + +isystem +D Joined Separate +-isystem Add to the start of the system include path + +Wall +D +Enable most warning messages + +Werror +D +Error out the compiler on warnings + +fXf= +D Joined RejectNegative +-fXf= Write JSON file to + + +; Everything below this line is used in 4.6+ + +debuglib= +Driver Joined +Debug library to use instead of phobos + +defaultlib= +Driver Joined +Default library to use instead of phobos + +fod= +Driver Joined +-fod= Specify the object output directory. + +fop +Driver +Specify that the source file's parent directories should be appended to the object output directory. + +nophoboslib +Driver + +static_libphobos +Driver Index: b/src/gcc/gcc.c =================================================================== --- a/src/gcc/gcc.c +++ b/src/gcc/gcc.c @@ -375,6 +375,7 @@ assembler has done its job. %D Dump out a -L option for each directory in startfile_prefixes. If multilib_dir is set, extra entries are generated with it affixed. + %N Output the currently selected multilib directory name. %l process LINK_SPEC as a spec. %L process LIB_SPEC as a spec. %G process LIBGCC_SPEC as a spec. @@ -5140,6 +5141,17 @@ return value; break; + case 'N': + if (multilib_dir) + { + arg_going = 1; + obstack_grow (&obstack, "-fmultilib-dir=", + strlen ("-fmultilib-dir=")); + obstack_grow (&obstack, multilib_dir, + strlen (multilib_dir)); + } + break; + /* Here we define characters other than letters and digits. */ case '{':