summaryrefslogtreecommitdiff
path: root/tools/generate-tiles/CMakeLists.txt
diff options
context:
space:
mode:
authorHannes Schulze <haschu0103@outlook.de>2025-02-01 14:21:04 +0100
committerHannes Schulze <haschu0103@outlook.de>2025-02-01 14:29:12 +0100
commitbf88e17d552d85cd18bc31757ef9d73049b327c4 (patch)
treebf46e60bef0fc2247c44cf2291fbfa38765a7b98 /tools/generate-tiles/CMakeLists.txt
parentcbde52a60605a4fe853d3a3562b2a059e2143e6e (diff)
implement text rendering
Diffstat (limited to 'tools/generate-tiles/CMakeLists.txt')
-rw-r--r--tools/generate-tiles/CMakeLists.txt43
1 files changed, 43 insertions, 0 deletions
diff --git a/tools/generate-tiles/CMakeLists.txt b/tools/generate-tiles/CMakeLists.txt
new file mode 100644
index 0000000..fc7d7f0
--- /dev/null
+++ b/tools/generate-tiles/CMakeLists.txt
@@ -0,0 +1,43 @@
+add_executable(nes_tool_generate_tiles)
+
+target_include_directories(nes_tool_generate_tiles PRIVATE .)
+target_include_directories(nes_tool_generate_tiles SYSTEM PRIVATE third-party)
+target_link_libraries(nes_tool_generate_tiles PRIVATE nes::options)
+
+target_sources(nes_tool_generate_tiles PRIVATE main.cc)
+
+function(nes_generate_tiles TARGET_NAME NAME)
+ cmake_parse_arguments(ARGS "" "TYPE" "FILES" ${ARGN})
+ if(NOT DEFINED ARGS_TYPE)
+ message(FATAL_ERROR "nes_generate_tiles: Missing TYPE")
+ endif()
+ if(NOT DEFINED ARGS_FILES)
+ message(FATAL_ERROR "nes_generate_tiles: Missing FILES")
+ endif()
+
+ set(CODEGEN_TARGET "nes_tiles_${NAME}")
+ set(CODEGEN_BASE "${CMAKE_CURRENT_BINARY_DIR}/generated")
+ set(CODEGEN_DIR "${CODEGEN_BASE}/nes/app/graphics/tiles")
+ set(CODEGEN_SOURCE "${CODEGEN_DIR}/${NAME}.cc")
+ set(CODEGEN_HEADER "${CODEGEN_DIR}/${NAME}.hh")
+ file(MAKE_DIRECTORY "${RESOURCES_INCLUDE_DIR}")
+
+ add_custom_command(
+ OUTPUT "${CODEGEN_SOURCE}" "${CODEGEN_HEADER}"
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+ COMMAND nes_tool_generate_tiles
+ ARGS
+ "${ARGS_TYPE}"
+ "${CODEGEN_HEADER}"
+ "${CODEGEN_SOURCE}"
+ ${ARGS_FILES}
+ VERBATIM
+ DEPENDS ${ARGS_FILES})
+
+ add_custom_target(${CODEGEN_TARGET} DEPENDS "${CODEGEN_SOURCE}" "${CODEGEN_HEADER}")
+ target_include_directories(${TARGET_NAME} PRIVATE "${CODEGEN_BASE}")
+ target_sources(${TARGET_NAME} PRIVATE "${CODEGEN_SOURCE}" "${CODEGEN_HEADER}")
+ set_source_files_properties("${CODEGEN_SOURCE}" PROPERTIES GENERATED TRUE)
+ set_source_files_properties("${CODEGEN_HEADER}" PROPERTIES GENERATED TRUE)
+ add_dependencies(${TARGET_NAME} ${CODEGEN_TARGET})
+endfunction() \ No newline at end of file