blob: edbe54be1e70a69ccdeeb5bc0ec058f469527196 [file] [log] [blame]
# Makefile for libprocess. Note that 3rdparty needs to be built
# first (see 3rdparty/Makefile.am).
ACLOCAL_AMFLAGS = -I m4
AUTOMAKE_OPTIONS = foreign
# NOTE: The libprocess headers were moved to the Makefile in "include"
# subdirectory to make it easy to preserve the directory structure of
# the header files during installation.
SUBDIRS = 3rdparty . include
include 3rdparty/versions.am
STOUT = 3rdparty/stout
BOOST = 3rdparty/boost-$(BOOST_VERSION)
GLOG = 3rdparty/glog-$(GLOG_VERSION)
GMOCK = 3rdparty/gmock-$(GMOCK_VERSION)
GPERFTOOLS = 3rdparty/gperftools-$(GPERFTOOLS_VERSION)
GTEST = $(GMOCK)/gtest
LIBEV = 3rdparty/libev-$(LIBEV_VERSION)
PICOJSON = 3rdparty/picojson-$(PICOJSON_VERSION)
# Library. It is not installable presently because most people link
# the libprocess statically into their resulting library or binary and
# don't want any parts of libprocess to get installed (which happens
# even if you attempt to do conditional installation via configure
# arguments, see configure.ac).
noinst_LTLIBRARIES = libprocess.la
libprocess_la_SOURCES = \
src/config.hpp \
src/decoder.hpp \
src/encoder.hpp \
src/gate.hpp \
src/http.cpp \
src/latch.cpp \
src/metrics/metrics.cpp \
src/pid.cpp \
src/process.cpp \
src/reap.cpp \
src/subprocess.cpp \
src/synchronized.hpp \
src/timeseries.cpp
libprocess_la_CPPFLAGS = \
-I$(srcdir)/include \
-I$(srcdir)/$(STOUT)/include \
-I$(BOOST) \
-I$(LIBEV) \
-I$(PICOJSON) \
$(AM_CPPFLAGS)
if WITH_BUNDLED_GLOG
libprocess_la_CPPFLAGS += -I$(GLOG)/src
LIBGLOG = $(GLOG)/libglog.la
else
LIBGLOG = -lglog
endif
if WITH_BUNDLED_HTTP_PARSER
RY_HTTP_PARSER = 3rdparty/ry-http-parser-$(RY_HTTP_PARSER_VERSION)
libprocess_la_CPPFLAGS += -I$(RY_HTTP_PARSER)
HTTP_PARSER_LIB = 3rdparty/libry_http_parser.la
else
HTTP_PARSER_LIB = -lhttp_parser
endif
if WITH_BUNDLED_LIBEV
LIBEV_LIB = $(LIBEV)/libev.la
else
LIBEV_LIB = -lev
endif
libprocess_la_LIBADD = \
$(LIBGLOG) \
$(HTTP_PARSER_LIB) \
$(LIBEV_LIB)
if HAS_GPERFTOOLS
libprocess_la_CPPFLAGS += -I$(GPERFTOOLS)/src
libprocess_la_LIBADD += $(GPERFTOOLS)/libprofiler.la
endif
# Tests.
check_PROGRAMS = tests
tests_SOURCES = \
src/tests/decoder_tests.cpp \
src/tests/encoder_tests.cpp \
src/tests/http_tests.cpp \
src/tests/io_tests.cpp \
src/tests/main.cpp \
src/tests/mutex_tests.cpp \
src/tests/metrics_tests.cpp \
src/tests/owned_tests.cpp \
src/tests/process_tests.cpp \
src/tests/queue_tests.cpp \
src/tests/reap_tests.cpp \
src/tests/sequence_tests.cpp \
src/tests/shared_tests.cpp \
src/tests/statistics_tests.cpp \
src/tests/subprocess_tests.cpp \
src/tests/system_tests.cpp \
src/tests/timeseries_tests.cpp \
src/tests/time_tests.cpp
tests_CPPFLAGS = \
-I$(top_srcdir)/src \
-I$(GTEST)/include \
-I$(GMOCK)/include \
$(libprocess_la_CPPFLAGS)
tests_LDADD = \
3rdparty/libgmock.la \
libprocess.la \
$(LIBGLOG) \
$(HTTP_PARSER_LIB) \
$(LIBEV_LIB)
# We use a check-local target for now to avoid the parallel test
# runner that ships with newer versions of autotools.
# See the following discussion for the workaround:
# http://lists.gnu.org/archive/html/automake/2013-01/msg00051.html
check-local: tests
./tests
# TODO(benh): Fix shared builds (tests need libglog, libev, etc).
# Using LT_OUTPUT in configure.ac creates config.lt that doesn't get
# cleaned up by distclean-libtool. See this bug patch (which doesn't
# appear to be in all versions of libtool.m4):
# http://lists.gnu.org/archive/html/automake-commit/2008-11/msg00015.html.
distclean-local:
-rm -f config.lt