diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2017-05-30 14:11:50 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2017-05-30 14:11:50 +0200 |
commit | 4a74374e20d275722067e773d7ea99fc85ca2a0b (patch) | |
tree | 6da80735a2677ebd415db862233fc5de90950504 /build2/cc | |
parent | 01463f681243d569e38a87e92bdc3630a11a9f65 (diff) |
Diagnose lack of module support in extract_modules()
Diffstat (limited to 'build2/cc')
-rw-r--r-- | build2/cc/common.hxx | 4 | ||||
-rw-r--r-- | build2/cc/compile.cxx | 17 |
2 files changed, 16 insertions, 5 deletions
diff --git a/build2/cc/common.hxx b/build2/cc/common.hxx index fa6ec5a..155d670 100644 --- a/build2/cc/common.hxx +++ b/build2/cc/common.hxx @@ -114,6 +114,8 @@ namespace build2 const strings& tstd; // Translated x_std value (options). + bool modules; // x.feaures.modules + const process_path* pkgconfig; // pkgconfig.path (can be NULL). const dir_paths& sys_lib_dirs; // x.sys_lib_dirs const dir_paths& sys_inc_dirs; // x.sys_inc_dirs @@ -154,6 +156,7 @@ namespace build2 const process_path& path, const target_triplet& tg, const strings& std, + bool mod, const process_path* pkgc, const dir_paths& sld, const dir_paths& sid, @@ -168,6 +171,7 @@ namespace build2 cid (id), cvar (var), cmaj (mj), cmin (mi), cpath (path), ctg (tg), tsys (ctg.system), tclass (ctg.class_), tstd (std), + modules (mod), pkgconfig (pkgc), sys_lib_dirs (sld), sys_inc_dirs (sid), x_src (src), x_hdr (hdr), x_inc (inc) {} }; diff --git a/build2/cc/compile.cxx b/build2/cc/compile.cxx index ce96e00..c7fc3ea 100644 --- a/build2/cc/compile.cxx +++ b/build2/cc/compile.cxx @@ -610,9 +610,8 @@ namespace build2 dd.close (); - // If C++ modules support is enabled then we need to extract the - // module dependency information in addition to header dependencies - // above. + // Extract the module dependency information in addition to header + // dependencies above. // if (u) // @@ TMP (depdb validation similar to extract_headers()). { @@ -2207,8 +2206,16 @@ namespace build2 throw failed (); } - if (!tu.module_name.empty () || !tu.module_imports.empty ()) - fail << "module support not yet implemented"; + //@@ TODO: if bmi{}, make sure module_name is not empty. + + if (tu.module_name.empty () && tu.module_imports.empty ()) + return; + + // Modules are used by this translation unit. Make sure module support + // is enabled. + // + if (!modules) + fail << "modules support not enabled or unavailable"; } // Filter cl.exe noise (msvc.cxx). |