#
# Sequoia: Database clustering technology.
# Copyright (C) 2005-2006 Continuent, Inc.
# Contact: sequoia@continuent.org
# 
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# 
# http://www.apache.org/licenses/LICENSE-2.0
# 
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Initial developer(s): Gilles Rayrat
# Contributor(s): Marc Herbert
#

# Makefile for the Carob C++ API and tests
#


MKINCLUDES=../make-includes


# gives default names like: carob, libcarob, libcarob.so.1,
# libcarob.1.dylib etc.
include ${MKINCLUDES}/defaults.mk

LIB_CAROB_SO            = ${CAROB_ROOT}/${LIB_CAROB_SONAME}
LIB_CAROB_A             = ${CAROB_ROOT}/${LIB_CAROB_STATIC}

# customization
include ${MKINCLUDES}/main.mk



INCDIR                  = ${CAROB_ROOT}/include


LIB_CPPUNIT             = cppunit
LIB_CPPUNIT_QTUI        = qttestrunner

# TESTSRCS. Please leave one blank line after include
include testslist


TESTOBJS = ${TESTSRCS:%.cpp=%.o}

# mandatory CPPFLAGS
override CPPFLAGS       += -I${INCDIR}



# For QT ui, uncomment this
#override LDFLAGS           += -l${LIB_CPPUNIT_QTUI}
EXE                     = carobTestLauncher

# to run against a mysql cluster (changes user/pass and requests)
# see 20-Write/TestExecWriteRequest.cpp
#CXXFLAGS                += -DCAROB_TEST_USE_MYSQL

all: test
test: ${EXE}
# Cannot use LDLIBS here since it is already used to build libcarob.so
${EXE}: ${TESTOBJS} CarobTestLauncher.o ${LIB_CAROB_SO}
	${CXX} ${CXXFLAGS} $^ ${LDFLAGS} ${TEST_LDFLAGS} -lcppunit ${CLIENT_LDLIBS} -o $@
	${LDD} $@

${LIB_CAROB_SO} ${LIB_CAROB_A}:
	${MAKE} -C ${CAROB_ROOT}

# use this when compiling with mingw
static: ${TESTOBJS} CarobTestLauncher.o ${LIB_CAROB_A}
	${CXX} ${CXXFLAGS} $^ ${LDFLAGS} -lgmp -lcppunit ${LDLIBS} ${CLIENT_LDLIBS} -o $@

clean: clean-check
	${RM} ${TESTOBJS} CarobTestLauncher.o ${EXE} static

testslist:
	{ printf "# To update me, delete me.\nTESTSRCS = \\\\\n" ; for i in \
	CarobTestLauncher.cpp ConnectionSetup.cpp [0-9][0-9]-*/Test*.cpp     ; \
	do printf "$$i \\\\\n"; done ; } > $@

distclean: clean
	${RM} testslist


   ########## CHECKS ##############"

check: checkstatic checklib

clean-check:
	${RM} checkstatic checklib

# Link a empty executable to our lib
# Useful to detect unresolved symbols in our lib
checklib:  ${LIB_CAROB_SO}
	- ${CXX} ${CXXFLAGS} ${CPPFLAGS} dummymain.cpp $< ${LDFLAGS} ${TEST_LDFLAGS} ${CLIENT_LDLIBS} -o $@
	${LDD} $< ./$@
	./$@

checkstatic: ${LIB_CAROB_A}
	${CXX} ${CXXFLAGS} ${CPPFLAGS} dummymain.cpp $< ${LDFLAGS} ${LDLIBS} ${CLIENT_LDLIBS} -o $@
	${LDD} ./$@
	./$@

