Mercurial > molko
annotate CMakeLists.txt @ 401:df5e1fea1d2e
ui: gridmenu should be fully constified
author | David Demelier <markand@malikania.fr> |
---|---|
date | Wed, 16 Mar 2022 13:37:56 +0100 |
parents | 8273c40a5691 |
children | 7536be134718 |
rev | line source |
---|---|
313
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
1 # |
366
19782ea1cf4a
misc: start rebranding
David Demelier <markand@malikania.fr>
parents:
364
diff
changeset
|
2 # CMakeLists.txt -- CMake build system for Molko's Engine |
313
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
3 # |
378
460c78706989
misc: update copyright years
David Demelier <markand@malikania.fr>
parents:
366
diff
changeset
|
4 # Copyright (c) 2020-2022 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) |
394
8273c40a5691
core: disable openal-soft logs
David Demelier <markand@malikania.fr>
parents:
379
diff
changeset
|
26 set(CMAKE_C_EXTENSIONS On) |
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") |
394
8273c40a5691
core: disable openal-soft logs
David Demelier <markand@malikania.fr>
parents:
379
diff
changeset
|
30 set(CMAKE_C_FLAGS "-Wall -Wextra -Wno-deprecated-declarations -Wno-unknown-pragmas -pedantic ${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 |
337
68b9d010e081
js: add minimal Javascript binding
David Demelier <markand@malikania.fr>
parents:
336
diff
changeset
|
40 option(MLK_WITH_EXAMPLES "Enable examples" Off) |
68b9d010e081
js: add minimal Javascript binding
David Demelier <markand@malikania.fr>
parents:
336
diff
changeset
|
41 option(MLK_WITH_JS "Enable Javascript bindings" On) |
313
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
42 option(MLK_WITH_NLS "Enable NLS support" On) |
337
68b9d010e081
js: add minimal Javascript binding
David Demelier <markand@malikania.fr>
parents:
336
diff
changeset
|
43 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
|
44 option(MLK_WITH_ZIP "Enable zip file support" On) |
313
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
45 option(MLK_WITH_ZSTD "Enable zstd compression" On) |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
46 |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
47 include(cmake/MlkBcc.cmake) |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
48 include(cmake/MlkExecutable.cmake) |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
49 include(cmake/MlkLibrary.cmake) |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
50 include(cmake/MlkMap.cmake) |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
51 include(cmake/MlkNls.cmake) |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
52 include(cmake/MlkTileset.cmake) |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
53 |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
54 include(GNUInstallDirs) |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
55 |
379
67c1c46af2c8
core: replace SDL2_mixer with OpenAL, closes #2528 @3h
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
56 find_package(SDL2 REQUIRED COMPONENTS image ttf) |
67c1c46af2c8
core: replace SDL2_mixer with OpenAL, closes #2528 @3h
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
57 find_package(OpenAL REQUIRED) |
67c1c46af2c8
core: replace SDL2_mixer with OpenAL, closes #2528 @3h
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
58 find_package(SndFile REQUIRED) |
313
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
59 find_package(Jansson REQUIRED) |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
60 |
351
955e2f45ba8a
cmake: fix math library
David Demelier <markand@malikania.fr>
parents:
348
diff
changeset
|
61 # POSIX math library isn't available everywhere. |
955e2f45ba8a
cmake: fix math library
David Demelier <markand@malikania.fr>
parents:
348
diff
changeset
|
62 find_library(M_LIBRARY m) |
955e2f45ba8a
cmake: fix math library
David Demelier <markand@malikania.fr>
parents:
348
diff
changeset
|
63 |
348
7d7991f97acf
misc: be more barebone portable
David Demelier <markand@malikania.fr>
parents:
337
diff
changeset
|
64 configure_file( |
7d7991f97acf
misc: be more barebone portable
David Demelier <markand@malikania.fr>
parents:
337
diff
changeset
|
65 ${molko_SOURCE_DIR}/src/config.h.in |
7d7991f97acf
misc: be more barebone portable
David Demelier <markand@malikania.fr>
parents:
337
diff
changeset
|
66 ${molko_BINARY_DIR}/src/config.h |
7d7991f97acf
misc: be more barebone portable
David Demelier <markand@malikania.fr>
parents:
337
diff
changeset
|
67 ) |
7d7991f97acf
misc: be more barebone portable
David Demelier <markand@malikania.fr>
parents:
337
diff
changeset
|
68 include_directories(${molko_BINARY_DIR}/src) |
7d7991f97acf
misc: be more barebone portable
David Demelier <markand@malikania.fr>
parents:
337
diff
changeset
|
69 |
337
68b9d010e081
js: add minimal Javascript binding
David Demelier <markand@malikania.fr>
parents:
336
diff
changeset
|
70 if (MLK_WITH_JS) |
68b9d010e081
js: add minimal Javascript binding
David Demelier <markand@malikania.fr>
parents:
336
diff
changeset
|
71 add_subdirectory(extern/libduktape) |
68b9d010e081
js: add minimal Javascript binding
David Demelier <markand@malikania.fr>
parents:
336
diff
changeset
|
72 endif () |
68b9d010e081
js: add minimal Javascript binding
David Demelier <markand@malikania.fr>
parents:
336
diff
changeset
|
73 |
313
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
74 if (MLK_WITH_NLS) |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
75 find_package(NLS REQUIRED) |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
76 find_package(Intl REQUIRED) |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
77 endif () |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
78 |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
79 if (MLK_WITH_ZSTD) |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
80 find_package(ZSTD REQUIRED) |
317
764f65dfa46d
misc: various fixes for glibc
David Demelier <markand@malikania.fr>
parents:
316
diff
changeset
|
81 |
764f65dfa46d
misc: various fixes for glibc
David Demelier <markand@malikania.fr>
parents:
316
diff
changeset
|
82 # Compressor is required as well. |
764f65dfa46d
misc: various fixes for glibc
David Demelier <markand@malikania.fr>
parents:
316
diff
changeset
|
83 if (NOT TARGET ZSTD::exe) |
764f65dfa46d
misc: various fixes for glibc
David Demelier <markand@malikania.fr>
parents:
316
diff
changeset
|
84 message(FATAL_ERROR "Missing zstd command line utility") |
764f65dfa46d
misc: various fixes for glibc
David Demelier <markand@malikania.fr>
parents:
316
diff
changeset
|
85 endif () |
313
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
86 endif () |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
87 |
335
68287c7bcdb5
core: implement vfs-zip (read-only)
David Demelier <markand@malikania.fr>
parents:
333
diff
changeset
|
88 if (MLK_WITH_ZIP) |
68287c7bcdb5
core: implement vfs-zip (read-only)
David Demelier <markand@malikania.fr>
parents:
333
diff
changeset
|
89 find_package(Libzip REQUIRED) |
68287c7bcdb5
core: implement vfs-zip (read-only)
David Demelier <markand@malikania.fr>
parents:
333
diff
changeset
|
90 endif () |
68287c7bcdb5
core: implement vfs-zip (read-only)
David Demelier <markand@malikania.fr>
parents:
333
diff
changeset
|
91 |
313
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
92 add_subdirectory(extern/libsqlite) |
333 | 93 add_subdirectory(extern/librexo) |
313
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
94 |
320
8f9937403749
misc: improve loading of data
David Demelier <markand@malikania.fr>
parents:
319
diff
changeset
|
95 add_subdirectory(src/tools/bcc) |
8f9937403749
misc: improve loading of data
David Demelier <markand@malikania.fr>
parents:
319
diff
changeset
|
96 add_subdirectory(src/tools/tileset) |
8f9937403749
misc: improve loading of data
David Demelier <markand@malikania.fr>
parents:
319
diff
changeset
|
97 add_subdirectory(src/tools/map) |
313
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
98 |
320
8f9937403749
misc: improve loading of data
David Demelier <markand@malikania.fr>
parents:
319
diff
changeset
|
99 add_subdirectory(src/libmlk-port) |
8f9937403749
misc: improve loading of data
David Demelier <markand@malikania.fr>
parents:
319
diff
changeset
|
100 add_subdirectory(src/libmlk-core) |
8f9937403749
misc: improve loading of data
David Demelier <markand@malikania.fr>
parents:
319
diff
changeset
|
101 add_subdirectory(src/libmlk-ui) |
8f9937403749
misc: improve loading of data
David Demelier <markand@malikania.fr>
parents:
319
diff
changeset
|
102 add_subdirectory(src/libmlk-rpg) |
313
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
103 |
337
68b9d010e081
js: add minimal Javascript binding
David Demelier <markand@malikania.fr>
parents:
336
diff
changeset
|
104 if (MLK_WITH_JS) |
68b9d010e081
js: add minimal Javascript binding
David Demelier <markand@malikania.fr>
parents:
336
diff
changeset
|
105 add_subdirectory(src/libmlk-core-js) |
68b9d010e081
js: add minimal Javascript binding
David Demelier <markand@malikania.fr>
parents:
336
diff
changeset
|
106 add_subdirectory(src/mlk-run) |
68b9d010e081
js: add minimal Javascript binding
David Demelier <markand@malikania.fr>
parents:
336
diff
changeset
|
107 endif () |
68b9d010e081
js: add minimal Javascript binding
David Demelier <markand@malikania.fr>
parents:
336
diff
changeset
|
108 |
313
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
109 if (MLK_WITH_TESTS) |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
110 enable_testing() |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
111 add_subdirectory(tests) |
dbfe05b88627
cmake: bring back for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
112 endif () |
325
cd8b87ddd1e7
examples: bring back to live using CMake
David Demelier <markand@malikania.fr>
parents:
320
diff
changeset
|
113 |
cd8b87ddd1e7
examples: bring back to live using CMake
David Demelier <markand@malikania.fr>
parents:
320
diff
changeset
|
114 if (MLK_WITH_EXAMPLES) |
cd8b87ddd1e7
examples: bring back to live using CMake
David Demelier <markand@malikania.fr>
parents:
320
diff
changeset
|
115 add_subdirectory(examples) |
cd8b87ddd1e7
examples: bring back to live using CMake
David Demelier <markand@malikania.fr>
parents:
320
diff
changeset
|
116 endif () |