summaryrefslogtreecommitdiffstats
path: root/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt297
1 files changed, 181 insertions, 116 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 8c01799c..9304547b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -75,15 +75,36 @@ if(${BIGENDIAN})
endif(${BIGENDIAN})
-######## Set URLs ########
+######## Dark magic crash reports ########
+option(MultiMC_HANDLE_SEGV "Handle fatal crashes and generate crash reports." OFF)
+set(CRASH_HANDLER_IMPL "")
+message(STATUS "Crash dumps are ${MultiMC_HANDLE_SEGV}")
+if (MultiMC_HANDLE_SEGV)
+ add_definitions(-DHANDLE_SEGV)
+ if (WIN32)
+ find_package(DbgHelp)
+ set(MultiMC_LINK_ADDITIONAL_LIBS "${MultiMC_LINK_ADDITIONAL_LIBS}dbghelp")
+ set(MultiMC_CRASH_HANDLER_EXTRA_H "WinBacktrace.h")
+ set(MultiMC_CRASH_HANDLER_EXTRA_CPP "WinBacktrace.cpp")
+ endif ()
+endif ()
+
+option(MultiMC_TEST_SEGV "Intentionally segfault sometimes to test crash handling." OFF)
+if (MultiMC_TEST_SEGV)
+ # TODO: Make this a unit test instead.
+ message(WARNING "You have enabled crash handler testing. MULTIMC WILL INTENTIONALLY CRASH ITSELF. Crashes should occur on exit and when the new instance button is pressed.")
+ add_definitions(-DTEST_SEGV)
+endif ()
+
+######## Set URLs ########
set(MultiMC_NEWS_RSS_URL "http://multimc.org/rss.xml" CACHE STRING "URL to fetch MultiMC's news RSS feed from.")
######## Set version numbers ########
set(MultiMC_VERSION_MAJOR 0)
-set(MultiMC_VERSION_MINOR 3)
-set(MultiMC_VERSION_HOTFIX 5)
+set(MultiMC_VERSION_MINOR 4)
+set(MultiMC_VERSION_HOTFIX 0)
# Build number
set(MultiMC_VERSION_BUILD -1 CACHE STRING "Build number. -1 for no build number.")
@@ -250,6 +271,12 @@ SET(MULTIMC_SOURCES
BuildConfig.h
${PROJECT_BINARY_DIR}/BuildConfig.cpp
+ # Crash handling
+ HandleCrash.h
+ HandleCrash.cpp
+ ${MultiMC_CRASH_HANDLER_EXTRA_H} # Extra platform specific stuff
+ ${MultiMC_CRASH_HANDLER_EXTRA_CPP}
+
# Logging
logger/QsDebugOutput.cpp
logger/QsDebugOutput.h
@@ -264,48 +291,62 @@ SET(MULTIMC_SOURCES
gui/ConsoleWindow.h
gui/ConsoleWindow.cpp
+ # GUI - page dialog pages
+ gui/pages/VersionPage.cpp
+ gui/pages/VersionPage.h
+ gui/pages/TexturePackPage.h
+ gui/pages/ResourcePackPage.h
+ gui/pages/ModFolderPage.cpp
+ gui/pages/ModFolderPage.h
+ gui/pages/NotesPage.cpp
+ gui/pages/NotesPage.h
+ gui/pages/LegacyUpgradePage.cpp
+ gui/pages/LegacyUpgradePage.h
+ gui/pages/LegacyJarModPage.cpp
+ gui/pages/LegacyJarModPage.h
+ gui/pages/LogPage.cpp
+ gui/pages/LogPage.h
+ gui/pages/InstanceSettingsPage.cpp
+ gui/pages/InstanceSettingsPage.h
+ gui/pages/ScreenshotsPage.cpp
+ gui/pages/ScreenshotsPage.h
+
# GUI - dialogs
- gui/dialogs/SettingsDialog.h
- gui/dialogs/SettingsDialog.cpp
- gui/dialogs/CopyInstanceDialog.h
- gui/dialogs/CopyInstanceDialog.cpp
- gui/dialogs/NewInstanceDialog.cpp
- gui/dialogs/ProgressDialog.h
- gui/dialogs/ProgressDialog.cpp
- gui/dialogs/AboutDialog.h
gui/dialogs/AboutDialog.cpp
- gui/dialogs/VersionSelectDialog.h
- gui/dialogs/VersionSelectDialog.cpp
- gui/dialogs/LwjglSelectDialog.h
- gui/dialogs/LwjglSelectDialog.cpp
- gui/dialogs/InstanceSettings.h
- gui/dialogs/InstanceSettings.cpp
- gui/dialogs/IconPickerDialog.h
- gui/dialogs/IconPickerDialog.cpp
- gui/dialogs/LegacyModEditDialog.h
- gui/dialogs/LegacyModEditDialog.cpp
- gui/dialogs/OneSixModEditDialog.h
- gui/dialogs/OneSixModEditDialog.cpp
- gui/dialogs/ModEditDialogCommon.h
- gui/dialogs/ModEditDialogCommon.cpp
- gui/dialogs/EditNotesDialog.h
- gui/dialogs/EditNotesDialog.cpp
- gui/dialogs/CustomMessageBox.h
+ gui/dialogs/AboutDialog.h
+ gui/dialogs/AccountListDialog.cpp
+ gui/dialogs/AccountListDialog.h
+ gui/dialogs/AccountSelectDialog.cpp
+ gui/dialogs/AccountSelectDialog.h
+ gui/dialogs/CopyInstanceDialog.cpp
+ gui/dialogs/CopyInstanceDialog.h
gui/dialogs/CustomMessageBox.cpp
- gui/dialogs/EditAccountDialog.h
+ gui/dialogs/CustomMessageBox.h
gui/dialogs/EditAccountDialog.cpp
- gui/dialogs/LoginDialog.h
+ gui/dialogs/EditAccountDialog.h
+ gui/dialogs/IconPickerDialog.cpp
+ gui/dialogs/IconPickerDialog.h
gui/dialogs/LoginDialog.cpp
- gui/dialogs/AccountListDialog.h
- gui/dialogs/AccountListDialog.cpp
- gui/dialogs/AccountSelectDialog.h
- gui/dialogs/AccountSelectDialog.cpp
- gui/dialogs/UpdateDialog.h
- gui/dialogs/UpdateDialog.cpp
- gui/dialogs/ScreenshotDialog.h
- gui/dialogs/ScreenshotDialog.cpp
- gui/dialogs/NotificationDialog.h
+ gui/dialogs/LoginDialog.h
+ gui/dialogs/LwjglSelectDialog.cpp
+ gui/dialogs/LwjglSelectDialog.h
+ gui/dialogs/ModEditDialogCommon.cpp
+ gui/dialogs/ModEditDialogCommon.h
+ gui/dialogs/NewInstanceDialog.cpp
+ gui/dialogs/NewInstanceDialog.h
gui/dialogs/NotificationDialog.cpp
+ gui/dialogs/NotificationDialog.h
+ gui/pagedialog/PageDialog.cpp
+ gui/pagedialog/PageDialog.h
+ gui/dialogs/ProgressDialog.cpp
+ gui/dialogs/ProgressDialog.h
+ gui/dialogs/SettingsDialog.cpp
+ gui/dialogs/SettingsDialog.h
+ gui/dialogs/UpdateDialog.cpp
+ gui/dialogs/UpdateDialog.h
+ gui/dialogs/VersionSelectDialog.cpp
+ gui/dialogs/VersionSelectDialog.h
+
# GUI - widgets
gui/widgets/Common.cpp
@@ -320,6 +361,9 @@ SET(MULTIMC_SOURCES
gui/widgets/MCModInfoFrame.h
gui/widgets/ModListView.cpp
gui/widgets/ModListView.h
+ gui/widgets/PageContainer.cpp
+ gui/widgets/PageContainer.h
+ gui/widgets/PageContainer_p.h
gui/widgets/ServerStatus.cpp
gui/widgets/ServerStatus.h
gui/widgets/VersionListView.cpp
@@ -336,25 +380,43 @@ SET(MULTIMC_SOURCES
gui/groupview/InstanceDelegate.cpp
gui/groupview/InstanceDelegate.h
- # Base classes and infrastructure
+ # LOGIC - Base classes and infrastructure
logic/BaseVersion.h
- logic/MinecraftVersion.h
logic/InstanceFactory.h
logic/InstanceFactory.cpp
logic/BaseInstance.h
logic/BaseInstance.cpp
logic/BaseInstance_p.h
-
- logic/MinecraftProcess.h
- logic/MinecraftProcess.cpp
logic/Mod.h
logic/Mod.cpp
logic/ModList.h
logic/ModList.cpp
+
+ # sets and maps for deciding based on versions
+ logic/VersionFilterData.h
+ logic/VersionFilterData.cpp
- # Basic instance launcher for starting from terminal
+ # Instance launch
logic/InstanceLauncher.h
logic/InstanceLauncher.cpp
+ logic/MinecraftProcess.h
+ logic/MinecraftProcess.cpp
+
+ # URN parser/resolver
+ logic/URNResolver.cpp
+ logic/URNResolver.h
+
+ # Annoying nag screen logic
+ logic/NagUtils.h
+ logic/NagUtils.cpp
+
+ # Player skin utilities
+ logic/SkinUtils.h
+ logic/SkinUtils.cpp
+
+ # misc model filter
+ logic/EnabledItemFilter.h
+ logic/EnabledItemFilter.cpp
# JSON parsing helpers
logic/MMCJson.h
@@ -368,10 +430,6 @@ SET(MULTIMC_SOURCES
logic/net/ByteArrayDownload.cpp
logic/net/CacheDownload.h
logic/net/CacheDownload.cpp
- logic/net/ForgeMirrors.h
- logic/net/ForgeMirrors.cpp
- logic/net/ForgeXzDownload.h
- logic/net/ForgeXzDownload.cpp
logic/net/NetJob.h
logic/net/NetJob.cpp
logic/net/HttpMetaCache.h
@@ -422,9 +480,6 @@ SET(MULTIMC_SOURCES
logic/LegacyUpdate.h
logic/LegacyUpdate.cpp
- logic/LegacyForge.h
- logic/LegacyForge.cpp
-
# OneSix instances
logic/OneSixUpdate.h
logic/OneSixUpdate.cpp
@@ -433,30 +488,42 @@ SET(MULTIMC_SOURCES
logic/OneSixInstance_p.h
# OneSix version json infrastructure
- logic/OneSixVersionBuilder.h
- logic/OneSixVersionBuilder.cpp
- logic/VersionFile.h
- logic/VersionFile.cpp
- logic/VersionFinal.h
- logic/VersionFinal.cpp
- logic/OneSixLibrary.h
- logic/OneSixLibrary.cpp
- logic/OneSixRule.h
- logic/OneSixRule.cpp
- logic/OpSys.h
- logic/OpSys.cpp
-
- # Mod installers
+ logic/minecraft/InstanceVersion.cpp
+ logic/minecraft/InstanceVersion.h
+ logic/minecraft/JarMod.cpp
+ logic/minecraft/JarMod.h
+ logic/minecraft/MinecraftVersion.cpp
+ logic/minecraft/MinecraftVersion.h
+ logic/minecraft/MinecraftVersionList.cpp
+ logic/minecraft/MinecraftVersionList.h
+ logic/minecraft/OneSixLibrary.cpp
+ logic/minecraft/OneSixLibrary.h
+ logic/minecraft/OneSixRule.cpp
+ logic/minecraft/OneSixRule.h
+ logic/minecraft/OpSys.cpp
+ logic/minecraft/OpSys.h
+ logic/minecraft/ParseUtils.cpp
+ logic/minecraft/ParseUtils.h
+ logic/minecraft/RawLibrary.cpp
+ logic/minecraft/RawLibrary.h
+ logic/minecraft/VersionBuilder.cpp
+ logic/minecraft/VersionBuilder.h
+ logic/minecraft/VersionBuildError.h
+ logic/minecraft/VersionFile.cpp
+ logic/minecraft/VersionFile.h
+ logic/minecraft/VersionPatch.h
+ logic/minecraft/VersionSource.h
+
+ # Various base classes
logic/BaseInstaller.h
logic/BaseInstaller.cpp
- logic/ForgeInstaller.h
- logic/ForgeInstaller.cpp
- logic/LiteLoaderInstaller.h
- logic/LiteLoaderInstaller.cpp
+ logic/BaseVersionList.h
+ logic/BaseVersionList.cpp
- # Nostalgia
- logic/NostalgiaInstance.h
- logic/NostalgiaInstance.cpp
+ logic/InstanceList.h
+ logic/InstanceList.cpp
+ logic/LwjglVersionList.h
+ logic/LwjglVersionList.cpp
# FTB
logic/OneSixFTBInstance.h
@@ -464,27 +531,8 @@ SET(MULTIMC_SOURCES
logic/LegacyFTBInstance.h
logic/LegacyFTBInstance.cpp
- # Lists
- logic/lists/InstanceList.h
- logic/lists/InstanceList.cpp
- logic/lists/BaseVersionList.h
- logic/lists/BaseVersionList.cpp
- logic/lists/MinecraftVersionList.h
- logic/lists/MinecraftVersionList.cpp
- logic/lists/LwjglVersionList.h
- logic/lists/LwjglVersionList.cpp
- logic/lists/ForgeVersionList.h
- logic/lists/ForgeVersionList.cpp
- logic/lists/JavaVersionList.h
- logic/lists/JavaVersionList.cpp
- logic/lists/LiteLoaderVersionList.h
- logic/lists/LiteLoaderVersionList.cpp
-
# the screenshots feature
logic/screenshots/Screenshot.h
- logic/screenshots/Screenshot.cpp
- logic/screenshots/ScreenshotList.h
- logic/screenshots/ScreenshotList.cpp
logic/screenshots/ImgurUpload.h
logic/screenshots/ImgurUpload.cpp
logic/screenshots/ImgurAlbumCreation.h
@@ -496,11 +544,6 @@ SET(MULTIMC_SOURCES
logic/icons/IconList.h
logic/icons/IconList.cpp
-
- # misc model/view
- logic/EnabledItemFilter.h
- logic/EnabledItemFilter.cpp
-
# Tasks
logic/tasks/ProgressProvider.h
logic/tasks/Task.h
@@ -510,17 +553,15 @@ SET(MULTIMC_SOURCES
logic/tasks/SequentialTask.h
logic/tasks/SequentialTask.cpp
- # Utilities
- logic/JavaChecker.h
- logic/JavaChecker.cpp
- logic/JavaUtils.h
- logic/JavaUtils.cpp
- logic/NagUtils.h
- logic/NagUtils.cpp
- logic/SkinUtils.h
- logic/SkinUtils.cpp
- logic/JavaCheckerJob.h
- logic/JavaCheckerJob.cpp
+ # Java related code
+ logic/java/JavaChecker.h
+ logic/java/JavaChecker.cpp
+ logic/java/JavaUtils.h
+ logic/java/JavaUtils.cpp
+ logic/java/JavaVersionList.h
+ logic/java/JavaVersionList.cpp
+ logic/java/JavaCheckerJob.h
+ logic/java/JavaCheckerJob.cpp
# Assets
logic/assets/AssetsMigrateTask.h
@@ -539,6 +580,27 @@ SET(MULTIMC_SOURCES
logic/tools/JProfiler.cpp
logic/tools/JVisualVM.h
logic/tools/JVisualVM.cpp
+
+ # Forge and all things forge related
+ logic/forge/ForgeVersion.h
+ logic/forge/ForgeVersion.cpp
+ logic/forge/ForgeVersionList.h
+ logic/forge/ForgeVersionList.cpp
+ logic/forge/ForgeMirror.h
+ logic/forge/ForgeMirrors.h
+ logic/forge/ForgeMirrors.cpp
+ logic/forge/ForgeXzDownload.h
+ logic/forge/ForgeXzDownload.cpp
+ logic/forge/LegacyForge.h
+ logic/forge/LegacyForge.cpp
+ logic/forge/ForgeInstaller.h
+ logic/forge/ForgeInstaller.cpp
+
+ # Liteloader and related things
+ logic/liteloader/LiteLoaderInstaller.h
+ logic/liteloader/LiteLoaderInstaller.cpp
+ logic/liteloader/LiteLoaderVersionList.h
+ logic/liteloader/LiteLoaderVersionList.cpp
)
@@ -546,7 +608,16 @@ SET(MULTIMC_SOURCES
SET(MULTIMC_UIS
# Windows
gui/MainWindow.ui
- gui/ConsoleWindow.ui
+
+ # Option pages
+ gui/pages/VersionPage.ui
+ gui/pages/ModFolderPage.ui
+ gui/pages/LegacyUpgradePage.ui
+ gui/pages/LegacyJarModPage.ui
+ gui/pages/LogPage.ui
+ gui/pages/InstanceSettingsPage.ui
+ gui/pages/NotesPage.ui
+ gui/pages/ScreenshotsPage.ui
# Dialogs
gui/dialogs/SettingsDialog.ui
@@ -555,18 +626,13 @@ SET(MULTIMC_UIS
gui/dialogs/AboutDialog.ui
gui/dialogs/VersionSelectDialog.ui
gui/dialogs/LwjglSelectDialog.ui
- gui/dialogs/InstanceSettings.ui
gui/dialogs/ProgressDialog.ui
gui/dialogs/IconPickerDialog.ui
- gui/dialogs/LegacyModEditDialog.ui
- gui/dialogs/OneSixModEditDialog.ui
- gui/dialogs/EditNotesDialog.ui
gui/dialogs/AccountListDialog.ui
gui/dialogs/AccountSelectDialog.ui
gui/dialogs/EditAccountDialog.ui
gui/dialogs/LoginDialog.ui
gui/dialogs/UpdateDialog.ui
- gui/dialogs/ScreenshotDialog.ui
gui/dialogs/NotificationDialog.ui
# Widgets/other
@@ -590,6 +656,7 @@ set(MULTIMC_QRCS
resources/pe_dark/pe_dark.qrc
resources/pe_light/pe_light.qrc
resources/instances/instances.qrc
+ resources/versions/versions.qrc
)
@@ -770,8 +837,6 @@ include(CPack)
include(Coverity)
-include_directories(${PROJECT_BINARY_DIR}/include)
-
# Translations
add_subdirectory(translations)