xref: /netbsd-src/external/gpl3/gcc.old/dist/libphobos/src/std/compiler.d (revision 627f7eb200a4419d89b531d55fccd2ee3ffdcde0)
1*627f7eb2Smrg // Written in the D programming language.
2*627f7eb2Smrg 
3*627f7eb2Smrg /**
4*627f7eb2Smrg  * Identify the compiler used and its various features.
5*627f7eb2Smrg  *
6*627f7eb2Smrg  * Copyright: Copyright Digital Mars 2000 - 2011.
7*627f7eb2Smrg  * License:   $(HTTP www.boost.org/LICENSE_1_0.txt, Boost License 1.0).
8*627f7eb2Smrg  * Authors:   $(HTTP digitalmars.com, Walter Bright), Alex Rønne Petersen
9*627f7eb2Smrg  * Source:    $(PHOBOSSRC std/_compiler.d)
10*627f7eb2Smrg  */
11*627f7eb2Smrg /*          Copyright Digital Mars 2000 - 2011.
12*627f7eb2Smrg  * Distributed under the Boost Software License, Version 1.0.
13*627f7eb2Smrg  *    (See accompanying file LICENSE_1_0.txt or copy at
14*627f7eb2Smrg  *          http://www.boost.org/LICENSE_1_0.txt)
15*627f7eb2Smrg  */
16*627f7eb2Smrg module std.compiler;
17*627f7eb2Smrg 
18*627f7eb2Smrg immutable
19*627f7eb2Smrg {
20*627f7eb2Smrg     /// Vendor specific string naming the compiler, for example: "Digital Mars D".
21*627f7eb2Smrg     string name = __VENDOR__;
22*627f7eb2Smrg 
23*627f7eb2Smrg     /// Master list of D compiler vendors.
24*627f7eb2Smrg     enum Vendor
25*627f7eb2Smrg     {
26*627f7eb2Smrg         unknown = 0,     /// Compiler vendor could not be detected
27*627f7eb2Smrg         digitalMars = 1, /// Digital Mars D (DMD)
28*627f7eb2Smrg         gnu = 2,         /// GNU D Compiler (GDC)
29*627f7eb2Smrg         llvm = 3,        /// LLVM D Compiler (LDC)
30*627f7eb2Smrg         dotNET = 4,      /// D.NET
31*627f7eb2Smrg         sdc = 5,         /// Stupid D Compiler (SDC)
32*627f7eb2Smrg     }
33*627f7eb2Smrg 
34*627f7eb2Smrg     /// Which vendor produced this compiler.
35*627f7eb2Smrg     version (StdDdoc)          Vendor vendor;
36*627f7eb2Smrg     else version (DigitalMars) Vendor vendor = Vendor.digitalMars;
37*627f7eb2Smrg     else version (GNU)         Vendor vendor = Vendor.gnu;
38*627f7eb2Smrg     else version (LDC)         Vendor vendor = Vendor.llvm;
39*627f7eb2Smrg     else version (D_NET)       Vendor vendor = Vendor.dotNET;
40*627f7eb2Smrg     else version (SDC)         Vendor vendor = Vendor.sdc;
41*627f7eb2Smrg     else                      Vendor vendor = Vendor.unknown;
42*627f7eb2Smrg 
43*627f7eb2Smrg 
44*627f7eb2Smrg     /**
45*627f7eb2Smrg      * The vendor specific version number, as in
46*627f7eb2Smrg      * version_major.version_minor
47*627f7eb2Smrg      */
48*627f7eb2Smrg     uint version_major = __VERSION__ / 1000;
49*627f7eb2Smrg     uint version_minor = __VERSION__ % 1000;    /// ditto
50*627f7eb2Smrg 
51*627f7eb2Smrg 
52*627f7eb2Smrg     /**
53*627f7eb2Smrg      * The version of the D Programming Language Specification
54*627f7eb2Smrg      * supported by the compiler.
55*627f7eb2Smrg      */
56*627f7eb2Smrg     uint D_major = 2;
57*627f7eb2Smrg     uint D_minor = 0;
58*627f7eb2Smrg }
59