aboutsummaryrefslogtreecommitdiff
path: root/cpack/setup.cmake
diff options
context:
space:
mode:
authorspicyjpeg <thatspicyjpeg@gmail.com>2024-10-14 17:44:12 +0200
committerspicyjpeg <thatspicyjpeg@gmail.com>2024-10-14 17:44:12 +0200
commit787db196ad3c4e945792997111d759f82110775a (patch)
tree878943ae179709b77f411ce5c4857d28eb6d8fc2 /cpack/setup.cmake
parent9c792e636a7803f8003643b2f91f040257398b3f (diff)
downloadpsn00bsdk-787db196ad3c4e945792997111d759f82110775a.tar.gz
Deprecate CPack packages and old changelog, fix ldscripts
Diffstat (limited to 'cpack/setup.cmake')
-rw-r--r--cpack/setup.cmake214
1 files changed, 0 insertions, 214 deletions
diff --git a/cpack/setup.cmake b/cpack/setup.cmake
deleted file mode 100644
index 1d66066..0000000
--- a/cpack/setup.cmake
+++ /dev/null
@@ -1,214 +0,0 @@
-# This script sets up all CPack-related variables and generates installation
-# rules to bundle the GCC toolchain and CMake in packages. It is included by
-# the main CMakeLists.txt script.
-
-## Settings
-
-# These can be set from the command line to completely disable bundling CMake
-# and GCC in packages built by CPack. They have no effect on installing the SDK
-# normally.
-# TODO: BUNDLE_CMAKE should not be used, needs more testing
-set(
- BUNDLE_TOOLCHAIN OFF
- CACHE BOOL "Include the GCC toolchain in installer packages"
-)
-set(
- BUNDLE_NINJA OFF
- CACHE BOOL "Include Ninja in installer packages"
-)
-#set(
- #BUNDLE_CMAKE OFF
- #CACHE BOOL "Include CMake in installer packages (Windows only)"
-#)
-
-## Bundled components
-
-# "Install" the toolchain and CMake (by pulling files from their install
-# locations). This is only useful when building installers, as CPack will pick
-# up these installation rules and bundle the toolchain in the installers.
-# NOTE: unfortunately there is no easy way to reuse the toolchain finding logic
-# in sdk.cmake, so I had to copypaste it here.
-if(BUNDLE_TOOLCHAIN)
- find_program(
- _gcc ${PSN00BSDK_TARGET}-gcc
- HINTS
- ${PSN00BSDK_TC}/bin
- ${PSN00BSDK_TC}/../bin
- PATHS
- "C:/Program Files/${PSN00BSDK_TARGET}/bin"
- "C:/Program Files (x86)/${PSN00BSDK_TARGET}/bin"
- "C:/${PSN00BSDK_TARGET}/bin"
- /opt/${PSN00BSDK_TARGET}/bin
- /usr/local/${PSN00BSDK_TARGET}/bin
- /usr/${PSN00BSDK_TARGET}/bin
- NO_CACHE REQUIRED
- )
- cmake_path(GET _gcc PARENT_PATH _bin)
- cmake_path(GET _bin PARENT_PATH _toolchain)
-
- # Check if the toolchain is actually part of an existing PSn00bSDK install.
- # If so, disable bundling as we can't determine which files are part of the
- # toolchain and which ones are part of the SDK.
- if(EXISTS ${_bin}/elf2x${CMAKE_EXECUTABLE_SUFFIX})
- message(FATAL_ERROR "${_toolchain} contains a full PSn00bSDK installation. To bundle the toolchain, set PSN00BSDK_TC to point to a directory containing only the toolchain files.")
- else()
- install(
- DIRECTORY ${_toolchain}/
- DESTINATION .
- COMPONENT toolchain
- USE_SOURCE_PERMISSIONS
- #EXCLUDE_FROM_ALL
- )
- endif()
-endif()
-
-if(BUNDLE_NINJA)
- find_program(_ninja ninja NO_CACHE REQUIRED)
- execute_process(
- COMMAND ${_ninja} --version
- OUTPUT_VARIABLE _ninja_version
- OUTPUT_STRIP_TRAILING_WHITESPACE
- COMMAND_ERROR_IS_FATAL ANY
- )
-
- install(
- PROGRAMS ${_ninja}
- TYPE BIN
- COMPONENT ninja
- )
-endif()
-
-if(BUNDLE_CMAKE)
- cmake_path(GET CMAKE_COMMAND PARENT_PATH _bin)
- cmake_path(GET _bin PARENT_PATH _cmakedir)
-
- # Bundling CMake is only allowed on Windows, both because finding CMake
- # installation files is difficult on Linux and because it's better to
- # specify CMake as a DEB/RPM dependency anyway.
- if(NOT WIN32)
- message(FATAL_ERROR "Bundling CMake into installers is only supported (and should only be done) on Windows.")
- else()
- install(
- DIRECTORY ${_cmakedir}/
- DESTINATION .
- COMPONENT cmake
- USE_SOURCE_PERMISSIONS
- #EXCLUDE_FROM_ALL
- )
- endif()
-endif()
-
-## Variables common to all package types
-
-if(NOT DEFINED CPACK_GENERATOR)
- #if(WIN32)
- #set(CPACK_GENERATOR ZIP NSIS)
- #elseif(APPLE)
- # TODO: add a macOS installer and related options
- #set(CPACK_GENERATOR ZIP)
- #elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux")
- #set(CPACK_GENERATOR ZIP DEB RPM)
- #else()
- set(CPACK_GENERATOR ZIP)
- #endif()
-endif()
-
-set(CPACK_VERBATIM_VARIABLES ON)
-set(CPACK_ARCHIVE_THREADS 0)
-set(CPACK_PACKAGE_DIRECTORY ${PROJECT_BINARY_DIR}/packages)
-set(CPACK_PACKAGE_NAME PSn00bSDK)
-set(CPACK_PACKAGE_VENDOR Lameguy64)
-set(CPACK_PACKAGE_CONTACT Lameguy64)
-set(CPACK_RESOURCE_FILE_README ${PROJECT_SOURCE_DIR}/README.md)
-set(CPACK_RESOURCE_FILE_LICENSE ${PROJECT_SOURCE_DIR}/LICENSE.md)
-set(CPACK_PACKAGE_ICON ${CMAKE_CURRENT_LIST_DIR}/icon.ico)
-set(CPACK_PACKAGE_DESCRIPTION_FILE ${CMAKE_CURRENT_LIST_DIR}/description.txt)
-set(CPACK_PRE_BUILD_SCRIPTS ${CMAKE_CURRENT_LIST_DIR}/fakeroot_fix.cmake)
-set(CPACK_PACKAGE_INSTALL_DIRECTORY PSn00bSDK)
-
-## DEB/RPM variables
-
-set(CPACK_DEBIAN_PACKAGE_DEPENDS "libc6 (>= 2.28), cmake (>= 3.21)")
-set(CPACK_DEBIAN_PACKAGE_RECOMMENDS "ninja-build (>= 1.10)")
-set(CPACK_DEBIAN_PACKAGE_SUGGESTS "git (>= 2.25)")
-set(CPACK_DEBIAN_PACKAGE_SECTION devel)
-set(CPACK_RPM_PACKAGE_REQUIRES "cmake >= 3.21")
-set(CPACK_RPM_PACKAGE_SUGGESTS "ninja-build >= 1.10, git >= 2.25")
-#set(CPACK_RPM_PACKAGE_RELOCATABLE ON)
-
-## NSIS variables
-
-set(CPACK_NSIS_MUI_ICON ${CMAKE_CURRENT_LIST_DIR}/icon.ico)
-set(CPACK_NSIS_MUI_UNIICON ${CMAKE_CURRENT_LIST_DIR}/uninstall.ico)
-set(CPACK_NSIS_MUI_HEADERIMAGE ${CMAKE_CURRENT_LIST_DIR}/nsis_header.bmp)
-set(CPACK_NSIS_MUI_WELCOMEFINISHPAGE_BITMAP ${CMAKE_CURRENT_LIST_DIR}/nsis_banner.bmp)
-set(CPACK_NSIS_MUI_UNWELCOMEFINISHPAGE_BITMAP ${CMAKE_CURRENT_LIST_DIR}/nsis_banner.bmp)
-set(CPACK_NSIS_BRANDING_TEXT "PSn00bSDK ${PROJECT_VERSION} - Meido-Tek Productions")
-set(CPACK_NSIS_URL_INFO_ABOUT "${PROJECT_HOMEPAGE_URL}")
-set(CPACK_NSIS_MODIFY_PATH ON)
-set(CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL ON)
-set(
- CPACK_NSIS_MENU_LINKS
- "${PROJECT_HOMEPAGE_URL}" "About PSn00bSDK"
- "https://github.com/Lameguy64/PSn00bSDK" "GitHub repo"
- "Uninstall.exe" "Uninstall PSn00bSDK"
-)
-
-# Paths in CPACK_NSIS_* variables are not converted to native paths by CMake
-# for some reason (and NSIS doesn't like paths with forward slashes), so we
-# have to do it manually.
-foreach(
- _var IN ITEMS
- CPACK_NSIS_MUI_ICON
- CPACK_NSIS_MUI_UNIICON
- CPACK_NSIS_MUI_HEADERIMAGE
- CPACK_NSIS_MUI_WELCOMEFINISHPAGE_BITMAP
- CPACK_NSIS_MUI_UNWELCOMEFINISHPAGE_BITMAP
-)
- cmake_path(NATIVE_PATH ${_var} ${_var})
-endforeach()
-
-## Component setup
-
-# This must be done after setting CPack-related variables.
-include(CPack)
-
-cpack_add_component(
- sdk
- DISPLAY_NAME "SDK libraries and tools"
- DESCRIPTION "These files are always required and their installation cannot be skipped."
- REQUIRED
-)
-cpack_add_component(
- docs
- DISPLAY_NAME "SDK documentation"
- DESCRIPTION "Select to install additional documentation files and a project template (recommended)."
-)
-cpack_add_component(
- examples
- DISPLAY_NAME "SDK examples"
- DESCRIPTION "Select to copy the examples' source code to the documentation folder (recommended)."
-)
-
-if(BUNDLE_TOOLCHAIN)
- cpack_add_component(
- toolchain
- DISPLAY_NAME "GCC MIPS toolchain"
- DESCRIPTION "Do not skip unless you already have a toolchain that targets ${PSN00BSDK_TARGET} installed."
- )
-endif()
-if(BUNDLE_NINJA)
- cpack_add_component(
- ninja
- DISPLAY_NAME "Ninja ${_ninja_version}"
- DESCRIPTION "Skip this if you have Ninja installed already. Note that Ninja will be installed in the same directory as PSn00bSDK."
- )
-endif()
-if(BUNDLE_CMAKE)
- cpack_add_component(
- cmake
- DISPLAY_NAME "CMake ${CMAKE_VERSION}"
- DESCRIPTION "Select this if you do not have CMake installed already. Note that CMake will be installed in the same directory as PSn00bSDK."
- DISABLED
- )
-endif()