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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
447
e1fa1b867281 cmake: resurrection
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 #
e1fa1b867281 cmake: resurrection
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 # CMakeLists.txt -- CMake build system for Molko's Engine
e1fa1b867281 cmake: resurrection
David Demelier <markand@malikania.fr>
parents:
diff changeset
3 #
e1fa1b867281 cmake: resurrection
David Demelier <markand@malikania.fr>
parents:
diff changeset
4 # Copyright (c) 2020-2022 David Demelier <markand@malikania.fr>
e1fa1b867281 cmake: resurrection
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 #
e1fa1b867281 cmake: resurrection
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 # Permission to use, copy, modify, and/or distribute this software for any
e1fa1b867281 cmake: resurrection
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 # purpose with or without fee is hereby granted, provided that the above
e1fa1b867281 cmake: resurrection
David Demelier <markand@malikania.fr>
parents:
diff changeset
8 # copyright notice and this permission notice appear in all copies.
e1fa1b867281 cmake: resurrection
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 #
e1fa1b867281 cmake: resurrection
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
e1fa1b867281 cmake: resurrection
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
e1fa1b867281 cmake: resurrection
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
e1fa1b867281 cmake: resurrection
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
e1fa1b867281 cmake: resurrection
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
e1fa1b867281 cmake: resurrection
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
e1fa1b867281 cmake: resurrection
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
e1fa1b867281 cmake: resurrection
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 #
e1fa1b867281 cmake: resurrection
David Demelier <markand@malikania.fr>
parents:
diff changeset
18
e1fa1b867281 cmake: resurrection
David Demelier <markand@malikania.fr>
parents:
diff changeset
19 include(${CMAKE_CURRENT_LIST_DIR}/MlkBcc.cmake)
e1fa1b867281 cmake: resurrection
David Demelier <markand@malikania.fr>
parents:
diff changeset
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
e1fa1b867281 cmake: resurrection
David Demelier <markand@malikania.fr>
parents:
diff changeset
23
e1fa1b867281 cmake: resurrection
David Demelier <markand@malikania.fr>
parents:
diff changeset
24 function(mlk_library)
e1fa1b867281 cmake: resurrection
David Demelier <markand@malikania.fr>
parents:
diff changeset
25 set(options "")
e1fa1b867281 cmake: resurrection
David Demelier <markand@malikania.fr>
parents:
diff changeset
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
e1fa1b867281 cmake: resurrection
David Demelier <markand@malikania.fr>
parents:
diff changeset
28
e1fa1b867281 cmake: resurrection
David Demelier <markand@malikania.fr>
parents:
diff changeset
29 cmake_parse_arguments(LIB "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
e1fa1b867281 cmake: resurrection
David Demelier <markand@malikania.fr>
parents:
diff changeset
30
e1fa1b867281 cmake: resurrection
David Demelier <markand@malikania.fr>
parents:
diff changeset
31 if (NOT LIB_NAME)
e1fa1b867281 cmake: resurrection
David Demelier <markand@malikania.fr>
parents:
diff changeset
32 message(FATAL_ERROR "Missing NAME")
e1fa1b867281 cmake: resurrection
David Demelier <markand@malikania.fr>
parents:
diff changeset
33 endif ()
e1fa1b867281 cmake: resurrection
David Demelier <markand@malikania.fr>
parents:
diff changeset
34
e1fa1b867281 cmake: resurrection
David Demelier <markand@malikania.fr>
parents:
diff changeset
35 if (LIB_ASSETS)
e1fa1b867281 cmake: resurrection
David Demelier <markand@malikania.fr>
parents:
diff changeset
36 mlk_bcc(ASSETS ${LIB_ASSETS} OUTPUTS_VAR HEADERS)
e1fa1b867281 cmake: resurrection
David Demelier <markand@malikania.fr>
parents:
diff changeset
37 source_group(build/assets FILES ${HEADERS})
e1fa1b867281 cmake: resurrection
David Demelier <markand@malikania.fr>
parents:
diff changeset
38 endif ()
e1fa1b867281 cmake: resurrection
David Demelier <markand@malikania.fr>
parents:
diff changeset
39
e1fa1b867281 cmake: resurrection
David Demelier <markand@malikania.fr>
parents:
diff changeset
40 if (LIB_LANGS AND MLK_WITH_NLS)
e1fa1b867281 cmake: resurrection
David Demelier <markand@malikania.fr>
parents:
diff changeset
41 mlk_nls(
e1fa1b867281 cmake: resurrection
David Demelier <markand@malikania.fr>
parents:
diff changeset
42 NAME ${LIB_NAME}
e1fa1b867281 cmake: resurrection
David Demelier <markand@malikania.fr>
parents:
diff changeset
43 LANGS ${LIB_LANGS}
e1fa1b867281 cmake: resurrection
David Demelier <markand@malikania.fr>
parents:
diff changeset
44 SOURCES ${LIB_SOURCES}
e1fa1b867281 cmake: resurrection
David Demelier <markand@malikania.fr>
parents:
diff changeset
45 OUTPUTS_VAR MO
e1fa1b867281 cmake: resurrection
David Demelier <markand@malikania.fr>
parents:
diff changeset
46 )
e1fa1b867281 cmake: resurrection
David Demelier <markand@malikania.fr>
parents:
diff changeset
47 source_group(build/nls FILES ${MO})
e1fa1b867281 cmake: resurrection
David Demelier <markand@malikania.fr>
parents:
diff changeset
48 endif ()
e1fa1b867281 cmake: resurrection
David Demelier <markand@malikania.fr>
parents:
diff changeset
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
e1fa1b867281 cmake: resurrection
David Demelier <markand@malikania.fr>
parents:
diff changeset
58
e1fa1b867281 cmake: resurrection
David Demelier <markand@malikania.fr>
parents:
diff changeset
59 if (LIB_FOLDER)
e1fa1b867281 cmake: resurrection
David Demelier <markand@malikania.fr>
parents:
diff changeset
60 set_target_properties(${LIB_NAME} PROPERTIES FOLDER extern)
e1fa1b867281 cmake: resurrection
David Demelier <markand@malikania.fr>
parents:
diff changeset
61 endif ()
e1fa1b867281 cmake: resurrection
David Demelier <markand@malikania.fr>
parents:
diff changeset
62
e1fa1b867281 cmake: resurrection
David Demelier <markand@malikania.fr>
parents:
diff changeset
63 if (LIB_FLAGS)
e1fa1b867281 cmake: resurrection
David Demelier <markand@malikania.fr>
parents:
diff changeset
64 target_compile_definitions(${LIB_NAME} ${LIB_FLAGS})
e1fa1b867281 cmake: resurrection
David Demelier <markand@malikania.fr>
parents:
diff changeset
65 endif ()
e1fa1b867281 cmake: resurrection
David Demelier <markand@malikania.fr>
parents:
diff changeset
66
e1fa1b867281 cmake: resurrection
David Demelier <markand@malikania.fr>
parents:
diff changeset
67 if (LIB_OPTIONS)
e1fa1b867281 cmake: resurrection
David Demelier <markand@malikania.fr>
parents:
diff changeset
68 target_compile_options(${LIB_NAME} ${LIB_OPTIONS})
e1fa1b867281 cmake: resurrection
David Demelier <markand@malikania.fr>
parents:
diff changeset
69 endif ()
e1fa1b867281 cmake: resurrection
David Demelier <markand@malikania.fr>
parents:
diff changeset
70
e1fa1b867281 cmake: resurrection
David Demelier <markand@malikania.fr>
parents:
diff changeset
71 if (LIB_LIBRARIES)
e1fa1b867281 cmake: resurrection
David Demelier <markand@malikania.fr>
parents:
diff changeset
72 target_link_libraries(${LIB_NAME} ${LIB_LIBRARIES})
e1fa1b867281 cmake: resurrection
David Demelier <markand@malikania.fr>
parents:
diff changeset
73 endif ()
e1fa1b867281 cmake: resurrection
David Demelier <markand@malikania.fr>
parents:
diff changeset
74
e1fa1b867281 cmake: resurrection
David Demelier <markand@malikania.fr>
parents:
diff changeset
75 if (LIB_INCLUDES)
e1fa1b867281 cmake: resurrection
David Demelier <markand@malikania.fr>
parents:
diff changeset
76 target_include_directories(${LIB_NAME} ${LIB_INCLUDES})
e1fa1b867281 cmake: resurrection
David Demelier <markand@malikania.fr>
parents:
diff changeset
77 endif ()
e1fa1b867281 cmake: resurrection
David Demelier <markand@malikania.fr>
parents:
diff changeset
78
e1fa1b867281 cmake: resurrection
David Demelier <markand@malikania.fr>
parents:
diff changeset
79 set_target_properties(${LIB_NAME} PROPERTIES PREFIX "")
e1fa1b867281 cmake: resurrection
David Demelier <markand@malikania.fr>
parents:
diff changeset
80 endfunction()