summaryrefslogtreecommitdiffstats
path: root/BuildConfig.h
blob: 5e10beb0772b1d8029b5fe6a726b740f35a63f40 (plain)
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
#pragma once
#include <QString>

/**
 * \brief The Config class holds all the build-time information passed from the build system.
 */
class Config
{
public:
	Config();
	/// The major version number.
	int VERSION_MAJOR;
	/// The minor version number.
	int VERSION_MINOR;
	/// The hotfix number.
	int VERSION_HOTFIX;
	/// The build number.
	int VERSION_BUILD;
	/// The build type, as specified at build time.
	QString VERSION_TYPE;

	/// The build type, transformed.
	enum Type
	{
		/// Version type for stable release builds.
		Release,

		/// Version type for release candidates.
		ReleaseCandidate,

		/// Version type for development builds.
		Development,

		/// Version type for custom builds. This is the default when no version type is specified.
		Custom
	} versionTypeEnum;

	/**
	 * The version channel
	 * This is used by the updater to determine what channel the current version came from.
	 */
	QString VERSION_CHANNEL;

	/// A short string identifying this build's platform. For example, "lin64" or "win32".
	QString BUILD_PLATFORM;

	/// URL for the updater's channel
	QString CHANLIST_URL;

	/// URL for notifications
	QString NOTIFICATION_URL;

	/// Used for matching notifications
	QString FULL_VERSION_STR;

	/// enabled for updater dry run
	bool UPDATER_DRY_RUN;

	/// enabled for updater dry run
	bool UPDATER_FORCE_LOCAL;

	/// The commit hash of this build
	QString GIT_COMMIT;
	const char* GIT_COMMIT_CSTR;

	/// This is printed on start to standard output
	QString VERSION_STR;

	/// Version string as a char string. Used by the crash handling system to avoid touching heap memory.
	const char* VERSION_CSTR;

	/**
	 * This is used to fetch the news RSS feed.
	 * It defaults in CMakeLists.txt to "http://multimc.org/rss.xml"
	 */
	QString NEWS_RSS_URL;

	/**
	 * \brief Converts the Version to a string.
	 * \return The version number in string format (major.minor.revision.build).
	 */
	QString printableVersionString() const;

	/**
	 * returns a string representation of the version channel type, suitable for printing.
	 */
	QString versionTypeName() const;
};

extern Config BuildConfig;