#
# This file is part of Magnum.
#
# Copyright © 2010, 2011, 2012, 2013, 2014
# 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.
#
# Headers
set ( Platform_HEADERS
P l a t f o r m . h
S c r e e n . h
S c r e e n e d A p p l i c a t i o n . h
S c r e e n e d A p p l i c a t i o n . h p p )
install ( FILES ${ Platform_HEADERS } DESTINATION ${ MAGNUM_INCLUDE_INSTALL_DIR } /Platform )
# Android application
if ( WITH_ANDROIDAPPLICATION )
if ( NOT ${ CMAKE_SYSTEM_NAME } STREQUAL Android )
message ( FATAL_ERROR "AndroidApplication is available only when targeting Android. Set WITH_ANDROIDAPPLICATION to OFF to skip building it." )
endif ( )
include_directories ( ${ ANDROID_NATIVE_APP_GLUE_INCLUDE_DIR } )
add_library ( MagnumAndroidApplication STATIC
A n d r o i d A p p l i c a t i o n . c p p
I m p l e m e n t a t i o n / E g l . c p p
$ { A N D R O I D _ N A T I V E _ A P P _ G L U E _ S R C } )
set_target_properties ( MagnumAndroidApplication PROPERTIES DEBUG_POSTFIX "-d" )
install ( FILES AndroidApplication.h DESTINATION ${ MAGNUM_INCLUDE_INSTALL_DIR } /Platform )
install ( TARGETS MagnumAndroidApplication
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 } )
endif ( )
# GLUT application
if ( WITH_GLUTAPPLICATION )
find_package ( GLUT )
if ( GLUT_FOUND )
add_library ( MagnumGlutApplication STATIC GlutApplication.cpp )
set_target_properties ( MagnumGlutApplication PROPERTIES DEBUG_POSTFIX "-d" )
install ( FILES GlutApplication.h DESTINATION ${ MAGNUM_INCLUDE_INSTALL_DIR } /Platform )
install ( TARGETS MagnumGlutApplication
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 } )
else ( )
message ( FATAL_ERROR "GLUT library, required by GlutApplication, was not found. Set WITH_GLUTAPPLICATION to OFF to skip building it." )
endif ( )
endif ( )
# SDL2 application
if ( WITH_SDL2APPLICATION )
find_package ( SDL2 )
if ( SDL2_FOUND )
include_directories ( ${ SDL2_INCLUDE_DIR } )
add_library ( MagnumSdl2Application STATIC Sdl2Application.cpp )
set_target_properties ( MagnumSdl2Application PROPERTIES DEBUG_POSTFIX "-d" )
install ( FILES Sdl2Application.h DESTINATION ${ MAGNUM_INCLUDE_INSTALL_DIR } /Platform )
install ( TARGETS MagnumSdl2Application
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 } )
else ( )
message ( FATAL_ERROR "SDL2 library, required by Sdl2Application, was not found. Set WITH_SDL2APPLICATION to OFF to skip building it." )
endif ( )
endif ( )
# NaCl application
if ( WITH_NACLAPPLICATION )
if ( NOT ${ CMAKE_SYSTEM_NAME } STREQUAL NaCl )
message ( FATAL_ERROR "NaClApplication is available only when targeting Google Chrome Native Client. Set WITH_NACLAPPLICATION to OFF to skip building it." )
endif ( )
add_library ( MagnumNaClApplication STATIC NaClApplication.cpp )
set_target_properties ( MagnumNaClApplication PROPERTIES DEBUG_POSTFIX "-d" )
install ( FILES NaClApplication.h DESTINATION ${ MAGNUM_INCLUDE_INSTALL_DIR } /Platform )
install ( TARGETS MagnumNaClApplication
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 } )
endif ( )
# Windowless NaCl application
if ( WITH_WINDOWLESSNACLAPPLICATION )
if ( NOT ${ CMAKE_SYSTEM_NAME } STREQUAL NaCl )
message ( FATAL_ERROR "WindowlessNaClApplication is available only when targeting Google Chrome Native Client. Set WITH_WINDOWLESSNACLAPPLICATION to OFF to skip building it." )
endif ( )
add_library ( MagnumWindowlessNaClApplication STATIC WindowlessNaClApplication.cpp )
set_target_properties ( MagnumWindowlessNaClApplication PROPERTIES DEBUG_POSTFIX "-d" )
target_link_libraries ( MagnumWindowlessNaClApplication Magnum ppapi_cpp ppapi )
install ( FILES WindowlessNaClApplication.h DESTINATION ${ MAGNUM_INCLUDE_INSTALL_DIR } /Platform )
install ( TARGETS MagnumWindowlessNaClApplication
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 } )
endif ( )
# JavaScript and CSS stuff for NaCl
if ( WITH_NACLAPPLICATION OR WITH_WINDOWLESSNACLAPPLICATION )
install ( FILES NaClApplication.js WebApplication.css DESTINATION ${ MAGNUM_DATA_INSTALL_DIR } )
endif ( )
# JavaScript and CSS stuff for Emscripten
if ( WITH_SDL2APPLICATION AND CORRADE_TARGET_EMSCRIPTEN )
install ( FILES EmscriptenApplication.js WebApplication.css DESTINATION ${ MAGNUM_DATA_INSTALL_DIR } )
endif ( )
# GLX application
if ( WITH_GLXAPPLICATION )
set ( NEED_ABSTRACTXAPPLICATION 1 )
set ( NEED_GLXCONTEXT 1 )
add_library ( MagnumGlxApplication STATIC
$ < T A R G E T _ O B J E C T S : M a g n u m A b s t r a c t X A p p l i c a t i o n >
$ < T A R G E T _ O B J E C T S : M a g n u m G l x C o n t e x t H a n d l e r >
G l x A p p l i c a t i o n . c p p )
set_target_properties ( MagnumGlxApplication PROPERTIES DEBUG_POSTFIX "-d" )
install ( FILES GlxApplication.h DESTINATION ${ MAGNUM_INCLUDE_INSTALL_DIR } /Platform )
install ( TARGETS MagnumGlxApplication
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 } )
endif ( )
# X/EGL application
if ( WITH_XEGLAPPLICATION )
set ( NEED_ABSTRACTXAPPLICATION 1 )
set ( NEED_EGLCONTEXT 1 )
add_library ( MagnumXEglApplication STATIC
$ < T A R G E T _ O B J E C T S : M a g n u m A b s t r a c t X A p p l i c a t i o n >
$ < T A R G E T _ O B J E C T S : M a g n u m E g l C o n t e x t H a n d l e r >
X E g l A p p l i c a t i o n . c p p )
set_target_properties ( MagnumXEglApplication PROPERTIES DEBUG_POSTFIX "-d" )
install ( FILES XEglApplication.h DESTINATION ${ MAGNUM_INCLUDE_INSTALL_DIR } /Platform )
install ( TARGETS MagnumXEglApplication
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 } )
endif ( )
if ( WITH_WINDOWLESSGLXAPPLICATION OR NEED_ABSTRACTXAPPLICATION )
find_package ( X11 )
if ( NOT X11_FOUND )
message ( FATAL_ERROR "X11 library, required by some contexts, was not found. Set WITH_*X*APPLICATION to OFF to skip building them." )
endif ( )
endif ( )
# Windowless GLX application
if ( WITH_WINDOWLESSGLXAPPLICATION )
add_library ( MagnumWindowlessGlxApplication STATIC WindowlessGlxApplication.cpp )
# X11 macros are a mess, disable warnings for C-style casts
set_target_properties ( MagnumWindowlessGlxApplication PROPERTIES
C O M P I L E _ F L A G S " - W n o - o l d - s t y l e - c a s t "
D E B U G _ P O S T F I X " - d " )
target_link_libraries ( MagnumWindowlessGlxApplication Magnum ${ X11_LIBRARIES } )
install ( FILES WindowlessGlxApplication.h DESTINATION ${ MAGNUM_INCLUDE_INSTALL_DIR } /Platform )
install ( TARGETS MagnumWindowlessGlxApplication
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 } )
endif ( )
# Windowless WGL application
if ( WITH_WINDOWLESSWGLAPPLICATION )
add_library ( MagnumWindowlessWglApplication STATIC WindowlessWglApplication.cpp )
set_target_properties ( MagnumWindowlessWglApplication PROPERTIES
C O M P I L E _ F L A G S " - D U N I C O D E "
D E B U G _ P O S T F I X " - d " )
target_link_libraries ( MagnumWindowlessWglApplication Magnum )
install ( FILES WindowlessWglApplication.h DESTINATION ${ MAGNUM_INCLUDE_INSTALL_DIR } /Platform )
install ( TARGETS MagnumWindowlessWglApplication
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 } )
endif ( )
# Windowless CGL application
if ( WITH_WINDOWLESSCGLAPPLICATION )
add_library ( MagnumWindowlessCglApplication STATIC WindowlessCglApplication.cpp )
target_link_libraries ( MagnumWindowlessCglApplication Magnum )
install ( FILES WindowlessCglApplication.h DESTINATION ${ MAGNUM_INCLUDE_INSTALL_DIR } /Platform )
install ( TARGETS MagnumWindowlessCglApplication
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 } )
endif ( )
# Abstract X application
if ( NEED_ABSTRACTXAPPLICATION )
add_library ( MagnumAbstractXApplication OBJECT AbstractXApplication.cpp )
# X11 macros are a mess, disable warnings for C-style casts
set_target_properties ( MagnumAbstractXApplication PROPERTIES COMPILE_FLAGS "-Wno-old-style-cast" )
install ( FILES AbstractXApplication.h DESTINATION ${ MAGNUM_INCLUDE_INSTALL_DIR } /Platform )
endif ( )
# GLX context
if ( NEED_GLXCONTEXT )
add_library ( MagnumGlxContextHandler OBJECT Implementation/GlxContextHandler.cpp )
# X11 macros are a mess, disable warnings for C-style casts
set_target_properties ( MagnumGlxContextHandler PROPERTIES COMPILE_FLAGS "-Wno-old-style-cast" )
endif ( )
# EGL context
if ( NEED_EGLCONTEXT )
find_package ( EGL )
if ( NOT EGL_FOUND )
message ( FATAL_ERROR "EGL library, required by some window contexts, was not found. Set WITH_*EGL*APPLICATION to OFF to skip building them." )
endif ( )
add_library ( MagnumEglContextHandler OBJECT
I m p l e m e n t a t i o n / E g l C o n t e x t H a n d l e r . c p p
I m p l e m e n t a t i o n / E g l . c p p )
# X11 macros are a mess, disable warnings for C-style casts
set_target_properties ( MagnumEglContextHandler PROPERTIES COMPILE_FLAGS "-Wno-old-style-cast" )
endif ( )
# Magnum Info
if ( WITH_MAGNUMINFO )
add_executable ( magnum-info magnum-info.cpp )
if ( CORRADE_TARGET_APPLE )
target_link_libraries ( magnum-info MagnumWindowlessCglApplication )
elseif ( CORRADE_TARGET_NACL )
target_link_libraries ( magnum-info MagnumWindowlessNaClApplication )
elseif ( CORRADE_TARGET_UNIX )
target_link_libraries ( magnum-info MagnumWindowlessGlxApplication )
elseif ( CORRADE_TARGET_WINDOWS )
target_link_libraries ( magnum-info MagnumWindowlessWglApplication )
else ( )
message ( FATAL_ERROR "magnum-info is not available on this platform. Set WITH_MAGNUMINFO to OFF to skip building it." )
endif ( )
target_link_libraries ( magnum-info Magnum )
install ( TARGETS magnum-info DESTINATION ${ MAGNUM_BINARY_INSTALL_DIR } )
if ( CORRADE_TARGET_NACL )
install ( FILES magnum-info-nacl.html DESTINATION ${ MAGNUM_DATA_INSTALL_DIR } RENAME magnum-info.html )
install ( FILES magnum-info-nacl.nmf DESTINATION ${ MAGNUM_DATA_INSTALL_DIR } RENAME magnum-info.nmf )
endif ( )
endif ( )