include make.include
include make.pkgs

.NOTPARALLEL :

#--------------------------defines

export root := $(shell pwd)

DEST	= voyager
ALT	= bokhara

#--------------------------dirs

SRCDIR	= src
DOCDIR	= doc
DS9DIR	= ds9
DIRS = bin lib include man share dist

#--------------------------dist

DS9APP=SAOImage\ DS9\ $(DS9VERSION)
XPAAPP=XPA\ $(XPAVERSION)

#--------------------------cvs stuff

CVSFILES = admin \
	COPYING \
	copyright \
	make.arm \
	make.cygwin \
	make.cygwin64 \
	make.darwinyosemite \
	make.darwinmavericks \
	make.darwinmountainlion \
	make.linux \
	make.linux64 \
	make.linux64_5 \
	make.macosxyosemite \
	make.macosxmavericks \
	make.macosxmountainlion \
	make.source \
	make.pkgs \
	make.windows \
	Makefile \
	Makefile.unix \
	Makefile.macosx \
	Makefile.windows \
	mods \
	notes.txt \
	README \
	saotk \
	tclcheckdns1.1 \
	tcliis1.0 \
	tkblt3.0 \
	tkmacosx1.0 \
	tkmpeg1.0 \
	tkwin1.0 \
	tests \
	doc \
	cmaps \
	template \
	src \
	msgs \
	ds9 \
	util \
	compilers \
	$(ZVFSDIR)/Makefile \

#--------------------------build

include Makefile.$(OS)

doc	: FORCE
	@echo "Making Documentation..."
	cd $(DOCDIR); $(MAKE)

#--------------------------language

language: FORCE
	grep 'msgcat::mc' src/*.tcl | tclsh8.6 util/mergedict.tcl da iso8859-1
	grep 'msgcat::mc' src/*.tcl | tclsh8.6 util/mergedict.tcl de iso8859-1
	grep 'msgcat::mc' src/*.tcl | tclsh8.6 util/mergedict.tcl es iso8859-1
	grep 'msgcat::mc' src/*.tcl | tclsh8.6 util/mergedict.tcl fr iso8859-1
	grep 'msgcat::mc' src/*.tcl | tclsh8.6 util/mergedict.tcl pt iso8859-1
	grep 'msgcat::mc' src/*.tcl | tclsh8.6 util/mergedict.tcl cs iso8859-2
	grep 'msgcat::mc' src/*.tcl | tclsh8.6 util/mergedict.tcl ja euc-jp
	grep 'msgcat::mc' src/*.tcl | tclsh8.6 util/mergedict.tcl zh big5

#--------------------------items

dirs	: FORCE
	@echo "Installing $@..."
	@for d in $(DIRS); do if [ ! -d $$d ]; then mkdir $$d; fi done

ds9	: scrub
	@echo "Installing $@..."
	$(MAKE) -C $(DS9DIR)

debug	: FORCE
	@echo "Installing $@..."
	$(MAKE) -C $(DS9DIR) debug

ast	: FORCE
	@echo "Installing $@..."
	cd $(ASTDIR); \
	./configure \
	--prefix=$(root) \
	--enable-shared=no \
	$(ASTFLAGS)
	$(MAKE) -C $(ASTDIR) -j $(JOBS) ast.h install-libLTLIBRARIES \
	install-nodist_includeHEADERS install-includeHEADERS

funtools: FORCE
	@echo "Installing $@..."
	cd $(FUNTOOLSDIR); \
	./configure \
	--prefix $(root) --exec-prefix $(root) \
	--with-wcslib=../lib/libwcs.a \
	--enable-mainlib \
	$(FUNTOOLSFLAGS)
	$(MAKE) -C $(FUNTOOLSDIR) lib
	cp $(FUNTOOLSDIR)/libfuntools.a lib/.

saotk	: FORCE
	@echo "Installing $@..."
	cd $(SAOTKDIR); \
	./configure \
	$(WITHTCL) $(WITHTK) \
	--prefix $(root) --exec-prefix $(root) \
	--disable-shared \
	--enable-symbols
	$(MAKE) -C $(SAOTKDIR) -j $(JOBS) install

signal: FORCE
	@echo "Installing $@..."
	$(MAKE) -C $(SIGNALDIR) -j $(JOBS) install

tclcheckdns : FORCE
	@echo "Installing $@..."
	cd $(TCLCHECKDNSDIR); \
	./configure \
	$(WITHTCL) \
	--prefix $(root) --exec-prefix $(root) \
	--disable-shared \
	--enable-symbols
	$(MAKE) -C $(TCLCHECKDNSDIR) -j $(JOBS) install

tcliis	: FORCE
	@echo "Installing $@..."
	cd $(TCLIISDIR); \
	./configure \
	$(WITHTCL) \
	--prefix $(root) --exec-prefix $(root) \
	--disable-shared \
	--enable-symbols
	$(MAKE) -C $(TCLIISDIR) -j $(JOBS) install

# no parallel
tclxml	: FORCE
	@echo "Installing $@..."
	cd $(TCLXMLDIR); \
	./configure \
	$(WITHTCL) \
	--prefix $(root) --exec-prefix $(root) \
	--disable-shared \
	--enable-symbols
	$(MAKE) -C $(TCLXMLDIR) install

tkblt	: FORCE
	@echo "Installing $@..."
	cd $(TKBLTDIR); \
	./configure \
	$(WITHTCL) $(WITHTK) \
	--prefix $(root) --exec-prefix $(root) \
	--disable-shared \
	--enable-symbols
	$(MAKE) -C $(TKBLTDIR) -j $(JOBS) install

tkcon	: FORCE
	@echo "Installing $@..."
	$(RM) -r lib/$(TKCONVER)
	mkdir lib/$(TKCONVER)
	cp $(TKCONDIR)/*.tcl lib/$(TKCONVER)

$(HTMLDIR) : FORCE
	mkdir $(HTMLDIR)

tkimg	: libtiff
	@echo "Installing $@..."
	cd $(TKIMGDIR); CFLAGS='-DPNG_NO_WRITE_gAMA' \
	./configure \
	$(WITHTCL) $(WITHTK) \
	--prefix $(root) --exec-prefix $(root) \
	--disable-shared \
	--enable-symbols
	$(MAKE) -C $(TKIMGDIR) -j $(JOBS) install

libtiff	: FORCE
	@echo "Installing $@..."
	cd $(TKIMGDIR)/compat/libtiff; CC='$(CC)' CFLAGS='$(OPTS)' CXX='$(CC)' \
	CXXFLAGS='$(OPTS)' \
	./configure --prefix $(root) --disable-shared
	$(MAKE) -C $(TKIMGDIR)/compat/libtiff -j $(JOBS) install

tkmpeg	: FORCE
	@echo "Installing $@..."
	cd $(TKMPEGDIR); \
	./configure \
	$(WITHTCL) $(WITHTK) \
	--prefix $(root) --exec-prefix $(root) \
	--disable-shared \
	--enable-symbols
	$(MAKE) -C $(TKMPEGDIR) -j $(JOBS) install

# no parallel
tktable	: FORCE
	@echo "Installing $@..."
	cd $(TKTABLEDIR); \
	./configure \
	$(WITHTCL) $(WITHTK) \
	--prefix $(root) --exec-prefix $(root) \
	--disable-shared \
	--enable-symbols
	$(MAKE) -C $(TKTABLEDIR) install

xpa	: FORCE
	@echo "Installing $@..."
	cd $(XPADIR); \
	./configure \
	$(WITHTCL) \
	--prefix $(root) --exec-prefix $(root) \
	--with-x=disabled --enable-posix_spawn \
	$(XPAFLAGS) \
	--disable-shared \
	--enable-symbols
	$(MAKE) -C $(XPADIR) -j $(JOBS) install

xmlrpc	: FORCE
	@echo "Installing $@..."
	$(RM) -r lib/$(XMLRPCVER)
	mkdir lib/$(XMLRPCVER)
	cp $(XMLRPCDIR)/xmlrpc.tcl lib/$(XMLRPCVER)

zlib  : FORCE
	@echo "Installing $@..."
	cd $(ZLIBDIR); CC='$(CC)' CFLAGS='$(OPTS)' \
	./configure --prefix $(root) --static
	$(MAKE) -C $(ZLIBDIR) -j $(JOBS) install

zvfs	: FORCE
	@echo "Installing $@..."
	$(MAKE) -C $(ZVFSDIR) install

#--------------------------source

distsource : FORCE
	@echo "Creating Source Distribution"
	rm -rf dist/saods9
	cd dist; cvs export -Dtoday saods9
	cd dist/saods9; rm -rf notes mods admin
	cd dist; tar cvf - saods9 | gzip > ds9.$(DS9VERSION).tar.gz
	rm -rf dist/saods9
	scp dist/ds9.$(DS9VERSION).tar.gz $(DEST):build/source/.

#--------------------------clean

clean: FORCE

dirsclean: FORCE
	@for d in $(DIRS); do rm -rf $$d; done

ds9clean : FORCE
	$(MAKE) -C $(DS9DIR) distclean

filesclean: FORCE
	$(RM) core *~ *#

scrub : FORCE
	find . -name "*[~#]" -exec rm {} \;
ifeq ($(OS),windows)
	find . -name "*stackdump*" -exec rm {} \;
endif

tclclean : FORCE
	$(MAKE) -C $(TCLDIRDIR) distclean

tkclean : FORCE
	$(MAKE) -C $(TKDIRDIR) distclean

astclean: FORCE
	$(MAKE) -C $(ASTDIR) distclean

funtoolsclean: FORCE
	$(MAKE) -C $(FUNTOOLSDIR) distclean

saotkclean : FORCE
	$(MAKE) -C $(SAOTKDIR) distclean

signalclean : FORCE
	$(MAKE) -C $(SIGNALDIR) distclean

tclcheckdnsclean : FORCE
	$(MAKE) -C $(TCLCHECKDNSDIR) distclean

tcliisclean : FORCE
	$(MAKE) -C $(TCLIISDIR) distclean

tclxmlclean: FORCE
	$(MAKE) -C $(TCLXMLDIR) distclean

tktableclean: FORCE
	$(MAKE) -C $(TKTABLEDIR) distclean

tkbltclean: FORCE
	$(MAKE) -C $(TKBLTDIR) distclean

tkhtmlclean: FORCE
	rm -rf $(HTMLDIR)

tkimgclean: libtiffclean
	rm -fr $(TKIMGDIR)/Img/*
	rm -fr lib/Img1.*
	$(MAKE) -C $(TKIMGDIR) distclean

libtiffclean: FORCE
	$(MAKE) -C $(TKIMGDIR)/compat/libtiff distclean

tkmacosxclean : FORCE
	$(MAKE) -C $(TKMACOSXDIR) distclean

tkmpegclean: FORCE
	$(MAKE) -C $(TKMPEGDIR) distclean

tkwinclean : FORCE
	$(MAKE) -C $(TKWINDIR) distclean

xpaclean : FORCE
	$(MAKE) -C $(XPADIR) distclean

zlibclean: FORCE
	$(MAKE) -C $(ZLIBDIR) distclean

zvfsclean: FORCE
	$(MAKE) -C $(ZVFSDIR) distclean

srcclean : FORCE
	$(MAKE) -C $(SRCDIR) distclean

#--------------------------cvs

commit : FORCE
	cvs commit -m "" $(CVSFILES)

update : FORCE
	cvs update $(CVSFILES)

FORCE	:
