Makefile 8.58 KB
#***************************************************************************************************
#                                             Makefile                                             *
#                                            ----------                                            *
# Description : Makefile for GNU SPICE GUI project house-keeping.                                  *
# Started     : 2004-01-08                                                                         *
# Last update : 2016-11-06                                                                         *
# Copyright   : (C) 2004 by MSWaters                                                               *
#***************************************************************************************************

#***************************************************************************************************
#                                                                                                  *
#       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)

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

all : config
	cd $(ROOT)/src ; $(MAKE)

#***************************************************************************************************
# Perform configuration tasks
#***************************************************************************************************

# Everyone should call this once
config :
ifneq ($(ROOT)/bin,$(wildcard $(ROOT)/bin))
	mkdir $(ROOT)/bin
endif
ifneq ($(ROOT)/src/obj,$(wildcard $(ROOT)/src/obj))
	mkdir $(ROOT)/src/obj
endif

# You should also call this once if running on a MAC
maccfg : $(ROOT)/mac/Info.plist $(ROOT)/mac/GSpiceUI.icns
ifneq ($(ROOT)/GSpiceUI.app,$(wildcard $(ROOT)/GSpiceUI.app))
	-mkdir $(ROOT)/GSpiceUI.app
	-mkdir $(ROOT)/GSpiceUI.app/Contents
	-mkdir $(ROOT)/GSpiceUI.app/Contents/MacOS
	-mkdir $(ROOT)/GSpiceUI.app/Contents/Resources
	cp $(ROOT)/mac/Info.plist $(ROOT)/GSpiceUI.app/Contents/
	echo -n 'APPL????' > $(ROOT)/GSpiceUI.app/Contents/PkgInfo
	cp $(ROOT)/mac/GSpiceUI.icns $(ROOT)/GSpiceUI.app/Contents/Resources/
endif

#***************************************************************************************************
# Create an archive of the essential project files as follows :
#
#   1. Change the make variable "TAR_NAME" (below) to the current version number
#   2. Change to the project root directory
#   3. Execute "make tar" to create the project archive file eg. gspiceui-v1.1.00.tar.gz
#***************************************************************************************************

TAR_VER=v1.1.00

TAR_DEST= gspiceui-$(TAR_VER)/gspiceui-$(TAR_VER).tar.gz

TAR_SRCS =gspiceui-$(TAR_VER)/release-notes-$(TAR_VER).txt
TAR_SRCS+=gspiceui-$(TAR_VER)/Authors
TAR_SRCS+=gspiceui-$(TAR_VER)/ChangeLog
TAR_SRCS+=gspiceui-$(TAR_VER)/Install
TAR_SRCS+=gspiceui-$(TAR_VER)/License
TAR_SRCS+=gspiceui-$(TAR_VER)/Makefile
TAR_SRCS+=gspiceui-$(TAR_VER)/ReadMe
TAR_SRCS+=gspiceui-$(TAR_VER)/ToDo
TAR_SRCS+=gspiceui-$(TAR_VER)/gspiceui.1
TAR_SRCS+=gspiceui-$(TAR_VER)/gspiceui.lsm
TAR_SRCS+=gspiceui-$(TAR_VER)/src/*
TAR_SRCS+=gspiceui-$(TAR_VER)/html/Makefile
TAR_SRCS+=gspiceui-$(TAR_VER)/html/*.html
TAR_SRCS+=gspiceui-$(TAR_VER)/html/*.png
TAR_SRCS+=gspiceui-$(TAR_VER)/html/*.jpg
TAR_SRCS+=gspiceui-$(TAR_VER)/sch/Makefile
TAR_SRCS+=gspiceui-$(TAR_VER)/sch/*/*.sch
TAR_SRCS+=gspiceui-$(TAR_VER)/lib/Makefile
TAR_SRCS+=gspiceui-$(TAR_VER)/lib/models/*.ckt
TAR_SRCS+=gspiceui-$(TAR_VER)/lib/models/*.mod
TAR_SRCS+=gspiceui-$(TAR_VER)/lib/symbols/*
TAR_SRCS+=gspiceui-$(TAR_VER)/mac/Info.plist
TAR_SRCS+=gspiceui-$(TAR_VER)/mac/GSpiceUI.icns
TAR_SRCS+=gspiceui-$(TAR_VER)/svg/Makefile
TAR_SRCS+=gspiceui-$(TAR_VER)/svg/*.svg

tar :
	make clean
	cd svg ; make ; cd ..
	cd .. ; mv gspiceui gspiceui-$(TAR_VER)
	cd .. ; tar --totals --exclude .svn -zcf $(TAR_DEST) $(TAR_SRCS)
	cd .. ; mv gspiceui-$(TAR_VER) gspiceui

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

install :
	mkdir -p     $(DESTDIR)/share/gspiceui
	cp ReadMe    $(DESTDIR)/share/gspiceui
	cp Install   $(DESTDIR)/share/gspiceui
	cp ChangeLog $(DESTDIR)/share/gspiceui
	mkdir -p     $(DESTDIR)/share/gspiceui/icons
	cp src/icons/gspiceui-*.xpm $(DESTDIR)/share/gspiceui/icons
	mkdir -p $(DESTDIR)/share/man/man1
	cp gspiceui.1 $(DESTDIR)/share/man/man1
	cd $(ROOT)/src  ; $(MAKE) install DESTDIR=$(DESTDIR)
	cd $(ROOT)/html ; $(MAKE) install DESTDIR=$(DESTDIR)
	cd $(ROOT)/sch  ; $(MAKE) install DESTDIR=$(DESTDIR)
	cd $(ROOT)/lib  ; $(MAKE) install DESTDIR=$(DESTDIR)

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

uninstall :
	cd $(ROOT)/src  ; $(MAKE) uninstall DESTDIR=$(DESTDIR)
	cd $(ROOT)/html ; $(MAKE) uninstall DESTDIR=$(DESTDIR)
	cd $(ROOT)/sch  ; $(MAKE) uninstall DESTDIR=$(DESTDIR)
	cd $(ROOT)/lib  ; $(MAKE) uninstall DESTDIR=$(DESTDIR)
	rm -f  $(DESTDIR)/share/man/man1/gspiceui.1
	rm -fr $(DESTDIR)/share/gspiceui
#	rmdir --ignore-fail-on-non-empty $(DESTDIR)/share/man/man1
#	rmdir --ignore-fail-on-non-empty $(DESTDIR)/share/man
#	rmdir --ignore-fail-on-non-empty $(DESTDIR)/share

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

clean :
	rm -f Makefile~ charcnt~
	cd $(ROOT)/src  ; $(MAKE) cleanall
	cd $(ROOT)/html ; $(MAKE) clean
	cd $(ROOT)/sch  ; $(MAKE) clean
	cd $(ROOT)/lib  ; $(MAKE) clean

#***************************************************************************************************
# Calculate the size of the various sources making up this project
#***************************************************************************************************

size :
	$(ROOT)/charcnt.sh >> charcnt.txt

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

help :
	@echo
	@echo -e "gSpiceUI project build system. "
	@echo
	@echo -e "Available make targets :"
	@echo -e "  all       - Build the config target (default)"
	@echo -e "  config    - Configure the build system"
	@echo -e "  tar       - Build a tar file of the project sources"
	@echo -e "  install   - Perform project wide   install tasks"
	@echo -e "  uninstall - Perform project wide uninstall tasks"
	@echo -e "  clean     - Remove temporary files and backup files"
	@echo -e "  size      - Log source sizes to file charcnt.txt"
	@echo -e "  help      - Display this message"
	@echo

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

.PHONY : config tar install uninstall clean size help

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