Add autotools build system
[daala.git] / Makefile.am
1
2 SUBDIRS = src examples include
3 if ENABLE_DOCS
4 SUBDIRS += doc
5 endif
6
7 DIST_SUBDIRS = src examples include
8 #DIST_SUBDIRS += doc
9
10 ACLOCAL_AMFLAGS = -I m4
11
12 AM_CFLAGS = -I$(top_srcdir)/include $(DEPS_CFLAGS)
13
14 dist_doc_DATA = COPYING AUTHORS README.txt
15
16 pkgconfigdir = $(libdir)/pkgconfig
17 pkgconfig_DATA = daala.pc
18
19 debug:
20         $(MAKE) CFLAGS="${CFLAGS} -O0 -ggdb -DOP_ENABLE_ASSERTIONS" all
21
22 EXTRA_DIST = \
23  daala.pc.in \
24  daala-uninstalled.pc.in \
25  doc/Makefile \
26  unix/Makefile
27
28 # Targets to build and install just the library without the docs
29 daala install-daala: NO_DOXYGEN = 1
30
31 daala: all
32 install-daala: install
33
34 # Or just the docs
35 docs: doc/doxygen-build.stamp
36
37 install-docs:
38         @if [ -z "$(NO_DOXYGEN)" ]; then \
39           ( cd doc && \
40             echo "Installing documentation in $(DESTDIR)$(docdir)"; \
41             $(INSTALL) -d $(DESTDIR)$(docdir)/html/search; \
42             for f in `find html -type f \! -name "installdox"` ; do \
43               $(INSTALL_DATA) $$f $(DESTDIR)$(docdir)/$$f;     \
44             done ) \
45         fi
46
47 doc/doxygen-build.stamp: doc/Doxyfile $(top_srcdir)/doc/daala_logo.svg \
48                          $(top_srcdir)/include/*.h
49         @[ -n "$(NO_DOXYGEN)" ] || ( cd doc && doxygen && touch $(@F) )
50
51
52 if HAVE_DOXYGEN
53
54 # Or everything (by default)
55 all-local: docs
56
57 install-data-local: install-docs
58
59 clean-local:
60         $(RM) -r doc/html
61         $(RM) -r doc/latex
62         $(RM) doc/doxygen-build.stamp
63
64 uninstall-local:
65         $(RM) -r $(DESTDIR)$(docdir)/html
66
67 endif
68
69 # We check this every time make is run, with configure.ac being touched to
70 # trigger an update of the build system files if update_version changes the
71 # current PACKAGE_VERSION (or if package_version was modified manually by a
72 # user with either AUTO_UPDATE=no or no update_version script present - the
73 # latter being the normal case for tarball releases).
74 #
75 # We can't just add the package_version file to CONFIGURE_DEPENDENCIES since
76 # simply running autoconf will not actually regenerate configure for us when
77 # the content of that file changes (due to autoconf dependency checking not
78 # knowing about that without us creating yet another file for it to include).
79 #
80 # The MAKECMDGOALS check is a gnu-make'ism, but will degrade 'gracefully' for
81 # makes that don't support it.  The only loss of functionality is not forcing
82 # an update of package_version for `make dist` if AUTO_UPDATE=no, but that is
83 # unlikely to be a real problem for any real user.
84 $(top_srcdir)/configure.ac: force
85         @case "$(MAKECMDGOALS)" in \
86             dist-hook)                             exit 0       ;; \
87             dist-* | dist | distcheck | distclean) _arg=release ;; \
88         esac; \
89         if ! $(top_srcdir)/update_version $$_arg 2> /dev/null; then \
90             if [ ! -e $(top_srcdir)/package_version ]; then \
91                 echo 'PACKAGE_VERSION="unknown"' > $(top_srcdir)/package_version; \
92             fi; \
93             . $(top_srcdir)/package_version || exit 1; \
94             [ "$(PACKAGE_VERSION)" != "$$PACKAGE_VERSION" ] || exit 0; \
95         fi; \
96         touch $@
97
98 force:
99
100 # Create a minimal package_version file when make dist is run.
101 dist-hook:
102         echo 'PACKAGE_VERSION="$(PACKAGE_VERSION)"' > $(top_distdir)/package_version
103
104
105 .PHONY: daala install-daala docs install-docs