aboutsummaryrefslogtreecommitdiff
path: root/butl
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2016-03-10 10:04:43 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2016-03-10 10:04:43 +0200
commita9844a31c639ed5e0c8efee92d644557b8410429 (patch)
tree938dbdcd635082d1c4c6140d54bc500cb7baa086 /butl
parentb211edb78d90939eefd6e784c940c9a6ad9ccc2f (diff)
Derive target class from target triplet for some targets
Diffstat (limited to 'butl')
-rw-r--r--butl/triplet16
-rw-r--r--butl/triplet.cxx15
2 files changed, 28 insertions, 3 deletions
diff --git a/butl/triplet b/butl/triplet
index f61493d..44b5195 100644
--- a/butl/triplet
+++ b/butl/triplet
@@ -56,8 +56,8 @@ namespace butl
// strategy for (presumably less common) cases were we don't split things
// correctly.
//
- // Note also that the version splitting is only done for certain,
- // commonly-used targets.
+ // Note also that the version splitting is only done for certain commonly-
+ // used targets.
//
// Some examples of canonicalization and splitting:
//
@@ -75,6 +75,17 @@ namespace butl
// x86_64-linux-gnux32 x86_64 linux-gnux32
// x86_64-microsoft-win32-msvc14.0 x86_64 microsoft win32-msvc 14.0
//
+ // Similar to version splitting, for certain commonly-used targets we also
+ // derive the "target class" which can be used as a shorthand, more
+ // convenient way to identify a targets. If the target is not recognized,
+ // then the special 'other' value is used. Currently the following classes
+ // are recognized:
+ //
+ // linux *-*-linux-*
+ // macosx *-apple-darwin*
+ // freebsd *-*-freebsd*
+ // windows *-*-win32-* | *-*-mingw32
+ //
// References:
//
// 1. The libtool repository contains the PLATFORM file that lists many known
@@ -88,6 +99,7 @@ namespace butl
std::string vendor;
std::string system;
std::string version;
+ std::string class_;
// Parse the triplet optionally returning the canonicalized string. Throw
// std::invalid_argument if the triplet is not recognizable.
diff --git a/butl/triplet.cxx b/butl/triplet.cxx
index 8369539..39057a3 100644
--- a/butl/triplet.cxx
+++ b/butl/triplet.cxx
@@ -103,7 +103,7 @@ namespace butl
*c += system;
}
- // Finally, extract VERSION for some recognized systems.
+ // Extract VERSION for some recognized systems.
//
string::size_type v (0);
if (system.compare (0, (v = 6), "darwin") == 0 ||
@@ -118,5 +118,18 @@ namespace butl
version.assign (system, v, string::npos);
system.resize (system.size () - version.size ());
}
+
+ // Determine class for some recognized systems.
+ //
+ if (system.compare (0, 5, "linux") == 0)
+ class_ = "linux";
+ else if (vendor == "apple" && system == "darwin")
+ class_ = "macosx";
+ else if (system == "freebsd")
+ class_ = "freebsd";
+ else if (system.compare (0, 5, "win32") == 0 || system == "mingw32")
+ class_ = "windows";
+ else
+ class_ = "other";
}
}