diff options
author | xengineering <me@xengineering.eu> | 2025-02-14 14:34:51 +0100 |
---|---|---|
committer | xengineering <me@xengineering.eu> | 2025-02-14 14:54:50 +0100 |
commit | 7b68bbb92296a2f3740bd6b22fec157197bf06fd (patch) | |
tree | 993bae4f676a1fcdd974ae5d6be11837abf59f5c | |
parent | 4e31ee88f737d593277c10530e980ab8ab2715c5 (diff) | |
download | iot-contact-7b68bbb92296a2f3740bd6b22fec157197bf06fd.tar iot-contact-7b68bbb92296a2f3740bd6b22fec157197bf06fd.tar.zst iot-contact-7b68bbb92296a2f3740bd6b22fec157197bf06fd.zip |
pcb: Export BOM as CSV with CMake
-rw-r--r-- | cmake/kicad.cmake | 28 | ||||
-rw-r--r-- | pcb/CMakeLists.txt | 3 |
2 files changed, 31 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() diff --git a/pcb/CMakeLists.txt b/pcb/CMakeLists.txt index 1881157..abe84dc 100644 --- a/pcb/CMakeLists.txt +++ b/pcb/CMakeLists.txt @@ -4,5 +4,8 @@ project(iot-contact-pcb LANGUAGES NONE) include(kicad) +set_property(GLOBAL PROPERTY JOB_POOLS kicad=1) + set(schematic "${CMAKE_CURRENT_SOURCE_DIR}/iot-contact.kicad_sch") kicad_schematic_to_pdf("${schematic}" "pcb-schematic-pdf") +kicad_bom_to_csv("${schematic}" "pcb-bom-csv") |