From 9fa5f73d00905568e8979d0c93ec4a8f645c81d5 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Tue, 9 Aug 2016 11:31:53 +0200 Subject: Implement support for C compilation We now have two new modules: cc (c-common) and c. --- build2/cxx/utility.cxx | 109 ------------------------------------------------- 1 file changed, 109 deletions(-) delete mode 100644 build2/cxx/utility.cxx (limited to 'build2/cxx/utility.cxx') diff --git a/build2/cxx/utility.cxx b/build2/cxx/utility.cxx deleted file mode 100644 index 7aae6ac..0000000 --- a/build2/cxx/utility.cxx +++ /dev/null @@ -1,109 +0,0 @@ -// file : build2/cxx/utility.cxx -*- C++ -*- -// copyright : Copyright (c) 2014-2016 Code Synthesis Ltd -// license : MIT; see accompanying LICENSE file - -#include - -#include - -using namespace std; - -namespace build2 -{ - namespace cxx - { - // Return true if there is an option (stored in s). - // - bool - translate_std (scope& rs, const string& cid, const value& val, string& s) - { - const string& v (cast (val)); - - if (cid == "msvc") - { - // C++ standard-wise, with VC++ you get what you get. The question is - // whether we should verify that the requested standard is provided by - // this VC++ version. And if so, from which version should we say VC++ - // supports 11, 14, and 17? We should probably be as loose as possible - // here since the author will always be able to tighten (but not - // loosen) this in the buildfile (i.e., detect unsupported versions). - // - // For now we are not going to bother doing this for C++03. - // - if (v != "98" && v != "03") - { - uint64_t cver (cast (rs["cxx.version.major"])); - - // @@ Is mapping for 14 and 17 correct? Maybe Update 2 for 14? - // - if ((v == "11" && cver < 16) || // C++11 since VS2010/10.0. - (v == "14" && cver < 19) || // C++14 since VS2015/14.0. - (v == "17" && cver < 20)) // C++17 since VS20??/15.0. - { - fail << "C++" << v << " is not supported by " - << cast (rs["cxx.signature"]) << - info << "required by " << rs.out_path (); - } - } - - return false; - } - else - { - // Translate 11 to 0x, 14 to 1y, and 17 to 1z for compatibility with - // older versions of the compilers. - // - s = "-std="; - - if (v == "98") - s += "c++98"; - else if (v == "03") - s += "c++03"; - else if (v == "11") - s += "c++0x"; - else if (v == "14") - s += "c++1y"; - else if (v == "17") - s += "c++1z"; - else - s += v; // In case the user specifies something like 'gnu++17'. - - return true; - } - } - - void - append_lib_options (cstrings& args, target& l, const char* var, lorder lo) - { - using namespace bin; - - for (target* t: l.prerequisite_targets) - { - if (lib* l = t->is_a ()) - t = &link_member (*l, lo); // Pick one of the members. - - if (t->is_a () || t->is_a ()) - append_lib_options (args, *t, var, lo); - } - - append_options (args, l, var); - } - - void - hash_lib_options (sha256& csum, target& l, const char* var, lorder lo) - { - using namespace bin; - - for (target* t: l.prerequisite_targets) - { - if (lib* l = t->is_a ()) - t = &link_member (*l, lo); // Pick one of the members. - - if (t->is_a () || t->is_a ()) - hash_lib_options (csum, *t, var, lo); - } - - hash_options (csum, l, var); - } - } -} -- cgit v1.1