19888Sandreas@sandberg.pp.se# =========================================================================== 29888Sandreas@sandberg.pp.se# http://www.gnu.org/software/autoconf-archive/ax_prog_doxygen.html 39888Sandreas@sandberg.pp.se# =========================================================================== 49888Sandreas@sandberg.pp.se# 59888Sandreas@sandberg.pp.se# SYNOPSIS 69888Sandreas@sandberg.pp.se# 79888Sandreas@sandberg.pp.se# DX_INIT_DOXYGEN(PROJECT-NAME, DOXYFILE-PATH, [OUTPUT-DIR]) 89888Sandreas@sandberg.pp.se# DX_DOXYGEN_FEATURE(ON|OFF) 99888Sandreas@sandberg.pp.se# DX_DOT_FEATURE(ON|OFF) 109888Sandreas@sandberg.pp.se# DX_HTML_FEATURE(ON|OFF) 119888Sandreas@sandberg.pp.se# DX_CHM_FEATURE(ON|OFF) 129888Sandreas@sandberg.pp.se# DX_CHI_FEATURE(ON|OFF) 139888Sandreas@sandberg.pp.se# DX_MAN_FEATURE(ON|OFF) 149888Sandreas@sandberg.pp.se# DX_RTF_FEATURE(ON|OFF) 159888Sandreas@sandberg.pp.se# DX_XML_FEATURE(ON|OFF) 169888Sandreas@sandberg.pp.se# DX_PDF_FEATURE(ON|OFF) 179888Sandreas@sandberg.pp.se# DX_PS_FEATURE(ON|OFF) 189888Sandreas@sandberg.pp.se# 199888Sandreas@sandberg.pp.se# DESCRIPTION 209888Sandreas@sandberg.pp.se# 219888Sandreas@sandberg.pp.se# The DX_*_FEATURE macros control the default setting for the given 229888Sandreas@sandberg.pp.se# Doxygen feature. Supported features are 'DOXYGEN' itself, 'DOT' for 239888Sandreas@sandberg.pp.se# generating graphics, 'HTML' for plain HTML, 'CHM' for compressed HTML 249888Sandreas@sandberg.pp.se# help (for MS users), 'CHI' for generating a seperate .chi file by the 259888Sandreas@sandberg.pp.se# .chm file, and 'MAN', 'RTF', 'XML', 'PDF' and 'PS' for the appropriate 269888Sandreas@sandberg.pp.se# output formats. The environment variable DOXYGEN_PAPER_SIZE may be 279888Sandreas@sandberg.pp.se# specified to override the default 'a4wide' paper size. 289888Sandreas@sandberg.pp.se# 299888Sandreas@sandberg.pp.se# By default, HTML, PDF and PS documentation is generated as this seems to 309888Sandreas@sandberg.pp.se# be the most popular and portable combination. MAN pages created by 319888Sandreas@sandberg.pp.se# Doxygen are usually problematic, though by picking an appropriate subset 329888Sandreas@sandberg.pp.se# and doing some massaging they might be better than nothing. CHM and RTF 339888Sandreas@sandberg.pp.se# are specific for MS (note that you can't generate both HTML and CHM at 349888Sandreas@sandberg.pp.se# the same time). The XML is rather useless unless you apply specialized 359888Sandreas@sandberg.pp.se# post-processing to it. 369888Sandreas@sandberg.pp.se# 379888Sandreas@sandberg.pp.se# The macros mainly control the default state of the feature. The use can 389888Sandreas@sandberg.pp.se# override the default by specifying --enable or --disable. The macros 399888Sandreas@sandberg.pp.se# ensure that contradictory flags are not given (e.g., 409888Sandreas@sandberg.pp.se# --enable-doxygen-html and --enable-doxygen-chm, 419888Sandreas@sandberg.pp.se# --enable-doxygen-anything with --disable-doxygen, etc.) Finally, each 429888Sandreas@sandberg.pp.se# feature will be automatically disabled (with a warning) if the required 439888Sandreas@sandberg.pp.se# programs are missing. 449888Sandreas@sandberg.pp.se# 459888Sandreas@sandberg.pp.se# Once all the feature defaults have been specified, call DX_INIT_DOXYGEN 469888Sandreas@sandberg.pp.se# with the following parameters: a one-word name for the project for use 479888Sandreas@sandberg.pp.se# as a filename base etc., an optional configuration file name (the 489888Sandreas@sandberg.pp.se# default is 'Doxyfile', the same as Doxygen's default), and an optional 499888Sandreas@sandberg.pp.se# output directory name (the default is 'doxygen-doc'). 509888Sandreas@sandberg.pp.se# 519888Sandreas@sandberg.pp.se# Automake Support 529888Sandreas@sandberg.pp.se# 539888Sandreas@sandberg.pp.se# The following is a template aminclude.am file for use with Automake. 549888Sandreas@sandberg.pp.se# Make targets and variables values are controlled by the various 559888Sandreas@sandberg.pp.se# DX_COND_* conditionals set by autoconf. 569888Sandreas@sandberg.pp.se# 579888Sandreas@sandberg.pp.se# The provided targets are: 589888Sandreas@sandberg.pp.se# 599888Sandreas@sandberg.pp.se# doxygen-doc: Generate all doxygen documentation. 609888Sandreas@sandberg.pp.se# 619888Sandreas@sandberg.pp.se# doxygen-run: Run doxygen, which will generate some of the 629888Sandreas@sandberg.pp.se# documentation (HTML, CHM, CHI, MAN, RTF, XML) 639888Sandreas@sandberg.pp.se# but will not do the post processing required 649888Sandreas@sandberg.pp.se# for the rest of it (PS, PDF, and some MAN). 659888Sandreas@sandberg.pp.se# 669888Sandreas@sandberg.pp.se# doxygen-man: Rename some doxygen generated man pages. 679888Sandreas@sandberg.pp.se# 689888Sandreas@sandberg.pp.se# doxygen-ps: Generate doxygen PostScript documentation. 699888Sandreas@sandberg.pp.se# 709888Sandreas@sandberg.pp.se# doxygen-pdf: Generate doxygen PDF documentation. 719888Sandreas@sandberg.pp.se# 729888Sandreas@sandberg.pp.se# Note that by default these are not integrated into the automake targets. 739888Sandreas@sandberg.pp.se# If doxygen is used to generate man pages, you can achieve this 749888Sandreas@sandberg.pp.se# integration by setting man3_MANS to the list of man pages generated and 759888Sandreas@sandberg.pp.se# then adding the dependency: 769888Sandreas@sandberg.pp.se# 779888Sandreas@sandberg.pp.se# $(man3_MANS): doxygen-doc 789888Sandreas@sandberg.pp.se# 799888Sandreas@sandberg.pp.se# This will cause make to run doxygen and generate all the documentation. 809888Sandreas@sandberg.pp.se# 819888Sandreas@sandberg.pp.se# The following variable is intended for use in Makefile.am: 829888Sandreas@sandberg.pp.se# 839888Sandreas@sandberg.pp.se# DX_CLEANFILES = everything to clean. 849888Sandreas@sandberg.pp.se# 859888Sandreas@sandberg.pp.se# Then add this variable to MOSTLYCLEANFILES. 869888Sandreas@sandberg.pp.se# 879888Sandreas@sandberg.pp.se# ----- begin aminclude.am ------------------------------------- 889888Sandreas@sandberg.pp.se# 899888Sandreas@sandberg.pp.se# ## --------------------------------- ## 909888Sandreas@sandberg.pp.se# ## Format-independent Doxygen rules. ## 919888Sandreas@sandberg.pp.se# ## --------------------------------- ## 929888Sandreas@sandberg.pp.se# 939888Sandreas@sandberg.pp.se# if DX_COND_doc 949888Sandreas@sandberg.pp.se# 959888Sandreas@sandberg.pp.se# ## ------------------------------- ## 969888Sandreas@sandberg.pp.se# ## Rules specific for HTML output. ## 979888Sandreas@sandberg.pp.se# ## ------------------------------- ## 989888Sandreas@sandberg.pp.se# 999888Sandreas@sandberg.pp.se# if DX_COND_html 1009888Sandreas@sandberg.pp.se# 1019888Sandreas@sandberg.pp.se# DX_CLEAN_HTML = @DX_DOCDIR@/html 1029888Sandreas@sandberg.pp.se# 1039888Sandreas@sandberg.pp.se# endif DX_COND_html 1049888Sandreas@sandberg.pp.se# 1059888Sandreas@sandberg.pp.se# ## ------------------------------ ## 1069888Sandreas@sandberg.pp.se# ## Rules specific for CHM output. ## 1079888Sandreas@sandberg.pp.se# ## ------------------------------ ## 1089888Sandreas@sandberg.pp.se# 1099888Sandreas@sandberg.pp.se# if DX_COND_chm 1109888Sandreas@sandberg.pp.se# 1119888Sandreas@sandberg.pp.se# DX_CLEAN_CHM = @DX_DOCDIR@/chm 1129888Sandreas@sandberg.pp.se# 1139888Sandreas@sandberg.pp.se# if DX_COND_chi 1149888Sandreas@sandberg.pp.se# 1159888Sandreas@sandberg.pp.se# DX_CLEAN_CHI = @DX_DOCDIR@/@PACKAGE@.chi 1169888Sandreas@sandberg.pp.se# 1179888Sandreas@sandberg.pp.se# endif DX_COND_chi 1189888Sandreas@sandberg.pp.se# 1199888Sandreas@sandberg.pp.se# endif DX_COND_chm 1209888Sandreas@sandberg.pp.se# 1219888Sandreas@sandberg.pp.se# ## ------------------------------ ## 1229888Sandreas@sandberg.pp.se# ## Rules specific for MAN output. ## 1239888Sandreas@sandberg.pp.se# ## ------------------------------ ## 1249888Sandreas@sandberg.pp.se# 1259888Sandreas@sandberg.pp.se# if DX_COND_man 1269888Sandreas@sandberg.pp.se# 1279888Sandreas@sandberg.pp.se# DX_CLEAN_MAN = @DX_DOCDIR@/man 1289888Sandreas@sandberg.pp.se# 1299888Sandreas@sandberg.pp.se# endif DX_COND_man 1309888Sandreas@sandberg.pp.se# 1319888Sandreas@sandberg.pp.se# ## ------------------------------ ## 1329888Sandreas@sandberg.pp.se# ## Rules specific for RTF output. ## 1339888Sandreas@sandberg.pp.se# ## ------------------------------ ## 1349888Sandreas@sandberg.pp.se# 1359888Sandreas@sandberg.pp.se# if DX_COND_rtf 1369888Sandreas@sandberg.pp.se# 1379888Sandreas@sandberg.pp.se# DX_CLEAN_RTF = @DX_DOCDIR@/rtf 1389888Sandreas@sandberg.pp.se# 1399888Sandreas@sandberg.pp.se# endif DX_COND_rtf 1409888Sandreas@sandberg.pp.se# 1419888Sandreas@sandberg.pp.se# ## ------------------------------ ## 1429888Sandreas@sandberg.pp.se# ## Rules specific for XML output. ## 1439888Sandreas@sandberg.pp.se# ## ------------------------------ ## 1449888Sandreas@sandberg.pp.se# 1459888Sandreas@sandberg.pp.se# if DX_COND_xml 1469888Sandreas@sandberg.pp.se# 1479888Sandreas@sandberg.pp.se# DX_CLEAN_XML = @DX_DOCDIR@/xml 1489888Sandreas@sandberg.pp.se# 1499888Sandreas@sandberg.pp.se# endif DX_COND_xml 1509888Sandreas@sandberg.pp.se# 1519888Sandreas@sandberg.pp.se# ## ----------------------------- ## 1529888Sandreas@sandberg.pp.se# ## Rules specific for PS output. ## 1539888Sandreas@sandberg.pp.se# ## ----------------------------- ## 1549888Sandreas@sandberg.pp.se# 1559888Sandreas@sandberg.pp.se# if DX_COND_ps 1569888Sandreas@sandberg.pp.se# 1579888Sandreas@sandberg.pp.se# DX_CLEAN_PS = @DX_DOCDIR@/@PACKAGE@.ps 1589888Sandreas@sandberg.pp.se# 1599888Sandreas@sandberg.pp.se# DX_PS_GOAL = doxygen-ps 1609888Sandreas@sandberg.pp.se# 1619888Sandreas@sandberg.pp.se# doxygen-ps: @DX_DOCDIR@/@PACKAGE@.ps 1629888Sandreas@sandberg.pp.se# 1639888Sandreas@sandberg.pp.se# @DX_DOCDIR@/@PACKAGE@.ps: @DX_DOCDIR@/@PACKAGE@.tag 1649888Sandreas@sandberg.pp.se# cd @DX_DOCDIR@/latex; \ 1659888Sandreas@sandberg.pp.se# rm -f *.aux *.toc *.idx *.ind *.ilg *.log *.out; \ 1669888Sandreas@sandberg.pp.se# $(DX_LATEX) refman.tex; \ 1679888Sandreas@sandberg.pp.se# $(MAKEINDEX_PATH) refman.idx; \ 1689888Sandreas@sandberg.pp.se# $(DX_LATEX) refman.tex; \ 1699888Sandreas@sandberg.pp.se# countdown=5; \ 1709888Sandreas@sandberg.pp.se# while $(DX_EGREP) 'Rerun (LaTeX|to get cross-references right)' \ 1719888Sandreas@sandberg.pp.se# refman.log > /dev/null 2>&1 \ 1729888Sandreas@sandberg.pp.se# && test $$countdown -gt 0; do \ 1739888Sandreas@sandberg.pp.se# $(DX_LATEX) refman.tex; \ 1749888Sandreas@sandberg.pp.se# countdown=`expr $$countdown - 1`; \ 1759888Sandreas@sandberg.pp.se# done; \ 1769888Sandreas@sandberg.pp.se# $(DX_DVIPS) -o ../@PACKAGE@.ps refman.dvi 1779888Sandreas@sandberg.pp.se# 1789888Sandreas@sandberg.pp.se# endif DX_COND_ps 1799888Sandreas@sandberg.pp.se# 1809888Sandreas@sandberg.pp.se# ## ------------------------------ ## 1819888Sandreas@sandberg.pp.se# ## Rules specific for PDF output. ## 1829888Sandreas@sandberg.pp.se# ## ------------------------------ ## 1839888Sandreas@sandberg.pp.se# 1849888Sandreas@sandberg.pp.se# if DX_COND_pdf 1859888Sandreas@sandberg.pp.se# 1869888Sandreas@sandberg.pp.se# DX_CLEAN_PDF = @DX_DOCDIR@/@PACKAGE@.pdf 1879888Sandreas@sandberg.pp.se# 1889888Sandreas@sandberg.pp.se# DX_PDF_GOAL = doxygen-pdf 1899888Sandreas@sandberg.pp.se# 1909888Sandreas@sandberg.pp.se# doxygen-pdf: @DX_DOCDIR@/@PACKAGE@.pdf 1919888Sandreas@sandberg.pp.se# 1929888Sandreas@sandberg.pp.se# @DX_DOCDIR@/@PACKAGE@.pdf: @DX_DOCDIR@/@PACKAGE@.tag 1939888Sandreas@sandberg.pp.se# cd @DX_DOCDIR@/latex; \ 1949888Sandreas@sandberg.pp.se# rm -f *.aux *.toc *.idx *.ind *.ilg *.log *.out; \ 1959888Sandreas@sandberg.pp.se# $(DX_PDFLATEX) refman.tex; \ 1969888Sandreas@sandberg.pp.se# $(DX_MAKEINDEX) refman.idx; \ 1979888Sandreas@sandberg.pp.se# $(DX_PDFLATEX) refman.tex; \ 1989888Sandreas@sandberg.pp.se# countdown=5; \ 1999888Sandreas@sandberg.pp.se# while $(DX_EGREP) 'Rerun (LaTeX|to get cross-references right)' \ 2009888Sandreas@sandberg.pp.se# refman.log > /dev/null 2>&1 \ 2019888Sandreas@sandberg.pp.se# && test $$countdown -gt 0; do \ 2029888Sandreas@sandberg.pp.se# $(DX_PDFLATEX) refman.tex; \ 2039888Sandreas@sandberg.pp.se# countdown=`expr $$countdown - 1`; \ 2049888Sandreas@sandberg.pp.se# done; \ 2059888Sandreas@sandberg.pp.se# mv refman.pdf ../@PACKAGE@.pdf 2069888Sandreas@sandberg.pp.se# 2079888Sandreas@sandberg.pp.se# endif DX_COND_pdf 2089888Sandreas@sandberg.pp.se# 2099888Sandreas@sandberg.pp.se# ## ------------------------------------------------- ## 2109888Sandreas@sandberg.pp.se# ## Rules specific for LaTeX (shared for PS and PDF). ## 2119888Sandreas@sandberg.pp.se# ## ------------------------------------------------- ## 2129888Sandreas@sandberg.pp.se# 2139888Sandreas@sandberg.pp.se# if DX_COND_latex 2149888Sandreas@sandberg.pp.se# 2159888Sandreas@sandberg.pp.se# DX_CLEAN_LATEX = @DX_DOCDIR@/latex 2169888Sandreas@sandberg.pp.se# 2179888Sandreas@sandberg.pp.se# endif DX_COND_latex 2189888Sandreas@sandberg.pp.se# 2199888Sandreas@sandberg.pp.se# .PHONY: doxygen-run doxygen-doc $(DX_PS_GOAL) $(DX_PDF_GOAL) 2209888Sandreas@sandberg.pp.se# 2219888Sandreas@sandberg.pp.se# .INTERMEDIATE: doxygen-run $(DX_PS_GOAL) $(DX_PDF_GOAL) 2229888Sandreas@sandberg.pp.se# 2239888Sandreas@sandberg.pp.se# doxygen-run: @DX_DOCDIR@/@PACKAGE@.tag 2249888Sandreas@sandberg.pp.se# 2259888Sandreas@sandberg.pp.se# doxygen-doc: doxygen-run $(DX_PS_GOAL) $(DX_PDF_GOAL) 2269888Sandreas@sandberg.pp.se# 2279888Sandreas@sandberg.pp.se# @DX_DOCDIR@/@PACKAGE@.tag: $(DX_CONFIG) $(pkginclude_HEADERS) 2289888Sandreas@sandberg.pp.se# rm -rf @DX_DOCDIR@ 2299888Sandreas@sandberg.pp.se# $(DX_ENV) $(DX_DOXYGEN) $(srcdir)/$(DX_CONFIG) 2309888Sandreas@sandberg.pp.se# 2319888Sandreas@sandberg.pp.se# DX_CLEANFILES = \ 2329888Sandreas@sandberg.pp.se# @DX_DOCDIR@/@PACKAGE@.tag \ 2339888Sandreas@sandberg.pp.se# -r \ 2349888Sandreas@sandberg.pp.se# $(DX_CLEAN_HTML) \ 2359888Sandreas@sandberg.pp.se# $(DX_CLEAN_CHM) \ 2369888Sandreas@sandberg.pp.se# $(DX_CLEAN_CHI) \ 2379888Sandreas@sandberg.pp.se# $(DX_CLEAN_MAN) \ 2389888Sandreas@sandberg.pp.se# $(DX_CLEAN_RTF) \ 2399888Sandreas@sandberg.pp.se# $(DX_CLEAN_XML) \ 2409888Sandreas@sandberg.pp.se# $(DX_CLEAN_PS) \ 2419888Sandreas@sandberg.pp.se# $(DX_CLEAN_PDF) \ 2429888Sandreas@sandberg.pp.se# $(DX_CLEAN_LATEX) 2439888Sandreas@sandberg.pp.se# 2449888Sandreas@sandberg.pp.se# endif DX_COND_doc 2459888Sandreas@sandberg.pp.se# 2469888Sandreas@sandberg.pp.se# ----- end aminclude.am --------------------------------------- 2479888Sandreas@sandberg.pp.se# 2489888Sandreas@sandberg.pp.se# LICENSE 2499888Sandreas@sandberg.pp.se# 2509888Sandreas@sandberg.pp.se# Copyright (c) 2009 Oren Ben-Kiki <oren@ben-kiki.org> 2519888Sandreas@sandberg.pp.se# 2529888Sandreas@sandberg.pp.se# Copying and distribution of this file, with or without modification, are 2539888Sandreas@sandberg.pp.se# permitted in any medium without royalty provided the copyright notice 2549888Sandreas@sandberg.pp.se# and this notice are preserved. This file is offered as-is, without any 2559888Sandreas@sandberg.pp.se# warranty. 2569888Sandreas@sandberg.pp.se 2579888Sandreas@sandberg.pp.se#serial 12 2589888Sandreas@sandberg.pp.se 2599888Sandreas@sandberg.pp.se## ----------## 2609888Sandreas@sandberg.pp.se## Defaults. ## 2619888Sandreas@sandberg.pp.se## ----------## 2629888Sandreas@sandberg.pp.se 2639888Sandreas@sandberg.pp.seDX_ENV="" 2649888Sandreas@sandberg.pp.seAC_DEFUN([DX_FEATURE_doc], ON) 2659888Sandreas@sandberg.pp.seAC_DEFUN([DX_FEATURE_dot], OFF) 2669888Sandreas@sandberg.pp.seAC_DEFUN([DX_FEATURE_man], OFF) 2679888Sandreas@sandberg.pp.seAC_DEFUN([DX_FEATURE_html], ON) 2689888Sandreas@sandberg.pp.seAC_DEFUN([DX_FEATURE_chm], OFF) 2699888Sandreas@sandberg.pp.seAC_DEFUN([DX_FEATURE_chi], OFF) 2709888Sandreas@sandberg.pp.seAC_DEFUN([DX_FEATURE_rtf], OFF) 2719888Sandreas@sandberg.pp.seAC_DEFUN([DX_FEATURE_xml], OFF) 2729888Sandreas@sandberg.pp.seAC_DEFUN([DX_FEATURE_pdf], ON) 2739888Sandreas@sandberg.pp.seAC_DEFUN([DX_FEATURE_ps], ON) 2749888Sandreas@sandberg.pp.se 2759888Sandreas@sandberg.pp.se## --------------- ## 2769888Sandreas@sandberg.pp.se## Private macros. ## 2779888Sandreas@sandberg.pp.se## --------------- ## 2789888Sandreas@sandberg.pp.se 2799888Sandreas@sandberg.pp.se# DX_ENV_APPEND(VARIABLE, VALUE) 2809888Sandreas@sandberg.pp.se# ------------------------------ 2819888Sandreas@sandberg.pp.se# Append VARIABLE="VALUE" to DX_ENV for invoking doxygen. 2829888Sandreas@sandberg.pp.seAC_DEFUN([DX_ENV_APPEND], [AC_SUBST([DX_ENV], ["$DX_ENV $1='$2'"])]) 2839888Sandreas@sandberg.pp.se 2849888Sandreas@sandberg.pp.se# DX_DIRNAME_EXPR 2859888Sandreas@sandberg.pp.se# --------------- 2869888Sandreas@sandberg.pp.se# Expand into a shell expression prints the directory part of a path. 2879888Sandreas@sandberg.pp.seAC_DEFUN([DX_DIRNAME_EXPR], 2889888Sandreas@sandberg.pp.se [[expr ".$1" : '\(\.\)[^/]*$' \| "x$1" : 'x\(.*\)/[^/]*$']]) 2899888Sandreas@sandberg.pp.se 2909888Sandreas@sandberg.pp.se# DX_IF_FEATURE(FEATURE, IF-ON, IF-OFF) 2919888Sandreas@sandberg.pp.se# ------------------------------------- 2929888Sandreas@sandberg.pp.se# Expands according to the M4 (static) status of the feature. 2939888Sandreas@sandberg.pp.seAC_DEFUN([DX_IF_FEATURE], [ifelse(DX_FEATURE_$1, ON, [$2], [$3])]) 2949888Sandreas@sandberg.pp.se 2959888Sandreas@sandberg.pp.se# DX_REQUIRE_PROG(VARIABLE, PROGRAM) 2969888Sandreas@sandberg.pp.se# ---------------------------------- 2979888Sandreas@sandberg.pp.se# Require the specified program to be found for the DX_CURRENT_FEATURE to work. 2989888Sandreas@sandberg.pp.seAC_DEFUN([DX_REQUIRE_PROG], [ 2999888Sandreas@sandberg.pp.seAC_PATH_TOOL([$1], [$2]) 3009888Sandreas@sandberg.pp.seif test "$DX_FLAG_[]DX_CURRENT_FEATURE$$1" = 1; then 3019888Sandreas@sandberg.pp.se AC_MSG_WARN([$2 not found - will not DX_CURRENT_DESCRIPTION]) 3029888Sandreas@sandberg.pp.se AC_SUBST(DX_FLAG_[]DX_CURRENT_FEATURE, 0) 3039888Sandreas@sandberg.pp.sefi 3049888Sandreas@sandberg.pp.se]) 3059888Sandreas@sandberg.pp.se 3069888Sandreas@sandberg.pp.se# DX_TEST_FEATURE(FEATURE) 3079888Sandreas@sandberg.pp.se# ------------------------ 3089888Sandreas@sandberg.pp.se# Expand to a shell expression testing whether the feature is active. 3099888Sandreas@sandberg.pp.seAC_DEFUN([DX_TEST_FEATURE], [test "$DX_FLAG_$1" = 1]) 3109888Sandreas@sandberg.pp.se 3119888Sandreas@sandberg.pp.se# DX_CHECK_DEPEND(REQUIRED_FEATURE, REQUIRED_STATE) 3129888Sandreas@sandberg.pp.se# ------------------------------------------------- 3139888Sandreas@sandberg.pp.se# Verify that a required features has the right state before trying to turn on 3149888Sandreas@sandberg.pp.se# the DX_CURRENT_FEATURE. 3159888Sandreas@sandberg.pp.seAC_DEFUN([DX_CHECK_DEPEND], [ 3169888Sandreas@sandberg.pp.setest "$DX_FLAG_$1" = "$2" \ 3179888Sandreas@sandberg.pp.se|| AC_MSG_ERROR([doxygen-DX_CURRENT_FEATURE ifelse([$2], 1, 3189888Sandreas@sandberg.pp.se requires, contradicts) doxygen-DX_CURRENT_FEATURE]) 3199888Sandreas@sandberg.pp.se]) 3209888Sandreas@sandberg.pp.se 3219888Sandreas@sandberg.pp.se# DX_CLEAR_DEPEND(FEATURE, REQUIRED_FEATURE, REQUIRED_STATE) 3229888Sandreas@sandberg.pp.se# ---------------------------------------------------------- 3239888Sandreas@sandberg.pp.se# Turn off the DX_CURRENT_FEATURE if the required feature is off. 3249888Sandreas@sandberg.pp.seAC_DEFUN([DX_CLEAR_DEPEND], [ 3259888Sandreas@sandberg.pp.setest "$DX_FLAG_$1" = "$2" || AC_SUBST(DX_FLAG_[]DX_CURRENT_FEATURE, 0) 3269888Sandreas@sandberg.pp.se]) 3279888Sandreas@sandberg.pp.se 3289888Sandreas@sandberg.pp.se# DX_FEATURE_ARG(FEATURE, DESCRIPTION, 3299888Sandreas@sandberg.pp.se# CHECK_DEPEND, CLEAR_DEPEND, 3309888Sandreas@sandberg.pp.se# REQUIRE, DO-IF-ON, DO-IF-OFF) 3319888Sandreas@sandberg.pp.se# -------------------------------------------- 3329888Sandreas@sandberg.pp.se# Parse the command-line option controlling a feature. CHECK_DEPEND is called 3339888Sandreas@sandberg.pp.se# if the user explicitly turns the feature on (and invokes DX_CHECK_DEPEND), 3349888Sandreas@sandberg.pp.se# otherwise CLEAR_DEPEND is called to turn off the default state if a required 3359888Sandreas@sandberg.pp.se# feature is disabled (using DX_CLEAR_DEPEND). REQUIRE performs additional 3369888Sandreas@sandberg.pp.se# requirement tests (DX_REQUIRE_PROG). Finally, an automake flag is set and 3379888Sandreas@sandberg.pp.se# DO-IF-ON or DO-IF-OFF are called according to the final state of the feature. 3389888Sandreas@sandberg.pp.seAC_DEFUN([DX_ARG_ABLE], [ 3399888Sandreas@sandberg.pp.se AC_DEFUN([DX_CURRENT_FEATURE], [$1]) 3409888Sandreas@sandberg.pp.se AC_DEFUN([DX_CURRENT_DESCRIPTION], [$2]) 3419888Sandreas@sandberg.pp.se AC_ARG_ENABLE(doxygen-$1, 3429888Sandreas@sandberg.pp.se [AS_HELP_STRING(DX_IF_FEATURE([$1], [--disable-doxygen-$1], 3439888Sandreas@sandberg.pp.se [--enable-doxygen-$1]), 3449888Sandreas@sandberg.pp.se DX_IF_FEATURE([$1], [don't $2], [$2]))], 3459888Sandreas@sandberg.pp.se [ 3469888Sandreas@sandberg.pp.secase "$enableval" in 3479888Sandreas@sandberg.pp.se#( 3489888Sandreas@sandberg.pp.sey|Y|yes|Yes|YES) 3499888Sandreas@sandberg.pp.se AC_SUBST([DX_FLAG_$1], 1) 3509888Sandreas@sandberg.pp.se $3 3519888Sandreas@sandberg.pp.se;; #( 3529888Sandreas@sandberg.pp.sen|N|no|No|NO) 3539888Sandreas@sandberg.pp.se AC_SUBST([DX_FLAG_$1], 0) 3549888Sandreas@sandberg.pp.se;; #( 3559888Sandreas@sandberg.pp.se*) 3569888Sandreas@sandberg.pp.se AC_MSG_ERROR([invalid value '$enableval' given to doxygen-$1]) 3579888Sandreas@sandberg.pp.se;; 3589888Sandreas@sandberg.pp.seesac 3599888Sandreas@sandberg.pp.se], [ 3609888Sandreas@sandberg.pp.seAC_SUBST([DX_FLAG_$1], [DX_IF_FEATURE([$1], 1, 0)]) 3619888Sandreas@sandberg.pp.se$4 3629888Sandreas@sandberg.pp.se]) 3639888Sandreas@sandberg.pp.seif DX_TEST_FEATURE([$1]); then 3649888Sandreas@sandberg.pp.se $5 3659888Sandreas@sandberg.pp.se : 3669888Sandreas@sandberg.pp.sefi 3679888Sandreas@sandberg.pp.seAM_CONDITIONAL(DX_COND_$1, DX_TEST_FEATURE([$1])) 3689888Sandreas@sandberg.pp.seif DX_TEST_FEATURE([$1]); then 3699888Sandreas@sandberg.pp.se $6 3709888Sandreas@sandberg.pp.se : 3719888Sandreas@sandberg.pp.seelse 3729888Sandreas@sandberg.pp.se $7 3739888Sandreas@sandberg.pp.se : 3749888Sandreas@sandberg.pp.sefi 3759888Sandreas@sandberg.pp.se]) 3769888Sandreas@sandberg.pp.se 3779888Sandreas@sandberg.pp.se## -------------- ## 3789888Sandreas@sandberg.pp.se## Public macros. ## 3799888Sandreas@sandberg.pp.se## -------------- ## 3809888Sandreas@sandberg.pp.se 3819888Sandreas@sandberg.pp.se# DX_XXX_FEATURE(DEFAULT_STATE) 3829888Sandreas@sandberg.pp.se# ----------------------------- 3839888Sandreas@sandberg.pp.seAC_DEFUN([DX_DOXYGEN_FEATURE], [AC_DEFUN([DX_FEATURE_doc], [$1])]) 3849888Sandreas@sandberg.pp.seAC_DEFUN([DX_DOT_FEATURE], [AC_DEFUN([DX_FEATURE_dot], [$1])]) 3859888Sandreas@sandberg.pp.seAC_DEFUN([DX_MAN_FEATURE], [AC_DEFUN([DX_FEATURE_man], [$1])]) 3869888Sandreas@sandberg.pp.seAC_DEFUN([DX_HTML_FEATURE], [AC_DEFUN([DX_FEATURE_html], [$1])]) 3879888Sandreas@sandberg.pp.seAC_DEFUN([DX_CHM_FEATURE], [AC_DEFUN([DX_FEATURE_chm], [$1])]) 3889888Sandreas@sandberg.pp.seAC_DEFUN([DX_CHI_FEATURE], [AC_DEFUN([DX_FEATURE_chi], [$1])]) 3899888Sandreas@sandberg.pp.seAC_DEFUN([DX_RTF_FEATURE], [AC_DEFUN([DX_FEATURE_rtf], [$1])]) 3909888Sandreas@sandberg.pp.seAC_DEFUN([DX_XML_FEATURE], [AC_DEFUN([DX_FEATURE_xml], [$1])]) 3919888Sandreas@sandberg.pp.seAC_DEFUN([DX_XML_FEATURE], [AC_DEFUN([DX_FEATURE_xml], [$1])]) 3929888Sandreas@sandberg.pp.seAC_DEFUN([DX_PDF_FEATURE], [AC_DEFUN([DX_FEATURE_pdf], [$1])]) 3939888Sandreas@sandberg.pp.seAC_DEFUN([DX_PS_FEATURE], [AC_DEFUN([DX_FEATURE_ps], [$1])]) 3949888Sandreas@sandberg.pp.se 3959888Sandreas@sandberg.pp.se# DX_INIT_DOXYGEN(PROJECT, [CONFIG-FILE], [OUTPUT-DOC-DIR]) 3969888Sandreas@sandberg.pp.se# --------------------------------------------------------- 3979888Sandreas@sandberg.pp.se# PROJECT also serves as the base name for the documentation files. 3989888Sandreas@sandberg.pp.se# The default CONFIG-FILE is "Doxyfile" and OUTPUT-DOC-DIR is "doxygen-doc". 3999888Sandreas@sandberg.pp.seAC_DEFUN([DX_INIT_DOXYGEN], [ 4009888Sandreas@sandberg.pp.se 4019888Sandreas@sandberg.pp.se# Files: 4029888Sandreas@sandberg.pp.seAC_SUBST([DX_PROJECT], [$1]) 4039888Sandreas@sandberg.pp.seAC_SUBST([DX_CONFIG], [ifelse([$2], [], Doxyfile, [$2])]) 4049888Sandreas@sandberg.pp.seAC_SUBST([DX_DOCDIR], [ifelse([$3], [], doxygen-doc, [$3])]) 4059888Sandreas@sandberg.pp.se 4069888Sandreas@sandberg.pp.se# Environment variables used inside doxygen.cfg: 4079888Sandreas@sandberg.pp.seDX_ENV_APPEND(SRCDIR, $srcdir) 4089888Sandreas@sandberg.pp.seDX_ENV_APPEND(PROJECT, $DX_PROJECT) 4099888Sandreas@sandberg.pp.seDX_ENV_APPEND(DOCDIR, $DX_DOCDIR) 4109888Sandreas@sandberg.pp.seDX_ENV_APPEND(VERSION, $PACKAGE_VERSION) 4119888Sandreas@sandberg.pp.se 4129888Sandreas@sandberg.pp.se# Doxygen itself: 4139888Sandreas@sandberg.pp.seDX_ARG_ABLE(doc, [generate any doxygen documentation], 4149888Sandreas@sandberg.pp.se [], 4159888Sandreas@sandberg.pp.se [], 4169888Sandreas@sandberg.pp.se [DX_REQUIRE_PROG([DX_DOXYGEN], doxygen) 4179888Sandreas@sandberg.pp.se DX_REQUIRE_PROG([DX_PERL], perl)], 4189888Sandreas@sandberg.pp.se [DX_ENV_APPEND(PERL_PATH, $DX_PERL)]) 4199888Sandreas@sandberg.pp.se 4209888Sandreas@sandberg.pp.se# Dot for graphics: 4219888Sandreas@sandberg.pp.seDX_ARG_ABLE(dot, [generate graphics for doxygen documentation], 4229888Sandreas@sandberg.pp.se [DX_CHECK_DEPEND(doc, 1)], 4239888Sandreas@sandberg.pp.se [DX_CLEAR_DEPEND(doc, 1)], 4249888Sandreas@sandberg.pp.se [DX_REQUIRE_PROG([DX_DOT], dot)], 4259888Sandreas@sandberg.pp.se [DX_ENV_APPEND(HAVE_DOT, YES) 4269888Sandreas@sandberg.pp.se DX_ENV_APPEND(DOT_PATH, [`DX_DIRNAME_EXPR($DX_DOT)`])], 4279888Sandreas@sandberg.pp.se [DX_ENV_APPEND(HAVE_DOT, NO)]) 4289888Sandreas@sandberg.pp.se 4299888Sandreas@sandberg.pp.se# Man pages generation: 4309888Sandreas@sandberg.pp.seDX_ARG_ABLE(man, [generate doxygen manual pages], 4319888Sandreas@sandberg.pp.se [DX_CHECK_DEPEND(doc, 1)], 4329888Sandreas@sandberg.pp.se [DX_CLEAR_DEPEND(doc, 1)], 4339888Sandreas@sandberg.pp.se [], 4349888Sandreas@sandberg.pp.se [DX_ENV_APPEND(GENERATE_MAN, YES)], 4359888Sandreas@sandberg.pp.se [DX_ENV_APPEND(GENERATE_MAN, NO)]) 4369888Sandreas@sandberg.pp.se 4379888Sandreas@sandberg.pp.se# RTF file generation: 4389888Sandreas@sandberg.pp.seDX_ARG_ABLE(rtf, [generate doxygen RTF documentation], 4399888Sandreas@sandberg.pp.se [DX_CHECK_DEPEND(doc, 1)], 4409888Sandreas@sandberg.pp.se [DX_CLEAR_DEPEND(doc, 1)], 4419888Sandreas@sandberg.pp.se [], 4429888Sandreas@sandberg.pp.se [DX_ENV_APPEND(GENERATE_RTF, YES)], 4439888Sandreas@sandberg.pp.se [DX_ENV_APPEND(GENERATE_RTF, NO)]) 4449888Sandreas@sandberg.pp.se 4459888Sandreas@sandberg.pp.se# XML file generation: 4469888Sandreas@sandberg.pp.seDX_ARG_ABLE(xml, [generate doxygen XML documentation], 4479888Sandreas@sandberg.pp.se [DX_CHECK_DEPEND(doc, 1)], 4489888Sandreas@sandberg.pp.se [DX_CLEAR_DEPEND(doc, 1)], 4499888Sandreas@sandberg.pp.se [], 4509888Sandreas@sandberg.pp.se [DX_ENV_APPEND(GENERATE_XML, YES)], 4519888Sandreas@sandberg.pp.se [DX_ENV_APPEND(GENERATE_XML, NO)]) 4529888Sandreas@sandberg.pp.se 4539888Sandreas@sandberg.pp.se# (Compressed) HTML help generation: 4549888Sandreas@sandberg.pp.seDX_ARG_ABLE(chm, [generate doxygen compressed HTML help documentation], 4559888Sandreas@sandberg.pp.se [DX_CHECK_DEPEND(doc, 1)], 4569888Sandreas@sandberg.pp.se [DX_CLEAR_DEPEND(doc, 1)], 4579888Sandreas@sandberg.pp.se [DX_REQUIRE_PROG([DX_HHC], hhc)], 4589888Sandreas@sandberg.pp.se [DX_ENV_APPEND(HHC_PATH, $DX_HHC) 4599888Sandreas@sandberg.pp.se DX_ENV_APPEND(GENERATE_HTML, YES) 4609888Sandreas@sandberg.pp.se DX_ENV_APPEND(GENERATE_HTMLHELP, YES)], 4619888Sandreas@sandberg.pp.se [DX_ENV_APPEND(GENERATE_HTMLHELP, NO)]) 4629888Sandreas@sandberg.pp.se 4639888Sandreas@sandberg.pp.se# Seperate CHI file generation. 4649888Sandreas@sandberg.pp.seDX_ARG_ABLE(chi, [generate doxygen seperate compressed HTML help index file], 4659888Sandreas@sandberg.pp.se [DX_CHECK_DEPEND(chm, 1)], 4669888Sandreas@sandberg.pp.se [DX_CLEAR_DEPEND(chm, 1)], 4679888Sandreas@sandberg.pp.se [], 4689888Sandreas@sandberg.pp.se [DX_ENV_APPEND(GENERATE_CHI, YES)], 4699888Sandreas@sandberg.pp.se [DX_ENV_APPEND(GENERATE_CHI, NO)]) 4709888Sandreas@sandberg.pp.se 4719888Sandreas@sandberg.pp.se# Plain HTML pages generation: 4729888Sandreas@sandberg.pp.seDX_ARG_ABLE(html, [generate doxygen plain HTML documentation], 4739888Sandreas@sandberg.pp.se [DX_CHECK_DEPEND(doc, 1) DX_CHECK_DEPEND(chm, 0)], 4749888Sandreas@sandberg.pp.se [DX_CLEAR_DEPEND(doc, 1) DX_CLEAR_DEPEND(chm, 0)], 4759888Sandreas@sandberg.pp.se [], 4769888Sandreas@sandberg.pp.se [DX_ENV_APPEND(GENERATE_HTML, YES)], 4779888Sandreas@sandberg.pp.se [DX_TEST_FEATURE(chm) || DX_ENV_APPEND(GENERATE_HTML, NO)]) 4789888Sandreas@sandberg.pp.se 4799888Sandreas@sandberg.pp.se# PostScript file generation: 4809888Sandreas@sandberg.pp.seDX_ARG_ABLE(ps, [generate doxygen PostScript documentation], 4819888Sandreas@sandberg.pp.se [DX_CHECK_DEPEND(doc, 1)], 4829888Sandreas@sandberg.pp.se [DX_CLEAR_DEPEND(doc, 1)], 4839888Sandreas@sandberg.pp.se [DX_REQUIRE_PROG([DX_LATEX], latex) 4849888Sandreas@sandberg.pp.se DX_REQUIRE_PROG([DX_MAKEINDEX], makeindex) 4859888Sandreas@sandberg.pp.se DX_REQUIRE_PROG([DX_DVIPS], dvips) 4869888Sandreas@sandberg.pp.se DX_REQUIRE_PROG([DX_EGREP], egrep)]) 4879888Sandreas@sandberg.pp.se 4889888Sandreas@sandberg.pp.se# PDF file generation: 4899888Sandreas@sandberg.pp.seDX_ARG_ABLE(pdf, [generate doxygen PDF documentation], 4909888Sandreas@sandberg.pp.se [DX_CHECK_DEPEND(doc, 1)], 4919888Sandreas@sandberg.pp.se [DX_CLEAR_DEPEND(doc, 1)], 4929888Sandreas@sandberg.pp.se [DX_REQUIRE_PROG([DX_PDFLATEX], pdflatex) 4939888Sandreas@sandberg.pp.se DX_REQUIRE_PROG([DX_MAKEINDEX], makeindex) 4949888Sandreas@sandberg.pp.se DX_REQUIRE_PROG([DX_EGREP], egrep)]) 4959888Sandreas@sandberg.pp.se 4969888Sandreas@sandberg.pp.se# LaTeX generation for PS and/or PDF: 4979888Sandreas@sandberg.pp.seAM_CONDITIONAL(DX_COND_latex, DX_TEST_FEATURE(ps) || DX_TEST_FEATURE(pdf)) 4989888Sandreas@sandberg.pp.seif DX_TEST_FEATURE(ps) || DX_TEST_FEATURE(pdf); then 4999888Sandreas@sandberg.pp.se DX_ENV_APPEND(GENERATE_LATEX, YES) 5009888Sandreas@sandberg.pp.seelse 5019888Sandreas@sandberg.pp.se DX_ENV_APPEND(GENERATE_LATEX, NO) 5029888Sandreas@sandberg.pp.sefi 5039888Sandreas@sandberg.pp.se 5049888Sandreas@sandberg.pp.se# Paper size for PS and/or PDF: 5059888Sandreas@sandberg.pp.seAC_ARG_VAR(DOXYGEN_PAPER_SIZE, 5069888Sandreas@sandberg.pp.se [a4wide (default), a4, letter, legal or executive]) 5079888Sandreas@sandberg.pp.secase "$DOXYGEN_PAPER_SIZE" in 5089888Sandreas@sandberg.pp.se#( 5099888Sandreas@sandberg.pp.se"") 5109888Sandreas@sandberg.pp.se AC_SUBST(DOXYGEN_PAPER_SIZE, "") 5119888Sandreas@sandberg.pp.se;; #( 5129888Sandreas@sandberg.pp.sea4wide|a4|letter|legal|executive) 5139888Sandreas@sandberg.pp.se DX_ENV_APPEND(PAPER_SIZE, $DOXYGEN_PAPER_SIZE) 5149888Sandreas@sandberg.pp.se;; #( 5159888Sandreas@sandberg.pp.se*) 5169888Sandreas@sandberg.pp.se AC_MSG_ERROR([unknown DOXYGEN_PAPER_SIZE='$DOXYGEN_PAPER_SIZE']) 5179888Sandreas@sandberg.pp.se;; 5189888Sandreas@sandberg.pp.seesac 5199888Sandreas@sandberg.pp.se 5209888Sandreas@sandberg.pp.se#For debugging: 5219888Sandreas@sandberg.pp.se#echo DX_FLAG_doc=$DX_FLAG_doc 5229888Sandreas@sandberg.pp.se#echo DX_FLAG_dot=$DX_FLAG_dot 5239888Sandreas@sandberg.pp.se#echo DX_FLAG_man=$DX_FLAG_man 5249888Sandreas@sandberg.pp.se#echo DX_FLAG_html=$DX_FLAG_html 5259888Sandreas@sandberg.pp.se#echo DX_FLAG_chm=$DX_FLAG_chm 5269888Sandreas@sandberg.pp.se#echo DX_FLAG_chi=$DX_FLAG_chi 5279888Sandreas@sandberg.pp.se#echo DX_FLAG_rtf=$DX_FLAG_rtf 5289888Sandreas@sandberg.pp.se#echo DX_FLAG_xml=$DX_FLAG_xml 5299888Sandreas@sandberg.pp.se#echo DX_FLAG_pdf=$DX_FLAG_pdf 5309888Sandreas@sandberg.pp.se#echo DX_FLAG_ps=$DX_FLAG_ps 5319888Sandreas@sandberg.pp.se#echo DX_ENV=$DX_ENV 5329888Sandreas@sandberg.pp.se]) 533