35 lines
1.1 KiB
CMake
35 lines
1.1 KiB
CMake
# Copyright (c) 2026 Dominic Masters
|
|
#
|
|
# This software is released under the MIT License.
|
|
# https://opensource.org/licenses/MIT
|
|
|
|
function(dusk_csv_to_enum INPUT_PATH OUTPUT_NAME_RELATIVE TYPEDEF PREFIX TAKE_COLUMN)
|
|
set(NULL_ENTRY TRUE)
|
|
set(COUNT_ENTRY TRUE)
|
|
|
|
# Take NULL_ENTRY and COUNT_ENTRY from ARGN
|
|
foreach(ARG IN LISTS ARGN)
|
|
if(ARG STREQUAL "NO_NULL_ENTRY")
|
|
set(NULL_ENTRY FALSE)
|
|
elseif(ARG STREQUAL "NO_COUNT_ENTRY")
|
|
set(COUNT_ENTRY FALSE)
|
|
endif()
|
|
endforeach()
|
|
|
|
set(DUSK_DEFS_TARGET_NAME "DUSK_DEFS_${OUTPUT_NAME_RELATIVE}")
|
|
string(REPLACE "." "_" DUSK_DEFS_TARGET_NAME ${DUSK_DEFS_TARGET_NAME})
|
|
string(REPLACE "/" "_" DUSK_DEFS_TARGET_NAME ${DUSK_DEFS_TARGET_NAME})
|
|
|
|
dusk_run_python(
|
|
${DUSK_DEFS_TARGET_NAME}
|
|
tools.csv_to_enum
|
|
--csv ${INPUT_PATH}
|
|
--output ${DUSK_GENERATED_HEADERS_DIR}/${OUTPUT_NAME_RELATIVE}
|
|
--typedef ${TYPEDEF}
|
|
--prefix ${PREFIX}
|
|
--take-column ${TAKE_COLUMN}
|
|
--null-entry ${NULL_ENTRY}
|
|
--count-entry ${COUNT_ENTRY}
|
|
)
|
|
add_dependencies(${DUSK_LIBRARY_TARGET_NAME} ${DUSK_DEFS_TARGET_NAME})
|
|
endfunction() |