Cmake: avoid policy warning in newstorke upgrade target

This commit is contained in:
John Beard 2024-11-27 19:21:24 +08:00
parent 8470229767
commit 8de99b8077
2 changed files with 26 additions and 17 deletions

View File

@ -23,19 +23,19 @@ endif()
# KICAD_CLI_UPGRADE_SYMS(FILE TARGET [FORCE]) # KICAD_CLI_UPGRADE_SYMS(FILE TARGET [FORCE])
# #
# Arguments: # Arguments:
# FILE - The symbol library file to upgrade # FILES - The symbol library file to upgrade
# TARGET - The CMake target to add the upgrade command to # TARGET - The CMake target to add the upgrade command to
# FORCE - Optional argument to force the upgrade # FORCE - Optional argument to force the upgrade
# #
function(KICAD_CLI_UPGRADE_SYMS FILE TARGET) function(KICAD_CLI_UPGRADE_SYMS)
if (NOT KICAD_CLI) if (NOT KICAD_CLI)
message(FATAL_ERROR "Cannot run upgrade target (kicad-cli not found)") message(FATAL_ERROR "Cannot run upgrade target (kicad-cli not found)")
endif() endif()
# Parse the optional FORCE argument # Parse the optional FORCE argument
set(options FORCE) set(options FORCE)
set(oneValueArgs) set(oneValueArgs TARGET)
set(multiValueArgs) set(multiValueArgs FILES)
cmake_parse_arguments(ARGS "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) cmake_parse_arguments(ARGS "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
# Check if FORCE was provided # Check if FORCE was provided
@ -45,11 +45,19 @@ function(KICAD_CLI_UPGRADE_SYMS FILE TARGET)
set(FORCE_ARG "") set(FORCE_ARG "")
endif() endif()
# Validate required arguments
if(NOT ARGS_TARGET)
message(FATAL_ERROR "KICAD_CLI_UPGRADE_SYMS requires a TARGET argument")
endif()
foreach(FILE ${ARGS_FILES})
add_custom_command( add_custom_command(
TARGET ${TARGET} TARGET ${ARGS_TARGET}
PRE_BUILD
COMMAND ${KICAD_CLI} sym upgrade ${FORCE_ARG} ${FILE} COMMAND ${KICAD_CLI} sym upgrade ${FORCE_ARG} ${FILE}
DEPENDS ${FILE}
COMMENT COMMENT
"Upgrading symbol lib format: ${FILE}" "Upgrading symbol lib format: ${FILE}"
) )
endforeach()
endfunction() endfunction()

View File

@ -23,6 +23,9 @@ set(NEWSTROKE_SOURCE_FILES
katakana.kicad_sym katakana.kicad_sym
) )
# Make the files absolute (in-place)
list(TRANSFORM NEWSTROKE_SOURCE_FILES PREPEND ${CMAKE_CURRENT_SOURCE_DIR}/)
add_custom_command( add_custom_command(
OUTPUT OUTPUT
@ -53,11 +56,9 @@ else()
COMMENT "Running format update on all newstroke .kicad_sym files" COMMENT "Running format update on all newstroke .kicad_sym files"
) )
foreach(NEWSTROKE_SOURCE_FILE ${NEWSTROKE_SOURCE_FILES})
KICAD_CLI_UPGRADE_SYMS( KICAD_CLI_UPGRADE_SYMS(
${CMAKE_CURRENT_SOURCE_DIR}/${NEWSTROKE_SOURCE_FILE} TARGET newstroke_upgrade_syms
newstroke_upgrade_syms FILES ${NEWSTROKE_SOURCE_FILES}
) )
endforeach()
endif() endif()