Mercurial > molko
view libmlk-data/CMakeLists.txt @ 264:9bbbabb6f077
cmake: make macros simpler
author | David Demelier <markand@malikania.fr> |
---|---|
date | Wed, 09 Dec 2020 21:22:21 +0100 |
parents | cd5bdb995052 |
children |
line wrap: on
line source
# # CMakeLists.txt -- CMake build system for molko # # Copyright (c) 2020 David Demelier <markand@malikania.fr> # # Permission to use, copy, modify, and/or distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # project(libmlk-data) # # The following projects use the data: # # - examples, # - libmlk-adventure (implies mlk-adventure), # - tests. # set( DIRECTORIES fonts images maps music sounds sprites ) # Directories to not link but create instead (for converting files). set(NO_LINK maps) set( MAPS ${libmlk-data_SOURCE_DIR}/maps/map-world.json ) set( TILESETS ${libmlk-data_SOURCE_DIR}/maps/tileset-world.json ) if (NOT IS_ABSOLUTE ${CMAKE_INSTALL_DATADIR}) set(directories) foreach (d ${DIRECTORIES}) set(outputdir ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/${CMAKE_INSTALL_DATADIR}/mlk-adventure) # If no link, copy the whole directory instead. if (${d} IN_LIST NO_LINK) add_custom_command( OUTPUT ${outputdir}/${d} COMMENT "Copying data ${d} to binary directory ${outputdir}" VERBATIM DEPENDS ${libmlk-data_SOURCE_DIR}/${d} COMMAND ${CMAKE_COMMAND} -E copy_directory ${libmlk-data_SOURCE_DIR}/${d} ${outputdir}/${d} ) else () add_custom_command( OUTPUT ${outputdir}/${d} COMMENT "Linking data ${d} to binary directory ${outputdir}" VERBATIM DEPENDS ${libmlk-data_SOURCE_DIR}/${d} COMMAND ${CMAKE_COMMAND} -E make_directory ${outputdir} COMMAND ${CMAKE_COMMAND} -E create_symlink ${libmlk-data_SOURCE_DIR}/${d} ${outputdir}/${d} ) endif () list(APPEND directories ${outputdir}/${d}) endforeach () endif () foreach (d ${DIRECTORIES}) install( DIRECTORY ${libmlk-data_SOURCE_DIR}/${d} DESTINATION ${CMAKE_INSTALL_DATADIR}/mlk-adventure PATTERN REGEX "\\.(json|xcf)$" EXCLUDE ) endforeach () # Convert maps and tilesets too. molko_build_maps( OUTPUT_DIR mlk-adventure/maps OUTPUTS objects MAPS ${MAPS} TILESETS ${TILESETS} ) molko_define_library( TARGET libmlk-data TYPE INTERFACE SOURCES ${directories} ${objects} )