# pcb/current/Makefile


BUILD_DIR		:= build

PROD_DIR		:= $(BUILD_DIR)/prod_files
PROD_ZIP		:= $(BUILD_DIR)/prod.zip

PCB_SRC			:= autostart.kicad_pcb
PCB_PANEL		:= $(BUILD_DIR)/panel.kicad_pcb
SCH_SRC			:= autostart.kicad_sch
SCHEMATIC_PDF	:= $(BUILD_DIR)/schematic.pdf

ZIP_SOURCES		:= BOM.ods DESIGN HISTORY autostart.kicad_* Library.pretty/ Makefile
SRC_ZIP			:= $(BUILD_DIR)/src.zip
PUBLISH_SOURCES	:= $(SRC_ZIP) $(SCHEMATIC_PDF)

WEB_ROOT		:= $(HOME)/www/geekabit.nl/test/src/projects/evbox-charger-autostart-module
PUBLISH_DIR		:= $(WEB_ROOT)/downloads/pcb
ARTICLE			:= $(WEB_ROOT)/index.conf

MKDIR			:= mkdir
MKDIR_FLAGS		:= -p
ZIP				:= zip
ZIP_FLAGS		:= -r
RSYNC			:= rsync
RSYNC_FLAGS		:= --verbose --archive
KICAD			:= kicad-cli
KIKIT			:= kikit
KIKIT_FLAGS	:= panelize \
	--layout 'alternation: rows; hspace: 2mm; vspace: 2mm; rotation: 270deg; rows: 2; cols: 5' \
	--tabs 'type: annotation' \
	--cuts 'type: mousebites' \
	--framing 'type: railstb; fillet: 2mm' \
	--tooling 'type: 4hole; hoffset: 5mm; voffset: 2.5mm; paste: True' \
	--fiducials 'type: 3fid; hoffset: 10mm; voffset: 2.5mm' \
	--text 'type: simple; voffset: 2.5mm; text: autostart module v1.1' \
	--copperfill 'type: solid; clearance: 0.25mm; edgeclearance: 0.25mm' \
	--page 'anchor: tl' \
	--post 'copperfill: True'
TOUCH			:= touch


.PHONY: all clean panel prod publish

all: prod

$(BUILD_DIR):
	$(MKDIR) $(MKDIR_FLAGS) $@

$(PROD_DIR): | $(BUILD_DIR)
	$(MKDIR) $(MKDIR_FLAGS) $@

panel: $(PCB_PANEL)

$(PCB_PANEL): $(PCB_SRC) | $(BUILD_DIR)
	$(KIKIT) $(KIKIT_FLAGS) $< $@

prod: $(PROD_ZIP)

$(PROD_ZIP): $(PCB_PANEL) | $(PROD_DIR)
	$(KICAD) pcb export gerbers --layers F.Cu,B.Cu,F.Paste,B.Paste,F.Silkscreen,B.Silkscreen,F.Mask,B.Mask,Edge.Cuts --output $(PROD_DIR) $<
	$(KICAD) pcb export drill --output $(PROD_DIR) $<
	#cd $(BUILD_DIR) && $(ZIP) $(ZIP_FLAGS) $(notdir $@) prod/
	cd $(PROD_DIR) && $(ZIP) $(ZIP_FLAGS) ../$(notdir $@) .

$(SCHEMATIC_PDF): $(SCH_SRC) | $(BUILD_DIR)
	$(KICAD) sch export pdf --output $@ $<

$(SRC_ZIP): $(ZIP_SOURCES) | $(BUILD_DIR)
	$(ZIP) $(ZIP_FLAGS) $@ $^

publish: $(PUBLISH_SOURCES)
	$(RSYNC) $(RSYNC_FLAGS) $^ $(PUBLISH_DIR)/
	$(TOUCH) $(ARTICLE)

clean:
	- $(RM) -r $(BUILD_DIR)
