###########################################################################
#
# Makefile -- runtime-src/src/colservr
# A component of the Greenstone digital library software
# from the New Zealand Digital Library Project at the
# University of Waikato, New Zealand.
#
# Copyright (C) 1999-2008  The 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.
#
###########################################################################

GSDL_DIR = ../../..
COMMON_DIR = $(GSDL_DIR)/common-src

INDEXERS_DIR = $(COMMON_DIR)/indexers
COMMON_PACKAGES_DIR = $(COMMON_DIR)/packages

# NOTE: phrasequeryfilter inherits from mgqueryfilter and uses mgsearch
ENABLE_MG = @ENABLE_MG@
ifeq ($(ENABLE_MG), 1)
MG_SOURCES = mgq.c \
	mgqueryfilter.cpp \
	mgsearch.cpp \
	mgsource.cpp \
	phrasequeryfilter.cpp
MG_OBJECTS = mgq.o \
	mgqueryfilter.o \
	mgsearch.o \
	mgsource.o \
	phrasequeryfilter.o
MG_INCLUDES = -I$(INDEXERS_DIR)/mg -I$(INDEXERS_DIR)/mg/lib -I$(INDEXERS_DIR)/mg/src/text
else
MG_SOURCES =
MG_OBJECTS =
MG_INCLUDES =
endif

ENABLE_MGPP = @ENABLE_MGPP@
ifeq ($(ENABLE_MGPP), 1)
MGPP_SOURCES = mgppqueryfilter.cpp \
	mgppsearch.cpp \
	mgppsource.cpp
MGPP_OBJECTS = mgppqueryfilter.o \
	mgppsearch.o \
	mgppsource.o
MGPP_INCLUDES = -I$(INDEXERS_DIR)/mgpp/lib -I$(INDEXERS_DIR)/mgpp/text
else
MGPP_SOURCES =
MGPP_OBJECTS =
MGPP_INCLUDES =
endif


ENABLE_LUCENE = @ENABLE_LUCENE@
ifeq ($(ENABLE_LUCENE), 1)
LUCENE_SOURCES = lucenequeryfilter.cpp \
	lucenesearch.cpp \
	lucenesource.cpp
LUCENE_OBJECTS = lucenequeryfilter.o \
	lucenesearch.o \
	lucenesource.o
else
LUCENE_SOURCES =
LUCENE_OBJECTS =
endif


USE_GDBM = @USE_GDBM@
ifeq ($(USE_GDBM), 1)
GDBM_DEFINES = -DUSE_GDBM
GDBM_INCLUDES = -I$(COMMON_PACKAGES_DIR)/gdbm/include
else
GDBM_DEFINES = 
GDBM_INCLUDES = 
endif


USE_JDBM = @USE_JDBM@
ifeq ($(USE_JDBM), 1)
JDBM_DEFINES = -DUSE_JDBM
else
JDBM_DEFINES = 
endif


USE_SQLITE = @USE_SQLITE@
ifeq ($(USE_SQLITE), 1)
SQLITE_DEFINES = -DUSE_SQLITE
SQLITE_INCLUDES = -I$(COMMON_PACKAGES_DIR)/sqlite/include
else
SQLITE_DEFINES = 
SQLITE_INCLUDES = 
endif

# Support for Extensions
EXT_DEFINES =
EXT_INCLUDES =

AR = ar
CC = @CC@
CXX = @CXX@
CFLAGS = @CFLAGS@ @ARCH_DEP_FLAGS@
CXXFLAGS = @CXXFLAGS@ @ARCH_DEP_FLAGS@
DEFS = @DEFS@ -DNZDL -DQUIET -DSHORT_SUFFIX -DPARADOCNUM -DGSDLSERVER $(GDBM_DEFINES) $(JDBM_DEFINES) $(SQLITE_DEFINES) $(EXT_DEFINES)
# Do NOT add the "recpt" directory here: the colserver should be independent of the receptionist!
INCLUDES = -I. -I$(GSDL_DIR) -I$(COMMON_DIR)/src/lib \
	$(MG_INCLUDES) \
	$(MGPP_INCLUDES) \
	-I$(COMMON_PACKAGES_DIR)/expat/include \
	$(GDBM_INCLUDES) $(SQLITE_INCLUDES) $(EXT_INCLUDES)
RANLIB = @RANLIB@


COMPILE = $(CC) -c $(CFLAGS) $(DEFS) $(INCLUDES)
CXXCOMPILE = $(CXX) -c $(CXXFLAGS) $(DEFS) $(INCLUDES)


.SUFFIXES:
.SUFFIXES: .c .o
.c.o:
	$(COMPILE) $<

.SUFFIXES: .cpp .o
.cpp.o:
	$(CXXCOMPILE) $< 


SOURCES = \
        browsefilter.cpp \
	collectserver.cpp \
	collectset.cpp \
	colservertools.cpp \
        colservrconfig.cpp \
	comtypes.cpp \
	expat_document.cpp \
	expat_resultset.cpp \
	fieldedqueryfilter.cpp \
	filter.cpp \
	$(LUCENE_SOURCES) \
	maptools.cpp \
	$(MG_SOURCES) \
	$(MGPP_SOURCES) \
	phrasesearch.cpp \
	querycache.cpp \
	queryfilter.cpp \
	queryinfo.cpp \
	search.cpp \
	source.cpp \
	sqlbrowsefilter.cpp \
	sqlqueryfilter.cpp \
	sqlfilter.cpp

OBJECTS = \
        browsefilter.o \
	collectserver.o \
	collectset.o \
	colservertools.o \
        colservrconfig.o \
	comtypes.o \
	expat_document.o \
	expat_resultset.o \
	filter.o \
	fieldedqueryfilter.o \
	$(LUCENE_OBJECTS) \
	maptools.o \
	$(MG_OBJECTS) \
	$(MGPP_OBJECTS) \
	phrasesearch.o \
	querycache.o \
	queryfilter.o \
	queryinfo.o \
	search.o \
	source.o \
	sqlbrowsefilter.o \
	sqlqueryfilter.o \
	sqlfilter.o

LIBRARY = gsdlcolservr.a


# Default target: make gsdlcolservr.a
all: $(LIBRARY)

gsdlcolservr.a: $(OBJECTS)
	rm -f $(LIBRARY)
	$(AR) cru $(LIBRARY) $(OBJECTS)
	$(RANLIB) $(LIBRARY)

install:

clean:
	rm -f $(OBJECTS) $(LIBRARY)

distclean:
	rm -f $(OBJECTS) $(LIBRARY) Makefile

depend:
	makedepend -Y -- $(DEFS) $(INCLUDES) $(CXXFLAGS) -- $(SOURCES)
