Mercurial > molko
annotate CMakeLists.txt @ 364:570ab19bf268
misc: start removing adventure from library
author | David Demelier <markand@malikania.fr> |
---|---|
date | Sun, 24 Oct 2021 11:29:04 +0200 |
parents | 12367bfc2df6 |
children | 19782ea1cf4a |
rev | line source |
---|---|
313
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
1 # |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
2 # CMakeLists.txt -- CMake build system for Molko's Adventure |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
3 # |
314 | 4 # Copyright (c) 2020-2021 David Demelier <markand@malikania.fr> |
313
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
5 # |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
6 # Permission to use, copy, modify, and/or distribute this software for any |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
7 # purpose with or without fee is hereby granted, provided that the above |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
8 # copyright notice and this permission notice appear in all copies. |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
9 # |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
10 # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
11 # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
12 # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
13 # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
14 # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
15 # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
16 # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
17 # |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
18 |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
19 cmake_minimum_required(VERSION 3.20) |
319
b843eef4cc35
misc: fix some warnings
David Demelier <markand@malikania.fr>
parents:
318
diff
changeset
|
20 project(molko C) |
313
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
21 |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
22 set_property(GLOBAL PROPERTY USE_FOLDERS On) |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
23 |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
24 set(CMAKE_C_STANDARD 11) |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
25 set(CMAKE_C_STANDARD_REQUIRED On) |
315
3bfaaf5342a9
cmake: add support for Visual Studio 2019
David Demelier <markand@malikania.fr>
parents:
314
diff
changeset
|
26 set(CMAKE_C_EXTENSIONS Off) |
313
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
27 set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake) |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
28 |
315
3bfaaf5342a9
cmake: add support for Visual Studio 2019
David Demelier <markand@malikania.fr>
parents:
314
diff
changeset
|
29 if (CMAKE_C_COMPILER_ID MATCHES "GNU|Clang") |
317
764f65dfa46d
misc: various fixes for glibc
David Demelier <markand@malikania.fr>
parents:
316
diff
changeset
|
30 set(CMAKE_C_FLAGS "-Wall -Wextra -pedantic -D_POSIX_C_SOURCE=200809L ${CMAKE_C_FLAGS}") |
361
39f5d932941a
misc: fix some warnings
David Demelier <markand@malikania.fr>
parents:
351
diff
changeset
|
31 |
39f5d932941a
misc: fix some warnings
David Demelier <markand@malikania.fr>
parents:
351
diff
changeset
|
32 if (CMAKE_C_COMPILER_ID MATCHES "GNU") |
39f5d932941a
misc: fix some warnings
David Demelier <markand@malikania.fr>
parents:
351
diff
changeset
|
33 set(CMAKE_C_FLAGS "-Wno-format-truncation ${CMAKE_C_FLAGS}") |
39f5d932941a
misc: fix some warnings
David Demelier <markand@malikania.fr>
parents:
351
diff
changeset
|
34 endif () |
315
3bfaaf5342a9
cmake: add support for Visual Studio 2019
David Demelier <markand@malikania.fr>
parents:
314
diff
changeset
|
35 elseif (CMAKE_C_COMPILER_ID MATCHES "MSVC") |
362
12367bfc2df6
misc: even more warnings cleaned
David Demelier <markand@malikania.fr>
parents:
361
diff
changeset
|
36 set(CMAKE_C_FLAGS "/W3 /wd4090 /wd4244 /wd4267 /wd4996 /wd5105 /wd6031 /wd6001 /wd26451 ${CMAKE_C_FLAGS}") |
12367bfc2df6
misc: even more warnings cleaned
David Demelier <markand@malikania.fr>
parents:
361
diff
changeset
|
37 set(CMAKE_C_FLAGS "/D_CRT_SECURE_NO_WARNINGS ${CMAKE_C_FLAGS}") |
315
3bfaaf5342a9
cmake: add support for Visual Studio 2019
David Demelier <markand@malikania.fr>
parents:
314
diff
changeset
|
38 endif () |
3bfaaf5342a9
cmake: add support for Visual Studio 2019
David Demelier <markand@malikania.fr>
parents:
314
diff
changeset
|
39 |
318
d3505c23a409
mac: fix build because Apple is not POSIX compliant
David Demelier <markand@malikania.fr>
parents:
317
diff
changeset
|
40 if (CMAKE_SYSTEM_NAME MATCHES "Darwin") |
d3505c23a409
mac: fix build because Apple is not POSIX compliant
David Demelier <markand@malikania.fr>
parents:
317
diff
changeset
|
41 set(CMAKE_C_FLAGS "-D_DARWIN_C_SOURCE ${CMAKE_C_FLAGS}") |
d3505c23a409
mac: fix build because Apple is not POSIX compliant
David Demelier <markand@malikania.fr>
parents:
317
diff
changeset
|
42 endif () |
d3505c23a409
mac: fix build because Apple is not POSIX compliant
David Demelier <markand@malikania.fr>
parents:
317
diff
changeset
|
43 |
337
68b9d010e081
js: add minimal Javascript binding
David Demelier <markand@malikania.fr>
parents:
336
diff
changeset
|
44 option(MLK_WITH_EXAMPLES "Enable examples" Off) |
68b9d010e081
js: add minimal Javascript binding
David Demelier <markand@malikania.fr>
parents:
336
diff
changeset
|
45 option(MLK_WITH_JS "Enable Javascript bindings" On) |
313
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
46 option(MLK_WITH_NLS "Enable NLS support" On) |
337
68b9d010e081
js: add minimal Javascript binding
David Demelier <markand@malikania.fr>
parents:
336
diff
changeset
|
47 option(MLK_WITH_TESTS "Enable unit tests" Off) |
335
68287c7bcdb5
core: implement vfs-zip (read-only)
David Demelier <markand@malikania.fr>
parents:
333
diff
changeset
|
48 option(MLK_WITH_ZIP "Enable zip file support" On) |
313
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
49 option(MLK_WITH_ZSTD "Enable zstd compression" On) |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
50 |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
51 include(cmake/MlkBcc.cmake) |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
52 include(cmake/MlkExecutable.cmake) |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
53 include(cmake/MlkLibrary.cmake) |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
54 include(cmake/MlkMap.cmake) |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
55 include(cmake/MlkNls.cmake) |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
56 include(cmake/MlkTileset.cmake) |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
57 |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
58 include(GNUInstallDirs) |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
59 |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
60 find_package(SDL2 REQUIRED COMPONENTS image mixer ttf) |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
61 find_package(Jansson REQUIRED) |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
62 |
351
955e2f45ba8a
cmake: fix math library
David Demelier <markand@malikania.fr>
parents:
348
diff
changeset
|
63 # POSIX math library isn't available everywhere. |
955e2f45ba8a
cmake: fix math library
David Demelier <markand@malikania.fr>
parents:
348
diff
changeset
|
64 find_library(M_LIBRARY m) |
955e2f45ba8a
cmake: fix math library
David Demelier <markand@malikania.fr>
parents:
348
diff
changeset
|
65 |
348
7d7991f97acf
misc: be more barebone portable
David Demelier <markand@malikania.fr>
parents:
337
diff
changeset
|
66 configure_file( |
7d7991f97acf
misc: be more barebone portable
David Demelier <markand@malikania.fr>
parents:
337
diff
changeset
|
67 ${molko_SOURCE_DIR}/src/config.h.in |
7d7991f97acf
misc: be more barebone portable
David Demelier <markand@malikania.fr>
parents:
337
diff
changeset
|
68 ${molko_BINARY_DIR}/src/config.h |
7d7991f97acf
misc: be more barebone portable
David Demelier <markand@malikania.fr>
parents:
337
diff
changeset
|
69 ) |
7d7991f97acf
misc: be more barebone portable
David Demelier <markand@malikania.fr>
parents:
337
diff
changeset
|
70 include_directories(${molko_BINARY_DIR}/src) |
7d7991f97acf
misc: be more barebone portable
David Demelier <markand@malikania.fr>
parents:
337
diff
changeset
|
71 |
337
68b9d010e081
js: add minimal Javascript binding
David Demelier <markand@malikania.fr>
parents:
336
diff
changeset
|
72 if (MLK_WITH_JS) |
68b9d010e081
js: add minimal Javascript binding
David Demelier <markand@malikania.fr>
parents:
336
diff
changeset
|
73 add_subdirectory(extern/libduktape) |
68b9d010e081
js: add minimal Javascript binding
David Demelier <markand@malikania.fr>
parents:
336
diff
changeset
|
74 endif () |
68b9d010e081
js: add minimal Javascript binding
David Demelier <markand@malikania.fr>
parents:
336
diff
changeset
|
75 |
313
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
76 if (MLK_WITH_NLS) |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
77 find_package(NLS REQUIRED) |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
78 find_package(Intl REQUIRED) |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
79 endif () |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
80 |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
81 if (MLK_WITH_ZSTD) |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
82 find_package(ZSTD REQUIRED) |
317
764f65dfa46d
misc: various fixes for glibc
David Demelier <markand@malikania.fr>
parents:
316
diff
changeset
|
83 |
764f65dfa46d
misc: various fixes for glibc
David Demelier <markand@malikania.fr>
parents:
316
diff
changeset
|
84 # Compressor is required as well. |
764f65dfa46d
misc: various fixes for glibc
David Demelier <markand@malikania.fr>
parents:
316
diff
changeset
|
85 if (NOT TARGET ZSTD::exe) |
764f65dfa46d
misc: various fixes for glibc
David Demelier <markand@malikania.fr>
parents:
316
diff
changeset
|
86 message(FATAL_ERROR "Missing zstd command line utility") |
764f65dfa46d
misc: various fixes for glibc
David Demelier <markand@malikania.fr>
parents:
316
diff
changeset
|
87 endif () |
313
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
88 endif () |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
89 |
335
68287c7bcdb5
core: implement vfs-zip (read-only)
David Demelier <markand@malikania.fr>
parents:
333
diff
changeset
|
90 if (MLK_WITH_ZIP) |
68287c7bcdb5
core: implement vfs-zip (read-only)
David Demelier <markand@malikania.fr>
parents:
333
diff
changeset
|
91 find_package(Libzip REQUIRED) |
68287c7bcdb5
core: implement vfs-zip (read-only)
David Demelier <markand@malikania.fr>
parents:
333
diff
changeset
|
92 endif () |
68287c7bcdb5
core: implement vfs-zip (read-only)
David Demelier <markand@malikania.fr>
parents:
333
diff
changeset
|
93 |
313
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
94 add_subdirectory(extern/libsqlite) |
333 | 95 add_subdirectory(extern/librexo) |
313
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
96 |
320
8f9937403749
misc: improve loading of data
David Demelier <markand@malikania.fr>
parents:
319
diff
changeset
|
97 add_subdirectory(src/tools/bcc) |
8f9937403749
misc: improve loading of data
David Demelier <markand@malikania.fr>
parents:
319
diff
changeset
|
98 add_subdirectory(src/tools/tileset) |
8f9937403749
misc: improve loading of data
David Demelier <markand@malikania.fr>
parents:
319
diff
changeset
|
99 add_subdirectory(src/tools/map) |
313
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
100 |
320
8f9937403749
misc: improve loading of data
David Demelier <markand@malikania.fr>
parents:
319
diff
changeset
|
101 add_subdirectory(src/libmlk-port) |
8f9937403749
misc: improve loading of data
David Demelier <markand@malikania.fr>
parents:
319
diff
changeset
|
102 add_subdirectory(src/libmlk-core) |
8f9937403749
misc: improve loading of data
David Demelier <markand@malikania.fr>
parents:
319
diff
changeset
|
103 add_subdirectory(src/libmlk-ui) |
8f9937403749
misc: improve loading of data
David Demelier <markand@malikania.fr>
parents:
319
diff
changeset
|
104 add_subdirectory(src/libmlk-rpg) |
313
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
105 |
337
68b9d010e081
js: add minimal Javascript binding
David Demelier <markand@malikania.fr>
parents:
336
diff
changeset
|
106 if (MLK_WITH_JS) |
68b9d010e081
js: add minimal Javascript binding
David Demelier <markand@malikania.fr>
parents:
336
diff
changeset
|
107 add_subdirectory(src/libmlk-core-js) |
68b9d010e081
js: add minimal Javascript binding
David Demelier <markand@malikania.fr>
parents:
336
diff
changeset
|
108 add_subdirectory(src/mlk-run) |
68b9d010e081
js: add minimal Javascript binding
David Demelier <markand@malikania.fr>
parents:
336
diff
changeset
|
109 endif () |
68b9d010e081
js: add minimal Javascript binding
David Demelier <markand@malikania.fr>
parents:
336
diff
changeset
|
110 |
313
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
111 if (MLK_WITH_TESTS) |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
112 enable_testing() |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
113 add_subdirectory(tests) |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
114 endif () |
325
cd8b87ddd1e7
examples: bring back to live using CMake
David Demelier <markand@malikania.fr>
parents:
320
diff
changeset
|
115 |
cd8b87ddd1e7
examples: bring back to live using CMake
David Demelier <markand@malikania.fr>
parents:
320
diff
changeset
|
116 if (MLK_WITH_EXAMPLES) |
cd8b87ddd1e7
examples: bring back to live using CMake
David Demelier <markand@malikania.fr>
parents:
320
diff
changeset
|
117 add_subdirectory(examples) |
cd8b87ddd1e7
examples: bring back to live using CMake
David Demelier <markand@malikania.fr>
parents:
320
diff
changeset
|
118 endif () |