cannam@48: ## Process this file with automake to produce Makefile.in cannam@48: cannam@48: ACLOCAL_AMFLAGS = -I m4 cannam@48: cannam@48: AUTOMAKE_OPTIONS = foreign subdir-objects cannam@48: cannam@48: # When running distcheck, verify that we've included all the files needed by cannam@48: # the cmake build. cannam@48: distcheck-hook: cannam@48: rm -rf distcheck-cmake cannam@48: (mkdir distcheck-cmake && cd distcheck-cmake && cmake ../$(distdir) && make -j6 check) cannam@48: rm -rf distcheck-cmake cannam@48: cannam@48: AM_CXXFLAGS = -I$(srcdir)/src -I$(builddir)/src -DKJ_HEADER_WARNINGS -DCAPNP_HEADER_WARNINGS -DCAPNP_INCLUDE_DIR='"$(includedir)"' $(PTHREAD_CFLAGS) cannam@48: cannam@48: AM_LDFLAGS = $(PTHREAD_CFLAGS) cannam@48: cannam@48: EXTRA_DIST = \ cannam@48: README.txt \ cannam@48: LICENSE.txt \ cannam@48: $(test_capnpc_inputs) \ cannam@48: src/capnp/compiler/capnp-test.sh \ cannam@48: src/capnp/testdata/segmented-packed \ cannam@48: src/capnp/testdata/errors.capnp.nobuild \ cannam@48: src/capnp/testdata/short.txt \ cannam@48: src/capnp/testdata/flat \ cannam@48: src/capnp/testdata/binary \ cannam@48: src/capnp/testdata/errors.txt \ cannam@48: src/capnp/testdata/segmented \ cannam@48: src/capnp/testdata/packed \ cannam@48: src/capnp/testdata/pretty.txt \ cannam@48: CMakeLists.txt \ cannam@48: cmake/FindCapnProto.cmake \ cannam@48: src/CMakeLists.txt \ cannam@48: src/kj/CMakeLists.txt \ cannam@48: src/capnp/CMakeLists.txt cannam@48: cannam@48: CLEANFILES = $(test_capnpc_outputs) test_capnpc_middleman distcheck-cmake cannam@48: cannam@48: # Deletes all the files generated by autoreconf. cannam@48: MAINTAINERCLEANFILES = \ cannam@48: aclocal.m4 \ cannam@48: config.guess \ cannam@48: config.sub \ cannam@48: configure \ cannam@48: depcomp \ cannam@48: install-sh \ cannam@48: ltmain.sh \ cannam@48: Makefile.in \ cannam@48: missing \ cannam@48: mkinstalldirs \ cannam@48: config.h.in \ cannam@48: stamp.h.in \ cannam@48: m4/ltsugar.m4 \ cannam@48: m4/libtool.m4 \ cannam@48: m4/ltversion.m4 \ cannam@48: m4/lt~obsolete.m4 \ cannam@48: m4/ltoptions.m4 cannam@48: cannam@48: maintainer-clean-local: cannam@48: -rm -rf build-aux cannam@48: cannam@48: # gmake defines an implicit rule building n from n.o. Unfortunately, this triggers on our .capnp cannam@48: # files because they generate .capnp.c++ which is compiled to .capnp.o. In addition to being cannam@48: # nonsense, this leads to cyclic dependency issues and could even cause the .capnp files to be cannam@48: # unexpectedly overwritten! We need to cancel the implicit rule by declaring an explicit one. cannam@48: # cannam@48: # I want the hours of my life back that I spent figuring this out. cannam@48: %.capnp: cannam@48: @: cannam@48: cannam@48: public_capnpc_inputs = \ cannam@48: src/capnp/c++.capnp \ cannam@48: src/capnp/schema.capnp \ cannam@48: src/capnp/rpc.capnp \ cannam@48: src/capnp/rpc-twoparty.capnp \ cannam@48: src/capnp/persistent.capnp \ cannam@48: src/capnp/compat/json.capnp cannam@48: cannam@48: capnpc_inputs = \ cannam@48: $(public_capnpc_inputs) \ cannam@48: src/capnp/compiler/lexer.capnp \ cannam@48: src/capnp/compiler/grammar.capnp cannam@48: cannam@48: capnpc_outputs = \ cannam@48: src/capnp/c++.capnp.c++ \ cannam@48: src/capnp/c++.capnp.h \ cannam@48: src/capnp/schema.capnp.c++ \ cannam@48: src/capnp/schema.capnp.h \ cannam@48: src/capnp/rpc.capnp.c++ \ cannam@48: src/capnp/rpc.capnp.h \ cannam@48: src/capnp/rpc-twoparty.capnp.c++ \ cannam@48: src/capnp/rpc-twoparty.capnp.h \ cannam@48: src/capnp/persistent.capnp.c++ \ cannam@48: src/capnp/persistent.capnp.h \ cannam@48: src/capnp/compat/json.capnp.h \ cannam@48: src/capnp/compat/json.capnp.c++ \ cannam@48: src/capnp/compiler/lexer.capnp.c++ \ cannam@48: src/capnp/compiler/lexer.capnp.h \ cannam@48: src/capnp/compiler/grammar.capnp.c++ \ cannam@48: src/capnp/compiler/grammar.capnp.h cannam@48: cannam@48: includecapnpdir = $(includedir)/capnp cannam@48: includecapnpcompatdir = $(includecapnpdir)/compat cannam@48: includekjdir = $(includedir)/kj cannam@48: includekjparsedir = $(includekjdir)/parse cannam@48: includekjstddir = $(includekjdir)/std cannam@48: includekjcompatdir = $(includekjdir)/compat cannam@48: cannam@48: dist_includecapnp_DATA = $(public_capnpc_inputs) cannam@48: cannam@48: pkgconfigdir = $(libdir)/pkgconfig cannam@48: pkgconfig_DATA = capnp.pc capnp-rpc.pc kj.pc kj-async.pc cannam@48: cannam@48: noinst_HEADERS = \ cannam@48: src/kj/miniposix.h cannam@48: cannam@48: includekj_HEADERS = \ cannam@48: src/kj/common.h \ cannam@48: src/kj/units.h \ cannam@48: src/kj/memory.h \ cannam@48: src/kj/refcount.h \ cannam@48: src/kj/array.h \ cannam@48: src/kj/vector.h \ cannam@48: src/kj/string.h \ cannam@48: src/kj/string-tree.h \ cannam@48: src/kj/exception.h \ cannam@48: src/kj/debug.h \ cannam@48: src/kj/arena.h \ cannam@48: src/kj/io.h \ cannam@48: src/kj/tuple.h \ cannam@48: src/kj/one-of.h \ cannam@48: src/kj/function.h \ cannam@48: src/kj/mutex.h \ cannam@48: src/kj/thread.h \ cannam@48: src/kj/threadlocal.h \ cannam@48: src/kj/async-prelude.h \ cannam@48: src/kj/async.h \ cannam@48: src/kj/async-inl.h \ cannam@48: src/kj/time.h \ cannam@48: src/kj/async-unix.h \ cannam@48: src/kj/async-io.h \ cannam@48: src/kj/main.h \ cannam@48: src/kj/test.h \ cannam@48: src/kj/windows-sanity.h cannam@48: cannam@48: includekjparse_HEADERS = \ cannam@48: src/kj/parse/common.h \ cannam@48: src/kj/parse/char.h cannam@48: cannam@48: includekjstd_HEADERS = \ cannam@48: src/kj/std/iostream.h cannam@48: cannam@48: includekjcompat_HEADERS = \ cannam@48: src/kj/compat/gtest.h cannam@48: cannam@48: includecapnp_HEADERS = \ cannam@48: src/capnp/c++.capnp.h \ cannam@48: src/capnp/common.h \ cannam@48: src/capnp/blob.h \ cannam@48: src/capnp/endian.h \ cannam@48: src/capnp/layout.h \ cannam@48: src/capnp/orphan.h \ cannam@48: src/capnp/list.h \ cannam@48: src/capnp/any.h \ cannam@48: src/capnp/message.h \ cannam@48: src/capnp/capability.h \ cannam@48: src/capnp/membrane.h \ cannam@48: src/capnp/schema.capnp.h \ cannam@48: src/capnp/schema-lite.h \ cannam@48: src/capnp/schema.h \ cannam@48: src/capnp/schema-loader.h \ cannam@48: src/capnp/schema-parser.h \ cannam@48: src/capnp/dynamic.h \ cannam@48: src/capnp/pretty-print.h \ cannam@48: src/capnp/serialize.h \ cannam@48: src/capnp/serialize-async.h \ cannam@48: src/capnp/serialize-packed.h \ cannam@48: src/capnp/serialize-text.h \ cannam@48: src/capnp/pointer-helpers.h \ cannam@48: src/capnp/generated-header-support.h \ cannam@48: src/capnp/rpc-prelude.h \ cannam@48: src/capnp/rpc.h \ cannam@48: src/capnp/rpc-twoparty.h \ cannam@48: src/capnp/rpc.capnp.h \ cannam@48: src/capnp/rpc-twoparty.capnp.h \ cannam@48: src/capnp/persistent.capnp.h \ cannam@48: src/capnp/ez-rpc.h cannam@48: cannam@48: includecapnpcompat_HEADERS = \ cannam@48: src/capnp/compat/json.h \ cannam@48: src/capnp/compat/json.capnp.h cannam@48: cannam@48: if LITE_MODE cannam@48: lib_LTLIBRARIES = libkj.la libkj-test.la libcapnp.la cannam@48: else cannam@48: lib_LTLIBRARIES = libkj.la libkj-test.la libkj-async.la libcapnp.la libcapnp-rpc.la libcapnp-json.la libcapnpc.la cannam@48: endif cannam@48: cannam@48: # Don't include security release in soname -- we want to replace old binaries cannam@48: # in this case. cannam@48: SO_VERSION = $(shell echo $(VERSION) | sed -e 's/^\([0-9]*[.][0-9]*[.][0-9]*\)\([.][0-9]*\)*\(-.*\)*$$/\1\3/g') cannam@48: cannam@48: libkj_la_LIBADD = $(PTHREAD_LIBS) cannam@48: libkj_la_LDFLAGS = -release $(SO_VERSION) -no-undefined cannam@48: libkj_la_SOURCES= \ cannam@48: src/kj/common.c++ \ cannam@48: src/kj/units.c++ \ cannam@48: src/kj/memory.c++ \ cannam@48: src/kj/refcount.c++ \ cannam@48: src/kj/array.c++ \ cannam@48: src/kj/string.c++ \ cannam@48: src/kj/string-tree.c++ \ cannam@48: src/kj/exception.c++ \ cannam@48: src/kj/debug.c++ \ cannam@48: src/kj/arena.c++ \ cannam@48: src/kj/io.c++ \ cannam@48: src/kj/mutex.c++ \ cannam@48: src/kj/thread.c++ \ cannam@48: src/kj/main.c++ \ cannam@48: src/kj/parse/char.c++ cannam@48: cannam@48: libkj_test_la_LIBADD = libkj.la $(PTHREAD_LIBS) cannam@48: libkj_test_la_LDFLAGS = -release $(VERSION) -no-undefined cannam@48: libkj_test_la_SOURCES = src/kj/test.c++ cannam@48: cannam@48: if !LITE_MODE cannam@48: libkj_async_la_LIBADD = libkj.la $(PTHREAD_LIBS) cannam@48: libkj_async_la_LDFLAGS = -release $(SO_VERSION) -no-undefined cannam@48: libkj_async_la_SOURCES= \ cannam@48: src/kj/async.c++ \ cannam@48: src/kj/async-unix.c++ \ cannam@48: src/kj/async-io.c++ \ cannam@48: src/kj/time.c++ cannam@48: endif !LITE_MODE cannam@48: cannam@48: if !LITE_MODE cannam@48: heavy_sources = \ cannam@48: src/capnp/schema.c++ \ cannam@48: src/capnp/schema-loader.c++ \ cannam@48: src/capnp/dynamic.c++ \ cannam@48: src/capnp/stringify.c++ cannam@48: endif !LITE_MODE cannam@48: cannam@48: libcapnp_la_LIBADD = libkj.la $(PTHREAD_LIBS) cannam@48: libcapnp_la_LDFLAGS = -release $(SO_VERSION) -no-undefined cannam@48: libcapnp_la_SOURCES= \ cannam@48: src/capnp/c++.capnp.c++ \ cannam@48: src/capnp/blob.c++ \ cannam@48: src/capnp/arena.h \ cannam@48: src/capnp/arena.c++ \ cannam@48: src/capnp/layout.c++ \ cannam@48: src/capnp/list.c++ \ cannam@48: src/capnp/any.c++ \ cannam@48: src/capnp/message.c++ \ cannam@48: src/capnp/schema.capnp.c++ \ cannam@48: src/capnp/serialize.c++ \ cannam@48: src/capnp/serialize-packed.c++ \ cannam@48: $(heavy_sources) cannam@48: cannam@48: if !LITE_MODE cannam@48: cannam@48: libcapnp_rpc_la_LIBADD = libcapnp.la libkj-async.la libkj.la $(PTHREAD_LIBS) cannam@48: libcapnp_rpc_la_LDFLAGS = -release $(SO_VERSION) -no-undefined cannam@48: libcapnp_rpc_la_SOURCES= \ cannam@48: src/capnp/serialize-async.c++ \ cannam@48: src/capnp/capability.c++ \ cannam@48: src/capnp/membrane.c++ \ cannam@48: src/capnp/dynamic-capability.c++ \ cannam@48: src/capnp/rpc.c++ \ cannam@48: src/capnp/rpc.capnp.c++ \ cannam@48: src/capnp/rpc-twoparty.c++ \ cannam@48: src/capnp/rpc-twoparty.capnp.c++ \ cannam@48: src/capnp/persistent.capnp.c++ \ cannam@48: src/capnp/ez-rpc.c++ cannam@48: cannam@48: libcapnp_json_la_LIBADD = libcapnp.la libkj-async.la libkj.la $(PTHREAD_LIBS) cannam@48: libcapnp_json_la_LDFLAGS = -release $(SO_VERSION) -no-undefined cannam@48: libcapnp_json_la_SOURCES= \ cannam@48: src/capnp/compat/json.c++ \ cannam@48: src/capnp/compat/json.capnp.c++ cannam@48: cannam@48: libcapnpc_la_LIBADD = libcapnp.la libkj.la $(PTHREAD_LIBS) cannam@48: libcapnpc_la_LDFLAGS = -release $(SO_VERSION) -no-undefined cannam@48: libcapnpc_la_SOURCES= \ cannam@48: src/capnp/compiler/md5.h \ cannam@48: src/capnp/compiler/md5.c++ \ cannam@48: src/capnp/compiler/error-reporter.h \ cannam@48: src/capnp/compiler/error-reporter.c++ \ cannam@48: src/capnp/compiler/lexer.capnp.h \ cannam@48: src/capnp/compiler/lexer.capnp.c++ \ cannam@48: src/capnp/compiler/lexer.h \ cannam@48: src/capnp/compiler/lexer.c++ \ cannam@48: src/capnp/compiler/grammar.capnp.h \ cannam@48: src/capnp/compiler/grammar.capnp.c++ \ cannam@48: src/capnp/compiler/parser.h \ cannam@48: src/capnp/compiler/parser.c++ \ cannam@48: src/capnp/compiler/node-translator.h \ cannam@48: src/capnp/compiler/node-translator.c++ \ cannam@48: src/capnp/compiler/compiler.h \ cannam@48: src/capnp/compiler/compiler.c++ \ cannam@48: src/capnp/schema-parser.c++ \ cannam@48: src/capnp/serialize-text.c++ cannam@48: cannam@48: bin_PROGRAMS = capnp capnpc-capnp capnpc-c++ cannam@48: cannam@48: capnp_LDADD = libcapnpc.la libcapnp.la libkj.la $(PTHREAD_LIBS) cannam@48: capnp_SOURCES = \ cannam@48: src/capnp/compiler/module-loader.h \ cannam@48: src/capnp/compiler/module-loader.c++ \ cannam@48: src/capnp/compiler/capnp.c++ cannam@48: cannam@48: capnpc_capnp_LDADD = libcapnp.la libkj.la $(PTHREAD_LIBS) cannam@48: capnpc_capnp_SOURCES = src/capnp/compiler/capnpc-capnp.c++ cannam@48: cannam@48: capnpc_c___LDADD = libcapnp.la libkj.la $(PTHREAD_LIBS) cannam@48: capnpc_c___SOURCES = src/capnp/compiler/capnpc-c++.c++ cannam@48: cannam@48: # Symlink capnpc -> capnp. The capnp binary will behave like the old capnpc cannam@48: # binary (i.e. like "capnp compile") when invoked via this symlink. cannam@48: # cannam@48: # Also attempt to run ldconfig, because otherwise users get confused. If cannam@48: # it fails (e.g. because the platform doesn't have it, or because the cannam@48: # user doesn't have root privileges), don't worry about it. cannam@48: install-exec-hook: cannam@48: ln -sf capnp $(DESTDIR)$(bindir)/capnpc cannam@48: ldconfig < /dev/null > /dev/null 2>&1 || true cannam@48: cannam@48: uninstall-hook: cannam@48: rm -f $(DESTDIR)$(bindir)/capnpc cannam@48: cannam@48: else LITE_MODE cannam@48: cannam@48: install-exec-hook: cannam@48: ldconfig < /dev/null > /dev/null 2>&1 || true cannam@48: cannam@48: endif LITE_MODE cannam@48: cannam@48: # Source files intentionally not included in the dist at this time: cannam@48: # src/capnp/serialize-snappy* cannam@48: # src/capnp/benchmark/... cannam@48: # src/capnp/compiler/... cannam@48: cannam@48: # Tests ============================================================== cannam@48: cannam@48: test_capnpc_inputs = \ cannam@48: src/capnp/test.capnp \ cannam@48: src/capnp/test-import.capnp \ cannam@48: src/capnp/test-import2.capnp cannam@48: cannam@48: test_capnpc_outputs = \ cannam@48: src/capnp/test.capnp.c++ \ cannam@48: src/capnp/test.capnp.h \ cannam@48: src/capnp/test-import.capnp.c++ \ cannam@48: src/capnp/test-import.capnp.h \ cannam@48: src/capnp/test-import2.capnp.c++ \ cannam@48: src/capnp/test-import2.capnp.h cannam@48: cannam@48: if USE_EXTERNAL_CAPNP cannam@48: cannam@48: test_capnpc_middleman: $(test_capnpc_inputs) cannam@48: $(CAPNP) compile --src-prefix=$(srcdir)/src -o$(CAPNPC_CXX):src -I$(srcdir)/src $^ cannam@48: touch test_capnpc_middleman cannam@48: cannam@48: else cannam@48: cannam@48: test_capnpc_middleman: capnp$(EXEEXT) capnpc-c++$(EXEEXT) $(test_capnpc_inputs) cannam@48: echo $^ | (read CAPNP CAPNPC_CXX SOURCES && ./$$CAPNP compile --src-prefix=$(srcdir)/src -o./$$CAPNPC_CXX:src -I$(srcdir)/src $$SOURCES) cannam@48: touch test_capnpc_middleman cannam@48: cannam@48: endif cannam@48: cannam@48: $(test_capnpc_outputs): test_capnpc_middleman cannam@48: cannam@48: BUILT_SOURCES = $(test_capnpc_outputs) cannam@48: cannam@48: if LITE_MODE cannam@48: cannam@48: check_PROGRAMS = capnp-test cannam@48: compiler_tests = cannam@48: capnp_test_LDADD = libcapnp.la libkj-test.la libkj.la cannam@48: cannam@48: else !LITE_MODE cannam@48: cannam@48: check_PROGRAMS = capnp-test capnp-evolution-test cannam@48: heavy_tests = \ cannam@48: src/kj/async-test.c++ \ cannam@48: src/kj/async-unix-test.c++ \ cannam@48: src/kj/async-io-test.c++ \ cannam@48: src/kj/parse/common-test.c++ \ cannam@48: src/kj/parse/char-test.c++ \ cannam@48: src/kj/std/iostream-test.c++ \ cannam@48: src/capnp/capability-test.c++ \ cannam@48: src/capnp/membrane-test.c++ \ cannam@48: src/capnp/schema-test.c++ \ cannam@48: src/capnp/schema-loader-test.c++ \ cannam@48: src/capnp/schema-parser-test.c++ \ cannam@48: src/capnp/dynamic-test.c++ \ cannam@48: src/capnp/stringify-test.c++ \ cannam@48: src/capnp/serialize-async-test.c++ \ cannam@48: src/capnp/serialize-text-test.c++ \ cannam@48: src/capnp/rpc-test.c++ \ cannam@48: src/capnp/rpc-twoparty-test.c++ \ cannam@48: src/capnp/ez-rpc-test.c++ \ cannam@48: src/capnp/compat/json-test.c++ \ cannam@48: src/capnp/compiler/lexer-test.c++ \ cannam@48: src/capnp/compiler/md5-test.c++ cannam@48: capnp_test_LDADD = libcapnpc.la \ cannam@48: libcapnp-rpc.la \ cannam@48: libcapnp-json.la \ cannam@48: libcapnp.la \ cannam@48: libkj-async.la \ cannam@48: libkj-test.la \ cannam@48: libkj.la cannam@48: cannam@48: endif !LITE_MODE cannam@48: cannam@48: capnp_test_CPPFLAGS = -Wno-deprecated-declarations cannam@48: capnp_test_SOURCES = \ cannam@48: src/kj/common-test.c++ \ cannam@48: src/kj/memory-test.c++ \ cannam@48: src/kj/refcount-test.c++ \ cannam@48: src/kj/array-test.c++ \ cannam@48: src/kj/string-test.c++ \ cannam@48: src/kj/string-tree-test.c++ \ cannam@48: src/kj/exception-test.c++ \ cannam@48: src/kj/debug-test.c++ \ cannam@48: src/kj/arena-test.c++ \ cannam@48: src/kj/units-test.c++ \ cannam@48: src/kj/tuple-test.c++ \ cannam@48: src/kj/one-of-test.c++ \ cannam@48: src/kj/function-test.c++ \ cannam@48: src/kj/io-test.c++ \ cannam@48: src/kj/mutex-test.c++ \ cannam@48: src/kj/threadlocal-test.c++ \ cannam@48: src/kj/threadlocal-pthread-test.c++ \ cannam@48: src/kj/test-test.c++ \ cannam@48: src/capnp/common-test.c++ \ cannam@48: src/capnp/blob-test.c++ \ cannam@48: src/capnp/endian-test.c++ \ cannam@48: src/capnp/endian-fallback-test.c++ \ cannam@48: src/capnp/endian-reverse-test.c++ \ cannam@48: src/capnp/layout-test.c++ \ cannam@48: src/capnp/any-test.c++ \ cannam@48: src/capnp/message-test.c++ \ cannam@48: src/capnp/encoding-test.c++ \ cannam@48: src/capnp/orphan-test.c++ \ cannam@48: src/capnp/serialize-test.c++ \ cannam@48: src/capnp/serialize-packed-test.c++ \ cannam@48: src/capnp/fuzz-test.c++ \ cannam@48: src/capnp/test-util.c++ \ cannam@48: src/capnp/test-util.h \ cannam@48: $(heavy_tests) cannam@48: nodist_capnp_test_SOURCES = $(test_capnpc_outputs) cannam@48: cannam@48: if !LITE_MODE cannam@48: capnp_evolution_test_LDADD = libcapnpc.la libcapnp.la libkj.la cannam@48: capnp_evolution_test_SOURCES = src/capnp/compiler/evolution-test.c++ cannam@48: endif !LITE_MODE cannam@48: cannam@48: if LITE_MODE cannam@48: TESTS = capnp-test cannam@48: else !LITE_MODE cannam@48: TESTS = capnp-test capnp-evolution-test src/capnp/compiler/capnp-test.sh cannam@48: endif !LITE_MODE