summaryrefslogtreecommitdiffstats
path: root/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt193
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)