From c313e6de8c06017739402ea89f55ce3b36ac0f2b Mon Sep 17 00:00:00 2001 From: Trygve Laugstøl Date: Sat, 9 Feb 2019 23:37:02 +0100 Subject: o kicad-mkdeps: new tool, new -M option for kicad-gerber. Both output a Makefile-compatible dependencies file. --- src/ee/tools/kicad_mkdeps.py | 78 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 src/ee/tools/kicad_mkdeps.py (limited to 'src/ee/tools/kicad_mkdeps.py') 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) -- cgit v1.2.3