173 lines
4.7 KiB
CMake
173 lines
4.7 KiB
CMake
############################################################################
|
|
# QSkinny - Copyright (C) The authors
|
|
# SPDX-License-Identifier: BSD-3-Clause
|
|
############################################################################
|
|
|
|
cmake_minimum_required(VERSION 3.16.3)
|
|
|
|
macro(qsk_setup_options)
|
|
|
|
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)
|
|
|
|
option(BUILD_TOOLS "Build qskinny tools" ON)
|
|
option(BUILD_INPUTCONTEXT "Build virtual keyboard support" ON)
|
|
option(BUILD_EXAMPLES "Build qskinny examples" ON)
|
|
option(BUILD_PLAYGROUND "Build qskinny playground" ON)
|
|
|
|
# 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})
|
|
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})
|
|
|
|
endmacro()
|
|
|
|
############################################################################
|
|
# QSkinny
|
|
############################################################################
|
|
|
|
project(QSkinny
|
|
LANGUAGES C CXX
|
|
HOMEPAGE_URL "https://github.com/uwerat/qskinny"
|
|
VERSION 0.8.0)
|
|
|
|
set(QSK_SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR})
|
|
set(QSK_CMAKE_DIR ${QSK_SOURCE_DIR}/cmake)
|
|
|
|
qsk_setup_options()
|
|
|
|
include(GNUInstallDirs)
|
|
|
|
# loading helper macros
|
|
list(APPEND CMAKE_MODULE_PATH ${QSK_CMAKE_DIR})
|
|
|
|
include("QskConfigMacros")
|
|
include("QskFindMacros")
|
|
include("QskBuildFunctions")
|
|
|
|
qsk_setup_Qt()
|
|
qsk_setup_build()
|
|
qsk_setup_install()
|
|
|
|
add_subdirectory(src)
|
|
add_subdirectory(designsystems)
|
|
|
|
include(CMakePackageConfigHelpers)
|
|
|
|
# write QSkinnyConfigVersion.cmake file for cmake import
|
|
write_basic_package_version_file(
|
|
${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
|
|
${CMAKE_CURRENT_BINARY_DIR}/${PACKAGE_NAME}Config.cmake
|
|
COPYONLY)
|
|
|
|
# install QSkinnyConfig.cmake and QSkinnyConfigVersion.cmake
|
|
# file to lib/cmake/QSkinny directory
|
|
install(
|
|
FILES
|
|
${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
|
|
OWNER_READ OWNER_EXECUTE
|
|
GROUP_READ GROUP_EXECUTE
|
|
WORLD_READ WORLD_EXECUTE
|
|
COMPONENT
|
|
Devel)
|
|
|
|
# Build other libraries
|
|
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()
|