summaryrefslogtreecommitdiff
path: root/meshmc/launcher/CMakeLists.txt
diff options
context:
space:
mode:
authorMehmet Samet Duman <yongdohyun@projecttick.org>2026-04-02 18:45:07 +0300
committerMehmet Samet Duman <yongdohyun@projecttick.org>2026-04-02 18:45:07 +0300
commit31b9a8949ed0a288143e23bf739f2eb64fdc63be (patch)
tree8a984fa143c38fccad461a77792d6864f3e82cd3 /meshmc/launcher/CMakeLists.txt
parent934382c8a1ce738589dee9ee0f14e1cec812770e (diff)
parentfad6a1066616b69d7f5fef01178efdf014c59537 (diff)
downloadProject-Tick-31b9a8949ed0a288143e23bf739f2eb64fdc63be.tar.gz
Project-Tick-31b9a8949ed0a288143e23bf739f2eb64fdc63be.zip
Add 'meshmc/' from commit 'fad6a1066616b69d7f5fef01178efdf014c59537'
git-subtree-dir: meshmc git-subtree-mainline: 934382c8a1ce738589dee9ee0f14e1cec812770e git-subtree-split: fad6a1066616b69d7f5fef01178efdf014c59537
Diffstat (limited to 'meshmc/launcher/CMakeLists.txt')
-rw-r--r--meshmc/launcher/CMakeLists.txt1157
1 files changed, 1157 insertions, 0 deletions
diff --git a/meshmc/launcher/CMakeLists.txt b/meshmc/launcher/CMakeLists.txt
new file mode 100644
index 0000000000..5bcaeec33a
--- /dev/null
+++ b/meshmc/launcher/CMakeLists.txt
@@ -0,0 +1,1157 @@
+project(application)
+
+################################ FILES ################################
+
+######## Sources and headers ########
+
+include (UnitTest)
+
+set(CORE_SOURCES
+ # LOGIC - Base classes and infrastructure
+ BaseInstaller.h
+ BaseInstaller.cpp
+ BaseVersionList.h
+ BaseVersionList.cpp
+ InstanceList.h
+ InstanceList.cpp
+ InstanceTask.h
+ InstanceTask.cpp
+ LoggedProcess.h
+ LoggedProcess.cpp
+ MessageLevel.cpp
+ MessageLevel.h
+ BaseVersion.h
+ BaseInstance.h
+ BaseInstance.cpp
+ NullInstance.h
+ MMCZip.h
+ MMCZip.cpp
+ MMCStrings.h
+ MMCStrings.cpp
+
+ # Basic instance manipulation tasks (derived from InstanceTask)
+ InstanceCreationTask.h
+ InstanceCreationTask.cpp
+ InstanceCopyTask.h
+ InstanceCopyTask.cpp
+ InstanceImportTask.h
+ InstanceImportTask.cpp
+
+ # Use tracking separate from memory management
+ Usable.h
+
+ # Prefix tree where node names are strings between separators
+ SeparatorPrefixTree.h
+
+ # String filters
+ Filter.h
+ Filter.cpp
+
+ # JSON parsing helpers
+ Json.h
+ Json.cpp
+
+ FileSystem.h
+ FileSystem.cpp
+
+ Exception.h
+
+ # RW lock protected map
+ RWStorage.h
+
+ # A variable that has an implicit default value and keeps track of changes
+ DefaultVariable.h
+
+ # a smart pointer wrapper intended for safer use with Qt signal/slot mechanisms
+ QObjectPtr.h
+
+ # Compression support
+ GZip.h
+ GZip.cpp
+
+ # Command line parameter parsing
+ Commandline.h
+ Commandline.cpp
+
+ # Version number string support
+ Version.h
+ Version.cpp
+
+ # A Recursive file system watcher
+ RecursiveFileSystemWatcher.h
+ RecursiveFileSystemWatcher.cpp
+
+ # Time
+ MMCTime.h
+ MMCTime.cpp
+)
+
+add_unit_test(FileSystem
+ SOURCES FileSystem_test.cpp
+ LIBS MeshMC_logic
+ DATA testdata
+ )
+
+add_unit_test(GZip
+ SOURCES GZip_test.cpp
+ LIBS MeshMC_logic
+ )
+
+set(PATHMATCHER_SOURCES
+ # Path matchers
+ pathmatcher/FSTreeMatcher.h
+ pathmatcher/IPathMatcher.h
+ pathmatcher/MultiMatcher.h
+ pathmatcher/RegexpMatcher.h
+)
+
+set(NET_SOURCES
+ # network stuffs
+ net/ByteArraySink.h
+ net/ChecksumValidator.h
+ net/Download.cpp
+ net/Download.h
+ net/FileSink.cpp
+ net/FileSink.h
+ net/HttpMetaCache.cpp
+ net/HttpMetaCache.h
+ net/MetaCacheSink.cpp
+ net/MetaCacheSink.h
+ net/NetAction.h
+ net/NetJob.cpp
+ net/NetJob.h
+ net/PasteUpload.cpp
+ net/PasteUpload.h
+ net/Sink.h
+ net/Validator.h
+)
+
+# Game launch logic
+set(LAUNCH_SOURCES
+ launch/steps/CheckJava.cpp
+ launch/steps/CheckJava.h
+ launch/steps/LookupServerAddress.cpp
+ launch/steps/LookupServerAddress.h
+ launch/steps/PostLaunchCommand.cpp
+ launch/steps/PostLaunchCommand.h
+ launch/steps/PreLaunchCommand.cpp
+ launch/steps/PreLaunchCommand.h
+ launch/steps/TextPrint.cpp
+ launch/steps/TextPrint.h
+ launch/steps/Update.cpp
+ launch/steps/Update.h
+ launch/LaunchStep.cpp
+ launch/LaunchStep.h
+ launch/LaunchTask.cpp
+ launch/LaunchTask.h
+ launch/LogModel.cpp
+ launch/LogModel.h
+)
+
+# New updater system (replaces the old GoUpdate-based system)
+set(UPDATE_SOURCES
+ updater/UpdateChecker.h
+ updater/UpdateChecker.cpp
+)
+
+# Rarely used notifications
+set(NOTIFICATIONS_SOURCES
+ # Notifications - short warning messages
+ notifications/NotificationChecker.h
+ notifications/NotificationChecker.cpp
+)
+
+# Backend for the news bar... there's usually no news.
+set(NEWS_SOURCES
+ # News System
+ news/NewsChecker.h
+ news/NewsChecker.cpp
+ news/NewsEntry.h
+ news/NewsEntry.cpp
+)
+
+# Icon interface
+set(ICONS_SOURCES
+ # Icons System and related code
+ icons/IconUtils.h
+ icons/IconUtils.cpp
+)
+
+# Support for Minecraft instances and launch
+set(MINECRAFT_SOURCES
+ # Minecraft support
+ minecraft/auth/AccountData.cpp
+ minecraft/auth/AccountData.h
+ minecraft/auth/AccountList.cpp
+ minecraft/auth/AccountList.h
+ minecraft/auth/AccountTask.cpp
+ minecraft/auth/AccountTask.h
+ minecraft/auth/AuthRequest.cpp
+ minecraft/auth/AuthRequest.h
+ minecraft/auth/AuthSession.cpp
+ minecraft/auth/AuthSession.h
+ minecraft/auth/AuthStep.cpp
+ minecraft/auth/AuthStep.h
+ minecraft/auth/MinecraftAccount.cpp
+ minecraft/auth/MinecraftAccount.h
+ minecraft/auth/Parsers.cpp
+ minecraft/auth/Parsers.h
+ minecraft/auth/flows/AuthFlow.cpp
+ minecraft/auth/flows/AuthFlow.h
+ minecraft/auth/flows/MSA.cpp
+ minecraft/auth/flows/MSA.h
+
+ minecraft/auth/steps/EntitlementsStep.cpp
+ minecraft/auth/steps/EntitlementsStep.h
+ minecraft/auth/steps/GetSkinStep.cpp
+ minecraft/auth/steps/GetSkinStep.h
+ minecraft/auth/steps/MeshMCLoginStep.cpp
+ minecraft/auth/steps/MeshMCLoginStep.h
+ minecraft/auth/steps/MinecraftProfileStep.cpp
+ minecraft/auth/steps/MinecraftProfileStep.h
+ minecraft/auth/steps/MSAStep.cpp
+ minecraft/auth/steps/MSAStep.h
+ minecraft/auth/steps/XboxAuthorizationStep.cpp
+ minecraft/auth/steps/XboxAuthorizationStep.h
+ minecraft/auth/steps/XboxProfileStep.cpp
+ minecraft/auth/steps/XboxProfileStep.h
+ minecraft/auth/steps/XboxUserStep.cpp
+ minecraft/auth/steps/XboxUserStep.h
+ minecraft/gameoptions/GameOptions.h
+ minecraft/gameoptions/GameOptions.cpp
+
+ minecraft/update/AssetUpdateTask.h
+ minecraft/update/AssetUpdateTask.cpp
+ minecraft/update/FMLLibrariesTask.cpp
+ minecraft/update/FMLLibrariesTask.h
+ minecraft/update/FoldersTask.cpp
+ minecraft/update/FoldersTask.h
+ minecraft/update/LibrariesTask.cpp
+ minecraft/update/LibrariesTask.h
+
+ minecraft/launch/ClaimAccount.cpp
+ minecraft/launch/ClaimAccount.h
+ minecraft/launch/CreateGameFolders.cpp
+ minecraft/launch/CreateGameFolders.h
+ minecraft/launch/ModMinecraftJar.cpp
+ minecraft/launch/ModMinecraftJar.h
+ minecraft/launch/DirectJavaLaunch.cpp
+ minecraft/launch/DirectJavaLaunch.h
+ minecraft/launch/ExtractNatives.cpp
+ minecraft/launch/ExtractNatives.h
+ minecraft/launch/MeshMCPartLaunch.cpp
+ minecraft/launch/MeshMCPartLaunch.h
+ minecraft/launch/MinecraftServerTarget.cpp
+ minecraft/launch/MinecraftServerTarget.h
+ minecraft/launch/PrintInstanceInfo.cpp
+ minecraft/launch/PrintInstanceInfo.h
+ minecraft/launch/ReconstructAssets.cpp
+ minecraft/launch/ReconstructAssets.h
+ minecraft/launch/ScanModFolders.cpp
+ minecraft/launch/ScanModFolders.h
+ minecraft/launch/VerifyJavaInstall.cpp
+ minecraft/launch/VerifyJavaInstall.h
+
+ minecraft/legacy/LegacyModList.h
+ minecraft/legacy/LegacyModList.cpp
+ minecraft/legacy/LegacyInstance.h
+ minecraft/legacy/LegacyInstance.cpp
+ minecraft/legacy/LegacyUpgradeTask.h
+ minecraft/legacy/LegacyUpgradeTask.cpp
+
+ minecraft/GradleSpecifier.h
+ minecraft/MinecraftInstance.cpp
+ minecraft/MinecraftInstance.h
+ minecraft/LaunchProfile.cpp
+ minecraft/LaunchProfile.h
+ minecraft/Component.cpp
+ minecraft/Component.h
+ minecraft/PackProfile.cpp
+ minecraft/PackProfile.h
+ minecraft/ComponentUpdateTask.cpp
+ minecraft/ComponentUpdateTask.h
+ minecraft/MinecraftLoadAndCheck.h
+ minecraft/MinecraftLoadAndCheck.cpp
+ minecraft/MinecraftUpdate.h
+ minecraft/MinecraftUpdate.cpp
+ minecraft/MojangVersionFormat.cpp
+ minecraft/MojangVersionFormat.h
+ minecraft/Rule.cpp
+ minecraft/Rule.h
+ minecraft/OneSixVersionFormat.cpp
+ minecraft/OneSixVersionFormat.h
+ minecraft/OpSys.cpp
+ minecraft/OpSys.h
+ minecraft/ParseUtils.cpp
+ minecraft/ParseUtils.h
+ minecraft/ProfileUtils.cpp
+ minecraft/ProfileUtils.h
+ minecraft/Library.cpp
+ minecraft/Library.h
+ minecraft/MojangDownloadInfo.h
+ minecraft/VersionFile.cpp
+ minecraft/VersionFile.h
+ minecraft/VersionFilterData.h
+ minecraft/VersionFilterData.cpp
+ minecraft/World.h
+ minecraft/World.cpp
+ minecraft/WorldList.h
+ minecraft/WorldList.cpp
+
+ minecraft/mod/Mod.h
+ minecraft/mod/Mod.cpp
+ minecraft/mod/ModDetails.h
+ minecraft/mod/ModFolderModel.h
+ minecraft/mod/ModFolderModel.cpp
+ minecraft/mod/ModFolderLoadTask.h
+ minecraft/mod/ModFolderLoadTask.cpp
+ minecraft/mod/LocalModParseTask.h
+ minecraft/mod/LocalModParseTask.cpp
+ minecraft/mod/ResourcePackFolderModel.h
+ minecraft/mod/ResourcePackFolderModel.cpp
+ minecraft/mod/TexturePackFolderModel.h
+ minecraft/mod/TexturePackFolderModel.cpp
+
+ # Assets
+ minecraft/AssetsUtils.h
+ minecraft/AssetsUtils.cpp
+
+ # Minecraft services
+ minecraft/services/CapeChange.cpp
+ minecraft/services/CapeChange.h
+ minecraft/services/SkinUpload.cpp
+ minecraft/services/SkinUpload.h
+ minecraft/services/SkinDelete.cpp
+ minecraft/services/SkinDelete.h
+
+ mojang/PackageManifest.h
+ mojang/PackageManifest.cpp
+ )
+
+add_unit_test(GradleSpecifier
+ SOURCES minecraft/GradleSpecifier_test.cpp
+ LIBS MeshMC_logic
+ )
+
+add_executable(PackageManifest
+ mojang/PackageManifest_test.cpp
+)
+target_link_libraries(PackageManifest
+ MeshMC_logic
+ Qt6::Test
+)
+target_include_directories(PackageManifest
+ PRIVATE ../cmake/UnitTest/
+)
+add_test(
+ NAME PackageManifest
+ COMMAND PackageManifest
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+)
+
+add_unit_test(MojangVersionFormat
+ SOURCES minecraft/MojangVersionFormat_test.cpp
+ LIBS MeshMC_logic
+ DATA minecraft/testdata
+ )
+
+add_unit_test(Library
+ SOURCES minecraft/Library_test.cpp
+ LIBS MeshMC_logic
+ )
+
+# FIXME: shares data with FileSystem test
+add_unit_test(ModFolderModel
+ SOURCES minecraft/mod/ModFolderModel_test.cpp
+ DATA testdata
+ LIBS MeshMC_logic
+ )
+
+add_unit_test(ParseUtils
+ SOURCES minecraft/ParseUtils_test.cpp
+ LIBS MeshMC_logic
+ )
+
+# the screenshots feature
+set(SCREENSHOTS_SOURCES
+ screenshots/Screenshot.h
+ screenshots/ImgurUpload.h
+ screenshots/ImgurUpload.cpp
+ screenshots/ImgurAlbumCreation.h
+ screenshots/ImgurAlbumCreation.cpp
+)
+
+set(TASKS_SOURCES
+ # Tasks
+ tasks/Task.h
+ tasks/Task.cpp
+ tasks/SequentialTask.h
+ tasks/SequentialTask.cpp
+)
+
+set(SETTINGS_SOURCES
+ # Settings
+ settings/INIFile.cpp
+ settings/INIFile.h
+ settings/INISettingsObject.cpp
+ settings/INISettingsObject.h
+ settings/OverrideSetting.cpp
+ settings/OverrideSetting.h
+ settings/PassthroughSetting.cpp
+ settings/PassthroughSetting.h
+ settings/Setting.cpp
+ settings/Setting.h
+ settings/SettingsObject.cpp
+ settings/SettingsObject.h
+)
+
+add_unit_test(INIFile
+ SOURCES settings/INIFile_test.cpp
+ LIBS MeshMC_logic
+ )
+
+set(JAVA_SOURCES
+ java/JavaChecker.h
+ java/JavaChecker.cpp
+ java/JavaCheckerJob.h
+ java/JavaCheckerJob.cpp
+ java/JavaInstall.h
+ java/JavaInstall.cpp
+ java/JavaInstallList.h
+ java/JavaInstallList.cpp
+ java/JavaUtils.h
+ java/JavaUtils.cpp
+ java/JavaVersion.h
+ java/JavaVersion.cpp
+)
+
+if(NOT MeshMC_DISABLE_JAVA_DOWNLOADER)
+ list(APPEND JAVA_SOURCES
+ java/download/JavaRuntime.h
+ java/download/JavaDownloadTask.h
+ java/download/JavaDownloadTask.cpp
+ )
+endif()
+
+add_unit_test(JavaVersion
+ SOURCES java/JavaVersion_test.cpp
+ LIBS MeshMC_logic
+ )
+
+set(TRANSLATIONS_SOURCES
+ translations/TranslationsModel.h
+ translations/TranslationsModel.cpp
+ translations/POTranslator.h
+ translations/POTranslator.cpp
+)
+
+set(TOOLS_SOURCES
+ # Tools
+ tools/BaseExternalTool.cpp
+ tools/BaseExternalTool.h
+ tools/BaseProfiler.cpp
+ tools/BaseProfiler.h
+ tools/JProfiler.cpp
+ tools/JProfiler.h
+ tools/JVisualVM.cpp
+ tools/JVisualVM.h
+ tools/MCEditTool.cpp
+ tools/MCEditTool.h
+)
+
+set(META_SOURCES
+ # Metadata sources
+ meta/JsonFormat.cpp
+ meta/JsonFormat.h
+ meta/BaseEntity.cpp
+ meta/BaseEntity.h
+ meta/VersionList.cpp
+ meta/VersionList.h
+ meta/Version.cpp
+ meta/Version.h
+ meta/Index.cpp
+ meta/Index.h
+)
+
+set(FTB_SOURCES
+ modplatform/legacy_ftb/PackFetchTask.h
+ modplatform/legacy_ftb/PackFetchTask.cpp
+ modplatform/legacy_ftb/PackInstallTask.h
+ modplatform/legacy_ftb/PackInstallTask.cpp
+ modplatform/legacy_ftb/PrivatePackManager.h
+ modplatform/legacy_ftb/PrivatePackManager.cpp
+
+ modplatform/legacy_ftb/PackHelpers.h
+)
+
+set(FLAME_SOURCES
+ # Flame
+ modplatform/flame/FlamePackIndex.cpp
+ modplatform/flame/FlamePackIndex.h
+ modplatform/flame/PackManifest.h
+ modplatform/flame/PackManifest.cpp
+ modplatform/flame/FileResolvingTask.h
+ modplatform/flame/FileResolvingTask.cpp
+)
+
+set(MODPACKSCH_SOURCES
+ modplatform/modpacksch/FTBPackInstallTask.h
+ modplatform/modpacksch/FTBPackInstallTask.cpp
+ modplatform/modpacksch/FTBPackManifest.h
+ modplatform/modpacksch/FTBPackManifest.cpp
+)
+
+set(TECHNIC_SOURCES
+ modplatform/technic/SingleZipPackInstallTask.h
+ modplatform/technic/SingleZipPackInstallTask.cpp
+ modplatform/technic/SolderPackInstallTask.h
+ modplatform/technic/SolderPackInstallTask.cpp
+ modplatform/technic/TechnicPackProcessor.h
+ modplatform/technic/TechnicPackProcessor.cpp
+)
+
+set(ATLAUNCHER_SOURCES
+ modplatform/atlauncher/ATLPackIndex.cpp
+ modplatform/atlauncher/ATLPackIndex.h
+ modplatform/atlauncher/ATLPackInstallTask.cpp
+ modplatform/atlauncher/ATLPackInstallTask.h
+ modplatform/atlauncher/ATLPackManifest.cpp
+ modplatform/atlauncher/ATLPackManifest.h
+)
+
+set(MODRINTH_SOURCES
+ modplatform/modrinth/ModrinthPackIndex.cpp
+ modplatform/modrinth/ModrinthPackIndex.h
+ modplatform/modrinth/ModrinthPackManifest.cpp
+ modplatform/modrinth/ModrinthPackManifest.h
+)
+
+add_unit_test(Index
+ SOURCES meta/Index_test.cpp
+ LIBS MeshMC_logic
+ )
+
+################################ COMPILE ################################
+
+# we need zlib
+find_package(ZLIB REQUIRED)
+
+set(LOGIC_SOURCES
+ ${CORE_SOURCES}
+ ${PATHMATCHER_SOURCES}
+ ${NET_SOURCES}
+ ${LAUNCH_SOURCES}
+ ${UPDATE_SOURCES}
+ ${NOTIFICATIONS_SOURCES}
+ ${NEWS_SOURCES}
+ ${MINECRAFT_SOURCES}
+ ${SCREENSHOTS_SOURCES}
+ ${TASKS_SOURCES}
+ ${SETTINGS_SOURCES}
+ ${JAVA_SOURCES}
+ ${TRANSLATIONS_SOURCES}
+ ${TOOLS_SOURCES}
+ ${META_SOURCES}
+ ${ICONS_SOURCES}
+ ${FTB_SOURCES}
+ ${FLAME_SOURCES}
+ ${MODPACKSCH_SOURCES}
+ ${TECHNIC_SOURCES}
+ ${ATLAUNCHER_SOURCES}
+ ${MODRINTH_SOURCES}
+)
+
+SET(MESHMC_SOURCES
+ # Application base
+ Application.h
+ Application.cpp
+ UpdateController.cpp
+ UpdateController.h
+ ApplicationMessage.h
+ ApplicationMessage.cpp
+
+ # GUI - general utilities
+ DesktopServices.h
+ DesktopServices.cpp
+ VersionProxyModel.h
+ VersionProxyModel.cpp
+ HoeDown.h
+
+ # Super secret!
+ KonamiCode.h
+ KonamiCode.cpp
+
+ # Bundled resources
+ resources/backgrounds/backgrounds.qrc
+ resources/multimc/multimc.qrc
+ resources/pe_dark/pe_dark.qrc
+ resources/pe_light/pe_light.qrc
+ resources/pe_colored/pe_colored.qrc
+ resources/pe_blue/pe_blue.qrc
+ resources/OSX/OSX.qrc
+ resources/iOS/iOS.qrc
+ resources/flat/flat.qrc
+ resources/flat_white/flat_white.qrc
+ resources/documents/documents.qrc
+ resources/breeze_dark/breeze_dark.qrc
+ resources/breeze_light/breeze_light.qrc
+ ${CMAKE_BINARY_DIR}/${MeshMC_AppBinaryName}.qrc
+
+ # Icons
+ icons/MMCIcon.h
+ icons/MMCIcon.cpp
+ icons/IconList.h
+ icons/IconList.cpp
+
+ # GUI - windows
+ ui/GuiUtil.h
+ ui/GuiUtil.cpp
+ ui/ColorCache.h
+ ui/ColorCache.cpp
+ ui/MainWindow.h
+ ui/MainWindow.cpp
+ ui/InstanceWindow.h
+ ui/InstanceWindow.cpp
+
+ # FIXME: maybe find a better home for this.
+ SkinUtils.cpp
+ SkinUtils.h
+
+ # GUI - setup wizard
+ ui/setupwizard/SetupWizard.h
+ ui/setupwizard/SetupWizard.cpp
+ ui/setupwizard/AnalyticsWizardPage.cpp
+ ui/setupwizard/AnalyticsWizardPage.h
+ ui/setupwizard/BaseWizardPage.h
+ ui/setupwizard/JavaWizardPage.cpp
+ ui/setupwizard/JavaWizardPage.h
+ ui/setupwizard/LanguageWizardPage.cpp
+ ui/setupwizard/LanguageWizardPage.h
+
+ # GUI - themes
+ ui/themes/FusionTheme.cpp
+ ui/themes/FusionTheme.h
+ ui/themes/BrightTheme.cpp
+ ui/themes/BrightTheme.h
+ ui/themes/CustomTheme.cpp
+ ui/themes/CustomTheme.h
+ ui/themes/DarkTheme.cpp
+ ui/themes/DarkTheme.h
+ ui/themes/ITheme.cpp
+ ui/themes/ITheme.h
+ ui/themes/SystemTheme.cpp
+ ui/themes/SystemTheme.h
+ ui/themes/ThemeManager.cpp
+ ui/themes/ThemeManager.h
+ ui/themes/CatPack.cpp
+ ui/themes/CatPack.h
+
+ # Processes
+ LaunchController.h
+ LaunchController.cpp
+
+ # page provider for instances
+ InstancePageProvider.h
+
+ # Common java checking UI
+ JavaCommon.h
+ JavaCommon.cpp
+
+ # GUI - paged dialog base
+ ui/pages/BasePage.h
+ ui/pages/BasePageContainer.h
+ ui/pages/BasePageProvider.h
+
+ # GUI - instance pages
+ ui/pages/instance/GameOptionsPage.cpp
+ ui/pages/instance/GameOptionsPage.h
+ ui/pages/instance/VersionPage.cpp
+ ui/pages/instance/VersionPage.h
+ ui/pages/instance/TexturePackPage.h
+ ui/pages/instance/ResourcePackPage.h
+ ui/pages/instance/ShaderPackPage.h
+ ui/pages/instance/ModFolderPage.cpp
+ ui/pages/instance/ModFolderPage.h
+ ui/pages/instance/NotesPage.cpp
+ ui/pages/instance/NotesPage.h
+ ui/pages/instance/LogPage.cpp
+ ui/pages/instance/LogPage.h
+ ui/pages/instance/InstanceSettingsPage.cpp
+ ui/pages/instance/InstanceSettingsPage.h
+ ui/pages/instance/ScreenshotsPage.cpp
+ ui/pages/instance/ScreenshotsPage.h
+ ui/pages/instance/OtherLogsPage.cpp
+ ui/pages/instance/OtherLogsPage.h
+ ui/pages/instance/ServersPage.cpp
+ ui/pages/instance/ServersPage.h
+ ui/pages/instance/LegacyUpgradePage.cpp
+ ui/pages/instance/LegacyUpgradePage.h
+ ui/pages/instance/WorldListPage.cpp
+ ui/pages/instance/WorldListPage.h
+
+ # GUI - global settings pages
+ ui/pages/global/AccountListPage.cpp
+ ui/pages/global/AccountListPage.h
+ ui/pages/global/AppearancePage.cpp
+ ui/pages/global/AppearancePage.h
+ ui/pages/global/CustomCommandsPage.cpp
+ ui/pages/global/CustomCommandsPage.h
+ ui/pages/global/ExternalToolsPage.cpp
+ ui/pages/global/ExternalToolsPage.h
+ ui/pages/global/JavaPage.cpp
+ ui/pages/global/JavaPage.h
+ ui/pages/global/LanguagePage.cpp
+ ui/pages/global/LanguagePage.h
+ ui/pages/global/MinecraftPage.cpp
+ ui/pages/global/MinecraftPage.h
+ ui/pages/global/MeshMCPage.cpp
+ ui/pages/global/MeshMCPage.h
+ ui/pages/global/ProxyPage.cpp
+ ui/pages/global/ProxyPage.h
+ ui/pages/global/PasteEEPage.cpp
+ ui/pages/global/PasteEEPage.h
+
+ # GUI - platform pages
+ ui/pages/modplatform/VanillaPage.cpp
+ ui/pages/modplatform/VanillaPage.h
+
+ ui/pages/modplatform/atlauncher/AtlFilterModel.cpp
+ ui/pages/modplatform/atlauncher/AtlFilterModel.h
+ ui/pages/modplatform/atlauncher/AtlListModel.cpp
+ ui/pages/modplatform/atlauncher/AtlListModel.h
+ ui/pages/modplatform/atlauncher/AtlOptionalModDialog.cpp
+ ui/pages/modplatform/atlauncher/AtlOptionalModDialog.h
+ ui/pages/modplatform/atlauncher/AtlPage.cpp
+ ui/pages/modplatform/atlauncher/AtlPage.h
+
+ ui/pages/modplatform/ftb/FtbFilterModel.cpp
+ ui/pages/modplatform/ftb/FtbFilterModel.h
+ ui/pages/modplatform/ftb/FtbListModel.cpp
+ ui/pages/modplatform/ftb/FtbListModel.h
+ ui/pages/modplatform/ftb/FtbPage.cpp
+ ui/pages/modplatform/ftb/FtbPage.h
+
+ ui/pages/modplatform/legacy_ftb/Page.cpp
+ ui/pages/modplatform/legacy_ftb/Page.h
+ ui/pages/modplatform/legacy_ftb/ListModel.h
+ ui/pages/modplatform/legacy_ftb/ListModel.cpp
+
+ ui/pages/modplatform/flame/FlameModel.cpp
+ ui/pages/modplatform/flame/FlameModel.h
+ ui/pages/modplatform/flame/FlamePage.cpp
+ ui/pages/modplatform/flame/FlamePage.h
+
+ ui/pages/modplatform/modrinth/ModrinthModel.cpp
+ ui/pages/modplatform/modrinth/ModrinthModel.h
+ ui/pages/modplatform/modrinth/ModrinthPage.cpp
+ ui/pages/modplatform/modrinth/ModrinthPage.h
+
+ ui/pages/modplatform/technic/TechnicModel.cpp
+ ui/pages/modplatform/technic/TechnicModel.h
+ ui/pages/modplatform/technic/TechnicPage.cpp
+ ui/pages/modplatform/technic/TechnicPage.h
+
+ ui/pages/modplatform/ImportPage.cpp
+ ui/pages/modplatform/ImportPage.h
+
+ # GUI - dialogs
+ ui/dialogs/AboutDialog.cpp
+ ui/dialogs/AboutDialog.h
+ ui/dialogs/BlockedModsDialog.cpp
+ ui/dialogs/BlockedModsDialog.h
+ ui/dialogs/ProfileSelectDialog.cpp
+ ui/dialogs/ProfileSelectDialog.h
+ ui/dialogs/ProfileSetupDialog.cpp
+ ui/dialogs/ProfileSetupDialog.h
+ ui/dialogs/CopyInstanceDialog.cpp
+ ui/dialogs/CopyInstanceDialog.h
+ ui/dialogs/CustomMessageBox.cpp
+ ui/dialogs/CustomMessageBox.h
+ ui/dialogs/EditAccountDialog.cpp
+ ui/dialogs/EditAccountDialog.h
+ ui/dialogs/ExportInstanceDialog.cpp
+ ui/dialogs/ExportInstanceDialog.h
+ ui/dialogs/IconPickerDialog.cpp
+ ui/dialogs/IconPickerDialog.h
+ ui/dialogs/MSALoginDialog.cpp
+ ui/dialogs/MSALoginDialog.h
+ ui/dialogs/NewComponentDialog.cpp
+ ui/dialogs/NewComponentDialog.h
+ ui/dialogs/NewInstanceDialog.cpp
+ ui/dialogs/NewInstanceDialog.h
+ ui/dialogs/NotificationDialog.cpp
+ ui/dialogs/NotificationDialog.h
+ ui/pagedialog/PageDialog.cpp
+ ui/pagedialog/PageDialog.h
+ ui/dialogs/ProgressDialog.cpp
+ ui/dialogs/ProgressDialog.h
+ ui/dialogs/UpdateDialog.cpp
+ ui/dialogs/UpdateDialog.h
+ ui/dialogs/VersionSelectDialog.cpp
+ ui/dialogs/VersionSelectDialog.h
+ ui/dialogs/SkinUploadDialog.cpp
+ ui/dialogs/SkinUploadDialog.h
+
+
+ # GUI - widgets
+ ui/widgets/Common.cpp
+ ui/widgets/Common.h
+ ui/widgets/CustomCommands.cpp
+ ui/widgets/CustomCommands.h
+ ui/widgets/DropLabel.cpp
+ ui/widgets/DropLabel.h
+ ui/widgets/FocusLineEdit.cpp
+ ui/widgets/FocusLineEdit.h
+ ui/widgets/IconLabel.cpp
+ ui/widgets/IconLabel.h
+ ui/widgets/JavaSettingsWidget.cpp
+ ui/widgets/JavaSettingsWidget.h
+ ui/widgets/LabeledToolButton.cpp
+ ui/widgets/LabeledToolButton.h
+ ui/widgets/LanguageSelectionWidget.cpp
+ ui/widgets/LanguageSelectionWidget.h
+ ui/widgets/LineSeparator.cpp
+ ui/widgets/LineSeparator.h
+ ui/widgets/LogView.cpp
+ ui/widgets/LogView.h
+ ui/widgets/MCModInfoFrame.cpp
+ ui/widgets/MCModInfoFrame.h
+ ui/widgets/ModListView.cpp
+ ui/widgets/ModListView.h
+ ui/widgets/PageContainer.cpp
+ ui/widgets/PageContainer.h
+ ui/widgets/PageContainer_p.h
+ ui/widgets/VersionListView.cpp
+ ui/widgets/VersionListView.h
+ ui/widgets/VersionSelectWidget.cpp
+ ui/widgets/VersionSelectWidget.h
+ ui/widgets/ProgressWidget.h
+ ui/widgets/ProgressWidget.cpp
+ ui/widgets/WideBar.h
+ ui/widgets/WideBar.cpp
+
+ # GUI - instance group view
+ ui/instanceview/InstanceProxyModel.cpp
+ ui/instanceview/InstanceProxyModel.h
+ ui/instanceview/AccessibleInstanceView.cpp
+ ui/instanceview/AccessibleInstanceView.h
+ ui/instanceview/AccessibleInstanceView_p.h
+ ui/instanceview/InstanceView.cpp
+ ui/instanceview/InstanceView.h
+ ui/instanceview/InstanceDelegate.cpp
+ ui/instanceview/InstanceDelegate.h
+ ui/instanceview/VisualGroup.cpp
+ ui/instanceview/VisualGroup.h
+)
+
+qt6_wrap_ui(MESHMC_UI
+ ui/pages/global/AccountListPage.ui
+ ui/pages/global/AppearancePage.ui
+ ui/pages/global/JavaPage.ui
+ ui/pages/global/MeshMCPage.ui
+ ui/pages/global/PasteEEPage.ui
+ ui/pages/global/ProxyPage.ui
+ ui/pages/global/MinecraftPage.ui
+ ui/pages/global/ExternalToolsPage.ui
+ ui/pages/instance/ModFolderPage.ui
+ ui/pages/instance/NotesPage.ui
+ ui/pages/instance/LogPage.ui
+ ui/pages/instance/ServersPage.ui
+ ui/pages/instance/GameOptionsPage.ui
+ ui/pages/instance/OtherLogsPage.ui
+ ui/pages/instance/InstanceSettingsPage.ui
+ ui/pages/instance/VersionPage.ui
+ ui/pages/instance/WorldListPage.ui
+ ui/pages/instance/LegacyUpgradePage.ui
+ ui/pages/instance/ScreenshotsPage.ui
+ ui/pages/modplatform/atlauncher/AtlOptionalModDialog.ui
+ ui/pages/modplatform/atlauncher/AtlPage.ui
+ ui/pages/modplatform/VanillaPage.ui
+ ui/pages/modplatform/flame/FlamePage.ui
+ ui/pages/modplatform/modrinth/ModrinthPage.ui
+ ui/pages/modplatform/legacy_ftb/Page.ui
+ ui/pages/modplatform/ImportPage.ui
+ ui/pages/modplatform/ftb/FtbPage.ui
+ ui/pages/modplatform/technic/TechnicPage.ui
+ ui/widgets/InstanceCardWidget.ui
+ ui/widgets/CustomCommands.ui
+ ui/widgets/MCModInfoFrame.ui
+ ui/dialogs/CopyInstanceDialog.ui
+ ui/dialogs/ProfileSetupDialog.ui
+ ui/dialogs/ProgressDialog.ui
+ ui/dialogs/NewInstanceDialog.ui
+ ui/dialogs/NotificationDialog.ui
+ ui/dialogs/UpdateDialog.ui
+ ui/dialogs/NewComponentDialog.ui
+ ui/dialogs/ProfileSelectDialog.ui
+ ui/dialogs/SkinUploadDialog.ui
+ ui/dialogs/ExportInstanceDialog.ui
+ ui/dialogs/IconPickerDialog.ui
+ ui/dialogs/MSALoginDialog.ui
+ ui/dialogs/AboutDialog.ui
+ ui/dialogs/EditAccountDialog.ui
+)
+
+if(NOT MeshMC_DISABLE_JAVA_DOWNLOADER)
+ list(APPEND MESHMC_SOURCES
+ ui/dialogs/JavaDownloadDialog.cpp
+ ui/dialogs/JavaDownloadDialog.h
+ )
+endif()
+
+qt6_add_resources(MESHMC_RESOURCES
+ resources/backgrounds/backgrounds.qrc
+ resources/multimc/multimc.qrc
+ resources/pe_dark/pe_dark.qrc
+ resources/pe_light/pe_light.qrc
+ resources/pe_colored/pe_colored.qrc
+ resources/pe_blue/pe_blue.qrc
+ resources/OSX/OSX.qrc
+ resources/iOS/iOS.qrc
+ resources/flat/flat.qrc
+ resources/flat_white/flat_white.qrc
+ resources/documents/documents.qrc
+ resources/breeze_dark/breeze_dark.qrc
+ resources/breeze_light/breeze_light.qrc
+ ${CMAKE_BINARY_DIR}/${MeshMC_AppBinaryName}.qrc
+)
+
+######## Windows resource files ########
+if(WIN32)
+ set(MESHMC_RCS ${CMAKE_BINARY_DIR}/${MeshMC_AppBinaryName}.rc)
+endif()
+
+# Add executable
+add_library(MeshMC_logic STATIC ${LOGIC_SOURCES} ${MESHMC_SOURCES} ${MESHMC_UI} ${MESHMC_RESOURCES})
+target_link_libraries(MeshMC_logic
+ systeminfo
+ MeshMC_classparser
+ ${NBT_NAME}
+ ${ZLIB_LIBRARIES}
+ optional-bare
+ tomlc99
+ BuildConfig
+ Katabasis
+)
+
+if(MeshMC_DISABLE_JAVA_DOWNLOADER)
+ target_compile_definitions(MeshMC_logic PUBLIC MeshMC_DISABLE_JAVA_DOWNLOADER)
+endif()
+target_link_libraries(MeshMC_logic
+ Qt6::Core
+ Qt6::Xml
+ Qt6::Network
+ Qt6::NetworkAuth
+ Qt6::Concurrent
+ Qt6::Gui
+ LibArchive::LibArchive
+)
+target_link_libraries(MeshMC_logic
+ MeshMC_iconfix
+ hoedown
+ MeshMC_rainbow
+ LocalPeer
+ ganalytics
+)
+
+if(APPLE)
+ set(CMAKE_MACOSX_RPATH 1)
+ set(CMAKE_INSTALL_RPATH "@loader_path/../Frameworks/")
+endif()
+
+add_executable(${MeshMC_Name} MACOSX_BUNDLE WIN32 main.cpp ${MESHMC_RCS})
+target_link_libraries(${MeshMC_Name} MeshMC_logic)
+
+if(MSVC)
+ target_link_options(${MeshMC_Name} PRIVATE "/MANIFEST:NO")
+endif()
+
+if(DEFINED MeshMC_AppBinaryName)
+ set_target_properties(${MeshMC_Name} PROPERTIES OUTPUT_NAME "${MeshMC_AppBinaryName}")
+endif()
+if(APPLE)
+ set_target_properties(${MeshMC_Name} PROPERTIES MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/../cmake/MacOSXBundleInfo.plist.in")
+endif()
+if(DEFINED MeshMC_BINARY_RPATH)
+ SET_TARGET_PROPERTIES(${MeshMC_Name} PROPERTIES INSTALL_RPATH "${MeshMC_BINARY_RPATH}")
+endif()
+
+if(DEFINED MeshMC_APP_BINARY_DEFS)
+ target_compile_definitions(${MeshMC_Name} PRIVATE ${MeshMC_APP_BINARY_DEFS})
+ target_compile_definitions(MeshMC_logic PRIVATE ${MeshMC_APP_BINARY_DEFS})
+endif()
+
+install(TARGETS ${MeshMC_Name}
+ RUNTIME_DEPENDENCY_SET LAUNCHER_DEPENDENCY_SET
+ BUNDLE DESTINATION ${BUNDLE_DEST_DIR}
+ LIBRARY DESTINATION ${LIBRARY_DEST_DIR}
+ RUNTIME DESTINATION ${BINARY_DEST_DIR}
+)
+
+#### The bundle mess! ####
+# Bundle utilities are used to complete the portable packages - they add all the libraries that would otherwise be missing on the target system.
+# NOTE: it seems that this absolutely has to be here, and nowhere else.
+if(WIN32 OR (UNIX AND APPLE))
+ if(WIN32)
+ # Find windeployqt directly — Qt's qt_generate_deploy_script tries to find
+ # windeployqt.debug.bat for Debug builds, which vcpkg doesn't ship.
+ get_target_property(_qt_qmake_loc Qt6::qmake IMPORTED_LOCATION)
+ get_filename_component(_qt_bin_dir "${_qt_qmake_loc}" DIRECTORY)
+ find_program(WINDEPLOYQT_EXECUTABLE windeployqt HINTS "${_qt_bin_dir}")
+ if(NOT WINDEPLOYQT_EXECUTABLE)
+ message(FATAL_ERROR "windeployqt not found")
+ endif()
+ endif()
+
+ if(UNIX AND APPLE)
+ qt_generate_deploy_script(
+ TARGET ${MeshMC_Name}
+ OUTPUT_SCRIPT QT_DEPLOY_SCRIPT
+ CONTENT "
+ qt_deploy_runtime_dependencies(
+ EXECUTABLE ${BINARY_DEST_DIR}/$<TARGET_FILE_NAME:${MeshMC_Name}>
+ BIN_DIR ${BINARY_DEST_DIR}
+ LIBEXEC_DIR ${BINARY_DEST_DIR}
+ LIB_DIR ${LIBRARY_DEST_DIR}
+ PLUGINS_DIR ${PLUGIN_DEST_DIR}
+ NO_OVERWRITE
+ NO_TRANSLATIONS
+ NO_COMPILER_RUNTIME
+ )"
+ )
+ install(
+ SCRIPT ${QT_DEPLOY_SCRIPT}
+ )
+ endif()
+
+ # Bundle our linked dependencies
+ # For vcpkg builds, include both release and debug bin directories so
+ # RUNTIME_DEPENDENCY_SET can find DLLs like zlibd.dll in debug/bin/.
+ if(VCPKG_INSTALLED_DIR AND VCPKG_TARGET_TRIPLET)
+ set(_vcpkg_bin "${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/bin")
+ set(_vcpkg_debug_bin "${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/debug/bin")
+ endif()
+ install(
+ RUNTIME_DEPENDENCY_SET LAUNCHER_DEPENDENCY_SET
+ DIRECTORIES
+ ${CMAKE_SYSTEM_LIBRARY_PATH}
+ ${QT_LIBS_DIR}
+ ${QT_LIBEXECS_DIR}
+ ${_vcpkg_bin}
+ ${_vcpkg_debug_bin}
+ PRE_EXCLUDE_REGEXES
+ "^(api-ms-win|ext-ms)-.*\\.dll$"
+ "^azure.*\\.dll$"
+ "^vcruntime.*\\.dll$"
+ POST_EXCLUDE_REGEXES
+ "system32"
+ LIBRARY DESTINATION ${LIBRARY_DEST_DIR}
+ RUNTIME DESTINATION ${BINARY_DEST_DIR}
+ FRAMEWORK DESTINATION ${FRAMEWORK_DEST_DIR}
+ )
+
+ if(WIN32)
+ # Deploy Qt plugins and DLLs using windeployqt.
+ # install-qt-action and MSYS2 only provide release Qt, so always use --release
+ # even when the app itself is built in Debug mode.
+ install(CODE "
+ execute_process(
+ COMMAND \"${WINDEPLOYQT_EXECUTABLE}\"
+ --release
+ --no-opengl-sw
+ --no-quick-import
+ --no-system-d3d-compiler
+ --no-system-dxc-compiler
+ --skip-plugin-types generic,networkinformation
+ --no-translations
+ --no-compiler-runtime
+ --dir \"\${CMAKE_INSTALL_PREFIX}/${BINARY_DEST_DIR}\"
+ --libdir \"\${CMAKE_INSTALL_PREFIX}/${LIBRARY_DEST_DIR}\"
+ --plugindir \"\${CMAKE_INSTALL_PREFIX}/${PLUGIN_DEST_DIR}\"
+ \"\${CMAKE_INSTALL_PREFIX}/${BINARY_DEST_DIR}/$<TARGET_FILE_NAME:${MeshMC_Name}>\"
+ RESULT_VARIABLE _deploy_result
+ )
+ if(NOT _deploy_result EQUAL 0)
+ message(FATAL_ERROR \"windeployqt failed with exit code: \${_deploy_result}\")
+ endif()
+ ")
+ endif()
+
+ # FIXME: remove this crap once we stop using msys2
+ if(MINGW)
+ install(CODE "
+ set(QT_PLUGINS_DIR \"${QT_PLUGINS_DIR}\")
+ set(QT_LIBS_DIR \"${QT_LIBS_DIR}\")
+ set(QT_LIBEXECS_DIR \"${QT_LIBEXECS_DIR}\")
+ set(CMAKE_SYSTEM_LIBRARY_PATH \"${CMAKE_SYSTEM_LIBRARY_PATH}\")
+ set(CMAKE_INSTALL_PREFIX \"${CMAKE_INSTALL_PREFIX}\")
+ ")
+
+ install(CODE [[
+ file(GLOB QT_IMAGEFORMAT_DLLS "${QT_PLUGINS_DIR}/imageformats/*.dll")
+ set(CMAKE_GET_RUNTIME_DEPENDENCIES_TOOL objdump)
+ file(GET_RUNTIME_DEPENDENCIES
+ RESOLVED_DEPENDENCIES_VAR imageformatdeps
+ LIBRARIES ${QT_IMAGEFORMAT_DLLS}
+ DIRECTORIES
+ ${CMAKE_SYSTEM_LIBRARY_PATH}
+ ${QT_PLUGINS_DIR}
+ ${QT_LIBS_DIR}
+ ${QT_LIBEXECS_DIR}
+ PRE_EXCLUDE_REGEXES
+ "^(api-ms-win|ext-ms)-.*\\.dll$"
+ "^azure.*\\.dll$"
+ "^vcruntime.*\\.dll$"
+ POST_EXCLUDE_REGEXES
+ "system32"
+ )
+ foreach(_lib ${imageformatdeps})
+ file(INSTALL
+ DESTINATION ${CMAKE_INSTALL_PREFIX}
+ TYPE SHARED_LIBRARY
+ FOLLOW_SYMLINK_CHAIN
+ FILES ${_lib}
+ )
+ endforeach()
+ ]])
+ endif()
+
+ # Add qt.conf - tell Qt where to find plugins relative to the executable
+ install(
+ CODE "file(WRITE \"\${CMAKE_INSTALL_PREFIX}/${RESOURCES_DEST_DIR}/qt.conf\" \"[Paths]\nPlugins = ${PLUGIN_DEST_DIR}\n\")"
+ )
+ # Add qtlogging.ini as a config file
+ install(
+ FILES "qtlogging.ini"
+ DESTINATION ${CMAKE_INSTALL_PREFIX}/${RESOURCES_DEST_DIR}
+ )
+endif()
+
+find_program(CLANG_FORMAT clang-format OPTIONAL)
+if(CLANG_FORMAT)
+ message(STATUS "Creating clang-format target")
+ add_custom_target(
+ clang-format
+ COMMAND ${CLANG_FORMAT} -i --style=file:${CMAKE_SOURCE_DIR}/.clang-format ${LOGIC_SOURCES} ${MESHMC_SOURCES}
+ WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
+ )
+else()
+ message(WARNING "Unable to find `clang-format`. Not creating custom target")
+endif()
+
+find_program(CLANG_TIDY clang-tidy OPTIONAL)
+find_program(RUN_CLANG_TIDY NAMES run-clang-tidy run-clang-tidy.py OPTIONAL)
+if(CLANG_TIDY AND RUN_CLANG_TIDY)
+ message(STATUS "Creating clang-tidy target")
+ add_custom_target(
+ clang-tidy
+ COMMAND ${RUN_CLANG_TIDY}
+ -p ${PROJECT_BINARY_DIR}
+ -clang-tidy-binary ${CLANG_TIDY}
+ -config-file=${CMAKE_SOURCE_DIR}/.clang-tidy
+ WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
+ USES_TERMINAL
+ )
+elseif(CLANG_TIDY)
+ message(WARNING "Unable to find `run-clang-tidy`. Not creating custom target")
+endif()