#
# rcsid $Header: /ufs/repository/magic/Makefile,v 1.15 2006/02/08 04:23:47 fang Exp $
#

MAGICDIR   = .
PROGRAMS   = ext2sim ext2spice magic magicusage net2ir extcheck mpack graphics
TECH       = scmos
LIBRARIES  = database utils extflat
MODULES    = calma cif cmwind commands database dbwind debug drc \
             extflat extract garouter gcr graphics grouter irouter \
             lisp macros main misc mzrouter netlist netmenu \
             parser plot plow resis router select signals sim \
             textio tech tiles undo utils windows wiring

INSTALL_CAD_DIRS = windows doc lisp ${PROGRAMS} ${TECH}

include defs.mak

MAKEFLAGS  =

all:
	@${MAKE} mains 2>&1 | tee -a make.log | egrep -i "(warning|error|---)" |\
		egrep -v "extra tokens"

magic: all

force: clean all

defs.mak:
	@echo No \"defs.mak\" file found. Run "make config" to make one.

config:
	@${MAGICDIR}/scripts/config

mains: modules libs
	@echo --- making main programs
	for dir in ${PROGRAMS}; do \
		(cd $$dir && ${MAKE} main); done

modules:
	@echo --- making modules
	for dir in ${MODULES} ${PROGRAMS}; do \
		(cd $$dir && ${MAKE} module); done

libs:
	@echo --- making libraries
	for dir in ${LIBRARIES}; do \
		(cd $$dir && ${MAKE} lib); done

depend:
	for dir in ${MODULES} ${PROGRAMS}; do \
		(cd $$dir && ${MAKE} depend); done

install:
	@echo --- installing to ${CADDIR}
	@${MAKE} install-real 2>&1 >> install.log

uninstall:
	@echo --- uninstalling from ${CADDIR}
	@${MAKE} uninstall-real 2>&1 >> uninstall.log

install-real: install-dirs
	for dir in ${INSTALL_CAD_DIRS}; do \
		(cd $$dir && ${MAKE} install); done

uninstall-real:
	for dir in ${INSTALL_CAD_DIRS}; do \
		(cd $$dir && ${MAKE} uninstall); done

install-dirs:
	${MAGICDIR}/scripts/mkdirs ${BINDIR} ${MANDIR} ${SYSDIR} ${SCMDIR}

make.log:
	@echo "Run make -k to generate make.log"
	exit 1

warnings.log: make.log
	-grep "warning:" $? | sort -u > $@

errors.log: make.log
	-grep "error:" $? | sort -u > $@

clean:
	for dir in ${MODULES} ${PROGRAMS} ${TECH}; do \
		(cd $$dir && ${MAKE} clean); done
	${RM} *.tmp */*.tmp *.sav */*.sav *.log default.conf TAGS tags

clean-mains:
	for dir in ${PROGRAMS}; do \
		(cd $$dir && ${RM} $$dir); done

tags:
	${RM} tags
	find . ${MODULES} ${PROGRAMS} -name "*.[ch]" -maxdepth 1 | xargs ctags -o tags

TAGS: 
	${RM} TAGS
	find . ${MODULES} ${PROGRAMS} -name "*.[ch]" -maxdepth 1 | xargs etags -o TAGS

# update this version string...
VERSION = 7.1-20060207

# this distribution is unchecked!
dist: clean
	cd .. && tar czvf magic-$(VERSION).tar.gz magic
	@echo tar-ball in ../magic-$(VERSION).tar.gz

cvsdiffs: forceit
	-cvs diff -u > $@

forceit:

