# -----------------------------------------------------------------------------
# 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)
SHLIB_SUFFIX	= .so
SPY_SHLIB	= spy$(SHLIB_SUFFIX)
TKINTER_SHLIB	= _tkinter$(SHLIB_SUFFIX)

all nopython $(SPY_SHLIB) $(TKINTER_SHLIB) $(EXECUTABLES) debug-sparky clean: force
	cd $(SPARKY_OBJ) ; make -f $(SPARKY_SRC)/Makefile -e $(MFLAGS) $@

Makefile.dep TAGS: force
	cd $(SPARKY_SRC) ; make -f Makefile -e $(MFLAGS) $@

install: install-nopython $(SPARKY_INSTALL)
	cd $(SPARKY_OBJ) ; \
	make -f $(SPARKY_SRC)/Makefile -e $(MFLAGS) install-python
	cd $(SPARKY)/python ; make -f Makefile -e $(MFLAGS) 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 $(MFLAGS) 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 $(MFLAGS) install

install-man: $(SPARKY_INSTALL)
	cd $(SPARKY)/manual ; make -f Makefile -e $(MFLAGS) install

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

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

force:
