#
# This file is part of Magnum.
#
# Copyright © 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019,
# 2020, 2021, 2022, 2023 Vladimír Vondruš <mosra@centrum.cz>
#
# Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and associated documentation files (the "Software"),
# to deal in the Software without restriction, including without limitation
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
# and/or sell copies of the Software, and to permit persons to whom the
# Software is furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included
# in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
# DEALINGS IN THE SOFTWARE.
#
# IDE folder in VS, Xcode etc. CMake 3.12+, older versions have only the FOLDER
# property that would have to be set on each target separately.
set ( CMAKE_FOLDER "Magnum/Text" )
find_package ( Corrade REQUIRED PluginManager )
# Files shared between main library and unit test library
set ( MagnumText_SRCS )
# Files compiled with different flags for main library and unit test library
set ( MagnumText_GracefulAssert_SRCS
A b s t r a c t F o n t . c p p
A b s t r a c t F o n t C o n v e r t e r . c p p
A b s t r a c t G l y p h C a c h e . c p p )
set ( MagnumText_HEADERS
A b s t r a c t F o n t . h
A b s t r a c t F o n t C o n v e r t e r . h
A b s t r a c t G l y p h C a c h e . h
A l i g n m e n t . h
T e x t . h
v i s i b i l i t y . h )
if ( MAGNUM_TARGET_GL )
list ( APPEND MagnumText_SRCS
G l y p h C a c h e . c p p
R e n d e r e r . c p p )
list ( APPEND MagnumText_GracefulAssert_SRCS
D i s t a n c e F i e l d G l y p h C a c h e . c p p )
list ( APPEND MagnumText_HEADERS
D i s t a n c e F i e l d G l y p h C a c h e . h
G l y p h C a c h e . h
R e n d e r e r . h )
else ( )
# So MagnumTextObjects has at least something
list ( APPEND MagnumText_SRCS ${ PROJECT_SOURCE_DIR } /src/dummy.cpp )
endif ( )
if ( NOT CORRADE_PLUGINMANAGER_NO_DYNAMIC_PLUGIN_SUPPORT )
configure_file ( ${ CMAKE_CURRENT_SOURCE_DIR } /configure.h.cmake
$ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / c o n f i g u r e . h )
endif ( )
# Objects shared between main and test library
add_library ( MagnumTextObjects OBJECT
$ { M a g n u m T e x t _ S R C S }
$ { M a g n u m T e x t _ H E A D E R S } )
target_include_directories ( MagnumTextObjects PUBLIC
$ < T A R G E T _ P R O P E R T Y : C o r r a d e : : P l u g i n M a n a g e r , I N T E R F A C E _ I N C L U D E _ D I R E C T O R I E S >
$ < T A R G E T _ P R O P E R T Y : M a g n u m , I N T E R F A C E _ I N C L U D E _ D I R E C T O R I E S > )
if ( MAGNUM_TARGET_GL )
target_include_directories ( MagnumTextObjects PUBLIC $< TARGET_PROPERTY:MagnumGL,INTERFACE_INCLUDE_DIRECTORIES > )
endif ( )
if ( NOT MAGNUM_BUILD_STATIC )
target_compile_definitions ( MagnumTextObjects PRIVATE "MagnumTextObjects_EXPORTS" )
endif ( )
if ( NOT MAGNUM_BUILD_STATIC OR MAGNUM_BUILD_STATIC_PIC )
set_target_properties ( MagnumTextObjects PROPERTIES POSITION_INDEPENDENT_CODE ON )
endif ( )
# Text library
add_library ( MagnumText ${ SHARED_OR_STATIC }
$ < T A R G E T _ O B J E C T S : M a g n u m T e x t O b j e c t s >
$ { M a g n u m T e x t _ G r a c e f u l A s s e r t _ S R C S } )
set_target_properties ( MagnumText PROPERTIES DEBUG_POSTFIX "-d" )
if ( NOT MAGNUM_BUILD_STATIC )
set_target_properties ( MagnumText PROPERTIES VERSION ${ MAGNUM_LIBRARY_VERSION } SOVERSION ${ MAGNUM_LIBRARY_SOVERSION } )
elseif ( MAGNUM_BUILD_STATIC_PIC )
set_target_properties ( MagnumText PROPERTIES POSITION_INDEPENDENT_CODE ON )
endif ( )
target_link_libraries ( MagnumText PUBLIC
M a g n u m
M a g n u m T e x t u r e T o o l s
C o r r a d e : : P l u g i n M a n a g e r )
if ( MAGNUM_TARGET_GL )
target_link_libraries ( MagnumText PUBLIC MagnumGL )
endif ( )
install ( TARGETS MagnumText
R U N T I M E D E S T I N A T I O N $ { M A G N U M _ B I N A R Y _ I N S T A L L _ D I R }
L I B R A R Y D E S T I N A T I O N $ { M A G N U M _ L I B R A R Y _ I N S T A L L _ D I R }
A R C H I V E D E S T I N A T I O N $ { M A G N U M _ L I B R A R Y _ I N S T A L L _ D I R } )
install ( FILES ${ MagnumText_HEADERS } DESTINATION ${ MAGNUM_INCLUDE_INSTALL_DIR } /Text )
if ( MAGNUM_WITH_FONTCONVERTER )
if ( NOT MAGNUM_TARGET_GL )
message ( SEND_ERROR "magnum-fontconverter is available only if MAGNUM_TARGET_GL is enabled" )
endif ( )
if ( CORRADE_TARGET_EMSCRIPTEN )
message ( SEND_ERROR "The magnum-fontconverter utility isn't available on Emscripten due to lack of GPU access from Node.js. Set MAGNUM_WITH_FONTCONVERTER to OFF to skip building it." )
endif ( )
find_package ( Corrade REQUIRED Main )
add_executable ( magnum-fontconverter fontconverter.cpp )
target_link_libraries ( magnum-fontconverter PRIVATE
C o r r a d e : : M a i n
M a g n u m
M a g n u m T e x t
M a g n u m T r a d e
$ { M A G N U M _ F O N T C O N V E R T E R _ S T A T I C _ P L U G I N S } )
if ( MAGNUM_TARGET_EGL )
target_link_libraries ( magnum-fontconverter PRIVATE MagnumWindowlessEglApplication )
elseif ( CORRADE_TARGET_IOS )
target_link_libraries ( magnum-fontconverter PRIVATE MagnumWindowlessIosApplication )
elseif ( CORRADE_TARGET_APPLE )
target_link_libraries ( magnum-fontconverter PRIVATE MagnumWindowlessCglApplication )
elseif ( CORRADE_TARGET_UNIX )
target_link_libraries ( magnum-fontconverter PRIVATE MagnumWindowlessGlxApplication )
elseif ( CORRADE_TARGET_WINDOWS )
target_link_libraries ( magnum-fontconverter PRIVATE MagnumWindowlessWglApplication )
else ( )
message ( FATAL_ERROR "magnum-fontconverter is not available on this platform. Set MAGNUM_WITH_FONTCONVERTER to OFF to suppress this warning." )
endif ( )
install ( TARGETS magnum-fontconverter DESTINATION ${ MAGNUM_BINARY_INSTALL_DIR } )
# Magnum fontconverter target alias for superprojects
add_executable ( Magnum::fontconverter ALIAS magnum-fontconverter )
endif ( )
if ( MAGNUM_BUILD_TESTS )
# Library with graceful assert for testing
add_library ( MagnumTextTestLib ${ SHARED_OR_STATIC } ${ EXCLUDE_FROM_ALL_IF_TEST_TARGET }
$ < T A R G E T _ O B J E C T S : M a g n u m T e x t O b j e c t s >
$ { M a g n u m T e x t _ G r a c e f u l A s s e r t _ S R C S } )
set_target_properties ( MagnumTextTestLib PROPERTIES DEBUG_POSTFIX "-d" )
target_compile_definitions ( MagnumTextTestLib PRIVATE
" C O R R A D E _ G R A C E F U L _ A S S E R T " " M a g n u m T e x t _ E X P O R T S " )
if ( MAGNUM_BUILD_STATIC_PIC )
set_target_properties ( MagnumTextTestLib PROPERTIES POSITION_INDEPENDENT_CODE ON )
endif ( )
target_link_libraries ( MagnumTextTestLib PUBLIC
M a g n u m
M a g n u m T e x t u r e T o o l s
C o r r a d e : : P l u g i n M a n a g e r )
if ( MAGNUM_TARGET_GL )
target_link_libraries ( MagnumText PUBLIC MagnumGL )
endif ( )
add_subdirectory ( Test ${ EXCLUDE_FROM_ALL_IF_TEST_TARGET } )
endif ( )
# Magnum Text target alias for superprojects
add_library ( Magnum::Text ALIAS MagnumText )