qskinny/CMakeLists.txt

173 lines
4.7 KiB
CMake
Raw Normal View History

2023-04-05 17:47:15 +02:00
############################################################################
2024-01-17 14:31:45 +01:00
# QSkinny - Copyright (C) The authors
2023-04-06 09:23:37 +02:00
# SPDX-License-Identifier: BSD-3-Clause
2023-04-05 17:47:15 +02:00
############################################################################
cmake_minimum_required(VERSION 3.16.3)
macro(qsk_setup_options)
2024-01-11 17:46:28 +01:00
option(BUILD_PEDANTIC "Enable pedantic compile flags ( only GNU/CLANG )" OFF)
option(BUILD_QSKDLL "Build libs ( not plugins ) as shared library" ON)
option(BUILD_QML_EXPORT "Exporting QSkinny to QML" ON)
2023-04-05 17:47:15 +02:00
2024-01-11 17:46:28 +01:00
option(BUILD_TOOLS "Build qskinny tools" ON)
2023-04-05 17:47:15 +02:00
option(BUILD_INPUTCONTEXT "Build virtual keyboard support" ON)
2024-01-11 17:46:28 +01:00
option(BUILD_EXAMPLES "Build qskinny examples" ON)
option(BUILD_PLAYGROUND "Build qskinny playground" ON)
2023-04-05 17:47:15 +02:00
# we actually want to use cmake_dependent_option - minimum cmake version ??
option( BUILD_SVG2QVG_STANDALONE "Build svg2qvg without qskinny library dependency" ON )
if( NOT BUILD_TOOLS )
set( BUILD_SVG2QVG_STANDALONE OFF )
endif()
if( NOT BUILD_INPUTCONTEXT )
set( ENABLE_PINYIN OFF )
set( ENABLE_HUNSPELL OFF )
endif()
option(ENABLE_ENSURE_SKINS "Examples add skins manually, when not finding plugins" ON)
endmacro()
macro(qsk_setup_build)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC OFF)
set(CMAKE_GLOBAL_AUTOGEN_TARGET OFF)
set(AUTOGEN_BUILD_DIR "${CMAKE_CURRENT_BINARY_DIR}/autogen")
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
qsk_initialize_build_flags()
if ( BUILD_PEDANTIC )
message( STATUS "Setting pedantic compiler flags" )
qsk_enable_pedantic_flags()
endif()
# Loading individual settings from a file that is
# propagated by the environmant variable QSK_LOCAL_CMAKE_RULES
# This is a leftover from the previous qmake build environment.
# Let's if we can do this using cmake standard mechanisms TODO ...
qsk_load_optional_build_flags()
# Finalizing after processing QSK_LOCAL_CMAKE_RULES
qsk_finalize_build_flags()
endmacro()
macro(qsk_setup_install)
# package vars
set(PACKAGE_NAME ${PROJECT_NAME})
set(PACKAGE_VERSION ${CMAKE_PROJECT_VERSION})
2024-01-11 17:46:28 +01:00
set(PACKAGE_NAMESPACE Qsk::)
set(PACKAGE_LOCATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME})
# install paths for headers and libraries
string(TOLOWER "${PROJECT_NAME}" PACKAGE_DIR)
set(QSK_INSTALL_HEADERS ${CMAKE_INSTALL_INCLUDEDIR}/${PACKAGE_DIR})
set(QSK_INSTALL_LIBS ${CMAKE_INSTALL_LIBDIR}/${PACKAGE_DIR})
2023-04-05 17:47:15 +02:00
endmacro()
############################################################################
# QSkinny
############################################################################
project(QSkinny
LANGUAGES C CXX
HOMEPAGE_URL "https://github.com/uwerat/qskinny"
VERSION 0.8.0)
2023-12-04 18:52:41 +01:00
set(QSK_SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR})
set(QSK_CMAKE_DIR ${QSK_SOURCE_DIR}/cmake)
2023-12-04 18:52:41 +01:00
2023-04-05 17:47:15 +02:00
qsk_setup_options()
include(GNUInstallDirs)
# loading helper macros
2024-01-10 00:33:35 +01:00
list(APPEND CMAKE_MODULE_PATH ${QSK_CMAKE_DIR})
2023-04-05 17:47:15 +02:00
include("QskConfigMacros")
include("QskFindMacros")
include("QskBuildFunctions")
qsk_setup_Qt()
qsk_setup_build()
qsk_setup_install()
add_subdirectory(src)
2024-01-18 09:07:02 +01:00
add_subdirectory(designsystems)
2023-04-05 17:47:15 +02:00
include(CMakePackageConfigHelpers)
# write QSkinnyConfigVersion.cmake file for cmake import
write_basic_package_version_file(
2024-01-10 00:33:35 +01:00
${CMAKE_CURRENT_BINARY_DIR}/${PACKAGE_NAME}ConfigVersion.cmake
VERSION ${PACKAGE_VERSION}
COMPATIBILITY AnyNewerVersion)
# Copy QSkinnyConfig.cmake to build dir
configure_file(${QSK_CMAKE_DIR}/${PACKAGE_NAME}Config.cmake
2024-01-10 00:33:35 +01:00
${CMAKE_CURRENT_BINARY_DIR}/${PACKAGE_NAME}Config.cmake
COPYONLY)
# install QSkinnyConfig.cmake and QSkinnyConfigVersion.cmake
2024-01-10 00:33:35 +01:00
# file to lib/cmake/QSkinny directory
install(
FILES
2024-01-10 00:33:35 +01:00
${CMAKE_CURRENT_BINARY_DIR}/${PACKAGE_NAME}Config.cmake
${CMAKE_CURRENT_BINARY_DIR}/${PACKAGE_NAME}ConfigVersion.cmake
DESTINATION
${PACKAGE_LOCATION}
COMPONENT
Devel)
# install cmake helper scripts
install(
FILES
${QSK_CMAKE_DIR}/scripts/QSkinnySvg2Qvg.lin.sh
${QSK_CMAKE_DIR}/scripts/QSkinnySvg2Qvg.mac.sh
${QSK_CMAKE_DIR}/scripts/QSkinnySvg2Qvg.win.bat
DESTINATION
${PACKAGE_LOCATION}/scripts
PERMISSIONS
2024-01-22 13:33:10 +01:00
OWNER_READ OWNER_EXECUTE
GROUP_READ GROUP_EXECUTE
WORLD_READ WORLD_EXECUTE
COMPONENT
Devel)
# Build other libraries
2023-04-05 17:47:15 +02:00
if(BUILD_QML_EXPORT)
add_subdirectory(qmlexport)
endif()
if(BUILD_INPUTCONTEXT)
add_subdirectory(inputcontext)
endif()
if(BUILD_EXAMPLES OR BUILD_PLAYGROUND)
add_subdirectory(support)
endif()
if(BUILD_TOOLS)
add_subdirectory(tools)
endif()
if(BUILD_EXAMPLES)
add_subdirectory(examples)
endif()
if(BUILD_PLAYGROUND)
add_subdirectory(playground)
endif()