summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/version.cc
blob: 3997d1aa2a08f93f3287f6a12e2ec56c690153e5 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
/*
 *  File:       version.cc
 *  Summary:    Version (and revision) functionality.
 *  Written by: Steven Noonan
 */

#include "AppHdr.h"

#include "build.h"
#include "compflag.h"

namespace Version
{
    std::string Short()
    {
        return std::string(CRAWL_VERSION_TAG);
    }

    std::string Long()
    {
        return std::string(CRAWL_VERSION_LONG);
    }

    int Major()
    {
        return CRAWL_VERSION_MAJOR;
    }

    int Minor()
    {
        return CRAWL_VERSION_MINOR;
    }

    int Revision()
    {
        return CRAWL_VERSION_REVISION;
    }

    int Build()
    {
        return CRAWL_VERSION_BUILD;
    }

    Class ReleaseType()
    {
        return CRAWL_VERSION_PREREL_TYPE;
    }

    int ReleaseID()
    {
        return CRAWL_VERSION_PREREL_NUM;
    }

    std::string Compiler()
    {
#if defined(__GNUC__) && defined(__VERSION__)
        return make_stringf("GCC %s", __VERSION__);
#elif defined(__GNUC__)
        return ("GCC (unknown version)");
#elif defined(TARGET_COMPILER_MINGW)
        return ("MINGW");
#elif defined(TARGET_COMPILER_CYGWIN)
        return ("CYGWIN");
#elif defined(TARGET_COMPILER_VC)
        return ("Visual C++");
#elif defined(TARGET_COMPILER_ICC)
        return ("Intel C++");
#else
        return ("Unknown compiler");
#endif
    }

    std::string BuildOS()
    {
        return CRAWL_BUILD_OS;
    }

    std::string BuildOSVersion()
    {
        return CRAWL_BUILD_OS_VER;
    }

    std::string BuildMachine()
    {
        return CRAWL_BUILD_MACHINE;
    }

    std::string BuildProcessor()
    {
        return CRAWL_BUILD_PROCESSOR;
    }

    std::string CFLAGS()
    {
        return CRAWL_CFLAGS;
    }

    std::string LDFLAGS()
    {
        return CRAWL_LDFLAGS;
    }
}

std::string compilation_info()
{
    std::string out = "";

    out += make_stringf("Compiled with %s on %s at %s" EOL,
                        Version::Compiler().c_str(), __DATE__, __TIME__);
    out += make_stringf("Compiled on OS: %s %s" EOL,
                        Version::BuildOS().c_str(),
                        Version::BuildOSVersion().c_str());
    out += make_stringf("Compiled on machine type: %s" EOL,
                        Version::BuildMachine().c_str());
    out += make_stringf("Compiled on processor type: %s" EOL,
                        Version::BuildProcessor().c_str());

    out += make_stringf("CLFAGS: %s" EOL, Version::CFLAGS().c_str());
    out += make_stringf("LDFLAGS: %s" EOL, Version::LDFLAGS().c_str());

    return (out);
}