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