summaryrefslogtreecommitdiff
path: root/tools/Makefile.am
diff options
context:
space:
mode:
Diffstat (limited to 'tools/Makefile.am')
-rw-r--r--tools/Makefile.am527
1 files changed, 527 insertions, 0 deletions
diff --git a/tools/Makefile.am b/tools/Makefile.am
new file mode 100644
index 00000000..09daafe6
--- /dev/null
+++ b/tools/Makefile.am
@@ -0,0 +1,527 @@
+VERSION = 3.0.0
+ACLOCAL_AMFLAGS = -I m4
+dist_man_MANS = doc/ledger.1
+SUBDIRS = po intl
+EXTRA_DIST = autogen.sh config.rpath contrib src/system.hh.in
+DISTCLEANFILES = .timestamp
+
+lib_LTLIBRARIES = \
+ libledger_report.la \
+ libledger_data.la \
+ libledger_expr.la \
+ libledger_math.la \
+ libledger_util.la
+
+lib_cppflags = -I$(srcdir)/src -I$(srcdir)/lib \
+ -I$(srcdir)/lib/utfcpp/source
+
+libledger_util_la_SOURCES = \
+ src/stream.cc \
+ src/mask.cc \
+ src/times.cc \
+ src/error.cc \
+ src/utils.cc \
+ src/accum.cc \
+ lib/sha1.cpp
+
+libledger_util_la_CPPFLAGS = $(lib_cppflags)
+libledger_util_la_LDFLAGS = -release $(VERSION)
+
+libledger_math_la_SOURCES = \
+ src/value.cc \
+ src/balance.cc \
+ src/quotes.cc \
+ src/pool.cc \
+ src/annotate.cc \
+ src/commodity.cc \
+ src/amount.cc
+
+libledger_math_la_CPPFLAGS = $(lib_cppflags)
+libledger_math_la_LDFLAGS = -release $(VERSION)
+
+libledger_expr_la_SOURCES = \
+ src/option.cc \
+ src/format.cc \
+ src/query.cc \
+ src/predicate.cc \
+ src/scope.cc \
+ src/interactive.cc \
+ src/expr.cc \
+ src/op.cc \
+ src/parser.cc \
+ src/token.cc
+
+libledger_expr_la_CPPFLAGS = $(lib_cppflags)
+libledger_expr_la_LDFLAGS = -release $(VERSION)
+
+libledger_data_la_SOURCES = \
+ src/compare.cc \
+ src/iterators.cc \
+ src/timelog.cc \
+ src/textual.cc \
+ src/journal.cc \
+ src/archive.cc \
+ src/account.cc \
+ src/xact.cc \
+ src/post.cc \
+ src/item.cc
+
+libledger_data_la_CPPFLAGS = $(lib_cppflags)
+libledger_data_la_LDFLAGS = -release $(VERSION)
+
+libledger_report_la_SOURCES = \
+ src/stats.cc \
+ src/generate.cc \
+ src/draft.cc \
+ src/emacs.cc \
+ src/xml.cc \
+ src/output.cc \
+ src/precmd.cc \
+ src/chain.cc \
+ src/filters.cc \
+ src/temps.cc \
+ src/report.cc \
+ src/session.cc
+
+libledger_report_la_CPPFLAGS = $(lib_cppflags)
+libledger_report_la_LDFLAGS = -release $(VERSION)
+
+pkginclude_HEADERS = \
+ src/utils.h \
+ src/flags.h \
+ src/error.h \
+ src/times.h \
+ src/mask.h \
+ src/stream.h \
+ src/pstream.h \
+ src/unistring.h \
+ src/accum.h \
+ \
+ src/amount.h \
+ src/commodity.h \
+ src/annotate.h \
+ src/pool.h \
+ src/quotes.h \
+ src/balance.h \
+ src/value.h \
+ \
+ src/token.h \
+ src/parser.h \
+ src/op.h \
+ src/exprbase.h \
+ src/expr.h \
+ src/scope.h \
+ src/interactive.h \
+ src/predicate.h \
+ src/query.h \
+ src/format.h \
+ src/option.h \
+ \
+ src/item.h \
+ src/post.h \
+ src/xact.h \
+ src/account.h \
+ src/journal.h \
+ src/archive.h \
+ src/timelog.h \
+ src/iterators.h \
+ src/compare.h \
+ \
+ src/session.h \
+ src/report.h \
+ src/filters.h \
+ src/temps.h \
+ src/chain.h \
+ src/precmd.h \
+ src/draft.h \
+ src/generate.h \
+ src/stats.h \
+ src/output.h \
+ src/xml.h \
+ src/emacs.h \
+ \
+ src/global.h \
+ \
+ src/pyinterp.h \
+ \
+ lib/sha1.h \
+ lib/gettext.h \
+ \
+ lib/utfcpp/source/utf8.h \
+ lib/utfcpp/source/utf8/checked.h \
+ lib/utfcpp/source/utf8/core.h \
+ lib/utfcpp/source/utf8/unchecked.h
+
+nodist_libledger_util_la_SOURCES = system.hh
+
+BUILT_SOURCES = system.hh
+CLEANFILES = system.hh
+
+system.hh: src/system.hh.in
+ cp -p $< $@
+
+if USE_PCH
+nodist_libledger_util_la_SOURCES += system.hh.gch
+
+BUILT_SOURCES += system.hh.gch
+CLEANFILES += system.hh.gch
+
+system.hh.gch: system.hh
+ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(lib_cppflags) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) \
+ -o $@ $<
+endif
+
+######################################################################
+
+bin_PROGRAMS = ledger
+
+ledger_CPPFLAGS = $(lib_cppflags)
+if HAVE_BOOST_PYTHON
+ledger_CPPFLAGS += -I$(srcdir)/python
+endif
+ledger_SOURCES = src/main.cc src/global.cc
+ledger_LDADD = $(LIBOBJS) $(lib_LTLIBRARIES) $(INTLLIBS)
+ledger_LDFLAGS = -static
+
+info_TEXINFOS = doc/ledger.texi
+
+dist_lisp_LISP = lisp/ledger.el lisp/timeclock.el
+ELCFILES =
+DISTCLEANFILES += ledger.elc timeclock.elc
+
+all_sources = $(libledger_util_la_SOURCES) \
+ $(libledger_math_la_SOURCES) \
+ $(libledger_expr_la_SOURCES) \
+ $(libledger_data_la_SOURCES) \
+ $(libledger_report_la_SOURCES) \
+ $(libledger_python_la_SOURCES) \
+ src/pyledger.cc
+
+all_files = $(all_sources) $(pkginclude_HEADERS)
+
+######################################################################
+
+if HAVE_BOOST_PYTHON
+
+lib_LTLIBRARIES += libledger_python.la
+
+libledger_python_la_SOURCES = \
+ src/pyutils.h \
+ src/pyfstream.h \
+ src/py_account.cc \
+ src/py_amount.cc \
+ src/py_balance.cc \
+ src/py_commodity.cc \
+ src/py_expr.cc \
+ src/py_format.cc \
+ src/py_item.cc \
+ src/py_journal.cc \
+ src/py_post.cc \
+ src/py_times.cc \
+ src/py_utils.cc \
+ src/py_value.cc \
+ src/py_xact.cc \
+ src/pyinterp.cc
+
+libledger_python_la_CPPFLAGS = $(lib_cppflags) -I$(srcdir)/python
+
+pyexec_LTLIBRARIES = ledger.la
+
+ledger_la_CPPFLAGS = $(libledger_python_la_CPPFLAGS)
+ledger_la_SOURCES = src/pyledger.cc
+ledger_la_DEPENDENCIES = $(lib_LTLIBRARIES)
+ledger_la_LDFLAGS = -avoid-version -module
+ledger_la_LIBADD = $(LIBOBJS) $(lib_LTLIBRARIES)
+
+pkgpython_PYTHON = python/__init__.py python/server.py
+
+endif
+
+######################################################################
+
+TESTS =
+
+if HAVE_PYTHON
+TESTS += RegressTests BaselineTests ManualTests ConfirmTests GenerateTests
+endif
+
+if HAVE_CPPUNIT
+TESTS += \
+ UtilTests \
+ MathTests \
+ ExprTests \
+ DataTests \
+ ReportTests
+endif
+
+if HAVE_BOOST_PYTHON
+TESTS += PyUnitTests
+endif
+
+check_PROGRAMS = $(TESTS)
+
+UtilTests_SOURCES = \
+ test/UnitTests.cc \
+ test/UnitTests.h \
+ test/UtilTests.cc \
+ test/unit/t_utils.cc \
+ test/unit/t_utils.h \
+ test/unit/t_times.cc \
+ test/unit/t_times.h
+
+UtilTests_CPPFLAGS = -I$(srcdir)/test $(lib_cppflags)
+UtilTests_LDADD = libledger_util.la -lcppunit
+
+MathTests_SOURCES = \
+ test/UnitTests.cc \
+ test/UnitTests.h \
+ test/MathTests.cc \
+ test/unit/t_commodity.cc \
+ test/unit/t_commodity.h \
+ test/unit/t_amount.cc \
+ test/unit/t_amount.h \
+ test/unit/t_balance.cc \
+ test/unit/t_balance.h
+
+MathTests_CPPFLAGS = -I$(srcdir)/test $(lib_cppflags)
+MathTests_LDADD = libledger_math.la $(UtilTests_LDADD)
+
+ExprTests_SOURCES = \
+ test/UnitTests.cc \
+ test/UnitTests.h \
+ test/ExprTests.cc \
+ test/unit/t_expr.cc \
+ test/unit/t_expr.h
+
+ExprTests_CPPFLAGS = -I$(srcdir)/test $(lib_cppflags)
+ExprTests_LDADD = libledger_expr.la $(MathTests_LDADD)
+
+DataTests_SOURCES = \
+ test/UnitTests.cc \
+ test/UnitTests.h \
+ test/DataTests.cc
+
+DataTests_CPPFLAGS = -I$(srcdir)/test $(lib_cppflags)
+DataTests_LDADD = libledger_data.la $(ExprTests_LDADD)
+
+ReportTests_SOURCES = \
+ test/UnitTests.cc \
+ test/UnitTests.h \
+ test/ReportTests.cc
+
+ReportTests_CPPFLAGS = -I$(srcdir)/test $(lib_cppflags)
+ReportTests_LDADD = libledger_report.la $(DataTests_LDADD)
+
+all_tests_sources = \
+ $(UtilTests_SOURCES) \
+ $(MathTests_SOURCES) \
+ $(ExprTests_SOURCES) \
+ $(DataTests_SOURCES) \
+ $(ReportTests_SOURCES)
+
+PyUnitTests_SOURCES = test/PyUnitTests.py
+
+all_py_tests_sources = \
+ $(patsubst test/unit/%.cc,$(top_builddir)/test/python/%.py, \
+ $(filter test/unit/t_%.cc,$(all_tests_sources)))
+
+test/python/%.py: test/unit/%.cc test/convert.py
+ $(PYTHON) $(srcdir)/test/convert.py $< $@
+
+test/python/UnitTests.py: $(all_py_tests_sources)
+ @echo "from unittest import TextTestRunner, TestSuite" > $@
+ @for file in $$(ls $(srcdir)/test/unit/*.cc); do \
+ base=$$(basename $$file); \
+ base=$$(echo $$base | sed 's/\.cc//'); \
+ echo "import $$base" >> $@; \
+ done
+ @echo "suites = [" >> $@
+ @for file in $$(ls $(srcdir)/test/unit/*.cc); do \
+ base=$$(basename $$file); \
+ base=$$(echo $$base | sed 's/\.cc//'); \
+ echo " $$base.suite()," >> $@; \
+ done
+ @echo "]" >> $@
+ @echo "TextTestRunner().run(TestSuite(suites))" >> $@
+
+ledger_python = $(top_builddir)/ledger$(EXEEXT) python
+
+ESC_python=`echo "$(ledger_python)" | sed 's/\//\\\\\//g'`
+ESC_srcdir=`echo "$(srcdir)" | sed 's/\//\\\\\//g'`
+ESC_builddir=`echo "$(top_builddir)" | sed 's/\//\\\\\//g'`
+ESC_distdir=`echo "$(distdir)" | sed 's/\//\\\\\//g'`
+
+# jww (2007-05-10): This rule will not be triggered on systems that
+# define an EXEEXT.
+PyUnitTests: test/PyUnitTests.py test/python/UnitTests.py
+ @cat $(srcdir)/test/PyUnitTests.py \
+ | sed "s/%python%/$(ESC_python)/" \
+ | sed "s/%srcdir%/$(ESC_srcdir)/g" \
+ | sed "s/%builddir%/$(ESC_builddir)/g" > $@
+ chmod 755 $@
+
+RegressTests_SOURCES = test/RegressTests.py
+
+EXTRA_DIST += test/regress test/convert.py test/LedgerHarness.py
+
+RegressTests: $(srcdir)/test/RegressTests.py
+ echo "$(PYTHON) $(srcdir)/test/RegressTests.py $(top_builddir)/ledger$(EXEEXT) $(srcdir) $(srcdir)/test/regress \"\$$@\"" > $@
+ chmod 755 $@
+
+BaselineTests_SOURCES = test/RegressTests.py
+
+EXTRA_DIST += test/baseline
+
+BaselineTests: $(srcdir)/test/RegressTests.py
+ echo "$(PYTHON) $(srcdir)/test/RegressTests.py $(top_builddir)/ledger$(EXEEXT) $(srcdir) $(srcdir)/test/baseline \"\$$@\"" > $@
+ chmod 755 $@
+
+ManualTests_SOURCES = test/RegressTests.py
+
+EXTRA_DIST += test/manual
+
+ManualTests: $(srcdir)/test/RegressTests.py
+ echo "$(PYTHON) $(srcdir)/test/RegressTests.py $(top_builddir)/ledger$(EXEEXT) $(srcdir) $(srcdir)/test/manual \"\$$@\"" > $@
+ chmod 755 $@
+
+ConfirmTests_SOURCES = test/ConfirmTests.py
+
+EXTRA_DIST += test/input
+
+test/input/mondo.dat: test/input/standard.dat
+ @for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ; do \
+ for j in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ; do \
+ cat $< >> $@; \
+ done; \
+ done
+
+ConfirmTests: $(srcdir)/test/ConfirmTests.py
+ echo "$(PYTHON) $(srcdir)/test/ConfirmTests.py $(top_builddir)/ledger$(EXEEXT) $(srcdir) $(srcdir)/test/input \"\$$@\"" > $@
+ chmod 755 $@
+
+GenerateTests_SOURCES = test/GenerateTests.py
+
+GenerateTests: $(srcdir)/test/GenerateTests.py
+ echo "$(PYTHON) $(srcdir)/test/GenerateTests.py $(top_builddir)/ledger$(EXEEXT) $(srcdir) 1 20 \"\$$@\"" > $@
+ chmod 755 $@
+
+FULLCHECK=$(srcdir)/test/fullcheck.sh
+
+if HAVE_CPPUNIT
+cppunittests: check
+ @sh $(FULLCHECK) $(top_builddir)/UtilTests$(EXEEXT) --verify \
+ 2>&1 | grep -v '^GuardMalloc:'
+ @sh $(FULLCHECK) $(top_builddir)/MathTests$(EXEEXT) --verify \
+ 2>&1 | grep -v '^GuardMalloc:'
+ @sh $(FULLCHECK) $(top_builddir)/ExprTests$(EXEEXT) --verify \
+ 2>&1 | grep -v '^GuardMalloc:'
+ @sh $(FULLCHECK) $(top_builddir)/DataTests$(EXEEXT) --verify \
+ 2>&1 | grep -v '^GuardMalloc:'
+ @sh $(FULLCHECK) $(top_builddir)/ReportTests$(EXEEXT) --verify \
+ 2>&1 | grep -v '^GuardMalloc:'
+else
+cppunittests: check
+ @test 1 -eq 1
+endif
+
+fullcheck: cppunittests
+ @$(top_builddir)/RegressTests --verify
+ @$(top_builddir)/BaselineTests --verify
+ @$(top_builddir)/ManualTests --verify
+ @$(top_builddir)/ConfirmTests --verify
+ @$(top_builddir)/GenerateTests --verify
+ @$(top_builddir)/RegressTests --gmalloc
+ @$(top_builddir)/BaselineTests --gmalloc
+ @$(top_builddir)/ManualTests --gmalloc
+# @$(top_builddir)/ConfirmTests --gmalloc
+# @$(top_builddir)/GenerateTests --gmalloc
+
+######################################################################
+
+EXTRA_DIST += doc/README doc/NEWS doc/ledger.pdf
+EXTRA_DIST += doc/LICENSE doc/LICENSE-sha1 doc/LICENSE-utfcpp
+if USE_DOXYGEN
+EXTRA_DIST += doc/Doxyfile doc/refman.pdf
+endif
+
+DISTCLEANFILES += doc/ledger.info doc/ledger.pdf
+if USE_DOXYGEN
+DISTCLEANFILES += Doxyfile.gen doc/Doxyfile.bak doc/refman.pdf
+endif
+
+if USE_DOXYGEN
+dist-hook-doxygen:
+ find $(distdir)/doc -name .dirstamp -delete
+ rm -fr $(distdir)/doc/latex \
+ $(distdir)/doc/Doxyfile.bak \
+ $(distdir)/doc/Doxyfile.gen
+ cp -pR doc/html $(distdir)/doc
+else
+dist-hook-doxygen:
+ @test 1 -eq 1
+endif
+
+dist-hook: dist-hook-doxygen
+ find $(distdir) -name .DS_Store -delete
+ find $(distdir) -name .localized -delete
+ rm -f $(distdir)/README.textile
+ cp -p $(srcdir)/doc/README $(distdir)/README
+
+if USE_DOXYGEN
+distclean-local-doxygen:
+ rm -fr doc/html doc/latex
+ rm -f doc/refman.pdf
+else
+distclean-local-doxygen:
+ @test 1 -eq 1
+endif
+
+distclean-local: distclean-local-doxygen
+ rm -fr test/python
+
+if USE_DOXYGEN
+ESC_top_builddir=`cd $(top_builddir); pwd | sed 's/\//\\\\\//g'`
+
+Doxyfile.gen: doc/Doxyfile
+ cat $< | sed "s/%srcdir%/$(ESC_srcdir)/g" \
+ | sed "s/%builddir%/$(ESC_top_builddir)/g" > $@
+
+doc/html/index.html: Doxyfile.gen $(all_files)
+ BUILD_DIR=`cd $(top_builddir); pwd`; \
+ (cd $(srcdir); doxygen $$BUILD_DIR/Doxyfile.gen)
+
+# The intention with the following rules is that all of the Doxygen
+# documentation (both HTML and PDF) is built locally before distcheck is
+# run, since it's quite possible that the user will not have a complete
+# TeX + Doxygen + dot environment on their own system.
+
+doc/refman.pdf: doc/html/index.html
+ (cd doc/latex && make)
+ cp doc/latex/refman.pdf $@
+
+docs: pdf doc/refman.pdf
+else
+docs: pdf
+endif
+
+libs:
+ @echo Building dependency libs and installing in /usr/local/stow ...
+ git submodule update --init
+ (cd lib; make)
+
+report: all
+ -rm -fr build
+ lcov -d $(shell pwd) --zerocounters
+ -mkdir doc/report
+ lcov -c -i -d $(shell pwd) -o doc/report/ledger_base.info
+ make fullcheck
+ lcov -c -d $(shell pwd) --checksum -o doc/report/ledger_test.info
+ lcov -a doc/report/ledger_base.info \
+ -a doc/report/ledger_test.info -o doc/report/ledger_total.info
+ lcov --extract doc/report/ledger_total.info '*src/ledger/*' \
+ -o doc/report/ledger_cov.info
+ genhtml -o doc/report doc/report/ledger_cov.info
+ @echo Coverage reported generated\; now open doc/report/index.html
+
+# Makefile.am ends here