2023-06-02 09:51:56 +02:00
|
|
|
cmake_minimum_required(VERSION 3.23.0)
|
2020-04-30 20:03:14 +02:00
|
|
|
|
2023-08-11 17:00:24 +02:00
|
|
|
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMake" ${CMAKE_MODULE_PATH})
|
|
|
|
include(GetProjectVersion)
|
|
|
|
get_project_version(PROJECT_VERSION)
|
|
|
|
|
2021-12-31 13:32:37 +01:00
|
|
|
project(
|
|
|
|
ScreenPlay
|
2023-08-11 17:00:24 +02:00
|
|
|
VERSION ${PROJECT_VERSION}
|
2021-12-31 13:32:37 +01:00
|
|
|
DESCRIPTION "Modern, Cross Plattform, Live Wallpaper, Widgets and AppDrawer!"
|
|
|
|
HOMEPAGE_URL "https://screen-play.app/"
|
|
|
|
LANGUAGES CXX)
|
2020-10-29 18:19:22 +01:00
|
|
|
|
2022-07-08 12:33:26 +02:00
|
|
|
# Only used for some custom file copy
|
2020-08-10 22:57:57 +02:00
|
|
|
if(WIN32)
|
|
|
|
set(VCPKG_ARCH "x64-windows")
|
2021-06-12 15:17:38 +02:00
|
|
|
elseif(UNIX AND NOT APPLE)
|
2020-08-10 22:57:57 +02:00
|
|
|
set(VCPKG_ARCH "x64-linux")
|
|
|
|
elseif(APPLE)
|
2023-06-02 09:51:56 +02:00
|
|
|
set(VCPKG_ARCH "64-osx-universal") # Our own triplet for universal binaries
|
|
|
|
set(VCPKG_TARGET_ARCHITECTURE "arm64;x86_64")
|
2020-08-10 22:57:57 +02:00
|
|
|
endif()
|
2020-04-30 20:03:14 +02:00
|
|
|
|
|
|
|
# This sets cmake to compile all dlls into the main directory
|
2022-04-23 19:26:55 +02:00
|
|
|
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
|
2020-06-07 13:06:55 +02:00
|
|
|
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
|
2022-04-30 12:07:54 +02:00
|
|
|
set(CMAKE_CXX_STANDARD 20)
|
2023-08-04 11:19:51 +02:00
|
|
|
set(THIRD_PARTY_PATH "${CMAKE_CURRENT_SOURCE_DIR}/ThirdParty")
|
2022-04-30 12:07:54 +02:00
|
|
|
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMake" ${CMAKE_MODULE_PATH})
|
2023-08-04 11:19:51 +02:00
|
|
|
list(APPEND CMAKE_MODULE_PATH "${THIRD_PARTY_PATH}/ecm/modules")
|
|
|
|
list(APPEND CMAKE_MODULE_PATH "${THIRD_PARTY_PATH}/ecm/find-modules")
|
|
|
|
list(APPEND CMAKE_MODULE_PATH "${THIRD_PARTY_PATH}/ecm/kde-modules")
|
|
|
|
message(STATUS "[PROJECT] CMAKE_MODULE_PATH = ${CMAKE_MODULE_PATH}")
|
|
|
|
|
2021-07-16 11:14:21 +02:00
|
|
|
|
2023-02-09 16:35:08 +01:00
|
|
|
option(OSX_BUNDLE "Enable distribution macOS bundle" OFF)
|
2023-06-02 09:51:56 +02:00
|
|
|
set(CMAKE_OSX_DEPLOYMENT_TARGET "13.0")
|
2023-02-09 16:35:08 +01:00
|
|
|
|
2022-11-02 11:37:01 +01:00
|
|
|
# This is needed for OSX: Because we bundle ScreenPlay and ScreenPlayWallpaper into .app they both need other QML dependencies like
|
|
|
|
# ScreenPlayUtil. The fastest way is to use a shared QML module path for development and add this path to the qml engines import pah. For
|
|
|
|
# the SCREENPLAY_DEPLOY we copy them into the matching dirs via the build.py
|
2022-05-12 14:36:18 +02:00
|
|
|
#
|
2022-11-02 11:37:01 +01:00
|
|
|
# This subdirectoy is needed for OSX and Linux to fix linker errors because we would have ScreenPlayApp executable and folder for the qml
|
|
|
|
# files in the same directory.
|
2022-05-12 14:36:18 +02:00
|
|
|
set(SCREENPLAY_QML_MODULES_PATH "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/qml")
|
2023-02-11 11:57:09 +01:00
|
|
|
|
|
|
|
if(APPLE)
|
|
|
|
set(SCREENPLAY_QML_MODULES_PATH "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ScreenPlay.app/Contents/MacOS/qml")
|
|
|
|
endif()
|
|
|
|
|
2022-05-12 14:36:18 +02:00
|
|
|
# Adds the qml import path so QtCreator can find them
|
|
|
|
list(APPEND QML_DIRS "${SCREENPLAY_QML_MODULES_PATH}")
|
2022-11-02 11:37:01 +01:00
|
|
|
set(QML_IMPORT_PATH
|
|
|
|
"${QML_DIRS}"
|
|
|
|
CACHE STRING "Qt Creator extra qml import paths")
|
2022-05-12 14:36:18 +02:00
|
|
|
|
2022-12-16 13:34:15 +01:00
|
|
|
set(VCPKG_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../vcpkg")
|
2020-10-29 19:47:22 +01:00
|
|
|
set(VCPKG_INSTALLED_PATH "${VCPKG_PATH}/installed/${VCPKG_ARCH}")
|
2022-07-09 19:54:54 +02:00
|
|
|
set(VCPKG_BIN_PATH "${VCPKG_INSTALLED_PATH}/bin")
|
2020-04-30 20:03:14 +02:00
|
|
|
|
2021-12-31 13:32:37 +01:00
|
|
|
option(SCREENPLAY_STEAM "For FOSS distribution so we do not bundle proprietary code." ON)
|
2022-11-02 11:37:01 +01:00
|
|
|
option(SCREENPLAY_DEPLOY "Marks this version as an official deploy version. This version uses different import paths and other settings."
|
|
|
|
OFF)
|
2022-04-04 18:06:43 +02:00
|
|
|
option(SCREENPLAY_TESTS "Enables UI tests." ON)
|
|
|
|
option(SCREENPLAY_INSTALLER "Indicates whether an installer via the Qt Installer Framework is created." OFF)
|
2021-08-16 11:00:53 +02:00
|
|
|
|
2022-01-29 12:24:26 +01:00
|
|
|
# Gitlab CI has many ENV variables. We use this one to check if the current build happens inside the CI
|
|
|
|
if(DEFINED ENV{CI_COMMIT_MESSAGE})
|
|
|
|
set(GITLAB_CI true)
|
|
|
|
endif()
|
2022-01-04 10:12:03 +01:00
|
|
|
|
2022-04-30 12:07:54 +02:00
|
|
|
file(MAKE_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
|
2020-06-21 16:07:41 +02:00
|
|
|
|
2022-04-30 12:07:54 +02:00
|
|
|
add_compile_definitions(COMPILE_INFO="Build Date: ${BUILD_DATE}. Git Hash: ${GIT_COMMIT_HASH}. ")
|
|
|
|
add_compile_definitions(SOURCE_DIR="${CMAKE_CURRENT_SOURCE_DIR}")
|
2022-08-14 11:58:41 +02:00
|
|
|
if(${SCREENPLAY_DEPLOY})
|
2022-11-02 11:37:01 +01:00
|
|
|
add_compile_definitions(DEPLOY_VERSION)
|
2022-07-08 12:49:53 +02:00
|
|
|
endif()
|
|
|
|
|
2020-08-10 17:39:42 +02:00
|
|
|
find_package(Git REQUIRED)
|
|
|
|
if(WIN32)
|
2022-07-09 18:24:14 +02:00
|
|
|
set(DATE_COMMAND "CMD")
|
|
|
|
set(DATE_ARG "/c date /t")
|
2023-02-25 11:13:10 +01:00
|
|
|
else()
|
2022-07-09 18:24:14 +02:00
|
|
|
set(DATE_COMMAND "date")
|
|
|
|
set(DATE_ARG "")
|
2020-08-10 17:39:42 +02:00
|
|
|
endif()
|
|
|
|
|
2020-10-29 18:53:52 +01:00
|
|
|
execute_process(
|
2022-07-09 18:24:14 +02:00
|
|
|
COMMAND ${DATE_COMMAND} ${DATE_ARG}
|
2020-10-29 18:53:52 +01:00
|
|
|
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
|
|
|
OUTPUT_VARIABLE BUILD_DATE
|
2023-02-25 11:13:10 +01:00
|
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
2020-08-10 17:39:42 +02:00
|
|
|
|
2020-10-29 18:53:52 +01:00
|
|
|
execute_process(
|
2022-07-09 18:24:14 +02:00
|
|
|
COMMAND "${GIT_EXECUTABLE}" rev-parse --abbrev-ref HEAD
|
|
|
|
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
|
|
|
OUTPUT_VARIABLE GIT_BRANCH_NAME
|
2023-02-25 11:13:10 +01:00
|
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
2022-07-09 18:24:14 +02:00
|
|
|
|
|
|
|
execute_process(
|
|
|
|
COMMAND "${GIT_EXECUTABLE}" rev-parse --short HEAD
|
2020-10-29 18:53:52 +01:00
|
|
|
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
2020-10-29 20:06:13 +01:00
|
|
|
OUTPUT_VARIABLE GIT_COMMIT_HASH
|
2023-02-25 11:13:10 +01:00
|
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
2020-08-10 17:39:42 +02:00
|
|
|
|
2022-07-09 18:24:14 +02:00
|
|
|
add_compile_definitions(BUILD_TYPE="${CMAKE_BUILD_TYPE}")
|
|
|
|
add_compile_definitions(BUILD_DATE="${BUILD_DATE}")
|
|
|
|
add_compile_definitions(GIT_BRANCH_NAME="${GIT_BRANCH_NAME}")
|
|
|
|
add_compile_definitions(GIT_COMMIT_HASH="${GIT_COMMIT_HASH}")
|
2022-05-06 17:23:14 +02:00
|
|
|
|
2023-02-18 12:11:29 +01:00
|
|
|
add_subdirectory(ThirdParty)
|
2023-08-04 15:22:31 +02:00
|
|
|
set(ECM_DIR "${THIRD_PARTY_PATH}/ecm")
|
|
|
|
add_subdirectory(CMake)
|
|
|
|
if(UNIX AND NOT APPLE)
|
|
|
|
# Needs to be append, because we include ecm as third party on linux
|
|
|
|
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMake")
|
|
|
|
list(APPEND CMAKE_MODULE_PATH "${ECM_DIR}")
|
|
|
|
list(APPEND CMAKE_MODULE_PATH "${ECM_DIR}/cmake")
|
|
|
|
else()
|
2023-08-04 11:19:51 +02:00
|
|
|
|
2023-08-04 15:22:31 +02:00
|
|
|
endif()
|
2023-02-18 12:11:29 +01:00
|
|
|
add_subdirectory(Tools)
|
|
|
|
|
2020-03-10 12:16:58 +01:00
|
|
|
add_subdirectory(ScreenPlay)
|
|
|
|
add_subdirectory(ScreenPlaySDK)
|
2020-09-10 11:40:07 +02:00
|
|
|
add_subdirectory(ScreenPlayShader)
|
2020-03-10 12:16:58 +01:00
|
|
|
add_subdirectory(ScreenPlayWallpaper)
|
|
|
|
add_subdirectory(ScreenPlayWidget)
|
2021-01-28 15:19:46 +01:00
|
|
|
add_subdirectory(ScreenPlayUtil)
|
2022-02-20 17:55:26 +01:00
|
|
|
add_subdirectory(ScreenPlayWeather)
|
2020-10-02 21:25:36 +02:00
|
|
|
|
2022-04-30 12:07:54 +02:00
|
|
|
if(${SCREENPLAY_TESTS})
|
|
|
|
enable_testing()
|
|
|
|
endif()
|
|
|
|
|
2022-04-04 18:06:43 +02:00
|
|
|
# Only add target SteamSDKQtEnums
|
|
|
|
add_subdirectory(ScreenPlayWorkshop/SteamSDK)
|
2021-07-16 11:14:21 +02:00
|
|
|
if(${SCREENPLAY_STEAM})
|
2021-07-16 16:44:28 +02:00
|
|
|
add_subdirectory(ScreenPlayWorkshop)
|
2021-07-16 11:14:21 +02:00
|
|
|
endif()
|
2020-10-02 21:25:36 +02:00
|
|
|
|
|
|
|
if(WIN32)
|
2020-10-29 18:53:52 +01:00
|
|
|
add_subdirectory(ScreenPlaySysInfo)
|
2020-10-02 21:25:36 +02:00
|
|
|
endif()
|
2021-03-12 09:19:19 +01:00
|
|
|
|
2023-08-24 16:02:43 +02:00
|
|
|
if(${SCREENPLAY_INSTALLER})
|
|
|
|
if(APPLE)
|
|
|
|
include(${CMAKE_CURRENT_SOURCE_DIR}/CMake/CreateDmgInstaller.cmake)
|
|
|
|
else()
|
|
|
|
include(${CMAKE_CURRENT_SOURCE_DIR}/CMake/CreateIFWInstaller.cmake)
|
|
|
|
endif()
|
2021-12-03 15:30:17 +01:00
|
|
|
endif()
|
2022-01-04 10:12:03 +01:00
|
|
|
|
2023-08-17 14:26:39 +02:00
|
|
|
message(STATUS "[PROJECT] PROJECT_VERSION = ${PROJECT_VERSION}")
|
|
|
|
message(STATUS "[PROJECT] CMAKE_VERSION = ${CMAKE_VERSION}")
|
2022-04-30 12:07:54 +02:00
|
|
|
message(STATUS "[PROJECT] SCREENPLAY_QML_MODULES_PATH = ${SCREENPLAY_QML_MODULES_PATH}")
|
|
|
|
message(STATUS "[PROJECT] CMAKE_TOOLCHAIN_FILE = ${CMAKE_TOOLCHAIN_FILE}")
|
|
|
|
message(STATUS "[PROJECT] VCPKG_PATH = ${VCPKG_PATH}")
|
2023-08-04 11:19:51 +02:00
|
|
|
message(STATUS "[PROJECT] CMAKE_MODULE_PATH = ${CMAKE_MODULE_PATH}")
|
2022-04-30 12:07:54 +02:00
|
|
|
message(STATUS "[PROJECT] VCPKG_TARGET_TRIPLET = ${VCPKG_TARGET_TRIPLET}")
|
|
|
|
message(STATUS "[PROJECT] CMAKE_PREFIX_PATH = ${CMAKE_PREFIX_PATH}")
|
2023-08-17 14:26:39 +02:00
|
|
|
message(STATUS "[OPTION] SCREENPLAY_DEPLOY = ${SCREENPLAY_DEPLOY}")
|
|
|
|
message(STATUS "[OPTION] SCREENPLAY_INSTALLER = ${SCREENPLAY_INSTALLER}")
|
|
|
|
message(STATUS "[OPTION] SCREENPLAY_STEAM = ${SCREENPLAY_STEAM}")
|
|
|
|
message(STATUS "[OPTION] SCREENPLAY_TESTS = ${SCREENPLAY_TESTS}")
|
|
|
|
message(STATUS "[DEFINE] BUILD_TYPE = ${CMAKE_BUILD_TYPE}")
|
|
|
|
message(STATUS "[DEFINE] GIT_COMMIT_HASH = ${GIT_COMMIT_HASH}")
|
|
|
|
message(STATUS "[CPP DEFINE] DEPLOY_VERSION = ${DEPLOY_VERSION}")
|
|
|
|
message(STATUS "[CPP DEFINE] SOURCE_DIR = ${CMAKE_CURRENT_SOURCE_DIR}")
|
|
|
|
message(STATUS "[CPP DEFINE] BUILD_DATE = ${BUILD_DATE}")
|