Merge pull request #2966 from jroweboy/qtifw_build_installer
Qtifw build installer
This commit is contained in:
		@@ -303,6 +303,7 @@ get_timestamp(BUILD_DATE)
 | 
			
		||||
enable_testing()
 | 
			
		||||
add_subdirectory(externals)
 | 
			
		||||
add_subdirectory(src)
 | 
			
		||||
add_subdirectory(dist/installer)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Installation instructions
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										38
									
								
								CMakeModules/BuildInstaller.cmake
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								CMakeModules/BuildInstaller.cmake
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,38 @@
 | 
			
		||||
# To use this as a script, make sure you pass in the variables SRC_DIR BUILD_DIR and TARGET_FILE
 | 
			
		||||
 | 
			
		||||
if(WIN32)
 | 
			
		||||
    set(PLATFORM "windows")
 | 
			
		||||
elseif(APPLE)
 | 
			
		||||
    set(PLATFORM "mac")
 | 
			
		||||
elseif(UNIX)
 | 
			
		||||
    set(PLATFORM "linux")
 | 
			
		||||
else()
 | 
			
		||||
    message(FATAL_ERROR "Cannot build installer for this unsupported platform")
 | 
			
		||||
endif()
 | 
			
		||||
 | 
			
		||||
set(DIST_DIR "${BUILD_DIR}/dist")
 | 
			
		||||
set(ARCHIVE "${PLATFORM}.7z")
 | 
			
		||||
 | 
			
		||||
file(MAKE_DIRECTORY ${BUILD_DIR})
 | 
			
		||||
file(MAKE_DIRECTORY ${DIST_DIR})
 | 
			
		||||
file(DOWNLOAD https://github.com/citra-emu/ext-windows-bin/raw/master/qtifw/${ARCHIVE}
 | 
			
		||||
    "${BUILD_DIR}/${ARCHIVE}" SHOW_PROGRESS)
 | 
			
		||||
execute_process(COMMAND ${CMAKE_COMMAND} -E tar xf "${BUILD_DIR}/${ARCHIVE}"
 | 
			
		||||
    WORKING_DIRECTORY "${BUILD_DIR}/")
 | 
			
		||||
 | 
			
		||||
set(TARGET_NAME "citra-setup-${PLATFORM}")
 | 
			
		||||
set(CONFIG_FILE "${SRC_DIR}/config/config_${PLATFORM}.xml")
 | 
			
		||||
set(INSTALLER_BASE "${BUILD_DIR}/installerbase_${PLATFORM}")
 | 
			
		||||
set(BINARY_CREATOR "${BUILD_DIR}/binarycreator_${PLATFORM}")
 | 
			
		||||
set(PACKAGES_DIR "${BUILD_DIR}/packages")
 | 
			
		||||
file(MAKE_DIRECTORY ${PACKAGES_DIR})
 | 
			
		||||
 | 
			
		||||
if (UNIX OR APPLE)
 | 
			
		||||
    execute_process(COMMAND chmod 744 ${BINARY_CREATOR})
 | 
			
		||||
endif()
 | 
			
		||||
 | 
			
		||||
execute_process(COMMAND ${BINARY_CREATOR} -t ${INSTALLER_BASE} -n -c ${CONFIG_FILE} -p ${PACKAGES_DIR} ${TARGET_FILE})
 | 
			
		||||
 | 
			
		||||
if (APPLE)
 | 
			
		||||
    execute_process(COMMAND chmod 744 ${TARGET_FILE}.app/Contents/MacOS/${TARGET_NAME})
 | 
			
		||||
endif()
 | 
			
		||||
							
								
								
									
										23
									
								
								dist/installer/CMakeLists.txt
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								dist/installer/CMakeLists.txt
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,23 @@
 | 
			
		||||
 | 
			
		||||
if(WIN32)
 | 
			
		||||
    set(PLATFORM "windows")
 | 
			
		||||
elseif(APPLE)
 | 
			
		||||
    set(PLATFORM "mac")
 | 
			
		||||
elseif(UNIX)
 | 
			
		||||
    set(PLATFORM "linux")
 | 
			
		||||
endif()
 | 
			
		||||
 | 
			
		||||
set(BUILD_DIR "${CMAKE_BINARY_DIR}/installer")
 | 
			
		||||
set(DIST_DIR "${BUILD_DIR}/dist")
 | 
			
		||||
set(TARGET_FILE "${DIST_DIR}/citra-setup-${PLATFORM}")
 | 
			
		||||
file(MAKE_DIRECTORY ${BUILD_DIR})
 | 
			
		||||
 | 
			
		||||
# Adds a custom target that will run the BuildInstaller.cmake file
 | 
			
		||||
# CMake can't just run a cmake function as a custom command, so this is a way around it.
 | 
			
		||||
# Calls the cmake command and runs a cmake file in "scripting" mode passing in variables with -D
 | 
			
		||||
add_custom_command(OUTPUT "${TARGET_FILE}"
 | 
			
		||||
    COMMAND ${CMAKE_COMMAND} -DSRC_DIR=${CMAKE_CURRENT_SOURCE_DIR} -D BUILD_DIR=${BUILD_DIR} -D TARGET_FILE=${TARGET_FILE} -P ${CMAKE_SOURCE_DIR}/CMakeModules/BuildInstaller.cmake
 | 
			
		||||
    WORKING_DIRECTORY ${BUILD_DIR}
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
add_custom_target(installer DEPENDS ${TARGET_FILE})
 | 
			
		||||
							
								
								
									
										9
									
								
								dist/installer/README.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								dist/installer/README.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,9 @@
 | 
			
		||||
Citra Qt Installer
 | 
			
		||||
==================
 | 
			
		||||
 | 
			
		||||
This contains the configuration files for building Citra's installer.
 | 
			
		||||
 | 
			
		||||
Installers can only be built on the platform that they are targeting.
 | 
			
		||||
 | 
			
		||||
Build the `installer` target to generate the installer, and the installer will be in
 | 
			
		||||
${build_dir}/installer/dist/
 | 
			
		||||
							
								
								
									
										19
									
								
								dist/installer/config/config_linux.xml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								dist/installer/config/config_linux.xml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,19 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<Installer>
 | 
			
		||||
    <Name>Citra</Name>
 | 
			
		||||
    <Version>1.0.0</Version>
 | 
			
		||||
    <Title>Citra Updater</Title>
 | 
			
		||||
    <Publisher>Citra Team</Publisher>
 | 
			
		||||
    <!-- e.g. /home/<user>/.citra or /opt/citra if run as root -->
 | 
			
		||||
    <TargetDir>@HomeDir@/.citra</TargetDir>
 | 
			
		||||
    <AdminTargetDir>/opt/citra</AdminTargetDir>
 | 
			
		||||
    <InstallerApplicationIcon>icon</InstallerApplicationIcon>
 | 
			
		||||
    <InstallerWindowIcon>icon.png</InstallerWindowIcon>
 | 
			
		||||
    <RemoteRepositories>
 | 
			
		||||
        <Repository>
 | 
			
		||||
            <Url>https://repo.citra-emu.org</Url>
 | 
			
		||||
            <Enabled>1</Enabled>
 | 
			
		||||
            <DisplayName>Official Citra Repository</DisplayName>
 | 
			
		||||
        </Repository>
 | 
			
		||||
    </RemoteRepositories>
 | 
			
		||||
</Installer>
 | 
			
		||||
							
								
								
									
										18
									
								
								dist/installer/config/config_mac.xml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								dist/installer/config/config_mac.xml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,18 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<Installer>
 | 
			
		||||
    <Name>Citra</Name>
 | 
			
		||||
    <Version>1.0.0</Version>
 | 
			
		||||
    <Title>Citra Updater</Title>
 | 
			
		||||
    <Publisher>Citra Team</Publisher>
 | 
			
		||||
    <!-- e.g. /Applications/Citra -->
 | 
			
		||||
    <TargetDir>@ApplicationsDir@/Citra</TargetDir>
 | 
			
		||||
    <InstallerApplicationIcon>icon</InstallerApplicationIcon>
 | 
			
		||||
    <InstallerWindowIcon>icon.png</InstallerWindowIcon>
 | 
			
		||||
    <RemoteRepositories>
 | 
			
		||||
        <Repository>
 | 
			
		||||
            <Url>https://repo.citra-emu.org</Url>
 | 
			
		||||
            <Enabled>1</Enabled>
 | 
			
		||||
            <DisplayName>Official Citra Repository</DisplayName>
 | 
			
		||||
        </Repository>
 | 
			
		||||
    </RemoteRepositories>
 | 
			
		||||
</Installer>
 | 
			
		||||
							
								
								
									
										19
									
								
								dist/installer/config/config_windows.xml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								dist/installer/config/config_windows.xml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,19 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<Installer>
 | 
			
		||||
    <Name>Citra</Name>
 | 
			
		||||
    <Version>1.0.0</Version>
 | 
			
		||||
    <Title>Citra Updater</Title>
 | 
			
		||||
    <Publisher>Citra Team</Publisher>
 | 
			
		||||
    <StartMenuDir>Citra</StartMenuDir>
 | 
			
		||||
    <!-- e.g. C:\home\<user>\AppData\Local\Citra -->
 | 
			
		||||
    <TargetDir>@HomeDir@/AppData/Local/Citra</TargetDir>
 | 
			
		||||
    <InstallerApplicationIcon>icon</InstallerApplicationIcon>
 | 
			
		||||
    <InstallerWindowIcon>icon.png</InstallerWindowIcon>
 | 
			
		||||
    <RemoteRepositories>
 | 
			
		||||
        <Repository>
 | 
			
		||||
            <Url>https://repo.citra-emu.org</Url>
 | 
			
		||||
            <Enabled>1</Enabled>
 | 
			
		||||
            <DisplayName>Official Citra Repository</DisplayName>
 | 
			
		||||
        </Repository>
 | 
			
		||||
    </RemoteRepositories>
 | 
			
		||||
</Installer>
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								dist/installer/config/icon.icns
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								dist/installer/config/icon.icns
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								dist/installer/config/icon.ico
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								dist/installer/config/icon.ico
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 39 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								dist/installer/config/icon.png
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								dist/installer/config/icon.png
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 18 KiB  | 
		Reference in New Issue
	
	Block a user