forked from jjuhl/Blocks-and-Bombs
/
CMakeLists.txt
120 lines (93 loc) · 3.29 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
cmake_minimum_required(VERSION 2.6)
project(BLOCKS_AND_BOMBS)
# Default to Debug build if not told otherwise with eg. '-D CMAKE_BUILD_TYPE=Release'
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Debug)
endif(NOT CMAKE_BUILD_TYPE)
# Set this to be a development build. Resources will be found relative to the source dir.
set(DEVELOPMENT_BUILD ON)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
find_package(SDL REQUIRED)
include_directories(${SDL_INCLUDE_DIR})
find_package(SDL_image REQUIRED)
include_directories(${SDLIMAGE_INCLUDE_DIR})
find_package(SDL_ttf REQUIRED)
include_directories(${SDLTTF_INCLUDE_DIR})
find_package(LibConfig++ REQUIRED)
include_directories(${LIBCONFIG++_INCLUDE_DIR})
find_program(ETAGS NAMES etags etags.emacs)
# Extra flags for GCC
if(CMAKE_COMPILER_IS_GNUCC)
add_definitions(-Wall -Wextra -Wabi -Wctor-dtor-privacy -Wnon-virtual-dtor -Wreorder -Weffc++ -Wold-style-cast -Wsign-promo -Wcast-qual)
endif(CMAKE_COMPILER_IS_GNUCC)
include_directories(${CMAKE_BINARY_DIR}/)
# The C++ source code
set(SOURCES
main.cc
except.cc
util.cc
bbengine.cc
menustate.cc
playstate.cc
helpstate.cc
textdisplaystate.cc
highscorestate.cc
textwriter.cc
resources.cc
effects.cc
)
if(WIN32 AND NOT UNIX)
# We do not care about Microsofts secure implementations of standard library functions
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
endif(WIN32 AND NOT UNIX)
# Create etags for emacs
add_custom_target(etags
COMMAND ${ETAGS} --declarations --ignore-indentation ${CMAKE_SOURCE_DIR}/*
COMMAND mv -f TAGS ${CMAKE_SOURCE_DIR}
)
link_libraries(
${SDL_LIBRARY}
${SDLIMAGE_LIBRARY}
${SDLTTF_LIBRARY}
${LIBCONFIG_LIBRARY}
)
add_executable(
blocks-and-bombs
WIN32 # Avoid DOS prompt to appear in Windows
${SOURCES}
)
# Installation rules
if(WIN32 AND NOT UNIX)
set(INSTALL_SUBDIR_BIN "." CACHE STRING "Installation subdir for binaries")
set(INSTALL_SUBDIR_SHARE "resources" CACHE STRING "Installation subdir for resources")
set(INSTALL_SUBDIR_DOC "." CACHE STRING "Installation subdir for docs")
# We need to ship the requred dll's for Windows
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/SDL.dll
${CMAKE_CURRENT_SOURCE_DIR}/SDL_image.dll
${CMAKE_CURRENT_SOURCE_DIR}/SDL_ttf.dll DESTINATION ${INSTALL_SUBDIR_BIN})
else(WIN32 AND NOT UNIX)
set(INSTALL_SUBDIR_BIN "bin" CACHE STRING "Installation subdir for binaries")
set(INSTALL_SUBDIR_SHARE "share/blocks-and-bombs" CACHE STRING "Installation subdir for resources")
set(INSTALL_SUBDIR_DOC "share/doc/blocks-and-bombs" CACHE STRING "Installation subdir for docs")
endif(WIN32 AND NOT UNIX)
if(DEVELOPMENT_BUILD)
set(RESOURCES_DIR ${CMAKE_CURRENT_SOURCE_DIR}/resources/)
else(DEVELOPMENT_BUILD)
set(RESOURCES_DIR ${CMAKE_INSTALL_PREFIX}/${INSTALL_SUBDIR_SHARE}/)
endif(DEVELOPMENT_BUILD)
install(TARGETS blocks-and-bombs DESTINATION ${INSTALL_SUBDIR_BIN})
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/README
${CMAKE_CURRENT_SOURCE_DIR}/COPYING
${CMAKE_CURRENT_SOURCE_DIR}/TODO
DESTINATION ${INSTALL_SUBDIR_DOC})
install(DIRECTORY
resources/images
resources/fonts
resources/levels
resources/animations
DESTINATION ${RESOURCES_DIR})
## Create config.h
configure_file(config.h.in ${CMAKE_BINARY_DIR}/config.h)
mark_as_advanced(
ETAGS
)