diff options
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r-- | CMakeLists.txt | 297 |
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) |