495 lines
11 KiB
CMake
495 lines
11 KiB
CMake
project(MultiMC_logic)
|
|
|
|
include (UnitTest)
|
|
|
|
set(CORE_SOURCES
|
|
# LOGIC - Base classes and infrastructure
|
|
BaseInstaller.h
|
|
BaseInstaller.cpp
|
|
BaseVersionList.h
|
|
BaseVersionList.cpp
|
|
InstanceCreationTask.h
|
|
InstanceCreationTask.cpp
|
|
InstanceCopyTask.h
|
|
InstanceCopyTask.cpp
|
|
InstanceImportTask.h
|
|
InstanceImportTask.cpp
|
|
InstanceList.h
|
|
InstanceList.cpp
|
|
LoggedProcess.h
|
|
LoggedProcess.cpp
|
|
MessageLevel.cpp
|
|
MessageLevel.h
|
|
BaseInstanceProvider.h
|
|
FolderInstanceProvider.h
|
|
FolderInstanceProvider.cpp
|
|
BaseVersion.h
|
|
BaseInstance.h
|
|
BaseInstance.cpp
|
|
NullInstance.h
|
|
MMCZip.h
|
|
MMCZip.cpp
|
|
MMCStrings.h
|
|
MMCStrings.cpp
|
|
|
|
# Prefix tree where node names are strings between separators
|
|
SeparatorPrefixTree.h
|
|
|
|
# WARNING: globals live here
|
|
Env.h
|
|
Env.cpp
|
|
|
|
# JSON parsing helpers
|
|
Json.h
|
|
Json.cpp
|
|
|
|
FileSystem.h
|
|
FileSystem.cpp
|
|
|
|
Exception.h
|
|
|
|
# RW lock protected map
|
|
RWStorage.h
|
|
|
|
# A variable that has an implicit default value and keeps track of changes
|
|
DefaultVariable.h
|
|
|
|
# a smart pointer wrapper intended for safer use with Qt signal/slot mechanisms
|
|
QObjectPtr.h
|
|
|
|
# Compression support
|
|
GZip.h
|
|
GZip.cpp
|
|
|
|
# Command line parameter parsing
|
|
Commandline.h
|
|
Commandline.cpp
|
|
|
|
# Version number string support
|
|
Version.h
|
|
Version.cpp
|
|
|
|
# A Recursive file system watcher
|
|
RecursiveFileSystemWatcher.h
|
|
RecursiveFileSystemWatcher.cpp
|
|
)
|
|
|
|
add_unit_test(FileSystem
|
|
SOURCES FileSystem_test.cpp
|
|
LIBS MultiMC_logic
|
|
DATA testdata
|
|
)
|
|
|
|
add_unit_test(GZip
|
|
SOURCES GZip_test.cpp
|
|
LIBS MultiMC_logic
|
|
)
|
|
|
|
set(PATHMATCHER_SOURCES
|
|
# Path matchers
|
|
pathmatcher/FSTreeMatcher.h
|
|
pathmatcher/IPathMatcher.h
|
|
pathmatcher/MultiMatcher.h
|
|
pathmatcher/RegexpMatcher.h
|
|
)
|
|
|
|
set(NET_SOURCES
|
|
# network stuffs
|
|
net/ByteArraySink.h
|
|
net/ChecksumValidator.h
|
|
net/Download.cpp
|
|
net/Download.h
|
|
net/FileSink.cpp
|
|
net/FileSink.h
|
|
net/HttpMetaCache.cpp
|
|
net/HttpMetaCache.h
|
|
net/MetaCacheSink.cpp
|
|
net/MetaCacheSink.h
|
|
net/NetAction.h
|
|
net/NetJob.cpp
|
|
net/NetJob.h
|
|
net/PasteUpload.cpp
|
|
net/PasteUpload.h
|
|
net/Sink.h
|
|
net/URLConstants.cpp
|
|
net/URLConstants.h
|
|
net/Validator.h
|
|
)
|
|
|
|
# Game launch logic
|
|
set(LAUNCH_SOURCES
|
|
launch/steps/PostLaunchCommand.cpp
|
|
launch/steps/PostLaunchCommand.h
|
|
launch/steps/PreLaunchCommand.cpp
|
|
launch/steps/PreLaunchCommand.h
|
|
launch/steps/TextPrint.cpp
|
|
launch/steps/TextPrint.h
|
|
launch/steps/Update.cpp
|
|
launch/steps/Update.h
|
|
launch/LaunchStep.cpp
|
|
launch/LaunchStep.h
|
|
launch/LaunchTask.cpp
|
|
launch/LaunchTask.h
|
|
launch/LogModel.cpp
|
|
launch/LogModel.h
|
|
)
|
|
|
|
# Old update system
|
|
set(UPDATE_SOURCES
|
|
updater/GoUpdate.h
|
|
updater/GoUpdate.cpp
|
|
updater/UpdateChecker.h
|
|
updater/UpdateChecker.cpp
|
|
updater/DownloadTask.h
|
|
updater/DownloadTask.cpp
|
|
)
|
|
|
|
add_unit_test(UpdateChecker
|
|
SOURCES updater/UpdateChecker_test.cpp
|
|
LIBS MultiMC_logic
|
|
DATA updater/testdata
|
|
)
|
|
|
|
add_unit_test(DownloadTask
|
|
SOURCES updater/DownloadTask_test.cpp
|
|
LIBS MultiMC_logic
|
|
DATA updater/testdata
|
|
)
|
|
|
|
# Rarely used notifications
|
|
set(NOTIFICATIONS_SOURCES
|
|
# Notifications - short warning messages
|
|
notifications/NotificationChecker.h
|
|
notifications/NotificationChecker.cpp
|
|
)
|
|
|
|
# Backend for the news bar... there's usually no news.
|
|
set(NEWS_SOURCES
|
|
# News System
|
|
news/NewsChecker.h
|
|
news/NewsChecker.cpp
|
|
news/NewsEntry.h
|
|
news/NewsEntry.cpp
|
|
)
|
|
|
|
# Icon interface
|
|
set(ICONS_SOURCES
|
|
# News System
|
|
icons/IIconList.h
|
|
icons/IIconList.cpp
|
|
)
|
|
|
|
# Minecraft services status checker
|
|
set(STATUS_SOURCES
|
|
# Status system
|
|
status/StatusChecker.h
|
|
status/StatusChecker.cpp
|
|
)
|
|
|
|
# Support for Minecraft instances and launch
|
|
set(MINECRAFT_SOURCES
|
|
# Minecraft support
|
|
minecraft/auth/AuthSession.h
|
|
minecraft/auth/AuthSession.cpp
|
|
minecraft/auth/MojangAccountList.h
|
|
minecraft/auth/MojangAccountList.cpp
|
|
minecraft/auth/MojangAccount.h
|
|
minecraft/auth/MojangAccount.cpp
|
|
minecraft/auth/YggdrasilTask.h
|
|
minecraft/auth/YggdrasilTask.cpp
|
|
minecraft/auth/flows/AuthenticateTask.h
|
|
minecraft/auth/flows/AuthenticateTask.cpp
|
|
minecraft/auth/flows/RefreshTask.cpp
|
|
minecraft/auth/flows/RefreshTask.cpp
|
|
minecraft/auth/flows/ValidateTask.h
|
|
minecraft/auth/flows/ValidateTask.cpp
|
|
minecraft/onesix/OneSixUpdate.h
|
|
minecraft/onesix/OneSixUpdate.cpp
|
|
minecraft/onesix/OneSixInstance.h
|
|
minecraft/onesix/OneSixInstance.cpp
|
|
minecraft/onesix/OneSixProfileStrategy.cpp
|
|
minecraft/onesix/OneSixProfileStrategy.h
|
|
minecraft/onesix/OneSixVersionFormat.cpp
|
|
minecraft/onesix/OneSixVersionFormat.h
|
|
minecraft/onesix/update/AssetUpdateTask.h
|
|
minecraft/onesix/update/AssetUpdateTask.cpp
|
|
minecraft/onesix/update/FMLLibrariesTask.cpp
|
|
minecraft/onesix/update/FMLLibrariesTask.h
|
|
minecraft/onesix/update/FoldersTask.cpp
|
|
minecraft/onesix/update/FoldersTask.h
|
|
minecraft/onesix/update/LibrariesTask.cpp
|
|
minecraft/onesix/update/LibrariesTask.h
|
|
minecraft/launch/CreateServerResourcePacksFolder.cpp
|
|
minecraft/launch/CreateServerResourcePacksFolder.h
|
|
minecraft/launch/ModMinecraftJar.cpp
|
|
minecraft/launch/ModMinecraftJar.h
|
|
minecraft/launch/DirectJavaLaunch.cpp
|
|
minecraft/launch/DirectJavaLaunch.h
|
|
minecraft/launch/ExtractNatives.cpp
|
|
minecraft/launch/ExtractNatives.h
|
|
minecraft/launch/LauncherPartLaunch.cpp
|
|
minecraft/launch/LauncherPartLaunch.h
|
|
minecraft/launch/PrintInstanceInfo.cpp
|
|
minecraft/launch/PrintInstanceInfo.h
|
|
minecraft/legacy/LegacyModList.h
|
|
minecraft/legacy/LegacyModList.cpp
|
|
minecraft/legacy/LegacyUpdate.h
|
|
minecraft/legacy/LegacyUpdate.cpp
|
|
minecraft/legacy/LegacyInstance.h
|
|
minecraft/legacy/LegacyInstance.cpp
|
|
minecraft/legacy/LwjglVersionList.h
|
|
minecraft/legacy/LwjglVersionList.cpp
|
|
minecraft/GradleSpecifier.h
|
|
minecraft/MinecraftProfile.cpp
|
|
minecraft/MinecraftProfile.h
|
|
minecraft/MojangVersionFormat.cpp
|
|
minecraft/MojangVersionFormat.h
|
|
minecraft/JarMod.h
|
|
minecraft/MinecraftInstance.cpp
|
|
minecraft/MinecraftInstance.h
|
|
minecraft/MinecraftVersion.cpp
|
|
minecraft/MinecraftVersion.h
|
|
minecraft/MinecraftVersionList.cpp
|
|
minecraft/MinecraftVersionList.h
|
|
minecraft/Rule.cpp
|
|
minecraft/Rule.h
|
|
minecraft/OpSys.cpp
|
|
minecraft/OpSys.h
|
|
minecraft/ParseUtils.cpp
|
|
minecraft/ParseUtils.h
|
|
minecraft/ProfileUtils.cpp
|
|
minecraft/ProfileUtils.h
|
|
minecraft/ProfileStrategy.h
|
|
minecraft/Library.cpp
|
|
minecraft/Library.h
|
|
minecraft/MojangDownloadInfo.h
|
|
minecraft/VersionBuildError.h
|
|
minecraft/VersionFile.cpp
|
|
minecraft/VersionFile.h
|
|
minecraft/ProfilePatch.h
|
|
minecraft/VersionFilterData.h
|
|
minecraft/VersionFilterData.cpp
|
|
minecraft/Mod.h
|
|
minecraft/Mod.cpp
|
|
minecraft/ModList.h
|
|
minecraft/ModList.cpp
|
|
minecraft/World.h
|
|
minecraft/World.cpp
|
|
minecraft/WorldList.h
|
|
minecraft/WorldList.cpp
|
|
|
|
# FTB
|
|
minecraft/ftb/OneSixFTBInstance.h
|
|
minecraft/ftb/OneSixFTBInstance.cpp
|
|
minecraft/ftb/LegacyFTBInstance.h
|
|
minecraft/ftb/LegacyFTBInstance.cpp
|
|
minecraft/ftb/FTBProfileStrategy.h
|
|
minecraft/ftb/FTBProfileStrategy.cpp
|
|
minecraft/ftb/FTBInstanceProvider.cpp
|
|
minecraft/ftb/FTBInstanceProvider.h
|
|
minecraft/ftb/FTBPlugin.h
|
|
minecraft/ftb/FTBPlugin.cpp
|
|
|
|
# Assets
|
|
minecraft/AssetsUtils.h
|
|
minecraft/AssetsUtils.cpp
|
|
|
|
# Forge and all things forge related
|
|
minecraft/forge/ForgeVersion.h
|
|
minecraft/forge/ForgeVersion.cpp
|
|
minecraft/forge/ForgeVersionList.h
|
|
minecraft/forge/ForgeVersionList.cpp
|
|
minecraft/forge/ForgeXzDownload.h
|
|
minecraft/forge/ForgeXzDownload.cpp
|
|
minecraft/forge/LegacyForge.h
|
|
minecraft/forge/LegacyForge.cpp
|
|
minecraft/forge/ForgeInstaller.h
|
|
minecraft/forge/ForgeInstaller.cpp
|
|
|
|
# Liteloader and related things
|
|
minecraft/liteloader/LiteLoaderInstaller.h
|
|
minecraft/liteloader/LiteLoaderInstaller.cpp
|
|
minecraft/liteloader/LiteLoaderVersionList.h
|
|
minecraft/liteloader/LiteLoaderVersionList.cpp
|
|
minecraft/SkinUpload.cpp
|
|
minecraft/SkinUpload.h
|
|
)
|
|
|
|
add_unit_test(GradleSpecifier
|
|
SOURCES minecraft/GradleSpecifier_test.cpp
|
|
LIBS MultiMC_logic
|
|
)
|
|
|
|
add_unit_test(MojangVersionFormat
|
|
SOURCES minecraft/MojangVersionFormat_test.cpp
|
|
LIBS MultiMC_logic
|
|
DATA minecraft/testdata
|
|
)
|
|
|
|
add_unit_test(Library
|
|
SOURCES minecraft/Library_test.cpp
|
|
LIBS MultiMC_logic
|
|
)
|
|
|
|
# FIXME: shares data with FileSystem test
|
|
add_unit_test(ModList
|
|
SOURCES minecraft/ModList_test.cpp
|
|
DATA testdata
|
|
LIBS MultiMC_logic
|
|
)
|
|
|
|
add_unit_test(ParseUtils
|
|
SOURCES minecraft/ParseUtils_test.cpp
|
|
LIBS MultiMC_logic
|
|
)
|
|
|
|
# the screenshots feature
|
|
set(SCREENSHOTS_SOURCES
|
|
screenshots/Screenshot.h
|
|
screenshots/ImgurUpload.h
|
|
screenshots/ImgurUpload.cpp
|
|
screenshots/ImgurAlbumCreation.h
|
|
screenshots/ImgurAlbumCreation.cpp
|
|
)
|
|
|
|
set(TASKS_SOURCES
|
|
# Tasks
|
|
tasks/Task.h
|
|
tasks/Task.cpp
|
|
tasks/ThreadTask.h
|
|
tasks/ThreadTask.cpp
|
|
tasks/SequentialTask.h
|
|
tasks/SequentialTask.cpp
|
|
)
|
|
|
|
set(SETTINGS_SOURCES
|
|
# Settings
|
|
settings/INIFile.cpp
|
|
settings/INIFile.h
|
|
settings/INISettingsObject.cpp
|
|
settings/INISettingsObject.h
|
|
settings/OverrideSetting.cpp
|
|
settings/OverrideSetting.h
|
|
settings/PassthroughSetting.cpp
|
|
settings/PassthroughSetting.h
|
|
settings/Setting.cpp
|
|
settings/Setting.h
|
|
settings/SettingsObject.cpp
|
|
settings/SettingsObject.h
|
|
)
|
|
|
|
add_unit_test(INIFile
|
|
SOURCES settings/INIFile_test.cpp
|
|
LIBS MultiMC_logic
|
|
)
|
|
|
|
set(JAVA_SOURCES
|
|
# Java related code
|
|
java/launch/CheckJava.cpp
|
|
java/launch/CheckJava.h
|
|
java/JavaChecker.h
|
|
java/JavaChecker.cpp
|
|
java/JavaCheckerJob.h
|
|
java/JavaCheckerJob.cpp
|
|
java/JavaInstall.h
|
|
java/JavaInstall.cpp
|
|
java/JavaInstallList.h
|
|
java/JavaInstallList.cpp
|
|
java/JavaUtils.h
|
|
java/JavaUtils.cpp
|
|
java/JavaVersion.h
|
|
java/JavaVersion.cpp
|
|
)
|
|
|
|
add_unit_test(JavaVersion
|
|
SOURCES java/JavaVersion_test.cpp
|
|
LIBS MultiMC_logic
|
|
)
|
|
|
|
set(TRANSLATIONS_SOURCES
|
|
# Translations
|
|
trans/TranslationDownloader.h
|
|
trans/TranslationDownloader.cpp
|
|
)
|
|
|
|
set(TOOLS_SOURCES
|
|
# Tools
|
|
tools/BaseExternalTool.cpp
|
|
tools/BaseExternalTool.h
|
|
tools/BaseProfiler.cpp
|
|
tools/BaseProfiler.h
|
|
tools/JProfiler.cpp
|
|
tools/JProfiler.h
|
|
tools/JVisualVM.cpp
|
|
tools/JVisualVM.h
|
|
tools/MCEditTool.cpp
|
|
tools/MCEditTool.h
|
|
)
|
|
|
|
set(WONKO_SOURCES
|
|
# Wonko
|
|
wonko/tasks/BaseWonkoEntityRemoteLoadTask.cpp
|
|
wonko/tasks/BaseWonkoEntityRemoteLoadTask.h
|
|
wonko/tasks/BaseWonkoEntityLocalLoadTask.cpp
|
|
wonko/tasks/BaseWonkoEntityLocalLoadTask.h
|
|
wonko/format/WonkoFormatV1.cpp
|
|
wonko/format/WonkoFormatV1.h
|
|
wonko/format/WonkoFormat.cpp
|
|
wonko/format/WonkoFormat.h
|
|
wonko/BaseWonkoEntity.cpp
|
|
wonko/BaseWonkoEntity.h
|
|
wonko/WonkoVersionList.cpp
|
|
wonko/WonkoVersionList.h
|
|
wonko/WonkoVersion.cpp
|
|
wonko/WonkoVersion.h
|
|
wonko/WonkoIndex.cpp
|
|
wonko/WonkoIndex.h
|
|
wonko/WonkoUtil.cpp
|
|
wonko/WonkoUtil.h
|
|
wonko/WonkoReference.cpp
|
|
wonko/WonkoReference.h
|
|
)
|
|
|
|
add_unit_test(WonkoIndex
|
|
SOURCES wonko/WonkoIndex_test.cpp
|
|
LIBS MultiMC_logic
|
|
)
|
|
|
|
################################ COMPILE ################################
|
|
|
|
# we need zlib
|
|
find_package(ZLIB REQUIRED)
|
|
|
|
set(LOGIC_SOURCES
|
|
${CORE_SOURCES}
|
|
${PATHMATCHER_SOURCES}
|
|
${NET_SOURCES}
|
|
${LAUNCH_SOURCES}
|
|
${UPDATE_SOURCES}
|
|
${NOTIFICATIONS_SOURCES}
|
|
${NEWS_SOURCES}
|
|
${STATUS_SOURCES}
|
|
${MINECRAFT_SOURCES}
|
|
${SCREENSHOTS_SOURCES}
|
|
${TASKS_SOURCES}
|
|
${SETTINGS_SOURCES}
|
|
${JAVA_SOURCES}
|
|
${TRANSLATIONS_SOURCES}
|
|
${TOOLS_SOURCES}
|
|
${WONKO_SOURCES}
|
|
${ICONS_SOURCES}
|
|
)
|
|
|
|
add_library(MultiMC_logic SHARED ${LOGIC_SOURCES})
|
|
set_target_properties(MultiMC_logic PROPERTIES CXX_VISIBILITY_PRESET hidden VISIBILITY_INLINES_HIDDEN 1)
|
|
|
|
generate_export_header(MultiMC_logic)
|
|
|
|
# Link
|
|
target_link_libraries(MultiMC_logic xz-embedded unpack200 ${QUAZIP_LIBRARIES} nbt++ ${ZLIB_LIBRARIES})
|
|
qt5_use_modules(MultiMC_logic Core Xml Network Concurrent)
|
|
add_dependencies(MultiMC_logic QuaZIP)
|
|
|
|
# Mark and export headers
|
|
target_include_directories(MultiMC_logic PUBLIC "${CMAKE_CURRENT_BINARY_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}" PRIVATE "${ZLIB_INCLUDE_DIRS}")
|