summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHans Ulrich Niedermann <hun@n-dimensional.de>2011-03-06 02:53:52 +0100
committerHans Ulrich Niedermann <hun@n-dimensional.de>2011-03-07 20:57:38 +0100
commit20cb3f461845d788e7b84d40a656dc1c63842ef0 (patch)
tree3629f3018dc3ab66fe47b9aa666259356f58f898
parented26054ca03d2dd8731f358efdf41a63f0387832 (diff)
downloadrasdaman-upstream-20cb3f461845d788e7b84d40a656dc1c63842ef0.tar.gz
rasdaman-upstream-20cb3f461845d788e7b84d40a656dc1c63842ef0.tar.xz
rasdaman-upstream-20cb3f461845d788e7b84d40a656dc1c63842ef0.zip
build/install: Clean up manual build and install
Clean up the building of the doxygen docs for VPATH builds and "make distcheck". This shifts the doxygen run from "make install" time to "make all" time. Fix a number of permissions in the docs we "cp -R" to install them, and create the target dir before copying manual files. Have doxygen ignore subdirs like .git.
-rw-r--r--configure.ac9
-rw-r--r--manuals_and_examples/Makefile.am64
-rw-r--r--manuals_and_examples/doxygen-all.cfg.in (renamed from manuals_and_examples/doxygen-all.cfg)15
-rw-r--r--manuals_and_examples/doxygen-api.cfg.in (renamed from manuals_and_examples/doxygen-api.cfg)25
-rw-r--r--manuals_and_examples/doxygen-basedbms.cfg.in (renamed from manuals_and_examples/doxygen-basedbms.cfg)22
-rw-r--r--manuals_and_examples/doxygen-server.cfg.in (renamed from manuals_and_examples/doxygen-server.cfg)0
6 files changed, 104 insertions, 31 deletions
diff --git a/configure.ac b/configure.ac
index 66ffbcc..c859491 100644
--- a/configure.ac
+++ b/configure.ac
@@ -40,6 +40,7 @@ AC_PROG_CC
AC_PROG_CPP
AC_PROG_LEX
AC_PROG_INSTALL
+AC_PROG_MKDIR_P
AC_PROG_LN_S
AC_PROG_MAKE_SET
AC_PROG_RANLIB
@@ -52,6 +53,14 @@ AC_CHECK_PROGS([JAR_TOOL], [jar], [${am_missing_run} jar])
dnl we need bison not yacc
AC_CHECK_PROGS(YACC, bison, [${am_missing_run} bison])
+# Find/use given doxygen executable
+AC_ARG_VAR([DOXYGEN], [doxygen executable to build docs with])
+AS_IF([test "x$DOXYGEN" = "x"],
+ [AC_PATH_PROG([DOXYGEN], [doxygen], [no])],
+ [AC_MSG_CHECKING([DOXYGEN from env variable])
+ AC_MSG_RESULT([${DOXYGEN}])])
+AM_CONDITIONAL([HAVE_DOXYGEN], [test "x$DOXYGEN" != "xno"])
+
# Checks for libraries.
# FIXME: Replace `main' with a function in `-lcrypt':
AC_CHECK_LIB([crypt], [main], , [AC_MSG_FAILURE([libcrypt.a not found! Please install.])])
diff --git a/manuals_and_examples/Makefile.am b/manuals_and_examples/Makefile.am
index ca924d3..cdf536d 100644
--- a/manuals_and_examples/Makefile.am
+++ b/manuals_and_examples/Makefile.am
@@ -42,16 +42,66 @@ EXTRA_DIST = manuals
dest_Makefile=$(DESTDIR)$(pkgdatadir)/examples/c++/Makefile
+# Set the rasdaman installation root to allow Make finding
+# include/ and lib/ for the C++ examples.
install-data-hook:
- -# Set the rasdaman installation root to allow Make finding
- -# include/ and lib/ for the C++ examples.
$(SED) \
-e 's|[@]pkgincludedir@|$(pkgincludedir)|g' \
-e 's|[@]pkglibdir@|$(pkglibdir)|g' \
< $(dest_Makefile) > $(dest_Makefile).new
mv -f $(dest_Makefile).new $(dest_Makefile)
- -# install documentation
- (cd ..; doxygen manuals_and_examples/doxygen-all.cfg)
- (cd ..; doxygen manuals_and_examples/doxygen-api.cfg)
- (cd ..; doxygen manuals_and_examples/doxygen-basedbms.cfg)
- cp -r $(srcdir)/manuals/ $(DESTDIR)$(pkgdatadir)/doc
+
+CLEANFILES =
+DOXYGEN_CONFIGS =
+
+DOXYGEN_CONFIGS += doxygen-all.cfg
+DOXYGEN_CONFIGS += doxygen-api.cfg
+DOXYGEN_CONFIGS += doxygen-basedbms.cfg
+# DOXYGEN_CONFIGS += doxygen-server.cfg
+
+EXTRA_DIST += doxygen-all.cfg.in
+EXTRA_DIST += doxygen-api.cfg.in
+EXTRA_DIST += doxygen-basedbms.cfg.in
+# EXTRA_DIST += doxygen-server.cfg.in
+
+CLEANFILES += $(DOXYGEN_CONFIGS)
+
+SUFFIXES = .cfg.in .cfg
+.cfg.in.cfg:
+ $(SED) \
+ -e "s,[@]top_srcdir@,$$(cd "$(top_srcdir)" && pwd),g" \
+ -e "s,[@]top_builddir@,$$(cd "$(top_builddir)" && pwd),g" \
+ -e "s,[@]PACKAGE@,$(PACKAGE),g" \
+ -e "s,[@]VERSION@,$(VERSION),g" \
+ $< > $@
+
+# Build documentation
+if HAVE_DOXYGEN
+CFG_TO_DIR = $(SED) -n 's,^doxygen-\([[:alpha:]]*\)\.cfg,dox-manuals/doc-\1,p'
+
+all-local: $(DOXYGEN_CONFIGS)
+ @set -ex; for cfg in $(DOXYGEN_CONFIGS); do \
+ $(MKDIR_P) "$$(echo "$$cfg" | $(CFG_TO_DIR))"; \
+ $(DOXYGEN) "$$cfg"; \
+ done
+
+clean-local:
+ rm -rf dox-manuals
+endif
+
+# Install the documentation, in two parts: The stuff from $(srcdir)
+# and the doxygen built docs from the builddir "."
+install-data-local:
+ $(INSTALL) -m 0755 -d $(DESTDIR)$(pkgdatadir)/doc
+ cp -R $(srcdir)/manuals/ $(DESTDIR)$(pkgdatadir)/doc
+if HAVE_DOXYGEN
+ if test -d dox-manuals; then \
+ cp -R dox-manuals/* $(DESTDIR)$(pkgdatadir)/doc; \
+ fi
+endif
+ find $(DESTDIR)$(pkgdatadir)/doc \
+ \( -type d -exec chmod 0755 {} \; \) -or \
+ \( -type f -exec chmod 0644 {} \; \)
+
+uninstall-local:
+ rm -rf $(DESTDIR)$(pkgdatadir)/doc
diff --git a/manuals_and_examples/doxygen-all.cfg b/manuals_and_examples/doxygen-all.cfg.in
index 7c4d433..9873938 100644
--- a/manuals_and_examples/doxygen-all.cfg
+++ b/manuals_and_examples/doxygen-all.cfg.in
@@ -62,7 +62,7 @@ PROJECT_NUMBER =
# If a relative path is entered, it will be relative to the location
# where doxygen was started. If left blank the current directory will be used.
-OUTPUT_DIRECTORY = manuals_and_examples/manuals/doc-all
+OUTPUT_DIRECTORY = @top_builddir@/manuals_and_examples/dox-manuals/doc-all
# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
# 4096 sub-directories (in 2 levels) under the output directory of each output
@@ -129,7 +129,7 @@ INLINE_INHERITED_MEMB = NO
# path before files name in the file list and in the header files. If set
# to NO the shortest path that makes the file name unique will be used.
-FULL_PATH_NAMES = NO
+FULL_PATH_NAMES = YES
# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
# can be used to strip a user-defined part of the path. Stripping is
@@ -138,7 +138,7 @@ FULL_PATH_NAMES = NO
# If left blank the directory from which doxygen is run is used as the
# path to strip.
-STRIP_FROM_PATH =
+STRIP_FROM_PATH = @top_srcdir@ @top_builddir@
# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
# the path mentioned in the documentation of a class, which tells
@@ -598,7 +598,7 @@ WARN_LOGFILE =
# directories like "/usr/src/myproject". Separate the files or directories
# with spaces.
-INPUT = .
+INPUT = @top_srcdir@ @top_builddir@
# This tag can be used to specify the character encoding of the source files
# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
@@ -644,7 +644,10 @@ EXCLUDE_SYMLINKS = NO
# against the file with absolute path, so to exclude all test directories
# for example use the pattern */test/*
-EXCLUDE_PATTERNS = */test*
+EXCLUDE_PATTERNS = */test* */.git* \
+ */_b/* */_build/* \
+ */_i/* */_inst/* \
+ */@PACKAGE@-@VERSION@/*
# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
# (namespaces, classes, functions, etc.) that should be excluded from the
@@ -658,7 +661,7 @@ EXCLUDE_SYMBOLS =
# directories that contain example code fragments that are included (see
# the \include command).
-EXAMPLE_PATH = manuals_and_examples/examples
+EXAMPLE_PATH = @top_srcdir@/manuals_and_examples/examples
# If the value of the EXAMPLE_PATH tag contains directories, you can use the
# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
diff --git a/manuals_and_examples/doxygen-api.cfg b/manuals_and_examples/doxygen-api.cfg.in
index 60a1012..bfed432 100644
--- a/manuals_and_examples/doxygen-api.cfg
+++ b/manuals_and_examples/doxygen-api.cfg.in
@@ -38,7 +38,7 @@ PROJECT_NUMBER =
# If a relative path is entered, it will be relative to the location
# where doxygen was started. If left blank the current directory will be used.
-OUTPUT_DIRECTORY = manuals_and_examples/manuals/doc-api
+OUTPUT_DIRECTORY = @top_builddir@/manuals_and_examples/dox-manuals/doc-api
# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
# 4096 sub-directories (in 2 levels) under the output directory of each output
@@ -105,7 +105,7 @@ INLINE_INHERITED_MEMB = NO
# path before files name in the file list and in the header files. If set
# to NO the shortest path that makes the file name unique will be used.
-FULL_PATH_NAMES = NO
+FULL_PATH_NAMES = YES
# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
# can be used to strip a user-defined part of the path. Stripping is
@@ -114,7 +114,7 @@ FULL_PATH_NAMES = NO
# If left blank the directory from which doxygen is run is used as the
# path to strip.
-STRIP_FROM_PATH =
+STRIP_FROM_PATH = @top_srcdir@ @top_builddir@
# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
# the path mentioned in the documentation of a class, which tells
@@ -574,12 +574,12 @@ WARN_LOGFILE =
# directories like "/usr/src/myproject". Separate the files or directories
# with spaces.
-INPUT = raslib \
- rasodmg \
- compression \
- conversion \
- include \
- java/rasj
+INPUT = @top_srcdir@/raslib \
+ @top_srcdir@/rasodmg \
+ @top_srcdir@/compression \
+ @top_srcdir@/conversion \
+ @top_srcdir@/include \
+ @top_srcdir@/java/rasj
# This tag can be used to specify the character encoding of the source files
# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
@@ -622,7 +622,10 @@ EXCLUDE_SYMLINKS = NO
# against the file with absolute path, so to exclude all test directories
# for example use the pattern */test/*
-EXCLUDE_PATTERNS = */test*
+EXCLUDE_PATTERNS = */test* */.git* \
+ */_b/* */_build/* \
+ */_i/* */_inst/* \
+ */@PACKAGE@-@VERSION@/*
# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
# (namespaces, classes, functions, etc.) that should be excluded from the
@@ -636,7 +639,7 @@ EXCLUDE_SYMBOLS =
# directories that contain example code fragments that are included (see
# the \include command).
-EXAMPLE_PATH = manuals_and_examples/examples
+EXAMPLE_PATH = @top_srcdir@/manuals_and_examples/examples
# If the value of the EXAMPLE_PATH tag contains directories, you can use the
# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
diff --git a/manuals_and_examples/doxygen-basedbms.cfg b/manuals_and_examples/doxygen-basedbms.cfg.in
index 55ad551..9f1bdc8 100644
--- a/manuals_and_examples/doxygen-basedbms.cfg
+++ b/manuals_and_examples/doxygen-basedbms.cfg.in
@@ -38,7 +38,7 @@ PROJECT_NUMBER =
# If a relative path is entered, it will be relative to the location
# where doxygen was started. If left blank the current directory will be used.
-OUTPUT_DIRECTORY = manuals_and_examples/manuals/doc-basedbms
+OUTPUT_DIRECTORY = @top_builddir@/manuals_and_examples/dox-manuals/doc-basedbms
# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
# 4096 sub-directories (in 2 levels) under the output directory of each output
@@ -105,7 +105,7 @@ INLINE_INHERITED_MEMB = NO
# path before files name in the file list and in the header files. If set
# to NO the shortest path that makes the file name unique will be used.
-FULL_PATH_NAMES = NO
+FULL_PATH_NAMES = YES
# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
# can be used to strip a user-defined part of the path. Stripping is
@@ -114,7 +114,7 @@ FULL_PATH_NAMES = NO
# If left blank the directory from which doxygen is run is used as the
# path to strip.
-STRIP_FROM_PATH =
+STRIP_FROM_PATH = @top_srcdir@ @top_builddir@
# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
# the path mentioned in the documentation of a class, which tells
@@ -574,7 +574,12 @@ WARN_LOGFILE =
# directories like "/usr/src/myproject". Separate the files or directories
# with spaces.
-INPUT = reladminif relblobif relcatalogif relindexif relmddif relstorageif
+INPUT = @top_srcdir@/reladminif @top_builddir@/reladminif \
+ @top_srcdir@/relblobif @top_builddir@/relblobif \
+ @top_srcdir@/relcatalogif @top_builddir@/relcatalogif \
+ @top_srcdir@/relindexif @top_builddir@/relindexif \
+ @top_srcdir@/relmddif @top_builddir@/relmddif \
+ @top_srcdir@/relstorageif @top_builddir@/relstorageif
# This tag can be used to specify the character encoding of the source files
# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
@@ -603,7 +608,7 @@ RECURSIVE = YES
# excluded from the INPUT source files. This way you can easily exclude a
# subdirectory from a directory tree whose root is specified with the INPUT tag.
-EXCLUDE = test
+EXCLUDE = test
# The EXCLUDE_SYMLINKS tag can be used select whether or not files or
# directories that are symbolic links (a Unix filesystem feature) are excluded
@@ -617,7 +622,10 @@ EXCLUDE_SYMLINKS = NO
# against the file with absolute path, so to exclude all test directories
# for example use the pattern */test/*
-EXCLUDE_PATTERNS = */test*
+EXCLUDE_PATTERNS = */test* */.git* \
+ */_b/* */_build/* \
+ */_i/* */_inst/* \
+ */@PACKAGE@-@VERSION@/*
# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
# (namespaces, classes, functions, etc.) that should be excluded from the
@@ -631,7 +639,7 @@ EXCLUDE_SYMBOLS =
# directories that contain example code fragments that are included (see
# the \include command).
-EXAMPLE_PATH = manuals_and_examples/examples
+EXAMPLE_PATH = @top_srcdir@/manuals_and_examples/examples
# If the value of the EXAMPLE_PATH tag contains directories, you can use the
# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
diff --git a/manuals_and_examples/doxygen-server.cfg b/manuals_and_examples/doxygen-server.cfg.in
index 400bf57..400bf57 100644
--- a/manuals_and_examples/doxygen-server.cfg
+++ b/manuals_and_examples/doxygen-server.cfg.in