include make.include
include make.pkgs

.NOTPARALLEL :

#--------------------------optional packages
# uncomment the following to include in the build

#BUILD_TCLX = yes
ifdef BUILD_TCLX
	DoTCLX		= tclx
	DoTCLXSH	= tclxsh
endif

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

root := $(shell pwd)
DIRS	= bin lib include man html

ifeq ($(ARCH),windows)
  EXE	= .exe
  WISH	= wish84.exe

  TCLDIRDIR= $(TCLDIR)/win
  TKDIRDIR= $(TKDIR)/win
  TCLXDIR = $(TCLXDIR)/win

  TCLLIBFLAGS = --prefix ..
  PREHTMLFLAGS = config_BUILD_TCLSH=tclsh84s config_TARGET_TCL_SCRIPT_DIR=$(root)/lib/tcl8.4
else
  EXE	=
  WISH	= wish8.4

  TCLDIRDIR= $(TCLDIR)/unix
  TKDIRDIR= $(TKDIR)/unix
  TCLXDIR = $(TCLXDIR)/unix

  XFLAGS = --x-includes=$(X11INCLUDE) --x-libraries="$(X11LIB) $(HTMLEXTLIB)"
  TCLLIBFLAGS = --prefix $(root)
endif

TCLFLAGS = --enable-gcc --prefix $(root) $(XFLAGS)
TCLXFLAGS = --enable-gcc --prefix $(root) --with-tcl=$(root)/$(TCLDIRDIR) \
	 --with-tk=$(root)/$(TKDIRDIR) $(XFLAGS)
BLTFLAGS = --with-cc=$(CC) --with-cflags=$(64BIT) --prefix $(root) \
	--with-tcl=$(root)/$(TCLDIR) --with-tk=$(root)/$(TKDIR) $(XFLAGS)
TKIMGFLAGS = --enable-gcc --prefix $(root) --with-tcl=$(root)/$(TCLDIRDIR) \
	 --with-tk=$(root)/$(TKDIRDIR) $(XFLAGS)
XPAFLAGS = --enable-gcc --prefix $(root) --with-tcl=$(root)/$(TCLDIRDIR) \
	$(XFLAGS)
HTMLFLAGS = --enable-gcc --prefix $(root) --with-tcl=$(root)/$(TCLDIR) \
	--with-tk=$(root)/$(TKDIR) $(XFLAGS)

FUNTOOLSFLAGS = --prefix $(root) --enable-gcc --with-zlib=../lib/libz.a --with-wcslib=../lib/libwcs.a --enable-mainlib
ZLIBFLAGS = --prefix $(root)

SAOINDEX= lib/pkgIndex.tcl
DS9INDEX= ds9/pkgIndex.tcl
WININCL	= $(TCLDIR)/generic/tclInt.h \
	$(TCLDIR)/generic/tclIntDecls.h \
	$(TKDIR)/generic/tkInt.h \
	$(TKDIR)/generic/tkPort.h \
	$(TKDIR)/generic/tkIntDecls.h \
	$(TKDIR)/generic/tkIntPlatDecls.h \
	$(TKDIR)/win/tkWin.h \
	$(TKDIR)/win/tkWinInt.h \
	$(TKDIR)/win/tkWinPort.h

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

ifeq ($(ARCH),windows)
  # windows
  build : dirs tcl tk \
	tktable tcllib blt \
	mktclapp zlib tkimg tkmpeg html xpa iis checkdns win \
	funtools sla ast wcssubs saotk ds9
  index : $(DS9INDEX)

  finish : fixit2 xpa iis checkdns win funtools sla ast wcssubs \
	saotk ds9

  fixit: FORCE
	cp admin/html/htmltokens.c html/.
	cd html; make; 
  fixit2: FORCE
	cd html; cp libtkhtml.a ../lib/.

else
  # unix
  ifdef BUILD_SHARED
    # shared
      build : dirs tcl tk tclsh tksh \
	tktablesh tktable tcllib blt \
	mktclapp zlibsh tkimgsh tkimg tkmpeg htmlsh xpash iis checkdns \
	funtools sla ast wcssubs saotk ds9 \
	$(DoTCLXSH)
      index : $(DS9INDEX) $(SAOINDEX)
  else
    # non-shared
      build : dirs tcl tk \
	tktable tcllib tkindex blt \
	mktclapp zlib tkimg tkmpeg html xpa iis checkdns \
	funtools sla ast wcssubs saotk ds9 \
	$(DoTCLX)
      index : $(DS9INDEX)
  endif
endif

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

ds9	: FORCE
	@echo "Making DS9..."
	cd $(DS9DIR); $(MAKE)

ds9val	: FORCE
	@echo "Making DS9 Valgrind..."
	cd $(DS9DIR); $(MAKE) ds9val

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

install	: FORCE
	@echo "Installing DS9..."
	cd $(DS9DIR); $(MAKE) install

$(SAOINDEX): lib/libBLT24.$(SHEXT) lib/libsaotk.$(SHEXT) \
	lib/libtkhtml.$(SHEXT) \
	lib/libtclxpa.$(SHEXT) lib/libiis.$(SHEXT) \
	lib/libcheckdns.$(SHEXT) \
	lib/libtkmpeg.$(SHEXT) FORCE
	echo "pkg_mkIndex -verbose lib libBLT24.$(SHEXT) libsaotk.$(SHEXT) libtkhtml.$(SHEXT) libtclxpa.$(SHEXT) libiis.$(SHEXT) libcheckdns.$(SHEXT) libtkmpeg.$(SHEXT); exit" | bin/$(WISH)

$(DS9INDEX): ds9/ds9.tcl FORCE
	cd $(DS9DIR); $(MAKE) index

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

tclsh	: FORCE
	@echo "Installing Tcl shared..."
	cd $(TCLDIRDIR); CC=$(CCc) ./configure $(TCLFLAGS) --enable-shared
	cd $(TCLDIRDIR); $(MAKE) install

tcl	: FORCE
	@echo "Installing Tcl noshared..."
	cd $(TCLDIRDIR); CC=$(CCc) ./configure $(TCLFLAGS) --disable-shared
	cd $(TCLDIRDIR); $(MAKE) install

tksh	: FORCE
	@echo "Installing Tk shared..."
	cd $(TKDIRDIR); CC=$(CCc) ./configure $(TCLFLAGS) --enable-shared
	cd $(TKDIRDIR); $(MAKE) install

tk	: FORCE
	@echo "Installing Tk noshared..."
	cd $(TKDIRDIR); CC=$(CCc) ./configure $(TCLFLAGS) --disable-shared
	cd $(TKDIRDIR); $(MAKE) install

tclxsh  : FORCE
	@echo "Installing TCLX shared..."
	cd $(TCLXDIRDIR); CC=$(CCc) ./configure $(TCLXFLAGS) --enable-shared
	cd $(TCLXDIRDIR); $(MAKE) install

tclx  : FORCE
	@echo "Installing TCLX noshared..."
	cd $(TCLXDIRDIR); CC=$(CCc) ./configure $(TCLXFLAGS) --disable-shared
	cd $(TCLXDIRDIR); $(MAKE) install

tktablesh : FORCE
	@echo "Installing TkTable..."
	cd $(TKTABLEDIR); CC=$(CCc) ./configure $(TCLFLAGS) --enable-shared
	cd $(TKTABLEDIR); $(MAKE); $(MAKE) install 

tktable	: FORCE
	@echo "Installing TkTable..."
	cd $(TKTABLEDIR); CC=$(CCc) ./configure $(TCLFLAGS) --disable-shared
	cd $(TKTABLEDIR); $(MAKE); $(MAKE) install

tcllib	: FORCE
	@echo "Installing TCLLIB..."
	cd $(TCLLIBDIR); ./configure $(TCLLIBFLAGS)
	cd $(TCLLIBDIR); $(MAKE) install

tkindex : FORCE
	@echo "Installing Tk mkIndex..."
	cd lib/tk8.4; echo "pkg_mkIndex . *.tcl" | ../../bin/tclsh8.4	

blt	: FORCE
	@echo "Installing BLT..."
	cd $(BLTDIR); ./configure $(BLTFLAGS)
	cd $(BLTDIR); $(MAKE); $(MAKE) install

mktclapp: FORCE
	@echo "Installing MKTCLAPP..."
	cd $(MKTCLAPPDIR); CC=$(CCc) $(MAKE) mktclapp -e
	cp $(MKTCLAPPDIR)/mktclapp$(EXE) bin/.

zlib  : FORCE
	@echo "Installing zlib..."
	cd $(ZLIBDIR); CC=$(CCc) ./configure $(ZLIBFLAGS)
	cd $(ZLIBDIR); $(MAKE) install

zlibsh  : FORCE
	@echo "Installing zlib..."
	cd $(ZLIBDIR); CC=$(CCc) ./configure $(ZLIBFLAGS) --shared
	cd $(ZLIBDIR); $(MAKE) install

tkimg	: FORCE
	@echo "Installing TKIMG noshared..."
	cd $(TKIMGDIR); CC=$(CCc) ./configure $(TKIMGFLAGS) --disable-shared
	cd $(TKIMGDIR); $(MAKE) install

tkimgsh	: FORCE
	@echo "Installing TKIMG shared..."
	cd $(TKIMGDIR); CC=$(CCc) ./configure $(TKIMGFLAGS)
	cd $(TKIMGDIR); $(MAKE) install

tkmpeg	: FORCE
	@echo "Installing TKMPEG..."
	cd $(TKMPEGDIR); $(MAKE)
	cd $(TKMPEGDIR); $(MAKE) install

html	: FORCE
	@echo "Installing HTMLWIDGET noshared..."
	cd $(HTMLDIR); CC=$(CCc) $(PREHTMLFLAGS) $(root)/htmlwidget/configure $(HTMLFLAGS) --enable-shared=no
	cd $(HTMLDIR); $(MAKE)
	cp $(HTMLDIR)/libtkhtml.a lib/.

htmlsh	: FORCE
	@echo "Installing HTMLWIDGET shared..."
	cd $(HTMLDIR); CC=$(CCc) $(PREHTMLFLAGS) $(root)/htmlwidget/configure $(HTMLFLAGS) --enable-shared=yes
	cd $(HTMLDIR); $(MAKE)
	cp $(HTMLDIR)/libtkhtml.a lib/.
	cp $(HTMLDIR)/tkhtml.$(SHEXT) lib/libtkhtml.$(SHEXT)

xpash	: FORCE
	@echo "Installing XPA shared..."
	cd $(XPADIR); CC=$(CCc) ./configure $(XPAFLAGS) --enable-shared
	cd $(XPADIR); $(MAKE); $(MAKE) tclxpa; $(MAKE) install

xpa	: FORCE
	@echo "Installing XPA..."
	cd $(XPADIR); CC=$(CCc) ./configure $(XPAFLAGS)  --disable-shared
	cd $(XPADIR); $(MAKE); $(MAKE) install

iis	: FORCE
	@echo "Installing IIS..."
	cd $(IISDIR); $(MAKE) install

checkdns: FORCE
	@echo "Installing CheckDNS..."
	cd $(CHECKDNSDIR); $(MAKE) install

funtools: FORCE
	@echo "Installing Funtools..."
	cd $(FUNTOOLSDIR); CC=$(CC) CFLAGS='${CCOPT}' ./configure $(FUNTOOLSFLAGS)
	cd $(FUNTOOLSDIR); $(MAKE) lib

ast	: FORCE
	@echo "Installing AST..."
	cd $(ASTDIR); $(MAKE) install

wcssubs	: FORCE
	@echo "Installing WCSSUBS..."
	cd $(WCSSUBSDIR); $(MAKE) install

sla	: FORCE 
	@echo "Installint SLA..."
	cd $(SLADIR); $(MAKE) install

saotk	: FORCE
	@echo "Installing SAOTK..."
	cd $(SAOTKDIR); $(MAKE) install

win	: FORCE
	@echo "Installing WIN..."
	cp $(WININCL) include/.
	cd $(WINDIR); $(MAKE) install

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

clean : FORCE
	$(RM) core *~ *#
	cd $(IISDIR); $(MAKE) clean
	cd $(CHECKDNSDIR); $(MAKE) clean
	cd $(SAOTKDIR); $(MAKE) clean
	cd $(DS9DIR); $(MAKE) clean
ifeq ($(ARCH),windows)
	cd $(WINDIR); make clean
endif

distclean : tclclean tkclean \
	tktableclean tcllibclean bltclean \
	mktclappclean zlibclean tkimgclean tkmpegclean htmlclean \
	xpaclean iisclean checkdnsclean funtoolsclean \
	slaclean astclean wcssubsclean saotkclean ds9clean dirsclean FORCE
	$(RM) core *~ *#
ifeq ($(ARCH),windows)
	cd $(WINDIR); make distclean
endif

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

tclclean : FORCE
	cd $(TCLDIRDIR); make distclean

tkclean : FORCE
	cd $(TKDIRDIR); make distclean

tktableclean: FORCE
	cd $(TKTABLEDIR); make distclean

tcllibclean: FORCE
	cd $(TCLLIBDIR); make distclean

bltclean: FORCE
	cd $(BLTDIR); make distclean

tkimgclean: FORCE
	rm -fr $(TKIMGDIR)/Img/*
	rm -fr $(LIB)/Img1.3
	cd $(TKIMGDIR); make distclean

tkmpegclean: FORCE
	cd $(TKMPEGDIR); make distclean

mktclappclean: FORCE
	cd $(MKTCLAPPDIR); rm mktclapp$(EXE)

zlibclean: FORCE
	cd $(ZLIBDIR); make distclean

htmlclean: FORCE
	cd $(HTMLDIR); make distclean

xpaclean : FORCE
	cd $(XPADIR); make distclean

iisclean : FORCE
	cd $(IISDIR); make distclean

checkdnsclean : FORCE
	cd $(CHECKDNSDIR); make distclean

saotkclean : FORCE
	cd $(SAOTKDIR); $(MAKE) distclean

ds9clean : FORCE
	cd $(DS9DIR); $(MAKE) distclean

winclean : FORCE
	cd $(WINDIR); make distclean

funtoolsclean: FORCE
	cd $(FUNTOOLSDIR); make distclean

slaclean: FORCE
	cd $(SLADIR); make distclean

astclean: FORCE
	cd $(ASTDIR); make distclean

wcssubsclean: FORCE
	cd $(WCSSUBSDIR); make distclean

tclxclean: FORCE
	cd $(TCLXDIRDIR); make distclean

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

commit : FORCE
	cvs commit -m "" acknowledgement admin checkdns tkmpeg COPYING copyright ds9 iis make.alpha make.darwin make.hpux make.linux make.linux64 make.linuxppc make.sgi make.solaris make.solaris64 make.windows make.pkgs Makefile notes mods README saotk win $(ASTDIR)/Makefile $(WCSSUBSDIR)/Makefile $(SLADIR)/Makefile

update : FORCE
	cvs update acknowledgement admin checkdns tkmpeg COPYING copyright ds9 iis make.alpha make.darwin make.hpux make.linux make.linux64 make.linuxppc make.sgi make.solaris make.solaris64 make.windows make.pkgs Makefile notes mods README saotk win $(ASTDIR)/Makefile $(WCSSUBSDIR)/Makefile $(SLADIR)/Makefile

FORCE	:
