aboutsummaryrefslogtreecommitdiff
path: root/src/ee/tools/kicad_mkdeps.py
diff options
context:
space:
mode:
authorTrygve Laugstøl <trygvis@inamo.no>2019-02-09 23:37:02 +0100
committerTrygve Laugstøl <trygvis@inamo.no>2019-02-09 23:37:02 +0100
commitc313e6de8c06017739402ea89f55ce3b36ac0f2b (patch)
tree3fa4ae2b36e5b3820c8677c82cafd676f77aaced /src/ee/tools/kicad_mkdeps.py
parent79b8525e776b27a1702a4eea6f3168bfd97a393a (diff)
downloadee-python-c313e6de8c06017739402ea89f55ce3b36ac0f2b.tar.gz
ee-python-c313e6de8c06017739402ea89f55ce3b36ac0f2b.tar.bz2
ee-python-c313e6de8c06017739402ea89f55ce3b36ac0f2b.tar.xz
ee-python-c313e6de8c06017739402ea89f55ce3b36ac0f2b.zip
o kicad-mkdeps: new tool, new -M option for kicad-gerber. Both output a
Makefile-compatible dependencies file.
Diffstat (limited to 'src/ee/tools/kicad_mkdeps.py')
-rw-r--r--src/ee/tools/kicad_mkdeps.py78
1 files changed, 78 insertions, 0 deletions
diff --git a/src/ee/tools/kicad_mkdeps.py b/src/ee/tools/kicad_mkdeps.py
new file mode 100644
index 0000000..10c7e97
--- /dev/null
+++ b/src/ee/tools/kicad_mkdeps.py
@@ -0,0 +1,78 @@
+from __future__ import print_function
+import sys
+import argparse
+import ee.kicad as kicad
+
+out_file = sys.stdout
+
+
+def p(msg):
+ global out_file
+ print(msg, file=out_file)
+
+
+def work(args):
+ sch = kicad.read_schematics(args.sch)
+
+ p("# This file is generated")
+ p("ifeq ($(EE),)")
+ p(" $(error EE must be set)")
+ p("endif")
+ p("")
+ p("SCH_FILES =")
+ for s in sch.schematics:
+ p("SCH_FILES += {}".format(s.path))
+
+ if args.gerber:
+ p("# Gerber rules")
+ p("ifeq ($(GERBER_ZIP),)")
+ p(" $(error GERBER_ZIP must be set)")
+ p("endif")
+ p("gerbers: $(GERBER_ZIP)")
+ p("$(GERBER_ZIP): $(SCH_FILES)")
+ p("\t@echo GERBER")
+ p("\t$(EE) kicad-gerber \\")
+ p("\t\t--output-dir $(GERBER_DIR) \\")
+ p("\t\t--pcb $(PROJECT).kicad_pcb \\")
+ p("\t\t$(GERBER_ARGS)")
+ p("\tmkdir -p $(dir $@)")
+ p("\t(cd $(GERBER_DIR); zip tmp.zip $(foreach GBR,$(GERBERS),$(notdir $(GBR))))")
+ p("\tmv $(GERBER_DIR)/tmp.zip $@")
+ p("EE_OUTPUTS += $(GERBER_ZIP)")
+ p("")
+
+ p("")
+ p("# Utility targets")
+ p(".PHONY: schematic pcb gerber")
+ p("schematic: $(SCH_FILES)")
+ p("pcb: {}".format(args.pcb))
+
+
+parser = argparse.ArgumentParser(description="Create a Makefile with all dependencies")
+
+parser.add_argument("--sch",
+ required=True,
+ metavar="SCH",
+ help="Schematic file")
+
+parser.add_argument("--pcb",
+ required=True,
+ metavar="PCB",
+ help="PCB file")
+
+parser.add_argument("--out",
+ metavar="OUT",
+ help="Output file")
+
+parser.add_argument("--gerber",
+ action="store_true",
+ help="Enable gerber.zip target")
+
+args = parser.parse_args()
+
+if args.out:
+ with open(args.out, "w") as f:
+ out_file = f
+ work(args)
+else:
+ work(args)