summaryrefslogtreecommitdiff
path: root/cmake/kicad.cmake
diff options
context:
space:
mode:
authorxengineering <me@xengineering.eu>2025-02-14 14:34:51 +0100
committerxengineering <me@xengineering.eu>2025-02-14 14:54:50 +0100
commit7b68bbb92296a2f3740bd6b22fec157197bf06fd (patch)
tree993bae4f676a1fcdd974ae5d6be11837abf59f5c /cmake/kicad.cmake
parent4e31ee88f737d593277c10530e980ab8ab2715c5 (diff)
downloadiot-contact-7b68bbb92296a2f3740bd6b22fec157197bf06fd.tar
iot-contact-7b68bbb92296a2f3740bd6b22fec157197bf06fd.tar.zst
iot-contact-7b68bbb92296a2f3740bd6b22fec157197bf06fd.zip
pcb: Export BOM as CSV with CMake
Diffstat (limited to 'cmake/kicad.cmake')
-rw-r--r--cmake/kicad.cmake28
1 files changed, 28 insertions, 0 deletions
diff --git a/cmake/kicad.cmake b/cmake/kicad.cmake
index 126d2e4..6c2f612 100644
--- a/cmake/kicad.cmake
+++ b/cmake/kicad.cmake
@@ -12,6 +12,8 @@ function(kicad_schematic_to_pdf source target)
kicad-cli sch export pdf --output ${pdf} ${source}
DEPENDS
${source}
+ JOB_POOL
+ kicad
)
add_custom_target(
@@ -21,3 +23,29 @@ function(kicad_schematic_to_pdf source target)
${pdf}
)
endfunction()
+
+function(kicad_bom_to_csv source target)
+ get_filename_component(name ${source} NAME)
+ get_filename_component(dir ${source} DIRECTORY)
+ file(RELATIVE_PATH rel "${CMAKE_SOURCE_DIR}" "${dir}")
+ set(name_csv "${name}.csv")
+ set(csv ${CMAKE_BINARY_DIR}/${rel}/${name_csv})
+
+ add_custom_command(
+ OUTPUT
+ ${csv}
+ COMMAND
+ kicad-cli sch export bom --output ${csv} ${source}
+ DEPENDS
+ ${source}
+ JOB_POOL
+ kicad
+ )
+
+ add_custom_target(
+ "${target}"
+ ALL
+ DEPENDS
+ ${csv}
+ )
+endfunction()