aboutsummaryrefslogtreecommitdiff
path: root/buildconfig
diff options
context:
space:
mode:
Diffstat (limited to 'buildconfig')
-rw-r--r--buildconfig/BuildConfig.cpp.in55
-rw-r--r--buildconfig/BuildConfig.h87
-rw-r--r--buildconfig/CMakeLists.txt11
3 files changed, 153 insertions, 0 deletions
diff --git a/buildconfig/BuildConfig.cpp.in b/buildconfig/BuildConfig.cpp.in
new file mode 100644
index 00000000..86ea83ee
--- /dev/null
+++ b/buildconfig/BuildConfig.cpp.in
@@ -0,0 +1,55 @@
+#include "BuildConfig.h"
+#include <QObject>
+
+const Config BuildConfig;
+
+Config::Config()
+{
+ // Version information
+ VERSION_MAJOR = @MultiMC_VERSION_MAJOR@;
+ VERSION_MINOR = @MultiMC_VERSION_MINOR@;
+ VERSION_HOTFIX = @MultiMC_VERSION_HOTFIX@;
+ VERSION_BUILD = @MultiMC_VERSION_BUILD@;
+
+ BUILD_PLATFORM = "@MultiMC_BUILD_PLATFORM@";
+ CHANLIST_URL = "@MultiMC_CHANLIST_URL@";
+ ANALYTICS_ID = "@MultiMC_ANALYTICS_ID@";
+ NOTIFICATION_URL = "@MultiMC_NOTIFICATION_URL@";
+ FULL_VERSION_STR = "@MultiMC_VERSION_MAJOR@.@MultiMC_VERSION_MINOR@.@MultiMC_VERSION_BUILD@";
+
+ GIT_COMMIT = "@MultiMC_GIT_COMMIT@";
+ GIT_REFSPEC = "@MultiMC_GIT_REFSPEC@";
+ if(GIT_REFSPEC.startsWith("refs/heads/") && !CHANLIST_URL.isEmpty() && VERSION_BUILD >= 0)
+ {
+ VERSION_CHANNEL = GIT_REFSPEC;
+ VERSION_CHANNEL.remove("refs/heads/");
+ UPDATER_ENABLED = true;
+ }
+ else
+ {
+ VERSION_CHANNEL = QObject::tr("custom");
+ }
+
+ VERSION_STR = "@MultiMC_VERSION_STRING@";
+ NEWS_RSS_URL = "@MultiMC_NEWS_RSS_URL@";
+ PASTE_EE_KEY = "@MultiMC_PASTE_EE_API_KEY@";
+ META_URL = "@MultiMC_META_URL@";
+}
+
+QString Config::printableVersionString() const
+{
+ QString vstr = QString("%1.%2.%3").arg(QString::number(VERSION_MAJOR), QString::number(VERSION_MINOR), QString::number(VERSION_HOTFIX));
+
+ // If the build is not a main release, append the channel
+ if(VERSION_CHANNEL != "stable")
+ {
+ vstr += "-" + VERSION_CHANNEL;
+ }
+
+ // if a build number is set, also add it to the end
+ if(VERSION_BUILD >= 0)
+ {
+ vstr += "-" + QString::number(VERSION_BUILD);
+ }
+ return vstr;
+}
diff --git a/buildconfig/BuildConfig.h b/buildconfig/BuildConfig.h
new file mode 100644
index 00000000..a80af3d2
--- /dev/null
+++ b/buildconfig/BuildConfig.h
@@ -0,0 +1,87 @@
+#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 version channel
+ * This is used by the updater to determine what channel the current version came from.
+ */
+ QString VERSION_CHANNEL;
+
+ bool UPDATER_ENABLED = false;
+
+ /// 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;
+
+ /// Google analytics ID
+ QString ANALYTICS_ID;
+
+ /// URL for notifications
+ QString NOTIFICATION_URL;
+
+ /// Used for matching notifications
+ QString FULL_VERSION_STR;
+
+ /// The git commit hash of this build
+ QString GIT_COMMIT;
+
+ /// The git refspec of this build
+ QString GIT_REFSPEC;
+
+ /// This is printed on start to standard output
+ QString VERSION_STR;
+
+ /**
+ * This is used to fetch the news RSS feed.
+ * It defaults in CMakeLists.txt to "https://multimc.org/rss.xml"
+ */
+ QString NEWS_RSS_URL;
+
+ /**
+ * API key you can get from paste.ee when you register an account
+ */
+ QString PASTE_EE_KEY;
+
+ /**
+ * MultiMC Metadata repository URL prefix
+ */
+ QString META_URL;
+
+ QString RESOURCE_BASE = "https://resources.download.minecraft.net/";
+ QString LIBRARY_BASE = "https://libraries.minecraft.net/";
+ QString SKINS_BASE = "https://crafatar.com/skins/";
+ QString AUTH_BASE = "https://authserver.mojang.com/";
+ QString MOJANG_STATUS_URL = "https://status.mojang.com/check";
+ QString IMGUR_BASE_URL = "https://api.imgur.com/3/";
+ QString FMLLIBS_OUR_BASE_URL = "https://files.multimc.org/fmllibs/";
+ QString FMLLIBS_FORGE_BASE_URL = "https://files.minecraftforge.net/fmllibs/";
+ QString TRANSLATIONS_BASE_URL = "https://files.multimc.org/translations/";
+
+ QString LEGACY_FTB_CDN_BASE_URL = "https://dist.creeper.host/FTB2/";
+
+ /**
+ * \brief Converts the Version to a string.
+ * \return The version number in string format (major.minor.revision.build).
+ */
+ QString printableVersionString() const;
+};
+
+extern const Config BuildConfig;
diff --git a/buildconfig/CMakeLists.txt b/buildconfig/CMakeLists.txt
new file mode 100644
index 00000000..de4fd350
--- /dev/null
+++ b/buildconfig/CMakeLists.txt
@@ -0,0 +1,11 @@
+######## Configure the file with build properties ########
+
+configure_file("${CMAKE_CURRENT_SOURCE_DIR}/BuildConfig.cpp.in" "${CMAKE_CURRENT_BINARY_DIR}/BuildConfig.cpp")
+
+add_library(BuildConfig STATIC
+ BuildConfig.h
+ ${CMAKE_CURRENT_BINARY_DIR}/BuildConfig.cpp
+)
+
+target_link_libraries(BuildConfig Qt5::Core)
+target_include_directories(BuildConfig PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}")