mirror of
https://github.com/GerbilSoft/rom-properties.git
synced 2025-06-18 11:35:38 -04:00

Needed for Ubuntu 16.04.
This *might* be related to commit af0e29f7eb
.
(CMakeLists.txt: Use C++20 if it's available.)
493 lines
16 KiB
CMake
493 lines
16 KiB
CMake
# ROM Properties Page Shell Extension
|
|
CMAKE_MINIMUM_REQUIRED(VERSION 3.5)
|
|
|
|
# CMP0048: Set VERSION variables based on the project version specified in PROJECT().
|
|
# Introduced in CMake 3.0.
|
|
IF(POLICY CMP0048)
|
|
CMAKE_POLICY(SET CMP0048 NEW)
|
|
ENDIF(POLICY CMP0048)
|
|
|
|
# CMP0063: Honor visibility properties for all target types,
|
|
# including static libraries and executables.
|
|
# Introduced in CMake 3.3.
|
|
IF(POLICY CMP0063)
|
|
CMAKE_POLICY(SET CMP0063 NEW)
|
|
ENDIF(POLICY CMP0063)
|
|
|
|
# CMP0151: Use -isystem for AUTOMOC include directories.
|
|
# clang complains about `using namespace` statements in the
|
|
# generated moc_*.cpp files:
|
|
# In file included from src/kde/kf5/kfilemetadata_rom-properties-kf5_autogen/mocs_compilation.cpp:2:
|
|
# src/kde/kf5/kfilemetadata_rom-properties-kf5_autogen/BKZOEHIFDQ/moc_ExtractorPluginKF5.cpp:1082:17:
|
|
# warning: using namespace directive in global context in header [-Wheader-hygiene]
|
|
# 1082 | using namespace RomPropertiesKF5;
|
|
# | ^
|
|
# Introduced in CMake 3.27.
|
|
IF(POLICY CMP0151)
|
|
CMAKE_POLICY(SET CMP0151 NEW)
|
|
ENDIF(POLICY CMP0151)
|
|
|
|
# Read the project version.
|
|
CONFIGURE_FILE(version.txt version.txt.tmp)
|
|
FILE(STRINGS version.txt RP_VERSION_FILE)
|
|
IF(NOT RP_VERSION_FILE)
|
|
MESSAGE(FATAL_ERROR "version.txt not found; cannot determine project version.")
|
|
ENDIF(NOT RP_VERSION_FILE)
|
|
LIST(GET RP_VERSION_FILE 0 RP_VERSION)
|
|
UNSET(RP_VERSION_FILE)
|
|
PROJECT(rom-properties VERSION ${RP_VERSION})
|
|
IF(PROJECT_VERSION_TWEAK)
|
|
SET(PROJECT_VERSION_DEVEL_PLUS "+")
|
|
ENDIF(PROJECT_VERSION_TWEAK)
|
|
SET(RP_DISPLAY_VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}${PROJECT_VERSION_DEVEL_PLUS}")
|
|
|
|
# CMAKE_PROJECT_VERSION was introduced in 3.12.
|
|
IF(NOT CMAKE_PROJECT_VERSION OR NOT CMAKE_PROJECT_VERSION_MAJOR)
|
|
SET(CMAKE_PROJECT_VERSION ${PROJECT_VERSION})
|
|
SET(CMAKE_PROJECT_VERSION_MAJOR ${PROJECT_VERSION_MAJOR})
|
|
SET(CMAKE_PROJECT_VERSION_MINOR ${PROJECT_VERSION_MINOR})
|
|
SET(CMAKE_PROJECT_VERSION_PATCH ${PROJECT_VERSION_PATCH})
|
|
SET(CMAKE_PROJECT_VERSION_TWEAK ${PROJECT_VERSION_TWEAK})
|
|
ENDIF(NOT CMAKE_PROJECT_VERSION OR NOT CMAKE_PROJECT_VERSION_MAJOR)
|
|
|
|
LIST(APPEND CMAKE_MODULE_PATH
|
|
"${CMAKE_SOURCE_DIR}/cmake/macros"
|
|
"${CMAKE_SOURCE_DIR}/cmake/libs"
|
|
)
|
|
IF(UNIX AND NOT APPLE)
|
|
LIST(APPEND CMAKE_MODULE_PATH
|
|
"${CMAKE_SOURCE_DIR}/cmake/macros/GCR_CMake"
|
|
)
|
|
ENDIF(UNIX AND NOT APPLE)
|
|
|
|
# Put all the binaries and libraries into a single directory.
|
|
# NOTE: CACHE INTERNAL is required in order to get this to work
|
|
# for KF5 for some reason. (and maybe that's why KDE4 did this
|
|
# layout by default?)
|
|
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin" CACHE INTERNAL "Put all binaries in a single directory.")
|
|
SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib" CACHE INTERNAL "Put all libraries in a single directory.")
|
|
SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib" CACHE INTERNAL "Put all archives in a single directory.")
|
|
|
|
# Don't re-link executables if a shared library's implementation has
|
|
# changed but its headers haven't changed.
|
|
SET(CMAKE_LINK_DEPENDS_NO_SHARED ON)
|
|
|
|
# Enable testing.
|
|
# TODO: INCLUDE(CTest) for more advanced testing after
|
|
# enough tests are added.
|
|
ENABLE_TESTING()
|
|
|
|
# Set the standards versions. (Minimum C11, C++14)
|
|
# C17 was added in CMake 3.21; for older versions, use C11.
|
|
# C++17 was added in CMake 3.8; for older versions, use C++14.
|
|
# C++20 was added in CMake 3.12; for older versions, use C++17.
|
|
# - C++20 is needed for std::span<>.
|
|
# NOTE: These aren't set as hard requirements, though if the compiler
|
|
# doesn't support them, code will either be less optimal or will fail
|
|
# to compile.
|
|
SET(CMAKE_C_STANDARD_REQUIRED OFF)
|
|
SET(CMAKE_C_EXTENSIONS ON)
|
|
SET(CMAKE_CXX_STANDARD_REQUIRED OFF)
|
|
SET(CMAKE_CXX_EXTENSIONS ON)
|
|
IF(CMAKE_VERSION VERSION_GREATER 3.20) # >= 3.21
|
|
SET(CMAKE_C_STANDARD 17)
|
|
SET(CMAKE_CXX_STANDARD 20)
|
|
ELSEIF(CMAKE_VERSION VERSION_GREATER 3.11) # >= 3.12
|
|
SET(CMAKE_C_STANDARD 11)
|
|
SET(CMAKE_CXX_STANDARD 20)
|
|
ELSEIF(CMAKE_VERSION VERSION_GREATER 3.7) # >= 3.8
|
|
SET(CMAKE_C_STANDARD 11)
|
|
SET(CMAKE_CXX_STANDARD 17)
|
|
ELSE()
|
|
# FIXME: CMake 3.5 on Ubuntu 16.04 doesn't seem to detect the
|
|
# compiler standards properly, even though this was added in
|
|
# CMake 3.1...
|
|
#SET(CMAKE_C_STANDARD 11)
|
|
#SET(CMAKE_CXX_STANDARD 14)
|
|
IF(CMAKE_COMPILER_IS_GNUCC)
|
|
# NOTE: unice68 has C_STANDARD 99, which *does* work, and overrides this.
|
|
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu11")
|
|
ENDIF(CMAKE_COMPILER_IS_GNUCC)
|
|
IF(CMAKE_COMPILER_IS_GNUCXX)
|
|
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++14")
|
|
ENDIF(CMAKE_COMPILER_IS_GNUCXX)
|
|
ENDIF()
|
|
IF(MSVC AND CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION VERSION_LESS 10.0.18362.0)
|
|
# Windows SDK prior to 10.0.18362.0 has issues when compiling as either C11 or C17.
|
|
# C:\Program Files (x86)\Windows Kits\8.1\Include\um\winbase.h(8816,5): warning C5105: macro expansion producing 'defined' has undefined behavior
|
|
# C:\Program Files (x86)\Windows Kits\8.1\Include\um\oaidl.h(473,17): warning C5103: pasting '/' and '/' does not result in a valid preprocessing token
|
|
# C:\Program Files (x86)\Windows Kits\8.1\Include\shared\wtypes.h(742,1): message : in expansion of macro '_VARIANT_BOOL'
|
|
# C:\Program Files (x86)\Windows Kits\8.1\Include\um\oaidl.h(473,17): error C2059: syntax error: '/'
|
|
# Reference: https://github.com/microsoft/vcpkg/issues/15035
|
|
SET(CMAKE_C_STANDARD 99)
|
|
ENDIF(MSVC AND CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION VERSION_LESS 10.0.18362.0)
|
|
|
|
# Set default build options.
|
|
INCLUDE(cmake/options.cmake)
|
|
# Check for platform-specific functionality.
|
|
INCLUDE(cmake/platform.cmake NO_POLICY_SCOPE)
|
|
|
|
# Program information.
|
|
SET(DESCRIPTION "ROM Properties Page shell extension")
|
|
SET(PACKAGE_NAME "rom-properties")
|
|
SET(AUTHOR "David Korth")
|
|
IF(CMAKE_PROJECT_VERSION_PATCH)
|
|
SET(VERSION_STRING "${CMAKE_PROJECT_VERSION_MAJOR}.${CMAKE_PROJECT_VERSION_MINOR}.${CMAKE_PROJECT_VERSION_PATCH}")
|
|
ELSE(CMAKE_PROJECT_VERSION_PATCH)
|
|
SET(VERSION_STRING "${CMAKE_PROJECT_VERSION_MAJOR}.${CMAKE_PROJECT_VERSION_MINOR}")
|
|
ENDIF(CMAKE_PROJECT_VERSION_PATCH)
|
|
IF(CMAKE_PROJECT_VERSION_TWEAK)
|
|
SET(VERSION_STRING "${VERSION_STRING}+")
|
|
ENDIF(CMAKE_PROJECT_VERSION_TWEAK)
|
|
SET(VERSION_STRING_WIN32 "${CMAKE_PROJECT_VERSION_MAJOR},${CMAKE_PROJECT_VERSION_MINOR},${CMAKE_PROJECT_VERSION_PATCH},${CMAKE_PROJECT_VERSION_TWEAK}")
|
|
|
|
# Split Debug function.
|
|
# Also sets the image version for Windows builds.
|
|
# TODO: Move to SplitDebugInformation.cmake?
|
|
FUNCTION(DO_SPLIT_DEBUG _target)
|
|
GET_TARGET_PROPERTY(_target_type ${_target} TYPE)
|
|
IF(TARGET ${_target} AND NOT _target_type STREQUAL "STATIC_LIBRARY")
|
|
# Split debug information.
|
|
INCLUDE(SetMSVCDebugPath)
|
|
SET_MSVC_DEBUG_PATH(${_target})
|
|
IF(SPLIT_DEBUG)
|
|
INCLUDE(SplitDebugInformation)
|
|
SPLIT_DEBUG_INFORMATION(${_target})
|
|
ENDIF(SPLIT_DEBUG)
|
|
IF(WIN32)
|
|
# Set image version.
|
|
# Subprojects can override ${PROJECT_VERSION_MAJOR} and ${PROJECT_VERSION_MINOR}.
|
|
# FIXME: If minor version is e.g. "3", Windows interprets it as "03",
|
|
# so "1.3" will actually be "1.03".
|
|
INCLUDE(Win32ImageVersionLinkerFlags)
|
|
IF(PROJECT_VERSION_MAJOR AND PROJECT_VERSION_MINOR)
|
|
WIN32_IMAGE_VERSION_LINKER_FLAGS("${PROJECT_VERSION_MAJOR}" "${PROJECT_VERSION_MINOR}")
|
|
ELSE()
|
|
WIN32_IMAGE_VERSION_LINKER_FLAGS("${CMAKE_PROJECT_VERSION_MAJOR}" "${CMAKE_PROJECT_VERSION_MINOR}")
|
|
ENDIF()
|
|
ENDIF(WIN32)
|
|
ENDIF(TARGET ${_target} AND NOT _target_type STREQUAL "STATIC_LIBRARY")
|
|
ENDFUNCTION(DO_SPLIT_DEBUG)
|
|
|
|
# Git version information.
|
|
FIND_PROGRAM(POSIX_SH sh)
|
|
IF(POSIX_SH)
|
|
# sh is available.
|
|
# Run the git version script.
|
|
IF(WIN32)
|
|
SET(ENV{SHELLOPTS} igncr)
|
|
ENDIF(WIN32)
|
|
ADD_CUSTOM_TARGET(git_version ALL
|
|
${POSIX_SH} "${CMAKE_SOURCE_DIR}/git_version.sh"
|
|
-s "${CMAKE_SOURCE_DIR}"
|
|
-o "${CMAKE_BINARY_DIR}/git_version.h"
|
|
VERBATIM
|
|
)
|
|
ELSE(POSIX_SH)
|
|
# sh isn't available.
|
|
# Create a blank git_version.h.
|
|
FILE(WRITE "${CMAKE_BINARY_DIR}/git_version.h"
|
|
"/* dummy file; POSIX sh is not available */\n")
|
|
# Dummy target for dependencies.
|
|
ADD_CUSTOM_TARGET(git_version)
|
|
ENDIF(POSIX_SH)
|
|
|
|
# Make sure the file is deleted on `make clean`.
|
|
SET_PROPERTY(DIRECTORY APPEND
|
|
PROPERTY ADDITIONAL_MAKE_CLEAN_FILES "${CMAKE_BINARY_DIR}/git_version.h")
|
|
|
|
# Check for required libraries.
|
|
INCLUDE(CheckZLIB)
|
|
INCLUDE(CheckPNG)
|
|
INCLUDE(CheckJPEG)
|
|
INCLUDE(CheckTinyXML2)
|
|
INCLUDE(CheckZSTD)
|
|
INCLUDE(CheckLZ4)
|
|
INCLUDE(CheckLZO)
|
|
INCLUDE(CheckLibfmt)
|
|
|
|
# Reference: https://cmake.org/Wiki/RecipeAddUninstallTarget
|
|
########### Add uninstall target ###############
|
|
CONFIGURE_FILE(
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in"
|
|
"${CMAKE_CURRENT_BINARY_DIR}/cmake/cmake_uninstall.cmake"
|
|
IMMEDIATE @ONLY)
|
|
ADD_CUSTOM_TARGET(uninstall
|
|
"${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake/cmake_uninstall.cmake")
|
|
|
|
### Subdirectories. ###
|
|
|
|
IF(ENABLE_NLS)
|
|
ADD_SUBDIRECTORY(locale)
|
|
ENDIF(ENABLE_NLS)
|
|
|
|
# Project subdirectories
|
|
ADD_SUBDIRECTORY(extlib)
|
|
ADD_SUBDIRECTORY(src)
|
|
ADD_SUBDIRECTORY(xdg)
|
|
IF(INSTALL_DOC)
|
|
ADD_SUBDIRECTORY(doc)
|
|
ENDIF(INSTALL_DOC)
|
|
|
|
### Build summary ###
|
|
|
|
UNSET(UI_FRONTENDS)
|
|
IF(BUILD_KDE4)
|
|
SET(UI_FRONTENDS "${UI_FRONTENDS} KDE4")
|
|
ENDIF(BUILD_KDE4)
|
|
IF(BUILD_KF5)
|
|
SET(UI_FRONTENDS "${UI_FRONTENDS} KF5")
|
|
ENDIF(BUILD_KF5)
|
|
IF(BUILD_KF6)
|
|
SET(UI_FRONTENDS "${UI_FRONTENDS} KF6")
|
|
ENDIF(BUILD_KF6)
|
|
IF(BUILD_XFCE)
|
|
# NOTE: The GTK+ 2.x plugin is XFCE only right now.
|
|
SET(UI_FRONTENDS "${UI_FRONTENDS} XFCE")
|
|
ENDIF(BUILD_XFCE)
|
|
IF(BUILD_GTK3)
|
|
SET(UI_FRONTENDS "${UI_FRONTENDS} GTK3")
|
|
ENDIF(BUILD_GTK3)
|
|
IF(BUILD_GTK4)
|
|
SET(UI_FRONTENDS "${UI_FRONTENDS} GTK4")
|
|
ENDIF(BUILD_GTK4)
|
|
IF(BUILD_WIN32)
|
|
SET(UI_FRONTENDS "${UI_FRONTENDS} Win32")
|
|
ENDIF(BUILD_WIN32)
|
|
STRING(STRIP "${UI_FRONTENDS}" UI_FRONTENDS)
|
|
|
|
IF(BUILD_CLI)
|
|
SET(CLI_BUILD_MSG "Yes")
|
|
ELSE(BUILD_CLI)
|
|
SET(CLI_BUILD_MSG "No")
|
|
ENDIF(BUILD_CLI)
|
|
|
|
IF(RP_LIBROMDATA_IS_DLL)
|
|
IF(WIN32)
|
|
SET(LIBROMDATA_LIB_TYPE "shared library (.dll)")
|
|
ELSE(WIN32)
|
|
SET(LIBROMDATA_LIB_TYPE "shared library (.so)")
|
|
ENDIF(WIN32)
|
|
ELSE(RP_LIBROMDATA_IS_DLL)
|
|
SET(LIBROMDATA_LIB_TYPE "static library")
|
|
ENDIF(RP_LIBROMDATA_IS_DLL)
|
|
|
|
IF(NOT SECURITY_MECHANISM)
|
|
SET(SECURITY_MECHANISM "None")
|
|
ENDIF(NOT SECURITY_MECHANISM)
|
|
|
|
IF(ENABLE_DECRYPTION)
|
|
SET(ENABLE_DECRYPTION_MSG "Enabled")
|
|
ELSE(ENABLE_DECRYPTION)
|
|
SET(ENABLE_DECRYPTION_MSG "Disabled")
|
|
ENDIF(ENABLE_DECRYPTION)
|
|
|
|
IF(HAVE_PNG)
|
|
IF(USE_INTERNAL_PNG)
|
|
SET(HAVE_PNG_APNG_MSG "Yes (bundled)")
|
|
ELSE(USE_INTERNAL_PNG)
|
|
IF(HAVE_PNG_APNG)
|
|
SET(HAVE_PNG_APNG_MSG "Yes (system)")
|
|
ELSE(HAVE_PNG_APNG)
|
|
SET(HAVE_PNG_APNG_MSG "No (system)")
|
|
ENDIF(HAVE_PNG_APNG)
|
|
ENDIF(USE_INTERNAL_PNG)
|
|
ELSE(HAVE_PNG)
|
|
SET(HAVE_PNG_APNG_MSG "No (library not found?)")
|
|
ENDIF(HAVE_PNG)
|
|
|
|
IF(ENABLE_XML)
|
|
IF(USE_INTERNAL_XML)
|
|
SET(ENABLE_XML_MSG "Enabled (bundled)")
|
|
ELSE(USE_INTERNAL_XML)
|
|
SET(ENABLE_XML_MSG "Enabled (system)")
|
|
ENDIF(USE_INTERNAL_XML)
|
|
ELSE(ENABLE_XML)
|
|
SET(ENABLE_XML_MSG "Disabled")
|
|
ENDIF(ENABLE_XML)
|
|
|
|
IF(ENABLE_PVRTC)
|
|
SET(ENABLE_PVRTC_MSG "Enabled")
|
|
ELSE(ENABLE_PVRTC)
|
|
SET(ENABLE_PVRTC_MSG "Disabled")
|
|
ENDIF(ENABLE_PVRTC)
|
|
|
|
IF(ENABLE_ZSTD)
|
|
IF(USE_INTERNAL_ZSTD)
|
|
SET(ENABLE_ZSTD_MSG "Enabled (bundled)")
|
|
ELSE(USE_INTERNAL_ZSTD)
|
|
SET(ENABLE_ZSTD_MSG "Enabled (system)")
|
|
ENDIF(USE_INTERNAL_ZSTD)
|
|
ELSE(ENABLE_ZSTD)
|
|
SET(ENABLE_ZSTD_MSG "Disabled")
|
|
ENDIF(ENABLE_ZSTD)
|
|
|
|
IF(ENABLE_LZ4)
|
|
IF(USE_INTERNAL_LZ4)
|
|
SET(ENABLE_LZ4_MSG "Enabled (bundled)")
|
|
ELSE(USE_INTERNAL_LZ4)
|
|
SET(ENABLE_LZ4_MSG "Enabled (system)")
|
|
ENDIF(USE_INTERNAL_LZ4)
|
|
ELSE(ENABLE_LZ4)
|
|
SET(ENABLE_LZ4_MSG "Disabled")
|
|
ENDIF(ENABLE_LZ4)
|
|
|
|
IF(ENABLE_LZO)
|
|
IF(USE_INTERNAL_LZO)
|
|
SET(ENABLE_LZO_MSG "Enabled (bundled MiniLZO)")
|
|
ELSE(USE_INTERNAL_LZO)
|
|
SET(ENABLE_LZO_MSG "Enabled (system)")
|
|
ENDIF(USE_INTERNAL_LZO)
|
|
ELSE(ENABLE_LZO)
|
|
SET(ENABLE_LZO_MSG "Disabled")
|
|
ENDIF(ENABLE_LZO)
|
|
|
|
|
|
UNSET(EXTLIB_BUILD)
|
|
IF(USE_INTERNAL_ZLIB)
|
|
SET(EXTLIB_BUILD "${EXTLIB_BUILD}- zlib-ng\n")
|
|
ENDIF(USE_INTERNAL_ZLIB)
|
|
IF(USE_INTERNAL_PNG)
|
|
SET(EXTLIB_BUILD "${EXTLIB_BUILD}- libpng\n")
|
|
ENDIF(USE_INTERNAL_PNG)
|
|
IF(USE_INTERNAL_JPEG)
|
|
SET(EXTLIB_BUILD "${EXTLIB_BUILD}- libjpeg-turbo\n")
|
|
ENDIF(USE_INTERNAL_JPEG)
|
|
IF(USE_INTERNAL_ZSTD)
|
|
SET(EXTLIB_BUILD "${EXTLIB_BUILD}- zstd\n")
|
|
ENDIF(USE_INTERNAL_ZSTD)
|
|
IF(USE_INTERNAL_LZ4)
|
|
SET(EXTLIB_BUILD "${EXTLIB_BUILD}- lz4\n")
|
|
ENDIF(USE_INTERNAL_LZ4)
|
|
IF(USE_INTERNAL_LZO)
|
|
SET(EXTLIB_BUILD "${EXTLIB_BUILD}- MiniLZO\n")
|
|
ENDIF(USE_INTERNAL_LZO)
|
|
SET(EXTLIB_BUILD "${EXTLIB_BUILD}- minizip-ng\n")
|
|
SET(EXTLIB_BUILD "${EXTLIB_BUILD}- inih\n")
|
|
IF(USE_INTERNAL_XML)
|
|
SET(EXTLIB_BUILD "${EXTLIB_BUILD}- TinyXML2\n")
|
|
ENDIF(USE_INTERNAL_XML)
|
|
IF(BUILD_TESTING)
|
|
SET(EXTLIB_BUILD "${EXTLIB_BUILD}- Google Test\n")
|
|
ENDIF(BUILD_TESTING)
|
|
IF(USE_INTERNAL_FMT)
|
|
SET(EXTLIB_BUILD "${EXTLIB_BUILD}- fmt\n")
|
|
ENDIF(USE_INTERNAL_FMT)
|
|
|
|
IF(BUILD_TRACKER_EXTRACTOR)
|
|
SET(TRACKER_API_DISPLAY "${TRACKER_INSTALL_API_VERSION}")
|
|
ELSE(BUILD_TRACKER_EXTRACTOR)
|
|
SET(TRACKER_API_DISPLAY "(none)")
|
|
ENDIF(BUILD_TRACKER_EXTRACTOR)
|
|
|
|
INCLUDE(DirInstallPaths)
|
|
MESSAGE(STATUS "
|
|
|
|
*** ROM Properties Page Shell Extension v${RP_DISPLAY_VERSION} ***
|
|
|
|
Build Summary:
|
|
- Target CPU architecture: ${TARGET_CPU_ARCH}
|
|
- Building these UI frontends: ${UI_FRONTENDS}
|
|
- Building command-line frontend: ${CLI_BUILD_MSG}
|
|
- GNOME Tracker API version: ${TRACKER_API_DISPLAY}
|
|
- libromdata is built as: ${LIBROMDATA_LIB_TYPE}
|
|
- Security mechanism: ${SECURITY_MECHANISM}
|
|
- Decryption functionality: ${ENABLE_DECRYPTION_MSG}
|
|
- APNG support: ${HAVE_PNG_APNG_MSG}
|
|
- XML parsing: ${ENABLE_XML_MSG}
|
|
- PVRTC decoder: ${ENABLE_PVRTC_MSG}
|
|
- ZSTD decompression: ${ENABLE_ZSTD_MSG}
|
|
- LZ4 decompression: ${ENABLE_LZ4_MSG}
|
|
- LZO decompression: ${ENABLE_LZO_MSG}
|
|
|
|
Building these third-party libraries from extlib:
|
|
${EXTLIB_BUILD}")
|
|
|
|
IF(NOT UI_FRONTENDS)
|
|
MESSAGE(WARNING "*** No UI frontends are being compiled. ***")
|
|
IF(NOT BUILD_CLI)
|
|
MESSAGE(FATAL_ERROR "*** CLI frontend is not being compiled, either. ***")
|
|
ENDIF(NOT BUILD_CLI)
|
|
ENDIF(NOT UI_FRONTENDS)
|
|
|
|
# TODO: Print build summary indicating what plugins will be built.
|
|
# (Some other project had something like this...)
|
|
# TODO: Fail if no plugins are being built.
|
|
|
|
### CPack ###
|
|
|
|
# CPack settings.
|
|
SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "${DESCRIPTION}")
|
|
SET(CPACK_PACKAGE_NAME "${PACKAGE_NAME}")
|
|
SET(CPACK_PACKAGE_VENDOR "${AUTHOR}")
|
|
SET(CPACK_PACKAGE_CONTACT "David Korth <gerbilsoft@gerbilsoft.com>")
|
|
SET(CPACK_PACKAGE_VERSION_MAJOR ${CMAKE_PROJECT_VERSION_MAJOR})
|
|
SET(CPACK_PACKAGE_VERSION_MINOR ${CMAKE_PROJECT_VERSION_MINOR})
|
|
SET(CPACK_PACKAGE_VERSION_PATCH ${CMAKE_PROJECT_VERSION_PATCH})
|
|
SET(CPACK_PACKAGE_VERSION_TWEAK ${CMAKE_PROJECT_VERSION_TWEAK})
|
|
SET(CPACK_PACKAGE_VERSION ${VERSION_STRING})
|
|
|
|
# TODO: DESCRIPTION and WELCOME files.
|
|
#SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_SOURCE_DIR}/doc/DESCRIPTION.txt")
|
|
SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/LICENSE")
|
|
SET(CPACK_RESOURCE_FILE_README "${CMAKE_SOURCE_DIR}/README.md")
|
|
#SET(CPACK_RESOURCE_FILE_WELCOME "${CMAKE_SOURCE_DIR}/doc/WELCOME.txt")
|
|
|
|
IF(INSTALL_DOC)
|
|
# Additional document files for the root directory.
|
|
# TODO: Convert from Unix line endings to Windows when
|
|
# compiling for Windows?
|
|
INCLUDE(DirInstallPaths)
|
|
INSTALL(FILES NETWORK.md
|
|
DESTINATION "${DIR_INSTALL_DOC_ROOT}"
|
|
COMPONENT "doc")
|
|
ENDIF(INSTALL_DOC)
|
|
|
|
# CPack: Source package settings.
|
|
# NOTE: Double-escape is required because the unescaped
|
|
# string # is written to CPackSourceConfig.cmake, which
|
|
# is then unescaped.
|
|
SET(CPACK_SOURCE_GENERATOR "TGZ")
|
|
SET(CPACK_SOURCE_IGNORE_FILES
|
|
"build.*/"
|
|
"build.*\\\\.sh"
|
|
"\\\\.git/"
|
|
"\\\\.gitignore"
|
|
"*\\\\.kate-swp"
|
|
)
|
|
|
|
IF(CMAKE_SYSTEM_PROCESSOR MATCHES "^(i.|x)86\$")
|
|
SET(CPACK_PACKAGE_SYSTEM_PROCESSOR "i386")
|
|
ELSEIF(CMAKE_SYSTEM_PROCESSOR MATCHES "^x86_64\$")
|
|
SET(CPACK_PACKAGE_SYSTEM_PROCESSOR "amd64")
|
|
ELSE()
|
|
SET(CPACK_PACKAGE_SYSTEM_PROCESSOR ${CMAKE_SYSTEM_PROCESSOR})
|
|
ENDIF()
|
|
|
|
IF(APPLE)
|
|
# TODO: Support for Mac OS X.
|
|
ELSEIF(WIN32)
|
|
IF(MSVC AND CMAKE_CL_64)
|
|
SET(WIN32_PACKAGE_SUFFIX "win64")
|
|
ELSEIF(NOT MSVC AND CMAKE_SIZEOF_VOID_P EQUAL 8)
|
|
SET(WIN32_PACKAGE_SUFFIX "win64")
|
|
ELSE()
|
|
SET(WIN32_PACKAGE_SUFFIX "win32")
|
|
ENDIF()
|
|
|
|
SET(CPACK_GENERATOR "ZIP")
|
|
SET(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}_${CPACK_PACKAGE_VERSION}-${WIN32_PACKAGE_SUFFIX}")
|
|
SET(CPACK_INCLUDE_TOPLEVEL_DIRECTORY 0)
|
|
ENDIF()
|
|
|
|
# Components.
|
|
SET(CPACK_COMPONENTS_ALL dll program debug doc i18n)
|
|
SET(CPACK_COMPONENT_DLL_DISPLAY_NAME "DLLs")
|
|
SET(CPACK_COMPONENT_PROGRAM_DISPLAY_NAME "Programs")
|
|
SET(CPACK_COMPONENT_DEBUG_DISPLAY_NAME "Debugging Symbols")
|
|
SET(CPACK_COMPONENT_DOC_DISPLAY_NAME "Documents")
|
|
SET(CPACK_COMPONENT_I18N_DISPLAY_NAME "Internationalization")
|
|
|
|
# Initialize CPack.
|
|
INCLUDE(CPack)
|