529 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
			
		
		
	
	
			529 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
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_file("${PROJECT_SOURCE_DIR}/BuildConfig.cpp.in" "${PROJECT_BINARY_DIR}/BuildConfig.cpp")
 | 
						|
 | 
						|
################################ FILES ################################
 | 
						|
 | 
						|
######## Sources and headers ########
 | 
						|
SET(MULTIMC_SOURCES
 | 
						|
	# Application base
 | 
						|
	main.cpp
 | 
						|
	MultiMC.h
 | 
						|
	MultiMC.cpp
 | 
						|
	BuildConfig.h
 | 
						|
	${PROJECT_BINARY_DIR}/BuildConfig.cpp
 | 
						|
	UpdateController.cpp
 | 
						|
	UpdateController.h
 | 
						|
 | 
						|
	# GUI - general utilities
 | 
						|
	GuiUtil.h
 | 
						|
	GuiUtil.cpp
 | 
						|
	ColumnResizer.h
 | 
						|
	ColumnResizer.cpp
 | 
						|
	InstanceProxyModel.h
 | 
						|
	InstanceProxyModel.cpp
 | 
						|
	VersionProxyModel.h
 | 
						|
	VersionProxyModel.cpp
 | 
						|
	ColorCache.h
 | 
						|
	ColorCache.cpp
 | 
						|
	HoeDown.h
 | 
						|
 | 
						|
	# GUI - windows
 | 
						|
	MainWindow.h
 | 
						|
	MainWindow.cpp
 | 
						|
	InstanceWindow.h
 | 
						|
	InstanceWindow.cpp
 | 
						|
 | 
						|
	# GUI - setup wizard
 | 
						|
	setupwizard/SetupWizard.h
 | 
						|
	setupwizard/SetupWizard.cpp
 | 
						|
	setupwizard/AnalyticsWizardPage.cpp
 | 
						|
	setupwizard/AnalyticsWizardPage.h
 | 
						|
	setupwizard/BaseWizardPage.h
 | 
						|
	setupwizard/JavaWizardPage.cpp
 | 
						|
	setupwizard/JavaWizardPage.h
 | 
						|
	setupwizard/LanguageWizardPage.cpp
 | 
						|
	setupwizard/LanguageWizardPage.h
 | 
						|
 | 
						|
	# GUI - themes
 | 
						|
	themes/FusionTheme.cpp
 | 
						|
	themes/FusionTheme.h
 | 
						|
	themes/BrightTheme.cpp
 | 
						|
	themes/BrightTheme.h
 | 
						|
	themes/CustomTheme.cpp
 | 
						|
	themes/CustomTheme.h
 | 
						|
	themes/DarkTheme.cpp
 | 
						|
	themes/DarkTheme.h
 | 
						|
	themes/ITheme.cpp
 | 
						|
	themes/ITheme.h
 | 
						|
	themes/SystemTheme.cpp
 | 
						|
	themes/SystemTheme.h
 | 
						|
 | 
						|
	# GUI - settings-specific wrappers for paged dialog
 | 
						|
	SettingsUI.h
 | 
						|
 | 
						|
	# Processes
 | 
						|
	LaunchController.h
 | 
						|
	LaunchController.cpp
 | 
						|
 | 
						|
	# page provider for instances
 | 
						|
	InstancePageProvider.h
 | 
						|
 | 
						|
	# Common java checking UI
 | 
						|
	JavaCommon.h
 | 
						|
	JavaCommon.cpp
 | 
						|
 | 
						|
	# GUI - page dialog pages
 | 
						|
	pages/BasePage.h
 | 
						|
	pages/BasePageContainer.h
 | 
						|
	pages/VersionPage.cpp
 | 
						|
	pages/VersionPage.h
 | 
						|
	pages/TexturePackPage.h
 | 
						|
	pages/ResourcePackPage.h
 | 
						|
	pages/ModFolderPage.cpp
 | 
						|
	pages/ModFolderPage.h
 | 
						|
	pages/NotesPage.cpp
 | 
						|
	pages/NotesPage.h
 | 
						|
	pages/LogPage.cpp
 | 
						|
	pages/LogPage.h
 | 
						|
	pages/InstanceSettingsPage.cpp
 | 
						|
	pages/InstanceSettingsPage.h
 | 
						|
	pages/ScreenshotsPage.cpp
 | 
						|
	pages/ScreenshotsPage.h
 | 
						|
	pages/OtherLogsPage.cpp
 | 
						|
	pages/OtherLogsPage.h
 | 
						|
	pages/LegacyUpgradePage.cpp
 | 
						|
	pages/LegacyUpgradePage.h
 | 
						|
	pages/WorldListPage.cpp
 | 
						|
	pages/WorldListPage.h
 | 
						|
 | 
						|
	# GUI - global settings pages
 | 
						|
	pages/global/AccountListPage.cpp
 | 
						|
	pages/global/AccountListPage.h
 | 
						|
	pages/global/ExternalToolsPage.cpp
 | 
						|
	pages/global/ExternalToolsPage.h
 | 
						|
	pages/global/JavaPage.cpp
 | 
						|
	pages/global/JavaPage.h
 | 
						|
	pages/global/MinecraftPage.cpp
 | 
						|
	pages/global/MinecraftPage.h
 | 
						|
	pages/global/MultiMCPage.cpp
 | 
						|
	pages/global/MultiMCPage.h
 | 
						|
	pages/global/ProxyPage.cpp
 | 
						|
	pages/global/ProxyPage.h
 | 
						|
	pages/global/PasteEEPage.cpp
 | 
						|
	pages/global/PasteEEPage.h
 | 
						|
	pages/global/PackagesPage.cpp
 | 
						|
	pages/global/PackagesPage.h
 | 
						|
 | 
						|
	# GUI - dialogs
 | 
						|
	dialogs/AboutDialog.cpp
 | 
						|
	dialogs/AboutDialog.h
 | 
						|
	dialogs/ProfileSelectDialog.cpp
 | 
						|
	dialogs/ProfileSelectDialog.h
 | 
						|
	dialogs/CopyInstanceDialog.cpp
 | 
						|
	dialogs/CopyInstanceDialog.h
 | 
						|
	dialogs/CustomMessageBox.cpp
 | 
						|
	dialogs/CustomMessageBox.h
 | 
						|
	dialogs/EditAccountDialog.cpp
 | 
						|
	dialogs/EditAccountDialog.h
 | 
						|
	dialogs/ExportInstanceDialog.cpp
 | 
						|
	dialogs/ExportInstanceDialog.h
 | 
						|
	dialogs/IconPickerDialog.cpp
 | 
						|
	dialogs/IconPickerDialog.h
 | 
						|
	dialogs/LoginDialog.cpp
 | 
						|
	dialogs/LoginDialog.h
 | 
						|
	dialogs/ModEditDialogCommon.cpp
 | 
						|
	dialogs/ModEditDialogCommon.h
 | 
						|
	dialogs/NewComponentDialog.cpp
 | 
						|
	dialogs/NewComponentDialog.h
 | 
						|
	dialogs/NewInstanceDialog.cpp
 | 
						|
	dialogs/NewInstanceDialog.h
 | 
						|
	dialogs/NotificationDialog.cpp
 | 
						|
	dialogs/NotificationDialog.h
 | 
						|
	pagedialog/PageDialog.cpp
 | 
						|
	pagedialog/PageDialog.h
 | 
						|
	dialogs/ProgressDialog.cpp
 | 
						|
	dialogs/ProgressDialog.h
 | 
						|
	dialogs/UpdateDialog.cpp
 | 
						|
	dialogs/UpdateDialog.h
 | 
						|
	dialogs/VersionSelectDialog.cpp
 | 
						|
	dialogs/VersionSelectDialog.h
 | 
						|
	dialogs/SkinUploadDialog.cpp
 | 
						|
	dialogs/SkinUploadDialog.h
 | 
						|
 | 
						|
	# GUI - widgets
 | 
						|
	widgets/Common.cpp
 | 
						|
	widgets/Common.h
 | 
						|
	widgets/FocusLineEdit.cpp
 | 
						|
	widgets/FocusLineEdit.h
 | 
						|
	widgets/IconLabel.cpp
 | 
						|
	widgets/IconLabel.h
 | 
						|
	widgets/LabeledToolButton.cpp
 | 
						|
	widgets/LabeledToolButton.h
 | 
						|
	widgets/LineSeparator.cpp
 | 
						|
	widgets/LineSeparator.h
 | 
						|
	widgets/LogView.cpp
 | 
						|
	widgets/LogView.h
 | 
						|
	widgets/MCModInfoFrame.cpp
 | 
						|
	widgets/MCModInfoFrame.h
 | 
						|
	widgets/ModListView.cpp
 | 
						|
	widgets/ModListView.h
 | 
						|
	widgets/PageContainer.cpp
 | 
						|
	widgets/PageContainer.h
 | 
						|
	widgets/PageContainer_p.h
 | 
						|
	widgets/ServerStatus.cpp
 | 
						|
	widgets/ServerStatus.h
 | 
						|
	widgets/VersionListView.cpp
 | 
						|
	widgets/VersionListView.h
 | 
						|
	widgets/VersionSelectWidget.cpp
 | 
						|
	widgets/VersionSelectWidget.h
 | 
						|
	widgets/ProgressWidget.h
 | 
						|
	widgets/ProgressWidget.cpp
 | 
						|
 | 
						|
 | 
						|
	# GUI - instance group view
 | 
						|
	groupview/GroupedProxyModel.cpp
 | 
						|
	groupview/GroupedProxyModel.h
 | 
						|
	groupview/GroupView.cpp
 | 
						|
	groupview/GroupView.h
 | 
						|
	groupview/InstanceDelegate.cpp
 | 
						|
	groupview/InstanceDelegate.h
 | 
						|
	groupview/VisualGroup.cpp
 | 
						|
	groupview/VisualGroup.h
 | 
						|
	)
 | 
						|
 | 
						|
######## UIs ########
 | 
						|
SET(MULTIMC_UIS
 | 
						|
	# Instance pages
 | 
						|
	pages/VersionPage.ui
 | 
						|
	pages/ModFolderPage.ui
 | 
						|
	pages/LogPage.ui
 | 
						|
	pages/InstanceSettingsPage.ui
 | 
						|
	pages/NotesPage.ui
 | 
						|
	pages/ScreenshotsPage.ui
 | 
						|
	pages/OtherLogsPage.ui
 | 
						|
	pages/LegacyUpgradePage.ui
 | 
						|
	pages/WorldListPage.ui
 | 
						|
 | 
						|
	# Global settings pages
 | 
						|
	pages/global/AccountListPage.ui
 | 
						|
	pages/global/ExternalToolsPage.ui
 | 
						|
	pages/global/JavaPage.ui
 | 
						|
	pages/global/MinecraftPage.ui
 | 
						|
	pages/global/MultiMCPage.ui
 | 
						|
	pages/global/ProxyPage.ui
 | 
						|
	pages/global/PasteEEPage.ui
 | 
						|
	pages/global/PackagesPage.ui
 | 
						|
 | 
						|
	# Dialogs
 | 
						|
	dialogs/CopyInstanceDialog.ui
 | 
						|
	dialogs/NewComponentDialog.ui
 | 
						|
	dialogs/NewInstanceDialog.ui
 | 
						|
	dialogs/AboutDialog.ui
 | 
						|
	dialogs/ProgressDialog.ui
 | 
						|
	dialogs/IconPickerDialog.ui
 | 
						|
	dialogs/ProfileSelectDialog.ui
 | 
						|
	dialogs/EditAccountDialog.ui
 | 
						|
	dialogs/ExportInstanceDialog.ui
 | 
						|
	dialogs/LoginDialog.ui
 | 
						|
	dialogs/UpdateDialog.ui
 | 
						|
	dialogs/NotificationDialog.ui
 | 
						|
	dialogs/SkinUploadDialog.ui
 | 
						|
 | 
						|
	# Widgets/other
 | 
						|
	widgets/MCModInfoFrame.ui
 | 
						|
)
 | 
						|
 | 
						|
set(MULTIMC_QRCS
 | 
						|
	resources/backgrounds/backgrounds.qrc
 | 
						|
	resources/multimc/multimc.qrc
 | 
						|
	resources/pe_dark/pe_dark.qrc
 | 
						|
	resources/pe_light/pe_light.qrc
 | 
						|
	resources/pe_colored/pe_colored.qrc
 | 
						|
	resources/pe_blue/pe_blue.qrc
 | 
						|
	resources/OSX/OSX.qrc
 | 
						|
	resources/iOS/iOS.qrc
 | 
						|
	resources/flat/flat.qrc
 | 
						|
	resources/documents/documents.qrc
 | 
						|
)
 | 
						|
 | 
						|
######## Windows resource files ########
 | 
						|
if(WIN32)
 | 
						|
	set(MULTIMC_RCS resources/multimc.rc)
 | 
						|
endif()
 | 
						|
 | 
						|
# Qt 5 stuff
 | 
						|
qt5_wrap_ui(MULTIMC_UI ${MULTIMC_UIS})
 | 
						|
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})
 | 
						|
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.")
 | 
						|
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")
 | 
						|
	# 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\" \" \")"
 | 
						|
		COMPONENT Runtime
 | 
						|
	)
 | 
						|
	# Bundle plugins
 | 
						|
	if(CMAKE_BUILD_TYPE STREQUAL "Debug" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")
 | 
						|
		# Image formats
 | 
						|
		install(
 | 
						|
			DIRECTORY "${QT_PLUGINS_DIR}/imageformats"
 | 
						|
			DESTINATION ${PLUGIN_DEST_DIR}
 | 
						|
			COMPONENT Runtime
 | 
						|
			REGEX "tga|tiff|mng|webp" EXCLUDE
 | 
						|
		)
 | 
						|
		# Icon engines
 | 
						|
		install(
 | 
						|
			DIRECTORY "${QT_PLUGINS_DIR}/iconengines"
 | 
						|
			DESTINATION ${PLUGIN_DEST_DIR}
 | 
						|
			COMPONENT Runtime
 | 
						|
			REGEX "fontawesome" EXCLUDE
 | 
						|
		)
 | 
						|
		# Platform plugins
 | 
						|
		install(
 | 
						|
			DIRECTORY "${QT_PLUGINS_DIR}/platforms"
 | 
						|
			DESTINATION ${PLUGIN_DEST_DIR}
 | 
						|
			COMPONENT Runtime
 | 
						|
			REGEX "minimal|linuxfb|offscreen" EXCLUDE
 | 
						|
		)
 | 
						|
	else()
 | 
						|
		# Image formats
 | 
						|
		install(
 | 
						|
			DIRECTORY "${QT_PLUGINS_DIR}/imageformats"
 | 
						|
			DESTINATION ${PLUGIN_DEST_DIR}
 | 
						|
			COMPONENT Runtime
 | 
						|
			REGEX "tga|tiff|mng|webp" EXCLUDE
 | 
						|
			REGEX "d\\." EXCLUDE
 | 
						|
			REGEX "_debug\\." EXCLUDE
 | 
						|
			REGEX "\\.dSYM" EXCLUDE
 | 
						|
		)
 | 
						|
		# Icon engines
 | 
						|
		install(
 | 
						|
			DIRECTORY "${QT_PLUGINS_DIR}/iconengines"
 | 
						|
			DESTINATION ${PLUGIN_DEST_DIR}
 | 
						|
			COMPONENT Runtime
 | 
						|
			REGEX "fontawesome" EXCLUDE
 | 
						|
			REGEX "d\\." EXCLUDE
 | 
						|
			REGEX "_debug\\." EXCLUDE
 | 
						|
			REGEX "\\.dSYM" EXCLUDE
 | 
						|
		)
 | 
						|
		# Platform plugins
 | 
						|
		install(
 | 
						|
			DIRECTORY "${QT_PLUGINS_DIR}/platforms"
 | 
						|
			DESTINATION ${PLUGIN_DEST_DIR}
 | 
						|
			COMPONENT Runtime
 | 
						|
			REGEX "minimal|linuxfb|offscreen" EXCLUDE
 | 
						|
			REGEX "d\\." EXCLUDE
 | 
						|
			REGEX "_debug\\." EXCLUDE
 | 
						|
			REGEX "\\.dSYM" EXCLUDE
 | 
						|
		)
 | 
						|
	endif()
 | 
						|
	configure_file(
 | 
						|
		"${CMAKE_CURRENT_SOURCE_DIR}/install_prereqs.cmake.in"
 | 
						|
		"${CMAKE_CURRENT_BINARY_DIR}/install_prereqs.cmake"
 | 
						|
		@ONLY
 | 
						|
	)
 | 
						|
	install(SCRIPT "${CMAKE_CURRENT_BINARY_DIR}/install_prereqs.cmake" COMPONENT Runtime)
 | 
						|
endif()
 |