1# need this for Doxygen integration 2include $(top_srcdir)/aminclude.am 3 4AUTOMAKE_OPTIONS = serial-tests 5 6if SOLARIS 7 SOLARIS_CPPFLAGS = -D_POSIX_PTHREAD_SEMANTICS 8 SOLARIS_LIB_LDFLAGS = -lnsl -lsocket 9endif 10 11if WANT_OPENSSL 12 OPENSSL_CPPFLAGS = -DHAVE_OPENSSL_H 13 OPENSSL_LIB_LDFLAGS = -lssl -lcrypto 14endif 15 16if WANT_SASL 17 SASL_CPPFLAGS = -DHAVE_CYRUS_SASL_H 18 SASL_LIB_LDFLAGS = -lsasl2 19 SASL_SRC = src/zk_sasl.c 20endif 21 22AM_CPPFLAGS = -I${srcdir}/include -I${srcdir}/tests -I${srcdir}/generated $(SOLARIS_CPPFLAGS) $(OPENSSL_CPPFLAGS) $(SASL_CPPFLAGS) 23AM_CFLAGS = -Wall -Wdeclaration-after-statement 24AM_CXXFLAGS = -Wall $(USEIPV6) 25LIB_LDFLAGS = -no-undefined -version-info 2 $(SOLARIS_LIB_LDFLAGS) $(OPENSSL_LIB_LDFLAGS) $(SASL_LIB_LDFLAGS) 26 27# Additional flags for coverage testing (if enabled) 28if ENABLEGCOV 29 AM_CFLAGS += -fprofile-arcs -ftest-coverage 30 AM_LDFLAGS = -lgcov 31endif 32 33pkginclude_HEADERS = include/zookeeper.h include/zookeeper_version.h include/zookeeper_log.h include/proto.h include/recordio.h generated/zookeeper.jute.h 34EXTRA_DIST=LICENSE 35 36HASHTABLE_SRC = src/hashtable/hashtable_itr.h src/hashtable/hashtable_itr.c \ 37 src/hashtable/hashtable_private.h src/hashtable/hashtable.h src/hashtable/hashtable.c 38 39noinst_LTLIBRARIES = libhashtable.la 40libhashtable_la_SOURCES = $(HASHTABLE_SRC) 41 42COMMON_SRC = src/zookeeper.c include/zookeeper.h include/zookeeper_version.h include/zookeeper_log.h\ 43 src/recordio.c include/recordio.h include/proto.h \ 44 src/zk_adaptor.h generated/zookeeper.jute.c \ 45 src/zk_log.c src/zk_hashtable.h src/zk_hashtable.c \ 46 src/addrvec.h src/addrvec.c $(SASL_SRC) 47 48# These are the symbols (classes, mostly) we want to export from our library. 49EXPORT_SYMBOLS = '(zoo_|zookeeper_|zhandle|Z|format_log_message|log_message|logLevel|deallocate_|allocate_|zerror|is_unrecoverable)' 50noinst_LTLIBRARIES += libzkst.la 51libzkst_la_SOURCES =$(COMMON_SRC) src/st_adaptor.c 52libzkst_la_LIBADD = -lm $(CLOCK_GETTIME_LIBS) 53 54lib_LTLIBRARIES = libzookeeper_st.la 55libzookeeper_st_la_SOURCES = 56libzookeeper_st_la_LIBADD=libzkst.la libhashtable.la 57libzookeeper_st_la_DEPENDENCIES=libzkst.la libhashtable.la 58libzookeeper_st_la_LDFLAGS = $(LIB_LDFLAGS) -export-symbols-regex $(EXPORT_SYMBOLS) 59 60if WANT_SYNCAPI 61noinst_LTLIBRARIES += libzkmt.la 62libzkmt_la_SOURCES =$(COMMON_SRC) src/mt_adaptor.c 63libzkmt_la_CFLAGS = $(AM_CFLAGS) -DTHREADED 64libzkmt_la_LIBADD = -lm $(CLOCK_GETTIME_LIBS) 65 66lib_LTLIBRARIES += libzookeeper_mt.la 67libzookeeper_mt_la_SOURCES = 68libzookeeper_mt_la_LIBADD=libzkmt.la libhashtable.la -lpthread 69libzookeeper_mt_la_DEPENDENCIES=libzkmt.la libhashtable.la 70libzookeeper_mt_la_LDFLAGS = $(LIB_LDFLAGS) -export-symbols-regex $(EXPORT_SYMBOLS) 71endif 72 73bin_PROGRAMS = cli_st 74 75cli_st_SOURCES = src/cli.c 76cli_st_LDADD = libzookeeper_st.la $(SASL_LIB_LDFLAGS) 77 78if WANT_SYNCAPI 79bin_PROGRAMS += cli_mt load_gen 80 81cli_mt_SOURCES = src/cli.c 82cli_mt_LDADD = libzookeeper_mt.la $(SASL_LIB_LDFLAGS) 83cli_mt_CFLAGS = $(AM_CFLAGS) -DTHREADED 84 85load_gen_SOURCES = src/load_gen.c 86load_gen_LDADD = libzookeeper_mt.la 87load_gen_CFLAGS = $(AM_CFLAGS) -DTHREADED 88 89endif 90 91######################################################################### 92# build and run unit tests 93 94EXTRA_DIST+=$(wildcard ${srcdir}/tests/*.cc) $(wildcard ${srcdir}/tests/*.h) \ 95 ${srcdir}/tests/wrappers.opt ${srcdir}/tests/wrappers-mt.opt 96 97# These tests are ordered in a logical manner such that each builds upon basic 98# functionality tested in prior tests. e.g. the most basic functionality is 99# tested in TestZookeeperInit and TestZookeeperClose and as such should be tested 100# first as a foundation with more complex test suites to follow. 101TEST_SOURCES = \ 102 tests/TestDriver.cc \ 103 tests/LibCMocks.cc \ 104 tests/LibCSymTable.cc \ 105 tests/MocksBase.cc \ 106 tests/ZKMocks.cc \ 107 tests/Util.cc \ 108 tests/ThreadingUtil.cc \ 109 tests/TestZookeeperInit.cc \ 110 tests/TestZookeeperClose.cc \ 111 tests/TestReconfig.cc \ 112 tests/TestReconfigServer.cc \ 113 tests/TestClientRetry.cc \ 114 tests/TestOperations.cc \ 115 tests/TestMulti.cc \ 116 tests/TestWatchers.cc \ 117 tests/TestClient.cc \ 118 tests/ZooKeeperQuorumServer.cc \ 119 tests/ZooKeeperQuorumServer.h \ 120 tests/TestReadOnlyClient.cc \ 121 tests/TestLogClientEnv.cc \ 122 tests/TestSASLAuth.cc \ 123 $(NULL) 124 125if SOLARIS 126 SHELL_SYMBOL_WRAPPERS = cat ${srcdir}/tests/wrappers.opt 127 SYMBOL_WRAPPERS=$(SHELL_SYMBOL_WRAPPERS:sh) 128else 129 SYMBOL_WRAPPERS=$(shell cat ${srcdir}/tests/wrappers.opt) 130endif 131 132check_PROGRAMS = zktest-st 133TESTS_ENVIRONMENT = ZKROOT=${srcdir}/../.. \ 134 CLASSPATH=$$CLASSPATH:$$CLOVER_HOME/lib/clover*.jar 135nodist_zktest_st_SOURCES = $(TEST_SOURCES) 136zktest_st_LDADD = libzkst.la libhashtable.la $(CPPUNIT_LIBS) $(OPENSSL_LIB_LDFLAGS) $(SASL_LIB_LDFLAGS) -ldl 137zktest_st_CXXFLAGS = $(AM_CXXFLAGS) -DUSE_STATIC_LIB $(CPPUNIT_CFLAGS) $(SOLARIS_CPPFLAGS) 138zktest_st_LDFLAGS = -shared $(SYMBOL_WRAPPERS) $(SOLARIS_LIB_LDFLAGS) 139 140if WANT_SYNCAPI 141 check_PROGRAMS += zktest-mt 142 nodist_zktest_mt_SOURCES = $(TEST_SOURCES) tests/PthreadMocks.cc 143 zktest_mt_LDADD = libzkmt.la libhashtable.la -lpthread $(CPPUNIT_LIBS) $(OPENSSL_LIB_LDFLAGS) $(SASL_LIB_LDFLAGS) -ldl 144 zktest_mt_CXXFLAGS = $(AM_CXXFLAGS) -DUSE_STATIC_LIB -DTHREADED $(CPPUNIT_CFLAGS) $(USEIPV6) 145if SOLARIS 146 SHELL_SYMBOL_WRAPPERS_MT = cat ${srcdir}/tests/wrappers-mt.opt 147 SYMBOL_WRAPPERS_MT=$(SYMBOL_WRAPPERS) $(SHELL_SYMBOL_WRAPPERS_MT:sh) 148else 149 SYMBOL_WRAPPERS_MT=$(SYMBOL_WRAPPERS) $(shell cat ${srcdir}/tests/wrappers-mt.opt) 150endif 151 zktest_mt_LDFLAGS = -shared $(SYMBOL_WRAPPERS_MT) $(SOLARIS_LIB_LDFLAGS) 152endif 153 154TESTS = $(check_PROGRAMS) 155 156clean-local: clean-check 157 $(RM) $(DX_CLEANFILES) 158 159clean-check: 160 $(RM) $(nodist_zktest_st_OBJECTS) $(nodist_zktest_mt_OBJECTS) 161