2015-02-21 15:18:26 -08:00
project ( voxelands )
cmake_minimum_required ( VERSION 2.6 )
if ( RUN_IN_PLACE )
add_definitions ( -DRUN_IN_PLACE )
endif ( RUN_IN_PLACE )
2015-04-11 23:03:18 -07:00
set ( USE_GETTEXT 1 )
2015-02-21 15:18:26 -08:00
find_package ( GettextLib )
2015-04-11 23:03:18 -07:00
if ( GETTEXT_FOUND )
2015-02-21 15:18:26 -08:00
message ( STATUS "gettext msgfmt path: ${GETTEXT_MSGFMT}" )
message ( STATUS "GetText enabled; locales found: ${GETTEXT_AVAILABLE_LOCALES}" )
2015-04-11 23:03:18 -07:00
endif ( GETTEXT_FOUND )
2013-05-18 21:34:35 -07:00
# user visible option to enable/disable audio
OPTION ( ENABLE_AUDIO "Enable audio" ON )
2017-06-22 01:28:24 -07:00
OPTION ( ENABLE_MUMBLE "Enable Mumble Positional Audio" ON )
2013-05-18 21:34:35 -07:00
2015-03-23 15:50:51 -07:00
## this is only set to 1 if audio is enabled _and_ available
2013-05-18 21:34:35 -07:00
set ( USE_AUDIO 0 )
2017-06-22 01:28:24 -07:00
set ( USE_MUMBLE 0 )
2015-03-23 15:50:51 -07:00
set ( SOUND_PROBLEM 0 )
2015-02-21 15:18:26 -08:00
2015-03-23 15:50:51 -07:00
if ( ENABLE_AUDIO AND BUILD_CLIENT )
2013-05-18 21:34:35 -07:00
# Sound libraries
find_package ( OpenAL )
2015-03-23 15:50:51 -07:00
find_package ( Vorbis )
if ( NOT OPENAL_FOUND )
message ( STATUS "Sound enabled, but OpenAL not found!" )
set ( SOUND_PROBLEM 1 )
MARK_AS_ADVANCED ( CLEAR OPENAL_LIBRARY OPENAL_INCLUDE_DIR )
endif ( )
if ( NOT VORBIS_FOUND )
message ( STATUS "Sound enabled, but Vorbis libraries not found!" )
set ( SOUND_PROBLEM 1 )
MARK_AS_ADVANCED ( CLEAR OGG_INCLUDE_DIR VORBIS_INCLUDE_DIR OGG_LIBRARY VORBIS_LIBRARY VORBISFILE_LIBRARY )
endif ( )
if ( OPENAL_FOUND AND VORBIS_FOUND )
set ( USE_AUDIO 1 )
message ( STATUS "Sound enabled" )
endif ( )
2017-06-22 01:28:24 -07:00
if ( ENABLE_MUMBLE AND USE_AUDIO )
if ( WIN32 )
set ( USE_MUMBLE 1 )
else ( )
find_library ( MUMBLE_LIBS rt )
set ( USE_MUMBLE 1 )
endif ( )
endif ( )
2015-03-23 15:50:51 -07:00
endif ( ENABLE_AUDIO AND BUILD_CLIENT )
2015-02-21 15:18:26 -08:00
2015-03-23 15:50:51 -07:00
if ( SOUND_PROBLEM )
message ( FATAL_ERROR "Sound enabled, but cannot be used.\n"
" T o c o n t i n u e , e i t h e r f i l l i n t h e r e q u i r e d p a t h s o r d i s a b l e s o u n d . ( - D E N A B L E _ A U D I O = 0 ) " )
endif ( )
2015-02-21 15:18:26 -08:00
if ( USE_AUDIO )
2017-06-22 01:28:24 -07:00
if ( USE_MUMBLE )
set ( audio_SRCS sound.c sound_ogg.c sound_wav.c sound_util.cpp sound_mumble.c )
else ( )
set ( audio_SRCS sound.c sound_ogg.c sound_wav.c sound_util.cpp )
endif ( )
2015-03-23 15:50:51 -07:00
set ( AUDIO_INCLUDE_DIRS
$ { O P E N A L _ I N C L U D E _ D I R }
$ { V O R B I S _ I N C L U D E _ D I R }
$ { O G G _ I N C L U D E _ D I R }
)
set ( AUDIO_LIBRARIES
$ { O P E N A L _ L I B R A R Y }
$ { V O R B I S _ L I B R A R I E S }
)
endif ( )
2015-02-21 15:18:26 -08:00
option ( ENABLE_FREETYPE "Enable freetype2 (truetype fonts and basic unicode support)" ON )
set ( USE_FREETYPE 0 )
2015-03-23 15:50:51 -07:00
2015-02-21 15:18:26 -08:00
if ( ENABLE_FREETYPE )
2015-03-23 15:50:51 -07:00
find_package ( Freetype REQUIRED )
if ( NOT FREETYPE_FOUND )
MARK_AS_ADVANCED ( CLEAR FREETYPE_INCLUDE_DIR_ft2build FREETYPE_INCLUDE_DIR_freetype2 FREETYPE_LIBRARY )
endif ( )
2015-02-21 15:18:26 -08:00
set ( USE_FREETYPE 1 )
endif ( ENABLE_FREETYPE )
if ( NOT MSVC )
set ( USE_GPROF 0 CACHE BOOL "Use -pg flag for g++" )
endif ( )
# Use cmake_config.h
add_definitions ( -DUSE_CMAKE_CONFIG_H )
if ( WIN32 )
# Windows
if ( MSVC ) # MSVC Specifics
# Surpress some useless warnings
add_definitions ( /D "_CRT_SECURE_NO_DEPRECATE" /W1 )
else ( ) # Probably MinGW = GCC
set ( PLATFORM_LIBS ws2_32.lib )
endif ( )
# Zlib stuff
set ( ZLIB_INCLUDE_DIR "${PROJECT_SOURCE_DIR}/../../zlib/zlib-1.2.5"
C A C H E P A T H " Z l i b i n c l u d e d i r e c t o r y " )
set ( ZLIB_LIBRARIES "${PROJECT_SOURCE_DIR}/../../zlib125dll/dll32/zlibwapi.lib"
C A C H E F I L E P A T H " P a t h t o z l i b w a p i . l i b " )
set ( ZLIB_DLL "${PROJECT_SOURCE_DIR}/../../zlib125dll/dll32/zlibwapi.dll"
C A C H E F I L E P A T H " P a t h t o z l i b w a p i . dll ( for installation ) " )
set ( IRRLICHT_SOURCE_DIR "${PROJECT_SOURCE_DIR}/../../irrlicht-1.7.2"
C A C H E P A T H " i r r l i c h t d i r " )
if ( USE_FREETYPE )
set ( FREETYPE_INCLUDE_DIR_ft2build "${PROJECT_SOURCE_DIR}/../../freetype2/include/"
C A C H E P A T H " f r e e t y p e i n c l u d e d i r " )
set ( FREETYPE_INCLUDE_DIR_freetype2 "${PROJECT_SOURCE_DIR}/../../freetype2/include/freetype"
C A C H E P A T H " f r e e t y p e i n c l u d e d i r " )
set ( FREETYPE_LIBRARY "${PROJECT_SOURCE_DIR}/../../freetype2/objs/win32/vc2005/freetype247.lib"
C A C H E F I L E P A T H " P a t h t o f r e e t y p e 2 4 7 . l i b " )
endif ( USE_FREETYPE )
else ( )
# Unix probably
if ( BUILD_CLIENT )
find_package ( X11 REQUIRED )
find_package ( OpenGL REQUIRED )
find_package ( JPEG REQUIRED )
find_package ( BZip2 REQUIRED )
find_package ( PNG REQUIRED )
if ( APPLE )
FIND_LIBRARY ( CARBON_LIB Carbon )
FIND_LIBRARY ( COCOA_LIB Cocoa )
FIND_LIBRARY ( IOKIT_LIB IOKit )
FIND_LIBRARY ( COREFOUNDATION_LIB CoreFoundation )
mark_as_advanced (
C A R B O N _ L I B
C O C O A _ L I B
I O K I T _ L I B
C O R E F O U N D A T I O N _ L I B
)
SET ( CLIENT_PLATFORM_LIBS ${ CLIENT_PLATFORM_LIBS } ${ CARBON_LIB } ${ COCOA_LIB } ${ IOKIT_LIB } ${ COREFOUNDATION_LIB } )
SET ( CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework Cocoa" )
endif ( APPLE )
endif ( BUILD_CLIENT )
find_package ( ZLIB REQUIRED )
set ( PLATFORM_LIBS -lpthread ${ CMAKE_DL_LIBS } )
#set(CLIENT_PLATFORM_LIBS -lXxf86vm)
# This way Xxf86vm is found on OpenBSD too
find_library ( XXF86VM_LIBRARY Xxf86vm )
set ( CLIENT_PLATFORM_LIBS ${ CLIENT_PLATFORM_LIBS } ${ XXF86VM_LIBRARY } )
endif ( )
find_package ( Jthread REQUIRED )
find_package ( Sqlite3 REQUIRED )
if ( USE_FREETYPE )
if ( UNIX )
include ( FindPkgConfig )
if ( PKG_CONFIG_FOUND )
pkg_check_modules ( FREETYPE QUIET freetype2 )
if ( FREETYPE_FOUND )
SET ( FREETYPE_PKGCONFIG_FOUND TRUE )
SET ( FREETYPE_LIBRARY ${ FREETYPE_LIBRARIES } )
# because cmake is idiotic
string ( REPLACE ";" " " FREETYPE_CFLAGS_STR ${ FREETYPE_CFLAGS } )
string ( REPLACE ";" " " FREETYPE_LDFLAGS_STR ${ FREETYPE_LDFLAGS } )
endif ( FREETYPE_FOUND )
endif ( PKG_CONFIG_FOUND )
endif ( UNIX )
if ( NOT FREETYPE_FOUND )
find_package ( Freetype REQUIRED )
endif ( NOT FREETYPE_FOUND )
set ( CGUITTFONT_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/cguittfont" )
set ( CGUITTFONT_LIBRARY cguittfont )
endif ( USE_FREETYPE )
configure_file (
" $ { P R O J E C T _ S O U R C E _ D I R } / c m a k e _ c o n f i g . h . i n "
" $ { P R O J E C T _ B I N A R Y _ D I R } / c m a k e _ c o n f i g . h "
)
set ( common_SRCS
2017-05-09 22:37:26 -07:00
a u t h . c
2017-03-28 01:42:12 -07:00
a r r a y . c
2017-05-10 05:06:53 -07:00
b a n . c
2017-05-21 03:16:45 -07:00
c o m m a n d . c
i n t l . c
2017-03-28 01:42:12 -07:00
l i s t . c
2017-05-21 03:16:45 -07:00
l o g . c
2017-03-28 01:42:12 -07:00
n v p . c
2017-05-21 03:16:45 -07:00
c o n f i g . c
c o n f i g _ d e f a u l t . c
2017-03-28 01:42:12 -07:00
c r y p t o . c
c r y p t o _ b a s e 6 4 . c
2017-05-09 22:37:26 -07:00
f i l e . c
t h r e a d . c
p a t h . c
2017-05-21 03:16:45 -07:00
s t r i n g . c
b r i d g e _ t e m p . c p p
s e r v e r c o m m a n d . c
2017-08-15 03:47:12 -07:00
w o r l d . c
2015-02-21 15:18:26 -08:00
l o g . c p p
c o n t e n t _ s a o . c p p
2017-06-28 08:04:56 -07:00
m a p g e n / m a p g e n . c p p
m a p g e n / m a p g e n _ t r e e s . c p p
2017-07-18 09:06:40 -07:00
m a p g e n / m a p g e n _ r o c k s . c p p
2017-06-28 08:04:56 -07:00
m a p g e n / m a p g e n _ p l a n t s . c p p
m a p g e n / m a p g e n _ d u n g e o n . c p p
m a p g e n / m a p g e n _ u t i l . c p p
m a p g e n / m a p g e n _ s p a c e . c p p
2017-07-02 09:15:06 -07:00
m a p g e n / m a p g e n _ s k y . c p p
2017-06-28 08:04:56 -07:00
m a p g e n / m a p g e n _ t h e d e e p . c p p
2017-08-17 05:36:45 -07:00
m a p g e n / m a p g e n _ f l a t . c p p
2017-06-23 08:35:50 -07:00
n o d e m e t a / c o n t e n t _ n o d e m e t a _ c i r c u i t s . c p p
n o d e m e t a / c o n t e n t _ n o d e m e t a _ s i g n . c p p
n o d e m e t a / c o n t e n t _ n o d e m e t a _ f l a g . c p p
n o d e m e t a / c o n t e n t _ n o d e m e t a _ b e d . c p p
n o d e m e t a / c o n t e n t _ n o d e m e t a _ s t o r a g e _ o l d . c p p
2017-06-24 04:08:25 -07:00
n o d e m e t a / c o n t e n t _ n o d e m e t a _ s t o r a g e . c p p
2017-06-23 08:35:50 -07:00
n o d e m e t a / c o n t e n t _ n o d e m e t a _ s t o r a g e _ p r e f i l l . c p p
n o d e m e t a / c o n t e n t _ n o d e m e t a _ b o r d e r s t o n e . c p p
n o d e m e t a / c o n t e n t _ n o d e m e t a _ c o o k i n g . c p p
n o d e m e t a / c o n t e n t _ n o d e m e t a _ t n t . c p p
n o d e m e t a / c o n t e n t _ n o d e m e t a _ i n c i n e r a t o r . c p p
n o d e m e t a / c o n t e n t _ n o d e m e t a _ b l o c k s . c p p
n o d e m e t a / c o n t e n t _ n o d e m e t a _ f o r g e . c p p
n o d e m e t a / c o n t e n t _ n o d e m e t a _ b o o k . c p p
n o d e m e t a / c o n t e n t _ n o d e m e t a _ b o o k _ g u i d e . c p p
2015-02-21 15:18:26 -08:00
c o n t e n t _ c r a f t . c p p
c o n t e n t _ c r a f t i t e m . c p p
c o n t e n t _ c l o t h e s i t e m . c p p
c o n t e n t _ t o o l i t e m . c p p
c o n t e n t _ m o b . c p p
c o n t e n t _ m a p n o d e . c p p
c o n t e n t _ m a p n o d e _ d o o r . c p p
c o n t e n t _ m a p n o d e _ f a r m . c p p
c o n t e n t _ m a p n o d e _ c i r c u i t . c p p
c o n t e n t _ m a p n o d e _ f u r n i t u r e . c p p
c o n t e n t _ m a p n o d e _ s t a i r . c p p
c o n t e n t _ m a p n o d e _ s l a b . c p p
c o n t e n t _ m a p n o d e _ s p e c i a l . c p p
2017-06-24 09:46:57 -07:00
c o n t e n t _ m a p n o d e _ s i g n . c p p
2015-02-21 15:18:26 -08:00
c o n t e n t _ m a p n o d e _ p l a n t s . c p p
c o n t e n t _ m a p n o d e _ u t i l . c p p
2017-04-05 09:44:59 -07:00
c o n t e n t _ l i s t . c
2015-02-21 15:18:26 -08:00
c o n t e n t _ n o d e b o x . c p p
c o l l i s i o n . c p p
n o d e m e t a d a t a . c p p
s e r v e r o b j e c t . c p p
n o i s e . c p p
m i n e r a l . c p p
2015-07-31 13:04:02 -07:00
e n c h a n t m e n t . c p p
2015-02-21 15:18:26 -08:00
p o r t i n g . c p p
m a p n o d e . c p p
v o x e l . c p p
i n v e n t o r y . c p p
d e b u g . c p p
s e r i a l i z a t i o n . c p p
l i g h t . c p p
c o n n e c t i o n . c p p
e n v i r o n m e n t . c p p
2015-05-28 00:31:53 -07:00
p l a n t g r o w t h . c p p
2015-02-21 15:18:26 -08:00
s e r v e r . c p p
s o c k e t . c p p
m a p b l o c k . c p p
m a p s e c t o r . c p p
m a p . c p p
p l a y e r . c p p
u t i l i t y . c p p
t e s t . c p p
s h a 1 . c p p
b a s e 6 4 . c p p
h t t p . c p p
)
# This gives us the icon
if ( WIN32 )
if ( MINGW )
ADD_CUSTOM_COMMAND ( OUTPUT ${ CMAKE_CURRENT_BINARY_DIR } /winresource_rc.o
C O M M A N D w i n d r e s . e x e - I $ { C M A K E _ C U R R E N T _ S O U R C E _ D I R }
- i $ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / w i n r e s o u r c e . r c
- o $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / w i n r e s o u r c e _ r c . o )
SET ( common_SRCS ${ common_SRCS } ${ CMAKE_CURRENT_BINARY_DIR } /winresource_rc.o )
else ( MINGW ) # Probably MSVC
set ( common_SRCS ${ common_SRCS } winresource.rc )
endif ( MINGW )
endif ( )
set ( voxelands_SRCS
2013-05-18 21:34:35 -07:00
$ { c o m m o n _ S R C S }
2013-05-18 21:34:35 -07:00
$ { a u d i o _ S R C S }
2015-08-26 03:22:15 -07:00
s k y . c p p
2015-06-19 06:57:59 -07:00
h u d . c p p
2015-02-21 15:18:26 -08:00
c o n t e n t _ m a p b l o c k . c p p
c o n t e n t _ c a o . c p p
m a p b l o c k _ m e s h . c p p
2015-11-19 09:50:29 -08:00
s e l e c t i o n _ m e s h . c p p
2015-02-21 15:18:26 -08:00
k e y c o d e . c p p
c a m e r a . c p p
c l o u d s . c p p
p a r t i c l e s . c p p
c l i e n t o b j e c t . c p p
g u i M a i n M e n u . c p p
2015-05-16 09:12:02 -07:00
g u i S e t t i n g s M e n u . c p p
2017-08-17 05:17:45 -07:00
g u i S i n g l e p l a y e r M e n u . c p p
2015-12-15 09:07:44 -08:00
g u i M u l t i p l a y e r M e n u . c p p
2015-02-21 15:18:26 -08:00
g u i M e s s a g e M e n u . c p p
g u i T e x t I n p u t M e n u . c p p
g u i F o r m S p e c M e n u . c p p
g u i P a u s e M e n u . c p p
g u i P a s s w o r d C h a n g e . c p p
g u i D e a t h S c r e e n . c p p
c h a r a c t e r _ c r e a t o r . c p p
m e s h . c p p
c l i e n t . c p p
t i l e . c p p
g a m e . c p p
m a i n . c p p
)
2014-01-19 00:20:06 -08:00
# Server sources
2015-02-21 15:18:26 -08:00
set ( voxelandsserver_SRCS
2014-01-19 00:20:06 -08:00
$ { c o m m o n _ S R C S }
2015-02-21 15:18:26 -08:00
s e r v e r m a i n . c p p
)
include_directories (
2015-04-27 18:55:16 -07:00
$ { C M A K E _ B I N A R Y _ D I R } / s r c / j t h r e a d
2015-02-21 15:18:26 -08:00
$ { P R O J E C T _ B I N A R Y _ D I R }
$ { I R R L I C H T _ I N C L U D E _ D I R }
$ { Z L I B _ I N C L U D E _ D I R }
$ { C M A K E _ B U I L D _ T Y P E }
2013-05-18 21:34:35 -07:00
$ { P N G _ I N C L U D E _ D I R }
2015-02-21 15:18:26 -08:00
$ { A U D I O _ I N C L U D E _ D I R S }
$ { J T H R E A D _ I N C L U D E _ D I R }
$ { S Q L I T E 3 _ I N C L U D E _ D I R }
)
if ( USE_FREETYPE )
set ( voxelands_SRCS
$ { v o x e l a n d s _ S R C S }
i n t l G U I E d i t B o x . c p p
)
include_directories (
$ { F R E E T Y P E _ I N C L U D E _ D I R S }
$ { C G U I T T F O N T _ I N C L U D E _ D I R }
)
endif ( USE_FREETYPE )
set ( EXECUTABLE_OUTPUT_PATH "${CMAKE_SOURCE_DIR}/bin" )
if ( BUILD_CLIENT )
add_executable ( ${ PROJECT_NAME } ${ voxelands_SRCS } )
target_link_libraries (
$ { P R O J E C T _ N A M E }
$ { Z L I B _ L I B R A R I E S }
$ { I R R L I C H T _ L I B R A R Y }
$ { O P E N G L _ L I B R A R I E S }
$ { J P E G _ L I B R A R I E S }
$ { B Z I P 2 _ L I B R A R I E S }
$ { P N G _ L I B R A R I E S }
2013-05-18 21:34:35 -07:00
$ { X 1 1 _ L I B R A R I E S }
2015-02-21 15:18:26 -08:00
$ { A U D I O _ L I B R A R I E S }
$ { J T H R E A D _ L I B R A R Y }
$ { S Q L I T E 3 _ L I B R A R Y }
$ { P L A T F O R M _ L I B S }
$ { C L I E N T _ P L A T F O R M _ L I B S }
2017-06-22 01:28:24 -07:00
$ { M U M B L E _ L I B S }
2015-02-21 15:18:26 -08:00
)
if ( USE_FREETYPE )
if ( FREETYPE_PKGCONFIG_FOUND )
set_target_properties ( ${ PROJECT_NAME }
P R O P E R T I E S
C O M P I L E _ F L A G S " $ { F R E E T Y P E _ C F L A G S _ S T R } "
)
endif ( FREETYPE_PKGCONFIG_FOUND )
target_link_libraries (
$ { P R O J E C T _ N A M E }
$ { F R E E T Y P E _ L I B R A R Y }
$ { C G U I T T F O N T _ L I B R A R Y }
)
endif ( USE_FREETYPE )
endif ( BUILD_CLIENT )
if ( BUILD_SERVER )
add_executable ( ${ PROJECT_NAME } -server ${ voxelandsserver_SRCS } )
target_link_libraries (
$ { P R O J E C T _ N A M E } - s e r v e r
$ { Z L I B _ L I B R A R I E S }
$ { J T H R E A D _ L I B R A R Y }
$ { S Q L I T E 3 _ L I B R A R Y }
$ { P L A T F O R M _ L I B S }
)
endif ( BUILD_SERVER )
#
# Set some optimizations and tweaks
#
include ( CheckCXXCompilerFlag )
if ( MSVC )
# Visual Studio
# EHa enables SEH exceptions (used for catching segfaults)
set ( CMAKE_CXX_FLAGS_RELEASE "/EHa /O2 /Ob2 /Oi /Ot /Oy /GL /FD /MT /GS- /arch:SSE /fp:fast /D NDEBUG /D _HAS_ITERATOR_DEBUGGING=0 /TP" )
#set(CMAKE_EXE_LINKER_FLAGS_RELEASE "/LTCG /NODEFAULTLIB:\"libcmtd.lib\" /NODEFAULTLIB:\"libcmt.lib\"")
2015-03-23 15:50:51 -07:00
set ( CMAKE_EXE_LINKER_FLAGS_RELEASE "/LTCG /SAFESEH:NO" )
2015-02-21 15:18:26 -08:00
# Debug build doesn't catch exceptions by itself
# Add some optimizations because otherwise it's VERY slow
set ( CMAKE_CXX_FLAGS_DEBUG "/MDd /Zi /Ob0 /Od /RTC1" )
# Flags for C files (sqlite)
# /MT = Link statically with standard library stuff
set ( CMAKE_C_FLAGS_RELEASE "/O2 /Ob2 /MT" )
if ( BUILD_SERVER )
set_target_properties ( ${ PROJECT_NAME } -server PROPERTIES
C O M P I L E _ D E F I N I T I O N S " S E R V E R " )
endif ( BUILD_SERVER )
else ( )
2018-03-17 09:46:01 -07:00
set ( CFLAGS "-fwrapv -fno-fast-math" )
set ( OPT_CFLAGS "-O3 -fomit-frame-pointer" )
if ( CMAKE_SYSTEM_NAME STREQUAL "FreeBSD" )
set ( CFLAGS "${CFLAGS} -I/usr/local/include" )
set ( CXXFLAGS "-std=gnu++98" )
set ( LDFLAGS "${LDFLAGS} -L/usr/local/include" )
endif ( )
2015-02-21 15:18:26 -08:00
if ( APPLE )
set ( CMAKE_OSX_ARCHITECTURES x86_64 FORCE )
set ( ARCH x86_64 )
endif ( )
2016-01-16 00:00:47 -08:00
if ( ENABLE_SSP )
CHECK_CXX_COMPILER_FLAG ( "-fstack-protector-strong" HAS_FSTACK_STRONG )
if ( HAS_FSTACK_STRONG )
2018-03-17 09:46:01 -07:00
set ( CFLAGS "${CFLAGS} -fstack-protector-strong" )
2016-01-16 00:00:47 -08:00
else ( )
2018-03-17 09:46:01 -07:00
set ( CFLAGS "${CFLAGS} -fstack-protector" )
2016-01-16 00:00:47 -08:00
endif ( )
endif ( )
if ( ENABLE_SAFESTACK )
CHECK_CXX_COMPILER_FLAG ( "-fsanitize=safe-stack" HAS_SAFESTACK )
if ( HAS_SAFESTACK )
2018-03-17 09:46:01 -07:00
set ( CFLAGS "${CFLAGS} -fsanitize=safe-stack" )
set ( LDFLAGS "${LDFLAGS} -fsanitize=safe-stack -lrt" )
2016-01-16 00:00:47 -08:00
endif ( )
endif ( )
if ( ENABLE_PIE )
2018-03-17 09:46:01 -07:00
set ( CFLAGS "${CFLAGS} -fPIC -fPIE" )
set ( LDFLAGS "${LDFLAGS} -Wl,-pie" )
2015-03-21 15:57:05 -07:00
endif ( )
2015-03-21 17:14:59 -07:00
if ( CPU_OPTS )
2018-03-17 09:46:01 -07:00
set ( OPT_CFLAGS "${OPT_CFLAGS} -march=${CPUTYPE}" )
2015-03-21 17:14:59 -07:00
endif ( )
2018-03-17 09:46:01 -07:00
set ( CMAKE_CXX_FLAGS_RELEASE "${OPT_CFLAGS} ${CFLAGS} ${CXXFLAGS} -Wall -DNDEBUG -pipe -fpermissive -Wno-write-strings" )
set ( CMAKE_C_FLAGS_RELEASE "${OPT_CFLAGS} ${CFLAGS} -Wall -DNDEBUG -pipe" )
set ( CMAKE_CXX_FLAGS_DEBUG "${CFLAGS} ${CXXFLAGS} -Wall -O0 -g3 -ggdb -fpermissive -Wno-write-strings" )
set ( CMAKE_C_FLAGS_DEBUG "${CFLAGS} -Wall -O0 -g3 -ggdb" )
2015-03-21 17:14:59 -07:00
2018-03-17 09:46:01 -07:00
set ( CMAKE_EXE_LINKER_FLAGS_RELEASE ${ LDFLAGS } )
2015-04-17 22:04:47 -07:00
set ( CMAKE_MODULE_LINKER_FLAGS_RELEASE ${ CMAKE_EXE_LINKER_FLAGS_RELEASE } )
set ( CMAKE_SHARED_LINKER_FLAGS_RELEASE ${ CMAKE_EXE_LINKER_FLAGS_RELEASE } )
2018-03-17 09:46:01 -07:00
set ( CMAKE_EXE_LINKER_FLAGS_DEBUG "${LDFLAGS}" )
2016-01-16 00:00:47 -08:00
set ( CMAKE_MODULE_LINKER_FLAGS_DEBUG ${ CMAKE_EXE_LINKER_FLAGS_DEBUG } )
set ( CMAKE_SHARED_LINKER_FLAGS_DEBUG ${ CMAKE_EXE_LINKER_FLAGS_DEBUG } )
2015-02-21 15:18:26 -08:00
if ( USE_GPROF )
set ( CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -pg" )
endif ( )
if ( BUILD_SERVER )
set_target_properties ( ${ PROJECT_NAME } -server PROPERTIES
C O M P I L E _ D E F I N I T I O N S " S E R V E R " )
endif ( BUILD_SERVER )
2015-04-17 22:04:47 -07:00
if ( CMAKE_BUILD_TYPE STREQUAL Release )
MESSAGE ( STATUS "C/CXX Flags: ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_RELEASE}" )
MESSAGE ( STATUS "Linker Flags: ${CMAKE_EXE_LINKER_FLAGS} ${CMAKE_EXE_LINKER_FLAGS_RELEASE}" )
2015-04-17 22:09:24 -07:00
endif ( )
2015-04-17 22:04:47 -07:00
if ( CMAKE_BUILD_TYPE STREQUAL Debug )
MESSAGE ( STATUS "C/CXX Flags: ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_DEBUG}" )
MESSAGE ( STATUS "Linker Flags: ${CMAKE_EXE_LINKER_FLAGS} ${CMAKE_EXE_LINKER_FLAGS_DEBUG}" )
endif ( )
2015-02-21 15:18:26 -08:00
endif ( )
#
# Installation
#
if ( BUILD_CLIENT )
install ( TARGETS ${ PROJECT_NAME } DESTINATION ${ BINDIR } )
file ( GLOB images "${CMAKE_CURRENT_SOURCE_DIR}/../data/textures/*.png" )
install ( FILES ${ images } DESTINATION ${ SHAREDIR } /textures )
file ( GLOB skins "${CMAKE_CURRENT_SOURCE_DIR}/../data/textures/skins/*.png" )
install ( FILES ${ skins } DESTINATION ${ SHAREDIR } /textures/skins )
2015-04-09 11:09:36 -07:00
file ( GLOB models "${CMAKE_CURRENT_SOURCE_DIR}/../data/models/*.b3d" )
2015-02-21 15:18:26 -08:00
install ( FILES ${ models } DESTINATION ${ SHAREDIR } /models )
2015-04-09 11:09:36 -07:00
file ( GLOB modelsx "${CMAKE_CURRENT_SOURCE_DIR}/../data/models/*.x" )
2015-02-21 15:18:26 -08:00
install ( FILES ${ modelsx } DESTINATION ${ SHAREDIR } /models )
file ( GLOB sounds "${CMAKE_CURRENT_SOURCE_DIR}/../data/sounds/*.ogg" )
install ( FILES ${ sounds } DESTINATION ${ SHAREDIR } /sounds )
file ( GLOB fonts "${CMAKE_CURRENT_SOURCE_DIR}/../data/fonts/*.ttf" )
install ( FILES ${ fonts } DESTINATION ${ SHAREDIR } /fonts )
if ( USE_GETTEXT )
foreach ( LOCALE ${ GETTEXT_AVAILABLE_LOCALES } )
set_mo_paths ( MO_BUILD_PATH MO_DEST_PATH ${ LOCALE } )
set ( MO_BUILD_PATH "${MO_BUILD_PATH}/${PROJECT_NAME}.mo" )
install ( FILES ${ MO_BUILD_PATH } DESTINATION ${ MO_DEST_PATH } )
endforeach ( LOCALE ${ GETTEXT_AVAILABLE_LOCALES } )
endif ( )
if ( WIN32 )
if ( DEFINED IRRLICHT_DLL )
install ( FILES ${ IRRLICHT_DLL } DESTINATION ${ BINDIR } )
endif ( )
if ( DEFINED ZLIB_DLL )
install ( FILES ${ ZLIB_DLL } DESTINATION ${ BINDIR } )
endif ( )
if ( FREETYPE_DLL )
install ( FILES ${ FREETYPE_DLL } DESTINATION ${ BINDIR } )
endif ( )
if ( USE_AUDIO )
if ( DEFINED VORBIS_DLL )
install ( FILES ${ VORBIS_DLL } DESTINATION ${ BINDIR } )
endif ( )
if ( DEFINED VORBISFILE_DLL )
install ( FILES ${ VORBISFILE_DLL } DESTINATION ${ BINDIR } )
endif ( )
if ( DEFINED OGG_DLL )
install ( FILES ${ OGG_DLL } DESTINATION ${ BINDIR } )
endif ( )
if ( DEFINED OPENAL_DLL )
install ( FILES ${ OPENAL_DLL } DESTINATION ${ BINDIR } )
endif ( )
endif ( USE_AUDIO )
endif ( )
if ( APPLE )
# TODO: install Irrlicht.framework into app bundle!
# it should be in Contents/Resources/Frameworks/Irrlicht.framework
# Compile .xib files
# should be in Contents/Resources/MainMenu.nib at the end
set ( VoxelandsMac_XIBS
M a i n M e n u
)
# Make sure the 'Resources' Directory is correctly created before we build
add_custom_command ( TARGET ${ PROJECT_NAME } PRE_BUILD
C O M M A N D m k d i r - p $ { E X E C U T A B L E _ O U T P U T _ P A T H } / \ $ { C O N F I G U R A T I O N } / C o n t e n t s / R e s o u r c e s )
find_program ( IBTOOL ibtool HINTS "/usr/bin" "${OSX_DEVELOPER_ROOT}/usr/bin" )
2014-09-26 11:50:18 -07:00
# Make sure the 'Libs' Directory is correctly created before we build
2015-02-21 15:18:26 -08:00
add_custom_command ( TARGET ${ PROJECT_NAME } PRE_BUILD
C O M M A N D m k d i r - p $ { E X E C U T A B L E _ O U T P U T _ P A T H } / \ $ { C O N F I G U R A T I O N } / C o n t e n t s / R e s o u r c e s / l i b s )
if ( ${ IBTOOL } STREQUAL "IBTOOL-NOTFOUND" )
message ( SEND_ERROR "ibtool can not be found and is needed to compile the .xib files. It should have been installed with the Apple developer tools. The default system paths were searched in addition to ${OSX_DEVELOPER_ROOT}/usr/bin" )
endif ( )
# Compile the .xib files using the 'ibtool' program with the destination being the app package
foreach ( xib ${ VoxelandsMac_XIBS } )
add_custom_command ( TARGET ${ PROJECT_NAME } POST_BUILD
C O M M A N D $ { I B T O O L } - - e r r o r s - - w a r n i n g s - - n o t i c e s - - o u t p u t - f o r m a t h u m a n - r e a d a b l e - t e x t
- - c o m p i l e $ { E X E C U T A B L E _ O U T P U T _ P A T H } / \ $ { C O N F I G U R A T I O N } / C o n t e n t s / R e s o u r c e s / $ { x i b } . n i b
$ { C M A K E _ S O U R C E _ D I R } / m i s c / m a c / $ { x i b } . x i b
C O M M E N T " C o m p i l i n g $ { C M A K E _ S O U R C E _ D I R } / $ { x i b } . x i b " )
endforeach ( )
2016-01-07 16:28:26 -08:00
# Make icns from svg, just in case it was updated. Only rebuild from svg when asked.
# Most times use voxelands.icns from binary blob instead.
if ( REBUILD_ICNS )
add_custom_command ( TARGET ${ PROJECT_NAME } POST_BUILD
2014-09-25 09:16:02 -07:00
C O M M A N D $ { C M A K E _ S O U R C E _ D I R } / m i s c / m a c / m a k e i c n s . s h
2016-01-07 16:28:26 -08:00
C O M M E N T " m a k i n g $ { P R O J E C T _ N A M E } . i c n s f i l e f r o m $ { P R O J E C T _ N A M E } . s v g " )
endif ( )
2014-09-25 09:16:02 -07:00
# Change to proper version and mac osx deployment version
2014-09-26 11:50:18 -07:00
add_custom_command ( TARGET ${ PROJECT_NAME } POST_BUILD
2014-09-25 09:16:02 -07:00
C O M M A N D $ { C M A K E _ S O U R C E _ D I R } / m i s c / m a c / m a k e p l i s t . s h $ { V E R S I O N _ S T R I N G }
C O M M E N T " C h a n g e I n f o . p l i s t a c c o r d i n g t o p r o v i d e d C M A K E v a r i a b l e s " )
2014-09-26 11:50:18 -07:00
# Include the linked '.dylib' to bundle inside the app
add_custom_command ( TARGET ${ PROJECT_NAME } POST_BUILD
C O M M A N D $ { C M A K E _ S O U R C E _ D I R } / m i s c / m a c / m a k e l i b b u n d l e . s h $ { E X E C U T A B L E _ O U T P U T _ P A T H } / \ $ { C O N F I G U R A T I O N }
C O M M E N T " B u n d l i n g d y l i b s w i t h t h e a p p b u n d l e " )
2015-02-21 15:18:26 -08:00
endif ( APPLE )
endif ( BUILD_CLIENT )
if ( BUILD_SERVER )
install ( TARGETS ${ PROJECT_NAME } -server DESTINATION ${ BINDIR } )
file ( GLOB html "${CMAKE_CURRENT_SOURCE_DIR}/../data/html/*.html" )
install ( FILES ${ html } DESTINATION ${ SHAREDIR } /html )
endif ( BUILD_SERVER )
if ( USE_GETTEXT )
set ( MO_FILES )
foreach ( LOCALE ${ GETTEXT_AVAILABLE_LOCALES } )
set ( PO_FILE_PATH "${GETTEXT_PO_PATH}/${LOCALE}/voxelands.po" )
set_mo_paths ( MO_BUILD_PATH MO_DEST_PATH ${ LOCALE } )
set ( MO_FILE_PATH "${MO_BUILD_PATH}/${PROJECT_NAME}.mo" )
add_custom_command ( OUTPUT ${ MO_BUILD_PATH }
C O M M A N D $ { C M A K E _ C O M M A N D } - E m a k e _ d i r e c t o r y $ { M O _ B U I L D _ P A T H }
C O M M E N T " m o - u p d a t e [ $ { L O C A L E } ] : C r e a t i n g l o c a l e d i r e c t o r y . " )
add_custom_command (
O U T P U T $ { M O _ F I L E _ P A T H }
C O M M A N D $ { G E T T E X T _ M S G F M T } - o $ { M O _ F I L E _ P A T H } $ { P O _ F I L E _ P A T H }
D E P E N D S $ { M O _ B U I L D _ P A T H } $ { P O _ F I L E _ P A T H }
W O R K I N G _ D I R E C T O R Y " $ { G E T T E X T _ P O _ P A T H } / $ { L O C A L E } "
C O M M E N T " m o - u p d a t e [ $ { L O C A L E } ] : C r e a t i n g m o f i l e . "
)
set ( MO_FILES ${ MO_FILES } ${ MO_FILE_PATH } )
endforeach ( LOCALE ${ GETTEXT_AVAILABLE_LOCALES } )
add_custom_target ( translations ALL COMMENT "mo update" DEPENDS ${ MO_FILES } )
endif ( USE_GETTEXT )
# Subdirectories
if ( JTHREAD_FOUND )
else ( JTHREAD_FOUND )
add_subdirectory ( jthread )
endif ( JTHREAD_FOUND )
if ( BUILD_CLIENT AND USE_FREETYPE )
add_subdirectory ( cguittfont )
endif ( BUILD_CLIENT AND USE_FREETYPE )
if ( SQLITE3_FOUND )
else ( SQLITE3_FOUND )
add_subdirectory ( sqlite )
endif ( SQLITE3_FOUND )
2014-06-07 11:45:49 -07:00
2013-07-06 20:12:57 -07:00
#end