diff options
Diffstat (limited to 'application/CMakeLists.txt')
-rw-r--r-- | application/CMakeLists.txt | 226 |
1 files changed, 30 insertions, 196 deletions
diff --git a/application/CMakeLists.txt b/application/CMakeLists.txt index 5d3a964d..da9a42c6 100644 --- a/application/CMakeLists.txt +++ b/application/CMakeLists.txt @@ -1,44 +1,6 @@ project(application) -######## 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 6) -set(MultiMC_VERSION_HOTFIX 0) - -# Build number -set(MultiMC_VERSION_BUILD -1 CACHE STRING "Build number. -1 for no build number.") - -# Build platform. -set(MultiMC_BUILD_PLATFORM "" CACHE STRING "A short string identifying the platform that this build was built for. Only used by the notification system and to display in the about dialog.") - -# Channel list URL -set(MultiMC_CHANLIST_URL "" CACHE STRING "URL for the channel list.") - -# Notification URL -set(MultiMC_NOTIFICATION_URL "" CACHE STRING "URL for checking for notifications.") - -# paste.ee API key -set(MultiMC_PASTE_EE_API_KEY "" CACHE STRING "API key you can get from paste.ee when you register an account") - -# Google analytics ID -set(MultiMC_ANALYTICS_ID "" CACHE STRING "ID you can get from Google analytics") - -#### Check the current Git commit and branch -include(GetGitRevisionDescription) -get_git_head_revision(MultiMC_GIT_REFSPEC MultiMC_GIT_COMMIT) - -message(STATUS "Git commit: ${MultiMC_GIT_COMMIT}") -message(STATUS "Git refspec: ${MultiMC_GIT_REFSPEC}") - -set(MultiMC_RELEASE_VERSION_NAME "${MultiMC_VERSION_MAJOR}.${MultiMC_VERSION_MINOR}.${MultiMC_VERSION_HOTFIX}") - -#### Custom target to just print the version. -add_custom_target(version echo "Version: ${MultiMC_RELEASE_VERSION_NAME}") - -######## Configure header ######## +######## Configure the file with build properties ######## configure_file("${PROJECT_SOURCE_DIR}/BuildConfig.cpp.in" "${PROJECT_BINARY_DIR}/BuildConfig.cpp") ################################ FILES ################################ @@ -131,8 +93,6 @@ SET(MULTIMC_SOURCES pages/ScreenshotsPage.h pages/OtherLogsPage.cpp pages/OtherLogsPage.h - pages/LegacyJarModPage.cpp - pages/LegacyJarModPage.h pages/LegacyUpgradePage.cpp pages/LegacyUpgradePage.h pages/WorldListPage.cpp @@ -141,6 +101,8 @@ SET(MULTIMC_SOURCES # GUI - global settings pages pages/global/AccountListPage.cpp pages/global/AccountListPage.h + pages/global/CustomCommandsPage.cpp + pages/global/CustomCommandsPage.h pages/global/ExternalToolsPage.cpp pages/global/ExternalToolsPage.h pages/global/JavaPage.cpp @@ -175,6 +137,8 @@ SET(MULTIMC_SOURCES dialogs/LoginDialog.h dialogs/ModEditDialogCommon.cpp dialogs/ModEditDialogCommon.h + dialogs/NewComponentDialog.cpp + dialogs/NewComponentDialog.h dialogs/NewInstanceDialog.cpp dialogs/NewInstanceDialog.h dialogs/NotificationDialog.cpp @@ -189,14 +153,21 @@ SET(MULTIMC_SOURCES dialogs/VersionSelectDialog.h dialogs/SkinUploadDialog.cpp dialogs/SkinUploadDialog.h + dialogs/ChooseFtbPackDialog.cpp + dialogs/ChooseFtbPackDialog.h + # GUI - widgets widgets/Common.cpp widgets/Common.h + widgets/CustomCommands.cpp + widgets/CustomCommands.h widgets/FocusLineEdit.cpp widgets/FocusLineEdit.h widgets/IconLabel.cpp widgets/IconLabel.h + widgets/JavaSettingsWidget.cpp + widgets/JavaSettingsWidget.h widgets/LabeledToolButton.cpp widgets/LabeledToolButton.h widgets/LineSeparator.cpp @@ -218,7 +189,8 @@ SET(MULTIMC_SOURCES widgets/VersionSelectWidget.h widgets/ProgressWidget.h widgets/ProgressWidget.cpp - + widgets/FtbModpackListItem.h + widgets/FtbModpackListItem.cpp # GUI - instance group view groupview/GroupedProxyModel.cpp @@ -233,7 +205,7 @@ SET(MULTIMC_SOURCES ######## UIs ######## SET(MULTIMC_UIS - # Option pages + # Instance pages pages/VersionPage.ui pages/ModFolderPage.ui pages/LogPage.ui @@ -241,7 +213,6 @@ SET(MULTIMC_UIS pages/NotesPage.ui pages/ScreenshotsPage.ui pages/OtherLogsPage.ui - pages/LegacyJarModPage.ui pages/LegacyUpgradePage.ui pages/WorldListPage.ui @@ -257,6 +228,7 @@ SET(MULTIMC_UIS # Dialogs dialogs/CopyInstanceDialog.ui + dialogs/NewComponentDialog.ui dialogs/NewInstanceDialog.ui dialogs/AboutDialog.ui dialogs/ProgressDialog.ui @@ -268,8 +240,10 @@ SET(MULTIMC_UIS dialogs/UpdateDialog.ui dialogs/NotificationDialog.ui dialogs/SkinUploadDialog.ui + dialogs/ChooseFtbPackDialog.ui # Widgets/other + widgets/CustomCommands.ui widgets/MCModInfoFrame.ui ) @@ -282,6 +256,7 @@ set(MULTIMC_QRCS resources/pe_blue/pe_blue.qrc resources/OSX/OSX.qrc resources/iOS/iOS.qrc + resources/flat/flat.qrc resources/documents/documents.qrc ) @@ -297,167 +272,26 @@ qt5_add_resources(MULTIMC_RESOURCES ${MULTIMC_QRCS}) # Add executable add_executable(MultiMC MACOSX_BUNDLE WIN32 ${MULTIMC_SOURCES} ${MULTIMC_UI} ${MULTIMC_RESOURCES} ${MULTIMC_RCS}) target_link_libraries(MultiMC MultiMC_gui ${QUAZIP_LIBRARIES} hoedown MultiMC_rainbow LocalPeer ganalytics) - -################################ INSTALLATION AND PACKAGING ################################ - -######## Packaging/install paths setup ######## - -# How to install the build results -set(MultiMC_LAYOUT "auto" CACHE STRING "The layout for MultiMC installation (auto, win-bundle, lin-bundle, lin-nodeps, lin-system, mac-bundle)") -set_property(CACHE MultiMC_LAYOUT PROPERTY STRINGS auto win-bundle lin-bundle lin-nodeps lin-system mac-bundle) - -if(MultiMC_LAYOUT STREQUAL "auto") - if(UNIX AND APPLE) - set(MultiMC_LAYOUT_REAL "mac-bundle") - elseif(UNIX) - set(MultiMC_LAYOUT_REAL "lin-bundle") - elseif(WIN32) - set(MultiMC_LAYOUT_REAL "win-bundle") - else() - message(FATAL_ERROR "Cannot choose a sensible install layout for your platform.") - endif() -else() - set(MultiMC_LAYOUT_REAL ${MultiMC_LAYOUT}) +if(DEFINED MultiMC_APP_BINARY_NAME) + set_target_properties(MultiMC PROPERTIES OUTPUT_NAME "${MultiMC_APP_BINARY_NAME}") endif() - -if(MultiMC_LAYOUT_REAL STREQUAL "mac-bundle") - set(BINARY_DEST_DIR "MultiMC.app/Contents/MacOS") - set(LIBRARY_DEST_DIR "MultiMC.app/Contents/MacOS") - set(PLUGIN_DEST_DIR "MultiMC.app/Contents/MacOS") - set(RESOURCES_DEST_DIR "MultiMC.app/Contents/Resources") - set(JARS_DEST_DIR "MultiMC.app/Contents/MacOS") - - set(BUNDLE_DEST_DIR ".") - - # Apps to bundle - set(APPS "\${CMAKE_INSTALL_PREFIX}/MultiMC.app") - - # Mac bundle settings - set(MACOSX_BUNDLE_BUNDLE_NAME "MultiMC") - set(MACOSX_BUNDLE_INFO_STRING "MultiMC Minecraft launcher and management utility.") - set(MACOSX_BUNDLE_GUI_IDENTIFIER "org.multimc.MultiMC5") - set(MACOSX_BUNDLE_BUNDLE_VERSION "${MultiMC_VERSION_MAJOR}.${MultiMC_VERSION_MINOR}.${MultiMC_VERSION_HOTFIX}.${MultiMC_VERSION_BUILD}") - set(MACOSX_BUNDLE_SHORT_VERSION_STRING "${MultiMC_VERSION_MAJOR}.${MultiMC_VERSION_MINOR}.${MultiMC_VERSION_HOTFIX}.${MultiMC_VERSION_BUILD}") - set(MACOSX_BUNDLE_LONG_VERSION_STRING "${MultiMC_VERSION_MAJOR}.${MultiMC_VERSION_MINOR}.${MultiMC_VERSION_HOTFIX}.${MultiMC_VERSION_BUILD}") - set(MACOSX_BUNDLE_ICON_FILE MultiMC.icns) - set(MACOSX_BUNDLE_COPYRIGHT "Copyright 2015-2017 MultiMC Contributors") - - # directories to look for dependencies - set(DIRS ${QT_LIBS_DIR} ${QT_LIBEXECS_DIR} ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) - - # install as bundle - set(INSTALL_BUNDLE "full") - - # Add the icon - install(FILES resources/MultiMC.icns DESTINATION ${RESOURCES_DEST_DIR}) - -elseif(MultiMC_LAYOUT_REAL STREQUAL "lin-bundle") - set(BINARY_DEST_DIR "bin") - set(LIBRARY_DEST_DIR "bin") - set(PLUGIN_DEST_DIR "plugins") - set(BUNDLE_DEST_DIR ".") - set(RESOURCES_DEST_DIR ".") - set(JARS_DEST_DIR "bin") - - # Apps to bundle - set(APPS "\${CMAKE_INSTALL_PREFIX}/bin/MultiMC") - - # directories to look for dependencies - set(DIRS ${QT_LIBS_DIR} ${QT_LIBEXECS_DIR} ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) - - # install as bundle - set(INSTALL_BUNDLE "full") - - # Set RPATH - SET_TARGET_PROPERTIES(MultiMC PROPERTIES INSTALL_RPATH "$ORIGIN/") - - # Install basic runner script - install(PROGRAMS package/linux/MultiMC DESTINATION ${BUNDLE_DEST_DIR}) - -elseif(MultiMC_LAYOUT_REAL STREQUAL "lin-nodeps") - set(BINARY_DEST_DIR "bin") - set(LIBRARY_DEST_DIR "bin") - set(PLUGIN_DEST_DIR "plugins") - set(BUNDLE_DEST_DIR ".") - set(RESOURCES_DEST_DIR ".") - set(JARS_DEST_DIR "bin") - - # install as bundle with no dependencies included - set(INSTALL_BUNDLE "nodeps") - - # Set RPATH - SET_TARGET_PROPERTIES(MultiMC PROPERTIES INSTALL_RPATH "$ORIGIN/") - - # Install basic runner script - install(PROGRAMS package/linux/MultiMC DESTINATION ${BUNDLE_DEST_DIR}) - -elseif(MultiMC_LAYOUT_REAL STREQUAL "lin-system") - set(MultiMC_BINARY_DEST_DIR "usr/bin" CACHE STRING "Relative path from packaging root to the binary directory") - set(MultiMC_LIBRARY_DEST_DIR "usr/lib" CACHE STRING "Relative path from packaging root to the library directory") - set(MultiMC_SHARE_DEST_DIR "usr/share/multimc" CACHE STRING "Relative path from packaging root to the shared data directory") - set(MultiMC_APP_BINARY_NAME "multimc" CACHE STRING "Name of the MultiMC binary for the purposes of linux packaging") - set(JARS_DEST_DIR "${MultiMC_SHARE_DEST_DIR}") - - set(BINARY_DEST_DIR ${MultiMC_BINARY_DEST_DIR}) - set(LIBRARY_DEST_DIR ${MultiMC_LIBRARY_DEST_DIR}) - - MESSAGE(STATUS "Compiling for linux system with ${MultiMC_SHARE_DEST_DIR} and MULTIMC_LINUX_DATADIR") - set_target_properties(MultiMC PROPERTIES OUTPUT_NAME ${MultiMC_APP_BINARY_NAME}) - target_compile_definitions(MultiMC PRIVATE "-DMULTIMC_JARS_LOCATION=/${MultiMC_SHARE_DEST_DIR}/jars" "-DMULTIMC_LINUX_DATADIR" - ) - - # install as bundle with no dependencies included - set(INSTALL_BUNDLE "nodeps") - -elseif(MultiMC_LAYOUT_REAL STREQUAL "win-bundle") - set(BINARY_DEST_DIR ".") - set(LIBRARY_DEST_DIR ".") - set(PLUGIN_DEST_DIR ".") - set(BUNDLE_DEST_DIR ".") - set(RESOURCES_DEST_DIR ".") - set(JARS_DEST_DIR ".") - - # Apps to bundle - set(APPS "\${CMAKE_INSTALL_PREFIX}/MultiMC.exe") - - # directories to look for dependencies - set(DIRS ${QT_LIBS_DIR} ${QT_LIBEXECS_DIR} ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) - - # install as bundle - set(INSTALL_BUNDLE "full") -else() - message(FATAL_ERROR "No sensible install layout set.") +if(DEFINED MultiMC_BINARY_RPATH) + SET_TARGET_PROPERTIES(MultiMC PROPERTIES INSTALL_RPATH "${MultiMC_BINARY_RPATH}") +endif() +if(DEFINED MultiMC_APP_BINARY_DEFS) + target_compile_definitions(MultiMC PRIVATE ${MultiMC_APP_BINARY_DEFS}) endif() -######## Install files ######## - -#### Executable #### install(TARGETS MultiMC BUNDLE DESTINATION ${BUNDLE_DEST_DIR} COMPONENT Runtime LIBRARY DESTINATION ${LIBRARY_DEST_DIR} COMPONENT Runtime RUNTIME DESTINATION ${BINARY_DEST_DIR} COMPONENT Runtime ) -install_jar(JavaCheck "${JARS_DEST_DIR}/jars") -install_jar(NewLaunch "${JARS_DEST_DIR}/jars") - -#### Dependency installations #### -if(INSTALL_BUNDLE STREQUAL "nodeps") - # Just our own stuff - # FIXME: this does not remove RPATH. - install( - FILES - $<TARGET_FILE:MultiMC_gui> - $<TARGET_FILE:MultiMC_logic> - $<TARGET_FILE:MultiMC_rainbow> - $<TARGET_FILE:MultiMC_quazip> - $<TARGET_FILE:MultiMC_iconfix> - $<TARGET_FILE:MultiMC_unpack200> - $<TARGET_FILE:MultiMC_nbt++> - DESTINATION - ${LIBRARY_DEST_DIR} - ) -elseif(INSTALL_BUNDLE STREQUAL "full") +#### The MultiMC 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(INSTALL_BUNDLE STREQUAL "full") # Add qt.conf - this makes Qt stop looking for things outside the bundle install( CODE "file(WRITE \"\${CMAKE_INSTALL_PREFIX}/${RESOURCES_DEST_DIR}/qt.conf\" \" \")" |