#***************************************************************************************************
#                                             Makefile                                             *
#                                            ----------                                            *
# Description : House-keeping for the GNU Spice GUI Project example schematic files.               *
# Started     : 2004-01-20                                                                         *
# Updated     : 2020-10-03                                                                         *
# Copyright   : (C) 2004 by MSWaters                                                               *
# Note        : Enter "make help" to view available Makefile targets.                              *
#***************************************************************************************************

#***************************************************************************************************
#                                                                                                  *
#       This program is free software; you can redistribute it and/or modify it under the          *
#       terms of the GNU General Public License as published by the Free Software Foundation;      *
#       either version 3 of the License, or (at your option) any later version.                    *
#                                                                                                  *
#***************************************************************************************************

#***************************************************************************************************
# Any or all of the values in this section may be set below or on the command line when envoking
# make eg. :
#
#   make DESTDIR=/new/dest/dir install
#   make DESTDIR=/new/dest/dir uninstall
#
# Note : Values specified on the command line over-ride those specified below.
#***************************************************************************************************

# Destination (install) directory
DESTDIR = /usr/local

#***************************************************************************************************
# Specify string values
#***************************************************************************************************

# Root directory
ROOT := $(shell pwd)

# Objects
OBJS := $(patsubst %.sch, %.ckt, $(wildcard demos/*.sch))

# Netlister
#NETLSTR = "gnetlist"
NETLSTR = "lepton-netlist"

#***************************************************************************************************
# Make these targets
#***************************************************************************************************

all : demos

#***************************************************************************************************
# Attempt to create netlists from all of the demo. schematics
#***************************************************************************************************

demos : $(OBJS)

# Schematic to netlist conversion rules :
#   -v  verbose mode (gives as much feedback to the user as possible)
#   -q  quiet   mode (turns off all warnings / notes / messages)
#   -g  the guile procedure executed to create the netlist
#   -o  place output file in $@
#   $<  is the name of the first dependency
#   $@  is the file name of the target

%.ckt : %.sch
	@echo "Process schematic file :" $<
	@cd $(dir $<) ; $(NETLSTR) -g spice-sdb -o $(notdir $@) $(notdir $<)
	@echo

#***************************************************************************************************
# Perform installation tasks
#***************************************************************************************************

install :
	cp -r $(ROOT) $(DESTDIR)/share/gspiceui

#***************************************************************************************************
# Perform uninstall tasks
#***************************************************************************************************

uninstall :
	rm -fr $(DESTDIR)/share/gspiceui/sch

#***************************************************************************************************
# Remove temporary files and backup files
#***************************************************************************************************

clean :
	rm -f Makefile~ */*.gnucap.?? */*.ngspice.?? */*.ckt */*.sim */*.log */*.sch~

#***************************************************************************************************
# Display a help message
#***************************************************************************************************

help :
	@echo
	@echo -e "gSpiceUI demonstration schematic build system. "
	@echo
	@echo -e "Available make targets :"
	@echo
	@echo -e "  all       - Build the demo. schematic netlist files (default)"
	@echo -e "  demos     - Attempt to create netlists from all of the demo. schematics"
	@echo -e "  install   - Install   the demo. schematics"
	@echo -e "  uninstall - Uninstall the demo. schematics"
	@echo -e "  clean     - Remove the netlist files"
	@echo -e "  help      - Display this message"
	@echo

#***************************************************************************************************
# Specify phony targets
#***************************************************************************************************

.PHONY : demos install uninstall clean help

#***************************************************************************************************
