# -----------------------------------------------------------------------------
# Build and install Sparky C++ executables, manual, Python code, lib files
# by calling make in subdirectories.
#
# To build and install Sparky for use with Python:
#
#	% make
#	% make install
#
# To build and install Sparky without Python:
#
#	% make nopython
#	% make install-nopython
#
# Binary distributions of Sparky are available at
#
#	http://www.cgl.ucsf.edu/home/sparky
#
# If you want to compile your own version you will need Tcl/Tk and a C++
# compiler.  If you want to use Sparky extensions written in the Python
# language you will also need Python (http://www.python.org), and shared
# library versions of Tcl/Tk (http://www.scriptics.com).
#

INSTALL		= \cp
INSTALLDIR	= \cp -R

SPARKY		= /usr/local/src/sparky
SPARKY_SRC	= $(SPARKY)/c++
SPARKY_OBJ	= $(SPARKY)/c++
SPARKY_INSTALL	= /usr/local/sparky
SPARKY_SCRIPT	= sparky
SCRIPT_SUFFIX	=

EXE_SUFFIX	=
EXECUTABLES	= sparky-no-python$(EXE_SUFFIX) ucsfdata$(EXE_SUFFIX) \
		  pipe2ucsf$(EXE_SUFFIX) vnmr2ucsf$(EXE_SUFFIX) \
		  bruk2ucsf$(EXE_SUFFIX) peaks2ucsf$(EXE_SUFFIX) \
		  matrix2ucsf$(EXE_SUFFIX)

PYTHON_VERSION	= 2.3
PYTHON_DIR	= 

PYMOD_SUFFIX	= .so
SPY_PYMOD	= spy$(PYMOD_SUFFIX)
TKINTER_PYMOD	= _tkinter$(PYMOD_SUFFIX)

all nopython $(SPY_PYMOD) $(TKINTER_PYMOD) $(EXECUTABLES) debug-sparky clean: force
	cd $(SPARKY_OBJ) && $(MAKE) -f $(SPARKY_SRC)/Makefile -e $@

Makefile.dep TAGS: force
	cd $(SPARKY_SRC) && $(MAKE) -f Makefile -e $@

install: install-nopython $(SPARKY_INSTALL) install-python
	cd $(SPARKY_OBJ) && \
	$(MAKE) -f $(SPARKY_SRC)/Makefile -e install-python
	cd $(SPARKY)/python && $(MAKE) -f Makefile -e install

install-nopython: install-bin install-example install-lib \
		  install-man install-misc

install-bin: $(SPARKY_INSTALL) $(SPARKY_INSTALL)/bin
	cd $(SPARKY_OBJ) && \
	$(MAKE) -f $(SPARKY_SRC)/Makefile -e install-nopython
	cd $(SPARKY_INSTALL)/bin ; \
	$(INSTALL) $(SPARKY)/bin/$(SPARKY_SCRIPT) sparky$(SCRIPT_SUFFIX) ; \
	chmod 755 sparky$(SCRIPT_SUFFIX)

install-example: $(SPARKY_INSTALL)
	cd $(SPARKY) ; $(INSTALLDIR) example $(SPARKY_INSTALL)

install-lib: $(SPARKY_INSTALL)
	cd $(SPARKY)/lib && $(MAKE) -f Makefile -e install

install-man: $(SPARKY_INSTALL)
	cd $(SPARKY)/manual && $(MAKE) -f Makefile -e install

install-misc: $(SPARKY_INSTALL)
	cd $(SPARKY) ; $(INSTALL) LICENSE README $(SPARKY_INSTALL)
	cd $(SPARKY_INSTALL) ; chmod 644 LICENSE README

install-python: $(SPARKY_INSTALL) $(SPARKY_INSTALL)/python$(PYTHON_VERSION)
ifdef PYTHON_DIR
	$(INSTALLDIR) $(PYTHON_DIR)/* $(SPARKY_INSTALL)/python$(PYTHON_VERSION)
else
	echo "Not packaging Python with Sparky."
endif

install-mac:
	cd $(SPARKY)/mac && $(MAKE) -f Makefile -e install

$(SPARKY_INSTALL) $(SPARKY_INSTALL)/bin $(SPARKY_INSTALL)/python$(PYTHON_VERSION):
	mkdir $@
	chmod 755 $@

force:
