From: Daniel Jasper Date: Mon, 21 Oct 2013 06:34:34 +0000 (+0000) Subject: Expose -fmodule-name and -fmodule-map-file as driver options. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=9541141f4f131d76be609665b2a8500f770109c9;p=clang Expose -fmodule-name and -fmodule-map-file as driver options. Review: http://llvm-reviews.chandlerc.com/D1974 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@193069 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/Driver/CC1Options.td b/include/clang/Driver/CC1Options.td index 7d8843c414..743e3a2e61 100644 --- a/include/clang/Driver/CC1Options.td +++ b/include/clang/Driver/CC1Options.td @@ -479,12 +479,6 @@ def fsized_deallocation : Flag<["-"], "fsized-deallocation">, def nostdsysteminc : Flag<["-"], "nostdsysteminc">, HelpText<"Disable standard system #include directories">; -def fmodule_name : Joined<["-"], "fmodule-name=">, - MetaVarName<"">, - HelpText<"Specify the name of the module to build">; -def fmodule_map_file : Joined<["-"], "fmodule-map-file=">, - MetaVarName<"">, - HelpText<"Load this module map file">; def fdisable_module_hash : Flag<["-"], "fdisable-module-hash">, HelpText<"Disable the module hash">; def c_isystem : JoinedOrSeparate<["-"], "c-isystem">, MetaVarName<"">, diff --git a/include/clang/Driver/Options.td b/include/clang/Driver/Options.td index b2f75179c9..88b685ba90 100644 --- a/include/clang/Driver/Options.td +++ b/include/clang/Driver/Options.td @@ -572,6 +572,12 @@ def fmodules : Flag <["-"], "fmodules">, Group, def fmodule_maps : Flag <["-"], "fmodule-maps">, Group, Flags<[DriverOption,CC1Option]>, HelpText<"Read module maps to understand the structure of library headers">; +def fmodule_name : JoinedOrSeparate<["-"], "fmodule-name=">, Group, + Flags<[DriverOption,CC1Option]>, MetaVarName<"">, + HelpText<"Specify the name of the module to build">; +def fmodule_map_file : JoinedOrSeparate<["-"], "fmodule-map-file=">, + Group, Flags<[DriverOption,CC1Option]>, MetaVarName<"">, + HelpText<"Load this module map file">; def fmodules_ignore_macro : Joined<["-"], "fmodules-ignore-macro=">, Group, Flags<[CC1Option]>, HelpText<"Ignore the definition of the given macro when building and loading modules">; def fmodules_decluse : Flag <["-"], "fmodules-decluse">, Group, diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp index d6ddd02443..3c98cb38ee 100644 --- a/lib/Driver/Tools.cpp +++ b/lib/Driver/Tools.cpp @@ -3060,13 +3060,28 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, CmdArgs.push_back("-fmodule-maps"); } - // -fmodules-decluse checks that modules used are declared so (off by default). + // -fmodules-decluse checks that modules used are declared so (off by + // default). if (Args.hasFlag(options::OPT_fmodules_decluse, options::OPT_fno_modules_decluse, false)) { CmdArgs.push_back("-fmodules-decluse"); } + // -fmodule-name specifies the module that is currently being built (or + // used for header checking by -fmodule-maps). + if (Arg *A = Args.getLastArg(options::OPT_fmodule_name)) { + A->claim(); + A->render(Args, CmdArgs); + } + + // -fmodule-map-file can be used to specify a file containing module + // definitions. + if (Arg *A = Args.getLastArg(options::OPT_fmodule_map_file)) { + A->claim(); + A->render(Args, CmdArgs); + } + // If a module path was provided, pass it along. Otherwise, use a temporary // directory. if (Arg *A = Args.getLastArg(options::OPT_fmodules_cache_path)) {