diff options
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r-- | CMakeLists.txt | 193 |
1 files changed, 114 insertions, 79 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index efb71be3..e51bbfe8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,9 +1,14 @@ cmake_minimum_required(VERSION 2.8.9) + +# In Qt 5.1+ we have our own main() function, don't autolink to qtmain on Windows +cmake_policy(SET CMP0020 OLD) + project(MultiMC) ######## Set CMake options ######## SET(CMAKE_AUTOMOC ON) SET(CMAKE_INCLUDE_CURRENT_DIR ON) +SET(FILES_TO_TRANSLATE ) # Output all executables and shared libs in the main build folder, not in subfolders. SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}) @@ -32,6 +37,7 @@ ENDIF() # Find the required Qt parts find_package(Qt5Widgets REQUIRED) find_package(Qt5Network REQUIRED) +find_package(Qt5LinguistTools REQUIRED) include_directories(${Qt5Widgets_INCLUDE_DIRS}) @@ -44,6 +50,14 @@ include_directories(depends/quazip) # Add the java launcher add_subdirectory(depends/launcher) +# Add xz decompression +add_subdirectory(depends/xz-embedded) +include_directories(${XZ_INCLUDE_DIR}) + +# Add pack200 decompression +add_subdirectory(depends/pack200) +include_directories(${PACK200_INCLUDE_DIR}) + ######## MultiMC Libs ######## # Add the util library. @@ -58,7 +72,6 @@ include_directories(${LIBSETTINGS_INCLUDE_DIR}) add_subdirectory(depends/groupview) include_directories(${LIBGROUPVIEW_INCLUDE_DIR}) - ################################ SET UP BUILD OPTIONS ################################ ######## Check endianness ######## @@ -145,141 +158,146 @@ ADD_DEFINITIONS(-DLIBGROUPVIEW_STATIC) ################################ FILES ################################ -######## Headers ######## -SET(MULTIMC_HEADERS +######## Sources and headers ######## +SET(MULTIMC_SOURCES +# Application base MultiMC.h +MultiMC.cpp MultiMCVersion.h +# GUI gui/mainwindow.h +gui/mainwindow.cpp gui/settingsdialog.h +gui/settingsdialog.cpp gui/newinstancedialog.h +gui/newinstancedialog.cpp gui/logindialog.h -gui/taskdialog.h +gui/logindialog.cpp +gui/ProgressDialog.h +gui/ProgressDialog.cpp gui/aboutdialog.h +gui/aboutdialog.cpp gui/consolewindow.h +gui/consolewindow.cpp gui/instancedelegate.h +gui/instancedelegate.cpp gui/versionselectdialog.h +gui/versionselectdialog.cpp gui/lwjglselectdialog.h +gui/lwjglselectdialog.cpp gui/instancesettings.h +gui/instancesettings.cpp gui/IconPickerDialog.h +gui/IconPickerDialog.cpp gui/LegacyModEditDialog.h +gui/LegacyModEditDialog.cpp gui/OneSixModEditDialog.h +gui/OneSixModEditDialog.cpp gui/ModEditDialogCommon.h +gui/ModEditDialogCommon.cpp gui/ModListView.h +gui/ModListView.cpp gui/LabeledToolButton.h +gui/LabeledToolButton.cpp gui/EditNotesDialog.h +gui/EditNotesDialog.cpp # Base classes and infrastructure -logic/InstanceVersion.h +logic/BaseVersion.h logic/MinecraftVersion.h logic/InstanceFactory.h +logic/InstanceFactory.cpp logic/BaseUpdate.h +logic/BaseUpdate.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 # Basic instance launcher for starting from terminal logic/InstanceLauncher.h +logic/InstanceLauncher.cpp # network stuffs +logic/net/Download.h +logic/net/FileDownload.h +logic/net/FileDownload.cpp +logic/net/ByteArrayDownload.h +logic/net/ByteArrayDownload.cpp +logic/net/CacheDownload.h +logic/net/CacheDownload.cpp +logic/net/ForgeXzDownload.h +logic/net/ForgeXzDownload.cpp logic/net/DownloadJob.h +logic/net/DownloadJob.cpp logic/net/HttpMetaCache.h +logic/net/HttpMetaCache.cpp +logic/net/LoginTask.h +logic/net/LoginTask.cpp # legacy instances logic/LegacyInstance.h +logic/LegacyInstance.cpp logic/LegacyInstance_p.h logic/LegacyUpdate.h +logic/LegacyUpdate.cpp logic/LegacyForge.h +logic/LegacyForge.cpp # 1.6 instances logic/OneSixAssets.h +logic/OneSixAssets.cpp logic/OneSixInstance.h +logic/OneSixInstance.cpp logic/OneSixInstance_p.h logic/OneSixUpdate.h +logic/OneSixUpdate.cpp logic/OneSixVersion.h -logic/VersionFactory.h +logic/OneSixVersion.cpp +logic/OneSixLibrary.h +logic/OneSixLibrary.cpp +logic/OneSixRule.h +logic/OneSixRule.cpp +logic/OpSys.h +logic/OpSys.cpp +logic/ForgeInstaller.h +logic/ForgeInstaller.cpp # Nostalgia logic/NostalgiaInstance.h +logic/NostalgiaInstance.cpp # Lists logic/lists/InstanceList.h -logic/lists/InstVersionList.h +logic/lists/InstanceList.cpp +logic/lists/IconList.h +logic/lists/IconList.cpp +logic/lists/BaseVersionList.h +logic/lists/BaseVersionList.cpp logic/lists/MinecraftVersionList.h +logic/lists/MinecraftVersionList.cpp logic/lists/LwjglVersionList.h -logic/lists/IconList.h +logic/lists/LwjglVersionList.cpp +logic/lists/ForgeVersionList.h +logic/lists/ForgeVersionList.cpp + +# misc model/view +logic/EnabledItemFilter.h +logic/EnabledItemFilter.cpp # Tasks +logic/tasks/ProgressProvider.h logic/tasks/Task.h -logic/tasks/LoginTask.h -) - - -######## Sources ######## -SET(MULTIMC_SOURCES -MultiMC.cpp - -gui/mainwindow.cpp -gui/settingsdialog.cpp -gui/newinstancedialog.cpp -gui/logindialog.cpp -gui/taskdialog.cpp -gui/aboutdialog.cpp -gui/consolewindow.cpp -gui/instancedelegate.cpp -gui/versionselectdialog.cpp -gui/lwjglselectdialog.cpp -gui/instancesettings.cpp -gui/IconPickerDialog.cpp -gui/LegacyModEditDialog.cpp -gui/OneSixModEditDialog.cpp -gui/ModEditDialogCommon.cpp -gui/ModListView.cpp -gui/LabeledToolButton.cpp -gui/EditNotesDialog.cpp - -# Base classes and infrastructure -logic/InstanceFactory.cpp -logic/BaseUpdate.cpp -logic/BaseInstance.cpp -logic/MinecraftProcess.cpp -logic/Mod.cpp -logic/ModList.cpp - -# Basic instance launcher for starting from terminal -logic/InstanceLauncher.cpp - -# network stuffs - to be moved into a depend lib ~_~ -logic/net/DownloadJob.cpp -logic/net/HttpMetaCache.cpp - -# legacy instances -logic/LegacyInstance.cpp -logic/LegacyUpdate.cpp -logic/LegacyForge.cpp - -# 1.6 instances -logic/OneSixAssets.cpp -logic/OneSixInstance.cpp -logic/OneSixVersion.cpp -logic/OneSixUpdate.cpp -logic/VersionFactory.cpp +logic/tasks/Task.cpp -# Nostalgia -logic/NostalgiaInstance.cpp -# Lists -logic/lists/InstanceList.cpp -logic/lists/InstVersionList.cpp -logic/lists/MinecraftVersionList.cpp -logic/lists/LwjglVersionList.cpp -logic/lists/IconList.cpp - -# Tasks -logic/tasks/Task.cpp -logic/tasks/LoginTask.cpp ) @@ -289,18 +307,21 @@ gui/mainwindow.ui gui/settingsdialog.ui gui/newinstancedialog.ui gui/logindialog.ui -gui/taskdialog.ui gui/aboutdialog.ui gui/consolewindow.ui gui/versionselectdialog.ui gui/lwjglselectdialog.ui gui/instancesettings.ui + +gui/ProgressDialog.ui gui/IconPickerDialog.ui gui/LegacyModEditDialog.ui gui/OneSixModEditDialog.ui gui/EditNotesDialog.ui ) +set (FILES_TO_TRANSLATE ${FILES_TO_TRANSLATE} ${MULTIMC_SOURCES} ${MULTIMC_UIS}) + ######## Windows resource files ######## IF(WIN32) @@ -333,13 +354,12 @@ QT5_ADD_RESOURCES(MULTIMC_QRC multimc.qrc) # Add executable ADD_EXECUTABLE(MultiMC MACOSX_BUNDLE WIN32 - ${MULTIMC_SOURCES} ${MULTIMC_HEADERS} ${MULTIMC_UI} ${MULTIMC_QRC} ${MULTIMC_RCS}) + ${MULTIMC_SOURCES} ${MULTIMC_UI} ${MULTIMC_QRC} ${MULTIMC_RCS}) # Link -QT5_USE_MODULES(MultiMC Widgets Network Xml) -TARGET_LINK_LIBRARIES(MultiMC quazip libUtil libSettings libGroupView ${MultiMC_LINK_ADDITIONAL_LIBS}) -ADD_DEPENDENCIES(MultiMC MultiMCLauncher libUtil libSettings libGroupView) - +TARGET_LINK_LIBRARIES(MultiMC xz-embedded unpack200 quazip libUtil libSettings libGroupView ${MultiMC_LINK_ADDITIONAL_LIBS}) +QT5_USE_MODULES(MultiMC Core Widgets Network Xml) +ADD_DEPENDENCIES(MultiMC MultiMCLauncher) option(BUILD_KEYRING_TEST "Build the simple keyring test binary" OFF) IF(BUILD_KEYRING_TEST) @@ -481,3 +501,18 @@ ENDIF() INCLUDE(CPack) include_directories(${PROJECT_BINARY_DIR}/include) + +### translation stuff + +file (GLOB TRANSLATIONS_FILES translations/*.ts) + +option (UPDATE_TRANSLATIONS "Update source translation translations/*.ts files (WARNING: make clean will delete the source .ts files! Danger!)") +if (UPDATE_TRANSLATIONS) + qt5_create_translation(QM_FILES ${FILES_TO_TRANSLATE} ${TRANSLATIONS_FILES}) +else (UPDATE_TRANSLATIONS) + qt5_add_translation(QM_FILES ${TRANSLATIONS_FILES}) +endif (UPDATE_TRANSLATIONS) + +add_custom_target (translations_target DEPENDS ${QM_FILES}) + +install(FILES ${QM_FILES} DESTINATION ${CMAKE_INSTALL_PREFIX}/translations) |