diff options
Diffstat (limited to 'buildconfig')
-rw-r--r-- | buildconfig/BuildConfig.cpp.in | 55 | ||||
-rw-r--r-- | buildconfig/BuildConfig.h | 87 | ||||
-rw-r--r-- | buildconfig/CMakeLists.txt | 11 |
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}") |