diff options
author | Trygve Laugstøl <trygvis@inamo.no> | 2019-02-09 23:37:02 +0100 |
---|---|---|
committer | Trygve Laugstøl <trygvis@inamo.no> | 2019-02-09 23:37:02 +0100 |
commit | c313e6de8c06017739402ea89f55ce3b36ac0f2b (patch) | |
tree | 3fa4ae2b36e5b3820c8677c82cafd676f77aaced /src/ee/tools/kicad_mkdeps.py | |
parent | 79b8525e776b27a1702a4eea6f3168bfd97a393a (diff) | |
download | ee-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.py | 78 |
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) |