Mercurial > molko
annotate cmake/MlkLibrary.cmake @ 551:856c2e96189d
cmake: add support for maps/tilesets
author | David Demelier <markand@malikania.fr> |
---|---|
date | Mon, 06 Mar 2023 20:44:43 +0100 |
parents | e1fa1b867281 |
children | 8cf895e51fb6 |
rev | line source |
---|---|
447 | 1 # |
2 # CMakeLists.txt -- CMake build system for Molko's Engine | |
3 # | |
4 # Copyright (c) 2020-2022 David Demelier <markand@malikania.fr> | |
5 # | |
6 # Permission to use, copy, modify, and/or distribute this software for any | |
7 # purpose with or without fee is hereby granted, provided that the above | |
8 # copyright notice and this permission notice appear in all copies. | |
9 # | |
10 # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | |
11 # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | |
12 # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | |
13 # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | |
14 # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | |
15 # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | |
16 # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |
17 # | |
18 | |
19 include(${CMAKE_CURRENT_LIST_DIR}/MlkBcc.cmake) | |
20 include(${CMAKE_CURRENT_LIST_DIR}/MlkNls.cmake) | |
551
856c2e96189d
cmake: add support for maps/tilesets
David Demelier <markand@malikania.fr>
parents:
447
diff
changeset
|
21 include(${CMAKE_CURRENT_LIST_DIR}/MlkMap.cmake) |
856c2e96189d
cmake: add support for maps/tilesets
David Demelier <markand@malikania.fr>
parents:
447
diff
changeset
|
22 include(${CMAKE_CURRENT_LIST_DIR}/MlkTileset.cmake) |
447 | 23 |
24 function(mlk_library) | |
25 set(options "") | |
26 set(oneValueArgs "NAME;FOLDER;TYPE") | |
551
856c2e96189d
cmake: add support for maps/tilesets
David Demelier <markand@malikania.fr>
parents:
447
diff
changeset
|
27 set(multiValueArgs "SOURCES;ASSETS;LANGS;LIBRARIES;INCLUDES;FLAGS;OPTIONS;MAPS;TILESETS") |
447 | 28 |
29 cmake_parse_arguments(LIB "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) | |
30 | |
31 if (NOT LIB_NAME) | |
32 message(FATAL_ERROR "Missing NAME") | |
33 endif () | |
34 | |
35 if (LIB_ASSETS) | |
36 mlk_bcc(ASSETS ${LIB_ASSETS} OUTPUTS_VAR HEADERS) | |
37 source_group(build/assets FILES ${HEADERS}) | |
38 endif () | |
39 | |
40 if (LIB_LANGS AND MLK_WITH_NLS) | |
41 mlk_nls( | |
42 NAME ${LIB_NAME} | |
43 LANGS ${LIB_LANGS} | |
44 SOURCES ${LIB_SOURCES} | |
45 OUTPUTS_VAR MO | |
46 ) | |
47 source_group(build/nls FILES ${MO}) | |
48 endif () | |
49 | |
551
856c2e96189d
cmake: add support for maps/tilesets
David Demelier <markand@malikania.fr>
parents:
447
diff
changeset
|
50 if (LIB_MAPS) |
856c2e96189d
cmake: add support for maps/tilesets
David Demelier <markand@malikania.fr>
parents:
447
diff
changeset
|
51 mlk_maps("${LIB_MAPS}" ${CMAKE_CURRENT_BINARY_DIR}/maps maps) |
856c2e96189d
cmake: add support for maps/tilesets
David Demelier <markand@malikania.fr>
parents:
447
diff
changeset
|
52 endif () |
856c2e96189d
cmake: add support for maps/tilesets
David Demelier <markand@malikania.fr>
parents:
447
diff
changeset
|
53 if (LIB_TILESETS) |
856c2e96189d
cmake: add support for maps/tilesets
David Demelier <markand@malikania.fr>
parents:
447
diff
changeset
|
54 mlk_tilesets("${LIB_TILESETS}" ${CMAKE_CURRENT_BINARY_DIR}/tilesets tilesets) |
856c2e96189d
cmake: add support for maps/tilesets
David Demelier <markand@malikania.fr>
parents:
447
diff
changeset
|
55 endif () |
856c2e96189d
cmake: add support for maps/tilesets
David Demelier <markand@malikania.fr>
parents:
447
diff
changeset
|
56 |
856c2e96189d
cmake: add support for maps/tilesets
David Demelier <markand@malikania.fr>
parents:
447
diff
changeset
|
57 add_library(${LIB_NAME} ${LIB_TYPE} ${LIB_SOURCES} ${HEADERS} ${MO} ${maps} ${tilesets}) |
447 | 58 |
59 if (LIB_FOLDER) | |
60 set_target_properties(${LIB_NAME} PROPERTIES FOLDER extern) | |
61 endif () | |
62 | |
63 if (LIB_FLAGS) | |
64 target_compile_definitions(${LIB_NAME} ${LIB_FLAGS}) | |
65 endif () | |
66 | |
67 if (LIB_OPTIONS) | |
68 target_compile_options(${LIB_NAME} ${LIB_OPTIONS}) | |
69 endif () | |
70 | |
71 if (LIB_LIBRARIES) | |
72 target_link_libraries(${LIB_NAME} ${LIB_LIBRARIES}) | |
73 endif () | |
74 | |
75 if (LIB_INCLUDES) | |
76 target_include_directories(${LIB_NAME} ${LIB_INCLUDES}) | |
77 endif () | |
78 | |
79 set_target_properties(${LIB_NAME} PROPERTIES PREFIX "") | |
80 endfunction() |