1
0
mirror of https://gitlab.com/kelteseth/ScreenPlay.git synced 2024-09-18 16:32:33 +02:00
ScreenPlay/ScreenPlayWallpaper/Godot/GDExtention/CMakeLists.txt
Elias Steurer 33c222da5d Change ScreenPlayWallpaperLib to win32 only for now
Format documents
Remove sysinfo from logging for now because
it is windows only
2023-11-01 12:28:35 +01:00

105 lines
3.3 KiB
CMake

# SPDX-License-Identifier: Unlicense
cmake_minimum_required(VERSION 3.22)
message(STATUS "Using CMake ${CMAKE_VERSION}")
# Require out-of-source builds
file(TO_CMAKE_PATH "${PROJECT_BINARY_DIR}/CMakeLists.txt" LOC_PATH)
if(EXISTS "${LOC_PATH}")
message(FATAL_ERROR "You cannot build in the source directory. Please use a build subdirectory.")
endif()
# Add paths to modules
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/")
# Turn on link time optimization for everything
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION_RELEASE ON)
# Output compile commands to compile_commands.json (for debugging CMake issues)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
# Build universal lib on macOS Note that CMAKE_OSX_ARCHITECTURES must be set before project().
if(APPLE)
set(CMAKE_OSX_ARCHITECTURES
"x86_64;arm64"
CACHE STRING "")
endif()
# Main project information
project(ScreenPlayGodotWallpaper LANGUAGES CXX)
# Create our library
add_library(${PROJECT_NAME} SHARED)
target_compile_features(${PROJECT_NAME} PRIVATE cxx_std_17)
# LIB_ARCH is the architecture being built. It is set to the build system's architecture. For macOS, we build a universal library (both
# arm64 and x86_64).
set(LIB_ARCH ${CMAKE_SYSTEM_PROCESSOR})
if(APPLE)
set(LIB_ARCH "universal")
endif()
# LIB_DIR is where the actual library ends up. This is used in both the build directory and the install directory and needs to be consistent
# with the paths in the gdextension file. e.g. linux.release.x86_64 = "lib/Linux-x86_64/libGDExtensionTemplate.so"
set(LIB_DIR "lib/${CMAKE_SYSTEM_NAME}-${LIB_ARCH}")
message(STATUS "Building ${PROJECT_NAME} for ${LIB_ARCH} on ${CMAKE_SYSTEM_NAME}")
# BUILD_OUTPUT_DIR is where we put the resulting library (in the build directory)
set(BUILD_OUTPUT_DIR "${PROJECT_BINARY_DIR}/${PROJECT_NAME}/")
set(OUT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../ScreenPlayGodot/${PROJECT_NAME}/)
# Compile directly into our Godot project
set_target_properties(
${PROJECT_NAME}
PROPERTIES CXX_VISIBILITY_PRESET hidden
VISIBILITY_INLINES_HIDDEN true
RUNTIME_OUTPUT_DIRECTORY "${OUT_PATH}/${LIB_DIR}"
LIBRARY_OUTPUT_DIRECTORY "${OUT_PATH}/${LIB_DIR}")
if(NOT DEFINED CMAKE_DEBUG_POSTFIX)
set_target_properties(${PROJECT_NAME} PROPERTIES DEBUG_POSTFIX "-d")
endif()
# Warnings
include(CompilerWarnings)
# Create and include version info file from git
include(GitVersionInfo)
add_subdirectory(src)
# Install library and extension file in ${CMAKE_INSTALL_PREFIX}/${PROJECT_NAME}
set(INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/${PROJECT_NAME}/")
add_subdirectory(templates)
# ccache Turns on ccache if found
include(ccache)
# Formatting Adds a custom target to format all the code at once
include(ClangFormat)
# godot-cpp From here: https://github.com/godotengine/godot-cpp
if(NOT EXISTS "${CMAKE_CURRENT_LIST_DIR}/extern/godot-cpp/Makefile")
message(
FATAL_ERROR
"[${PROJECT_NAME}] The godot-cpp submodule was not downloaded. Please update submodules: git submodule update --init --recursive."
)
endif()
set(GODOT_CPP_SYSTEM_HEADERS
ON
CACHE BOOL "" FORCE)
add_subdirectory(extern/godot-cpp)
set_target_properties(godot-cpp PROPERTIES CXX_VISIBILITY_PRESET hidden # visibility needs to be the same as the main library
)
target_link_libraries(${PROJECT_NAME} PRIVATE godot-cpp ScreenPlayWallpaperLib)