###########################################################################
#
# Makefile -- Makefile for packages included with Greenstone runtime
#
# A component of the Greenstone digital library software
# from the New Zealand Digital Library Project at the
# University of Waikato, New Zealand.
#
# Copyright (C) 2000 New Zealand Digital Library Project
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#
###########################################################################


USE_Z3950=@USE_Z3950@
USE_YAZ=@USE_YAZ@
USE_APACHE_HTTPD=@USE_APACHE_HTTPD@

ifeq ($(USE_Z3950), 1)
# make sure USE_YAZ is set
USE_YAZ=1
D2M=d2m
else
D2M=
endif

ifeq ($(USE_YAZ), 1)
# we only compile the src and client dirs for now.
YAZ=yaz/yaz-2.1.56/src yaz/yaz-2.1.56/client 
else
YAZ=
endif


USE_CORBA=@USE_CORBA@
MICO_DIR=@MICO_DIR@
ifeq ($(USE_CORBA), 1)
ifeq ($(MICO_DIR), default)
CORBA="mico/mico"
else
CORBA=
endif
else
CORBA=
endif

GSDLOS = @gsdlos@

ifeq ($(USE_APACHE_HTTPD), 1)
HTTPD=apache-httpd/httpd-2.2.11
else
HTTPD=
endif


# PACKAGEDIRS contains the packages that we want to make and install.  It
# is assumed that each package will have at least four rules: all, install,
# clean, and distclean.
INSTALLDIRS =   $(YAZ) $(D2M) $(CORBA)
PACKAGEDIRS =	$(INSTALLDIRS) $(HTTPD)

REPLACELIST = conf/extra/httpd-dav.conf \
	conf/extra/httpd-manual.conf \
	conf/extra/httpd-autoindex.conf \
	conf/extra/httpd-vhosts.conf \
	conf/extra/httpd-ssl.conf \
	conf/extra/httpd-multilang-errordoc.conf \
	conf/original/extra/httpd-dav.conf \
	conf/original/extra/httpd-manual.conf \
	conf/original/extra/httpd-autoindex.conf \
	conf/original/extra/httpd-vhosts.conf \
	conf/original/extra/httpd-ssl.conf \
	conf/original/extra/httpd-multilang-errordoc.conf \
	conf/original/httpd.conf\
	lib/apr-util-1/apr_dbd_odbc.la \
	lib/apr-util-1/apr_dbd_sqlite3.la \
	lib/pkgconfig/apr-util-1.pc \
	lib/pkgconfig/apr-1.pc \
	lib/libaprutil-1.la \
	lib/libapr-1.la \
	build/config_vars.mk \
	build/config.nice \
	build/apr_rules.mk \
	bin/dbmmanage \
	bin/apu-1-config \
	bin/apr-1-config \
	include/ap_config_auto.h \
	include/ap_config_layout.h

all:
	for odir in $(PACKAGEDIRS); do \
          echo making $@ in $$odir; \
          (cd $$odir && $(MAKE) $(MDEFINES) $@) || exit 1; \
        done
ifeq ($(USE_APACHE_HTTPD), 1)
# Need to make install here, otherwise src/recpt won't be able
# to compile mod_gsdl.cpp with installed header files etc.
	(cd $(HTTPD) && $(MAKE) $(MDEFINES) install) || exit 
endif

ifeq ($(CORBA), "mico/mico")
	cd mico/mico; $(MAKE)  $(MDEFINES) install
	mkdir -p ../bin/linux
	mkdir -p ../lib
	mkdir -p ../include
	mkdir -p ../man
	cp -f mico/bin/* ../bin/linux
	cp -f mico/lib/* ../lib/
	cp -fr mico/include/* ../include
	cp -fr mico/man ../man
endif
ifeq ($(USE_YAZ), 1)
# need to do make install in include and src dirs to get the header files and
# lib file into the right place
	cd yaz/yaz-2.1.56/include; $(MAKE)  $(MDEFINES) install
	cd yaz/yaz-2.1.56/src; $(MAKE)  $(MDEFINES) install
endif

# now install everything except apache, since that had already been installed during "all"
install:
	for idir in $(INSTALLDIRS); do \
          echo installing $$idir; \
          (cd $$idir && $(MAKE) install) || exit 1; \
        done
ifeq ($(USE_APACHE_HTTPD), 1)
	mkdir -p ../../apache-httpd/$(GSDLOS)/conf
	cp -f apache-httpd/httpd.conf.in ../../apache-httpd/$(GSDLOS)/conf/.
	mkdir -p ../../etc/logs-gsi
	@ echo "*************** INFO ***************"
	@ echo "Run: source setup.bash, to set up the environment for greenstone"
	@ echo "Type: make configure-admin, to set the admin password"
	@ echo "Edit: llssite.cfg files to change the port number if necessary"
	@ echo "Type: make configure-web, to configure the included apache webserver"
	@ echo "EITHER type: make web-start, to launch the webserver from the command-line"
	@ echo "OR run: gs2-server.sh, to launch the GUI version of the included webserver"
	@ echo "************************************"
endif

clean:
	for subdir in $(PACKAGEDIRS); do \
          echo cleaning $@ in $$subdir; \
          (cd $$subdir && $(MAKE) clean || exit 0) ; \
        done

distclean:
	rm -f Makefile 
	for subdir in $(PACKAGEDIRS); do \
          echo cleaning $@ in $$subdir; \
          (cd $$subdir && $(MAKE) distclean || exit 0) ; \
        done

apache-for-dist:
	( httpddir=`cd ./apache-httpd/httpd* ; pwd` ; \
	  cp $$httpddir/support/apxs.in ../../apache-httpd/$(GSDLOS)/apxs.in ; \
	  cp apache-httpd/install-bindist.sh ../../apache-httpd/$(GSDLOS)/install-bindist.sh ; \
	  chmod 755 ../../apache-httpd/$(GSDLOS)/install-bindist.sh ; \
	  gsdldir=`cd ../.. ; pwd` ; \
	  pre="$$gsdldir/apache-httpd/$(GSDLOS)" ; \
	  for one_file in apachectl envvars envvars-std; do \
	    sed -e "s%$$pre%*\*\APACHE_HOME_OS\*\*%" "$$pre/bin/$$one_file" > "$$pre/bin/$$one_file.in" ; \
	    cp "$$pre/bin/$$one_file.in" "$$pre/bin/$$one_file" ; \
	  done ; \
	  for one_file in $(REPLACELIST); do \
	    sed -e "s%$$pre%*\*\APACHE_HOME_OS\*\*%" "$$pre/$$one_file" > "$$pre/$$one_file.in" ; \
	    cp "$$pre/$$one_file.in" "$$pre/$$one_file" ; \
	  done ; \
	  cat "$$pre/bin/apr-1-config" \
	    | sed -e "s%^APR_SOURCE_DIR=.*%APR_SOURCE_DIR=%" \
	    | sed -e "s%^APR_BUILD_DIR=.*%APR_BUILD_DIR=%" \
	    > "$$pre/bin/apr-1-config.in" ; \
	  cp "$$pre/bin/apr-1-config.in" "$$pre/bin/apr-1-config" ; \
	  cat "$$pre/bin/apu-1-config" \
	    | sed -e "s%^APU_SOURCE_DIR=.*%APU_SOURCE_DIR=%" \
	    | sed -e "s%^APU_BUILD_DIR=.*%APU_BUILD_DIR=%" \
	    > "$$pre/bin/apu-1-config.in" ; \
	  cp "$$pre/bin/apu-1-config.in" "$$pre/bin/apu-1-config" ; \
	  sed -e "s%^EXTRA_INCLUDES\s*=.*%EXTRA_INCLUDES=%" "$$pre/build/config_vars.mk" > "$$pre/build/config_vars.mk.in" ; \
	  cp "$$pre/build/config_vars.mk.in" "$$pre/build/config_vars.mk" ; )
