last-svn-commit-536-gdad2f44 Have Milena be in charge of its own configuration and distribution.

* configure.ac: Remove parts now handled by Milena's configure.ac. * Makefile.am (ACLOCAL_AMFLAGS): Remove. (LRDE_STRIPPED_DIST_FILES, LRDE_NODIST_FILES): Remove all Milena files. (dist-hook): Do not regen Milena's unit tests, as Milena itself is now in charge of this. * NEWS, README: Update. * build-aux/tex.mk, * build-aux/texi2dvi, Remove. * build-aux/Makefile.am (EXTRA_DIST): Remove texi2dvi. --- .gitignore | 3 - ChangeLog | 16 + Makefile.am | 67 +-- NEWS | 6 +- README | 46 +- build-aux/Makefile.am | 6 +- build-aux/tex.mk | 47 -- build-aux/texi2dvi | 1959 ------------------------------------------------- configure.ac | 537 +------------- 9 files changed, 41 insertions(+), 2646 deletions(-) delete mode 100644 build-aux/tex.mk delete mode 100755 build-aux/texi2dvi diff --git a/.gitignore b/.gitignore index 60e1d08..4bc335c 100644 --- a/.gitignore +++ b/.gitignore @@ -19,9 +19,6 @@ Makefile /autoscan.log /config /config.cache* -/config.h -/config.h?in* -/config.hin /config.log* /config.status* /configure diff --git a/ChangeLog b/ChangeLog index 16f6d3b..95f6f93 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,19 @@ +2010-10-27 Roland Levillain <roland@lrde.epita.fr> + + Have Milena be in charge of its own configuration and distribution. + + * configure.ac: Remove parts now handled by Milena's configure.ac. + * Makefile.am (ACLOCAL_AMFLAGS): Remove. + (LRDE_STRIPPED_DIST_FILES, LRDE_NODIST_FILES): + Remove all Milena files. + (dist-hook): Do not regen Milena's unit tests, as Milena itself is + now in charge of this. + * NEWS, README: Update. + * build-aux/tex.mk, + * build-aux/texi2dvi, + Remove. + * build-aux/Makefile.am (EXTRA_DIST): Remove texi2dvi. + 2010-10-26 Roland Levillain <roland@lrde.epita.fr> Move trimesh2 into Milena. diff --git a/Makefile.am b/Makefile.am index 81168a9..483ab5b 100644 --- a/Makefile.am +++ b/Makefile.am @@ -15,8 +15,6 @@ # You should have received a copy of the GNU General Public License # along with Olena. If not, see <http://www.gnu.org/licenses/>. -ACLOCAL_AMFLAGS = -I m4 - SUBDIRS = build-aux milena if ENABLE_SWILENA @@ -47,76 +45,19 @@ REGEN_SUBDIRS += milena scribo LRDE_STRIPPED_DIST_FILES = \ $(distdir)/Makefile.am \ - $(distdir)/configure.ac \ - $(distdir)/milena/mln/accu/math/all.hh \ - $(distdir)/milena/mln/all.hh \ - $(distdir)/milena/mln/core/image/vmorph/all.hh \ - $(distdir)/milena/mln/core/image/vmorph/fun_image.hh \ - $(distdir)/milena/mln/data/all.hh \ - $(distdir)/milena/mln/essential/routine.hh \ - $(distdir)/milena/mln/fun/all.hh \ - $(distdir)/milena/mln/fun/essential.hh \ - $(distdir)/milena/mln/fun/v2v/all.hh \ - $(distdir)/milena/mln/fun/v2v/essential.hh \ - $(distdir)/milena/mln/linear/all.hh \ - $(distdir)/milena/mln/trait/all.hh \ - $(distdir)/milena/mln/trait/ch_value.hh \ - $(distdir)/milena/mln/value/all.hh \ - $(distdir)/milena/mln/value/essential.hh \ - $(distdir)/milena/tests/Makefile.am \ - $(distdir)/milena/tests/convert/Makefile.am \ - $(distdir)/milena/tests/extract/Makefile.am \ - $(distdir)/milena/tests/fun/v2v/Makefile.am \ - $(distdir)/milena/tests/linear/Makefile.am \ - $(distdir)/milena/tests/linear/gaussian/Makefile.am \ - $(distdir)/milena/tests/registration/Makefile.am \ - $(distdir)/milena/tests/trait/ch_value.cc \ - $(distdir)/milena/tests/value/Makefile.am + $(distdir)/configure.ac LRDE_NODIST_FILES = \ - $(distdir)/milena/tests/convert/to_hsl.cc \ - $(distdir)/milena/tests/extract/blue.cc \ - $(distdir)/milena/tests/extract/green.cc \ - $(distdir)/milena/tests/extract/hue.cc \ - $(distdir)/milena/tests/extract/lum.cc \ - $(distdir)/milena/tests/extract/red.cc \ - $(distdir)/milena/tests/extract/sat.cc \ - $(distdir)/milena/tests/fun/v2v/component.cc \ - $(distdir)/milena/tests/fun/v2v/hsl_to_rgb.cc \ - $(distdir)/milena/tests/fun/v2v/rgb_to_hsl.cc \ - $(distdir)/milena/tests/linear/gaussian.cc \ - $(distdir)/milena/tests/linear/gaussian/filter.cc \ - $(distdir)/milena/tests/registration/registration.cc \ - $(distdir)/milena/tests/value/stack.cc \ $(distdir)/scribo -## FIXME: Running `build-aux/build_unit_test.sh' just to update -## `milena/tests/unit_test/unit-tests.mk' is overkill: -## -## 1. It recreates *all* the sources (more than 1200 `.cc' files!). -## => We should just regen `unit-tests.mk', not the `.cc' files. -## -## 2. It visits (almost) all the directories and files under -## milena/mln/ (which admittedly a smaller issue compared to the -## previous one) -## => Prune `unit-tests.mk' instead of regenerating it. The -## simplest solution is probably to equip `unit-tests.mk' in the -## first place with `<<lrde'/`>>' tags, then prune it with -## dist-strip. -## - # Do not distribute parts tagged `lrde' (see build-aux/strip-lrde). +# Then, regen files. dist-hook: for f in $(LRDE_STRIPPED_DIST_FILES); do \ $(top_srcdir)/build-aux/strip-lrde $$f; \ done; \ - rm -rf $(LRDE_NODIST_FILES) && \ - $(top_srcdir)/build-aux/build_unit_test.sh \ - $(distdir)/milena/mln \ - $(distdir)/milena/tests/unit_test \ - $(top_srcdir)/milena/tests/unit_test/disabled_tests \ - mln \ - && \ + rm -rf $(LRDE_NODIST_FILES) \ + && \ ( \ cd $(distdir); \ set -evx; \ diff --git a/NEWS b/NEWS index 36bf98f..d8ac176 100644 --- a/NEWS +++ b/NEWS @@ -1,5 +1,9 @@ * Olena 1.0a + * Starting with Olena 1.1, Milena, Swilena and Scribo are + independent components of the project, distributed together + with the Olena package and as standalone packages. + * Olena 1.0 July 14, 2009 @@ -352,7 +356,7 @@ End: ---- -Copyright (C) 2001, 2002, 2003, 2004, 2007, 2009 EPITA Research and +Copyright (C) 2001, 2002, 2003, 2004, 2007, 2009, 2010 EPITA Research and Development Laboratory (LRDE) This file is part of Olena. diff --git a/README b/README index cc49a02..6400941 100644 --- a/README +++ b/README @@ -336,7 +336,7 @@ from the build directory. * sample images and meshes in `/usr/local/share/olena/images/', - * the documentation in `/usr/local/share/doc/olena/` + * the documentation in `/usr/local/share/doc/olena/`. And optionally: @@ -368,42 +368,17 @@ build-aux Auxiliary tools used by the GNU Build System during ``configure`` and ``make`` stages. -external - Sources of Shipped dependencies. - m4 Extra Autoconf macros. milena + Milena C++ library. - apps - Application examples. - - mln - Headers of the Milena library. - - tests - The test suite. - - doc - The documentation. - - tools - Example tools. - - mesh - Some 3D meshes, mostly used for test purpose. - - img - Some (2D) images, mostly used for test purpose. - - demos - Demos of Milena. +scribo + Olena-Scribo project. swilena - - python - Some Python bindings for Milena. + Swilena project. =================== @@ -415,10 +390,10 @@ Olena has been tested on the following configurations: =========================== ============================================= System Compiler =========================== ============================================= -GNU/Linux on IA-32 g++ (GNU GCC) 3.3, 3.4, 4.0, 4.1, 4.2 and 4.3 +GNU/Linux on IA-32 g++ (GNU GCC) 3.3, 4.0, 4.1, 4.2 and 4.4 GNU/Linux on IA-32 icpc (Intel C/C++ Compiler) 10.1 and 11.0 GNU/Linux on AMD64/Intel 64 g++ (GNU GCC) 4.1 -Mac OS X (10.5) on IA-32 g++ (GNU GCC) 4.0.1 +Mac OS X (10.6) on IA-32 g++ (GNU GCC) 4.0.1 =========================== ============================================= @@ -433,7 +408,7 @@ To enable I/O with GDCM images, `GDCM`_ must be installed. .. _GDCM: http://sourceforge.net/apps/mediawiki/gdcm/ -To support many image formats in Olena's I/O system, `Magick++`_ must +To support many image formats in Milena's I/O system, `Magick++`_ must be installed. .. _Magick++: http://www.imagemagick.org/Magick++/ @@ -457,11 +432,6 @@ There are other sources of interest in the distribution. - Headline news about the project can be found in the file ``NEWS`` at the root of the source tree. -- The library reference HTML documentation, generated by Doxygen_, is - located in ``doc/user/html/``. - -.. _Doxygen: http://www.doxygen.org - License ======= diff --git a/build-aux/Makefile.am b/build-aux/Makefile.am index 0e1ad0f..7fa77cb 100644 --- a/build-aux/Makefile.am +++ b/build-aux/Makefile.am @@ -15,9 +15,5 @@ # You should have received a copy of the GNU General Public License # along with Olena. If not, see <http://www.gnu.org/licenses/>. -# texi2dvi: produce DVI (or PDF) files from Texinfo (or (La)TeX) sources. -# Part of the Texinfo project (http://www.gnu.org/software/texinfo/). -EXTRA_DIST = texi2dvi - # File generators. -EXTRA_DIST += generate_dist_headers.sh build_unit_test.sh +EXTRA_DIST = generate_dist_headers.sh build_unit_test.sh diff --git a/build-aux/tex.mk b/build-aux/tex.mk deleted file mode 100644 index da35475..0000000 --- a/build-aux/tex.mk +++ /dev/null @@ -1,47 +0,0 @@ -## tex.mk -*- Makefile-Automake -*- - -## A small subset of LRDE's share/make/tex.mk. - -## Copyright (C) 2010 EPITA Research and Development Laboratory (LRDE). -## -## This file is part of Olena. -## -## Olena is free software: you can redistribute it and/or modify it under -## the terms of the GNU General Public License as published by the Free -## Software Foundation, version 2 of the License. -## -## Olena is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -## General Public License for more details. -## -## You should have received a copy of the GNU General Public License -## along with Olena. If not, see <http://www.gnu.org/licenses/>. - -build_aux_dir = $(top_srcdir)/build-aux - -TEXI2DVI = $(build_aux_dir)/texi2dvi -TEXI2DVI_FLAGS = --tidy --build-dir=tmp.t2d --batch - - -TEXI2PDF = $(TEXI2DVI) --pdf -TEXI2PDF_FLAGS = $(TEXI2DVI_FLAGS) - -# FIXME: Switch back to HeVeA, since we currently rely on its outputs -# to produce intermediate products later read by Doxygen. When these -# intermediate files are produced directly (from LaTeX sources), -# switch again to TeX4ht. -TEXI2HTML = $(TEXI2DVI) --html # --tex4ht -TEXI2HTML_FLAGS = $(TEXI2DVI_FLAGS) - -SUFFIXES = .tex .pdf - -.tex.pdf: - $(TEXI2PDF) $(TEXI2PDF_FLAGS) -o $@ $< - -tex-mostlyclean: - rm -rf tmp.t2d -.PHONY: tex-mostlyclean -# mostlyclean-local is an Automake special target. -mostlyclean-local: tex-mostlyclean -.PHONY: mostlyclean-local diff --git a/build-aux/texi2dvi b/build-aux/texi2dvi deleted file mode 100755 index fce73b9..0000000 --- a/build-aux/texi2dvi +++ /dev/null @@ -1,1959 +0,0 @@ -#! /bin/sh -# texi2dvi --- produce DVI (or PDF) files from Texinfo (or (La)TeX) sources. -# $Id: texi2dvi,v 1.157 2010/02/09 18:37:08 karl Exp $ -# -# Copyright 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002, 2003, -# 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, -# or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. -# -# Originally written by Noah Friedman. -# -# Please send bug reports, etc. to bug-texinfo@gnu.org. -# If possible, please send a copy of the output of the script called with -# the `--debug' option when making a bug report. - -test -f /bin/ksh && test -z "$RUNNING_KSH" \ - && { UNAMES=`uname -s`; test "x$UNAMES" = xULTRIX; } 2>/dev/null \ - && { RUNNING_KSH=true; export RUNNING_KSH; exec /bin/ksh $0 ${1+"$@"}; } -unset RUNNING_KSH - -# No failure shall remain unpunished. -set -e - -# This string is expanded automatically when this file is checked out. -rcs_revision='$Revision: 1.157 $' -rcs_version=`set - $rcs_revision; echo $2` -program=`echo $0 | sed -e 's!.*/!!'` - -build_mode=${TEXI2DVI_BUILD_MODE:-local} -build_dir=${TEXI2DVI_BUILD_DIRECTORY:-.} - -# Initialize variables for option overriding and otherwise. -# Don't use `unset' since old bourne shells don't have this command. -# Instead, assign them an empty value. -action=compile -batch=false # interact normally -catcode_special=maybe -debug=false -escape="\\" -expand=false # true for expansion via makeinfo -includes= -line_error=true # pass --file-line-error to TeX -max_iters=-1 # keep going forever -oname= # --output -out_lang=dvi -quiet=false # let the tools' message be displayed -recode=false -set_language= -src_specials= -latex2html=hevea # or set to tex4ht -textra= # Extra TeX commands to insert in the input file. -txiprereq=19990129 # minimum texinfo.tex version with macro expansion -verb=false # true for verbose mode -translate_file= # name of charset translation file -recode_from= # if not empty, recode from this encoding to @documentencoding - -orig_pwd=`pwd` - -# We have to initialize IFS to space tab newline since we save and -# restore IFS and apparently POSIX allows stupid/broken behavior with -# empty-but-set IFS. -# http://lists.gnu.org/archive/html/automake-patches/2006-05/msg00008.html -# We need space, tab and new line, in precisely that order. And don't leave -# trailing blanks. -space=' ' -tab=' ' -newline=' -' -IFS="$space$tab$newline" - -# In case someone pedantic insists on using grep -E. -: ${EGREP=egrep} - -# Systems which define $COMSPEC or $ComSpec use semicolons to separate -# directories in TEXINPUTS -- except for Cygwin et al., where COMSPEC -# might be inherited, but : is used. -if test -n "$COMSPEC$ComSpec" \ - && uname | $EGREP -iv 'cygwin|mingw|djgpp' >/dev/null; then - path_sep=";" -else - path_sep=":" -fi - -# Pacify verbose cds. -CDPATH=${ZSH_VERSION+.}$path_sep - -# If $TEX is set to a directory, don't use it. -test -n "$TEX" && test -d "$TEX" && unset TEX - -# -## --------------------- ## -## Auxiliary functions. ## -## --------------------- ## - -# In case `local' is not supported by the shell, provide a function -# that simulates it by simply performing the assignments. This means -# that we must not expect `local' to work, i.e., we must not (i) rely -# on it during recursion, and (ii) have two local declarations of the -# same variable. (ii) is easy to check statically, and our test suite -# does make sure there is never twice a static local declaration of a -# variable. (i) cannot be checked easily, so just be careful. -# -# Note that since we might use a function simulating `local', we can -# no longer rely on the fact that no IFS-splitting is performed. So, -# while -# -# foo=$bar -# -# is fine (no IFS-splitting), never write -# -# local foo=$bar -# -# but rather -# -# local foo="$bar" -( - foo=bar - test_local () { - local foo=foo - } - test_local - test $foo = bar -) || local () { - case $1 in - *=*) eval "$1";; - esac -} - - -# cd_orig -# ------- -# Return to the original directory. -cd_orig () -{ - # In case $orig_pwd is on a different drive (for DOS). - cd / - - # Return to the original directory so that - # - the next file is processed in correct conditions - # - the temporary file can be removed - cd "$orig_pwd" || exit 1 -} - -# func_dirname FILE -# ----------------- -# Return the directory part of FILE. -func_dirname () -{ - dirname "$1" 2>/dev/null \ - || { echo "$1" | sed 's!/[^/]*$!!;s!^$!.!'; } -} - - -# noexit FILE -# ----------- -# Return FILE with one extension remove. foo.bar.baz -> foo.bar. -noext () -{ - echo "$1" | sed -e 's/\.[^/.][^/.]*$//' -} - - -# absolute NAME -> ABS-NAME -# ------------------------- -# Return an absolute path to NAME. -absolute () -{ - case $1 in - [\\/]* | ?:[\\/]*) - # Absolute paths don't need to be expanded. - echo "$1" - ;; - *) local slashes - slashes=`echo "$1" | sed -n 's,.*[^/]\(/*\)$,\1,p'` - local rel - rel=$orig_pwd/`func_dirname "$1"` - if test -d "$rel"; then - (cd "$rel" 2>/dev/null && - local n - n=`pwd`/`basename "$1"`"$slashes" - echo "$n") - else - error 1 "not a directory: $rel" - fi - ;; - esac -} - - -# ensure_dir DIR1 DIR2... -# ----------------------- -# Make sure the directories exist. -ensure_dir () -{ - for dir - do - # Beware that in parallel builds we may have several concurrent - # attempts to create the directory. So fail only if "mkdir" - # failed *and* the directory still does not exist. - test -d "$dir" \ - || mkdir "$dir" \ - || test -d "$dir" \ - || error 1 "cannot create directory: $dir" - done -} - - -# error EXIT_STATUS LINE1 LINE2... -# -------------------------------- -# Report an error and exit with failure if EXIT_STATUS is non null. -error () -{ - local s="$1" - shift - report "$@" - if test "$s" != 0; then - exit $s - fi -} - - -# findprog PROG -# ------------- -# Return true if PROG is somewhere in PATH, else false. -findprog () -{ - local saveIFS="$IFS" - IFS=$path_sep # break path components at the path separator - for dir in $PATH; do - IFS=$saveIFS - # The basic test for an executable is `test -f $f && test -x $f'. - # (`test -x' is not enough, because it can also be true for directories.) - # We have to try this both for $1 and $1.exe. - # - # Note: On Cygwin and DJGPP, `test -x' also looks for .exe. On Cygwin, - # also `test -f' has this enhancement, but not on DJGPP. (Both are - # design decisions, so there is little chance to make them consistent.) - # Thusly, it seems to be difficult to make use of these enhancements. - # - if { test -f "$dir/$1" && test -x "$dir/$1"; } || - { test -f "$dir/$1.exe" && test -x "$dir/$1.exe"; }; then - return 0 - fi - done - return 1 -} - -# report LINE1 LINE2... -# --------------------- -# Report some information on stderr. -report () -{ - for i in "$@" - do - echo >&2 "$0: $i" - done -} - - -# run COMMAND-LINE -# ---------------- -# Run the COMMAND-LINE verbosely, and catching errors as failures. -run () -{ - verbose "Running $@" - "$@" 2>&5 1>&2 || - error 1 "$1 failed" -} - - -# usage -# ----- -# Display usage and exit successfully. -usage () -{ - # We used to simply have `echo "$usage"', but coping with the - # changing behavior of `echo' is much harder than simply using a - # here-doc. - # - # echo '\noto' echo '\\noto' echo -e '\\noto' - # bash 3.1 \noto \\noto \noto - # bash 3.2 %oto \noto -e \noto - # - # where % denotes the eol character. - cat <<EOF -Usage: $program [OPTION]... FILE... - texi2pdf [OPTION]... FILE... - pdftexi2dvi [OPTION]... FILE... - -Run each Texinfo or (La)TeX FILE through TeX in turn until all -cross-references are resolved, building all indices. The directory -containing each FILE is searched for included files. The suffix of FILE -is used to determine its language ((La)TeX or Texinfo). To process -(e)plain TeX files, set the environment variable LATEX=tex. - -In order to make texi2dvi a drop-in replacement of TeX/LaTeX in AUC-TeX, -the FILE may also be composed of the following simple TeX commands. - \`\\input{FILE}' the actual file to compile - \`\\nonstopmode' same as --batch - -When invoked as \`texi2pdf' or \`pdftexi2dvi', or given the option --pdf -or --dvipdf, generate PDF output. Otherwise, generate DVI. - -General options: - -b, --batch no interaction - -D, --debug turn on shell debugging (set -x) - -h, --help display this help and exit successfully - -o, --output=OFILE leave output in OFILE (implies --clean); - only one input FILE may be specified in this case - -q, --quiet no output unless errors (implies --batch) - -s, --silent same as --quiet - -v, --version display version information and exit successfully - -V, --verbose report on what is done - -TeX tuning: - -@ use @input instead of \input for preloaded Texinfo - -e, -E, --expand force macro expansion using makeinfo - -I DIR search DIR for Texinfo files - -l, --language=LANG specify LANG for FILE, either latex or texinfo - --no-line-error do not pass --file-line-error to TeX - -r, --recode call recode before TeX to translate input - --recode-from=ENC recode from ENC to the @documentencoding - --src-specials pass --src-specials to TeX - -t, --command=CMD insert CMD in copy of input file - or --texinfo=CMD multiple values accumulate - --translate-file=FILE use given charset translation file for TeX - -Output format: - --dvi output a DVI file [default] - --dvipdf output a PDF file via DVI (using dvipdf) - --html output an HTML file. Use HeVeA for LaTeX files - --info output an Info file. Use HeVeA for LaTeX files - -p, --pdf use pdftex or pdflatex for processing - --ps output a PDF file via DVI (using dvips) - --text output a plain text file. Use HeVeA for LaTeX files - -Build modes: - --build=MODE specify the treatment of auxiliary files [$build_mode] - --tidy same as --build=tidy - -c, --clean same as --build=clean - --build-dir=DIR specify where the tidy compilation is performed; - implies --tidy; - defaults to TEXI2DVI_BUILD_DIRECTORY [$build_dir] - --mostly-clean remove the auxiliary files and directories - but not the output - --max-iterations=N don't process files more than N times - -The MODE specifies where the TeX compilation takes place, and, as a -consequence, how auxiliary files are treated. The build mode -can also be set using the environment variable TEXI2DVI_BUILD_MODE. - -Valid MODEs are: - \`local' compile in the current directory, leaving all the auxiliary - files around. This is the traditional TeX use. - \`tidy' compile in a local *.t2d directory, where the auxiliary files - are left. Output files are copied back to the original file. - \`clean' same as \`tidy', but remove the auxiliary directory afterwards. - Every compilation therefore requires the full cycle. - -Using the \`tidy' mode brings several advantages: - - the current directory is not cluttered with plethora of temporary files. - - clutter can be even further reduced using --build-dir=dir: all the *.t2d - directories are stored there. - - clutter can be reduced to zero using, e.g., --build-dir=/tmp/\$USER.t2d - or --build-dir=\$HOME/.t2d. - - the output file is updated after every succesful TeX run, for - sake of concurrent visualization of the output. In a \`local' build - the viewer stops during the whole TeX run. - - if the compilation fails, the previous state of the output file - is preserved. - - PDF and DVI compilation are kept in separate subdirectories - preventing any possibility of auxiliary file incompatibility. - -On the other hand, because \`tidy' compilation takes place in another -directory, occasionally TeX won't be able to find some files (e.g., when -using \\graphicspath): in that case use -I to specify the additional -directories to consider. - -The values of the BIBTEX, DVIPDF, DVIPS, LATEX, MAKEINDEX, MAKEINFO, -PDFLATEX, PDFTEX, TEX, TEXINDEX, and THUMBPDF environment variables are used -to run those commands, if they are set. Any CMD strings are added after -@setfilename for Texinfo input, in the first line for LaTeX input. - -Report bugs to bug-texinfo@gnu.org, -general questions and discussion to help-texinfo@gnu.org. -GNU Texinfo home page: <http://www.gnu.org/software/texinfo/> -General help using GNU software: <http://www.gnu.org/gethelp/> -EOF - exit 0 -} - - -# verbose WORD1 WORD2 -# ------------------- -# Report some verbose information. -verbose () -{ - if $verb; then - echo >&2 "$0: $@" - fi -} - - -# version -# ------- -# Display version info and exit succesfully. -version () -{ - cat <<EOF -texi2dvi (GNU Texinfo 4.13) $rcs_version - -Copyright (C) 2008 Free Software Foundation, Inc. -License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> -This is free software: you are free to change and redistribute it. -There is NO WARRANTY, to the extent permitted by law. -EOF - exit 0 -} - - -## ---------------- ## -## Handling lists. ## -## ---------------- ## - - -# list_append LIST-NAME ELEM -# -------------------------- -# Set LIST-NAME to its former contents, with ELEM appended. -list_append () -{ - local la_l="$1" - shift - eval set X \$$la_l "$@" - shift - eval $la_l=\""$@"\" -} - - -# list_concat_dirs LIST-NAME DIR-LIST -# ----------------------------------- -# Append to LIST-NAME all the components (included empty) from -# the $path_sep separated list DIR-LIST. Make the paths absolute. -list_concat_dirs () -{ - local lcd_list="$1" - # Empty path components are meaningful to tex. We rewrite them as - # `EMPTY' so they don't get lost when we split on $path_sep. - # Hopefully no one will have an actual directory named EMPTY. - local replace_EMPTY="-e 's/^$path_sep/EMPTY$path_sep/g' \ - -e 's/$path_sep\$/${path_sep}EMPTY/g' \ - -e 's/$path_sep$path_sep/${path_sep}EMPTY:/g'" - save_IFS=$IFS - IFS=$path_sep - set x `echo "$2" | eval sed $replace_EMPTY`; shift - IFS=$save_IFS - local dir - for dir - do - case $dir in - EMPTY) - list_append $lcd_list "" - ;; - *) - if test -d $dir; then - dir=`absolute "$dir"` - list_append $lcd_list "$dir" - fi - ;; - esac - done -} - - -# list_prefix LIST-NAME SEP -> STRING -# ----------------------------------- -# Return a string that is composed of the LIST-NAME with each item -# preceded by SEP. -list_prefix () -{ - local lp_p="$2" - eval set X \$$1 - shift - local lp_res - for i - do - lp_res="$lp_res \"$lp_p\" \"$i\"" - done - echo "$lp_res" -} - -# list_infix LIST-NAME SEP -> STRING -# ---------------------------------- -# Same as list_prefix, but a separator. -list_infix () -{ - eval set X \$$1 - shift - local la_IFS="$IFS" - IFS=$path_sep - echo "$*" - IFS=$la_IFS -} - -# list_dir_to_abs LIST-NAME -# ------------------------- -# Convert the list to using only absolute dir names. -# Currently unused, but should replace absolute_filenames some day. -list_dir_to_abs () -{ - local ld_l="$1" - eval set X \$$ld_l - shift - local ld_res - for dir - do - dir=`absolute "$dir"` - test -d "$dir" || continue - ld_res="$ld_res \"$dir\"" - done - set X $ld_res; shift - eval $ld_l=\"$@\" -} - - -## ------------------------------ ## -## Language auxiliary functions. ## -## ------------------------------ ## - - -# out_lang_set LANG -# ----------------- -out_lang_set () -{ - case $1 in - dvi|dvipdf|html|info|pdf|ps|text) out_lang=$1;; - *) error 1 "invalid output format: $1";; - esac -} - - -# out_lang_tex -# ------------ -# Return the tex output language (DVI or PDF) for $OUT_LANG. -out_lang_tex () -{ - case $out_lang in - dvi | ps | dvipdf ) echo dvi;; - pdf ) echo $out_lang;; - html | info | text ) echo $out_lang;; - *) error 1 "invalid out_lang: $1";; - esac -} - - -# out_lang_ext -# ------------ -# Return the extension for $OUT_LANG. -out_lang_ext () -{ - case $out_lang in - dvipdf ) echo pdf;; - dvi | html | info | pdf | ps | text ) echo $out_lang;; - *) error 1 "invalid out_lang: $1";; - esac -} - - -## ------------------------- ## -## TeX auxiliary functions. ## -## ------------------------- ## - -# Save TEXINPUTS so we can construct a new TEXINPUTS path for each file. -# Likewise for bibtex and makeindex. -tex_envvars="BIBINPUTS BSTINPUTS DVIPSHEADERS INDEXSTYLE MFINPUTS MPINPUTS \ -TEXINPUTS TFMFONTS" -for var in $tex_envvars; do - eval ${var}_orig=\$$var - export $var -done - - -# absolute_filenames TEX-PATH -> TEX-PATH -# --------------------------------------- -# Convert relative paths to absolute paths, so we can run in another -# directory (e.g., in tidy build mode, or during the macro-support -# detection). Prepend ".". -absolute_filenames () -{ - # Empty path components are meaningful to tex. We rewrite them as - # `EMPTY' so they don't get lost when we split on $path_sep. - # Hopefully no one will have an actual directory named EMPTY. - local replace_empty="-e 's/^$path_sep/EMPTY$path_sep/g' \ - -e 's/$path_sep\$/${path_sep}EMPTY/g' \ - -e 's/$path_sep$path_sep/${path_sep}EMPTY:/g'" - local res - res=`echo "$1" | eval sed $replace_empty` - save_IFS=$IFS - IFS=$path_sep - set x $res; shift - res=. - for dir - do - case $dir in - EMPTY) - res=$res$path_sep - ;; - *) - if test -d "$dir"; then - res=$res$path_sep`absolute "$dir"` - else - # Even if $dir is not a directory, preserve it in the path. - # It might contain metacharacters that TeX will expand in - # turn, e.g., /some/path/{a,b,c}. This will not get the - # implicit absolutification of the path, but we can't help that. - res=$res$path_sep$dir - fi - ;; - esac - done - echo "$res" -} - - -# output_base_name FILE -# --------------------- -# The name of FILE, possibly renamed to satisfy --output. -# FILE is local, there is no directory part. -output_base_name () -{ - case $oname in - '') echo "$1";; - *) local out_noext - out_noext=`noext "$oname"` - local file_ext - file_ext=`echo "$1" | sed 's/^.*\.//'` - echo "$out_noext.$file_ext" - ;; - esac -} - - -# destdir -# ------- -# Return the name of the directory where the output is expected. -destdir () -{ - case $oname in - '') echo "$orig_pwd";; - *) dirname "$oname";; - esac -} - - -# move_to_dest FILE... -# -------------------- -# Move FILE to the place where the user expects it. Truly move it, that -# is, it must not remain in its build location unless that is also the -# output location. (Otherwise it might appear as an extra file in make -# distcheck.) -# -# FILE can be the principal output (in which case -o directly applies), or -# an auxiliary file with the same base name. -move_to_dest () -{ - # If we built in place, there is nothing to install, leave. - case $tidy:$oname in - false:) return;; - esac - - local destfile - local destdir - local destbase - local sourcedir - local sourcebase - - for file - do - test -f "$file" || - error 1 "no such file or directory: $file" - case $tidy:$oname in - true:) destdir=$orig_pwd - destfile=$destdir/$file;; - *:*) destfile=`output_base_name "$file"` - destdir=`dirname "$destfile"`;; - esac - # We want to compare the source location and the output location, - # and if they are different, do the move. But if they are the - # same, we must preserve the source. Since we can't assume - # stat(1) or test -ef is available, resort to comparing the - # directory names, canonicalized with pwd. We can't use cmp -s - # since the output file might not actually change from run to run; - # e.g., TeX DVI output is timestamped to only the nearest minute. - destdir=`cd "$destdir" && pwd` - destbase=`basename "$destfile"` - - sourcedir=`dirname "$file"` - sourcedir=`cd "$sourcedir" && pwd` - sourcebase=`basename "$file"` - - if test "$sourcedir/$sourcebase" != "$destdir/$destbase"; then - verbose "Moving $file to $destfile" - rm -f "$destfile" - mv "$file" "$destfile" - fi - done -} - - -## --------------------- ## -## Managing xref files. ## -## --------------------- ## - -# aux_file_p FILE -# --------------- -# Return with success if FILE is an aux file. -aux_file_p () -{ - test -f "$1" || return 1 - case $1 in - *.aux) return 0;; - *) return 1;; - esac -} - -# bibaux_file_p FILE -# ------------------ -# Return with success if FILE is an aux file containing citation -# requests. -bibaux_file_p () -{ - test -s "$1" || return 1 - if (grep '^\\bibstyle[{]' "$1" \ - && grep '^\\bibdata[{]' "$1" \ - ## The following line is suspicious: fails when there - ## are citations in sub aux files. We need to be - ## smarter in this case. - ## && grep '^\\citation[{]' "$f" - ) >&6 2>&1; - then - return 0 - fi - return 1 -} - -# index_file_p FILE -# ----------------- -# Return with success if FILE is an index file. -index_file_p () -{ - test -f "$1" || return 1 - case $in_lang:$latex2html:`out_lang_tex`:`sed '1q' "$1"` in - # When working with TeX4HT, *.idx are created by LaTeX. They must - # be processed to produce *.4ix, *.4dx files. The *.4dx file is - # passed to makeindex to produce the *.ind file. This sequence is - # handled by run_index, so we are only interested in the *.idx - # files, which have each "\indexentry" preceded by a - # "\beforeentry". - latex:tex4ht:html:"\\beforeentry {"*) return 0;; - - # When index.sty is used, there is a space before the brace. - latex:*:*:"\\indexentry{"*|latex:*:*:"\\indexentry {"*) return 0;; - - texinfo:*:*:"\\entry{"*) return 0;; - - *) return 1;; - esac -} - -# xref_file_p FILE -# ---------------- -# Return with success if FILE is an xref file (indexes, tables and lists). -xref_file_p () -{ - test -f "$1" || return 1 - # If the file is not suitable to be an index or xref file, don't - # process it. It's suitable if the first character is a - # backslash or right quote or at, as long as the first line isn't - # \input texinfo. - case `sed '1q' "$1"` in - "\\input texinfo"*) return 1;; - [\\''@]*) return 0;; - *) return 1;; - esac -} - - -# generated_files_get FILENAME-NOEXT [PREDICATE-FILTER] -# ----------------------------------------------------- -# Return the list of files generated by the TeX compilation of FILENAME-NOEXT. -generated_files_get () -{ - local filter=true - if test -n "$2"; then - filter=$2 - fi - - # Gather the files created by TeX. - ( - if test -f "$1.log"; then - sed -n -e "s,^\\\\openout.* = \`\\(.*\\)'\\.,\\1,p" "$1.log" - fi - echo "$1.log" - ) | - # Depending on these files, infer outputs from other tools. - while read file; do - echo $file - case $in_lang in - texinfo) - # texindex: texinfo.cp -> texinfo.cps - if index_file_p $file; then - echo ${file}s - fi - ;; - latex) - if aux_file_p $file; then - # bibtex: *.aux -> *.bbl and *.blg. - echo $file | sed 's/^\(.*\)\.aux$/\1.bbl/' - echo $file | sed 's/^\(.*\)\.aux$/\1.blg/' - # -recorder: .fls - echo $file | sed 's/^\(.*\)\.aux$/\1.fls/' - fi - ;; - esac - done | - # Filter existing files matching the criterion. - # - # With an input file name containing a space, this produces a - # "command not found" message (and filtering is ineffective). - # The situation with a newline is presumably even worse. - while read file; do - if $filter "$file"; then - echo $file - fi - done | - sort | - # Some files are opened several times, e.g., listings.sty's *.vrb. - uniq -} - - -# xref_files_save -# --------------- -# Save the xref files. -xref_files_save () -{ - # Save copies of auxiliary files for later comparison. - xref_files_orig=`generated_files_get "$in_noext" xref_file_p` - if test -n "$xref_files_orig"; then - verbose "Backing up xref files: $xref_files_orig" - # The following line improves `cp $xref_files_orig "$work_bak"' - # by preserving the directory parts. Think of - # cp chap1/main.aux chap2/main.aux $work_bak. - # - # Users may have, e.g., --keep-old-files. Don't let this interfere. - # (Don't use unset for the sake of ancient shells.) - TAR_OPTIONS=; export TAR_OPTIONS - tar cf - $xref_files_orig | (cd "$work_bak" && tar xf -) - fi -} - - -# xref_files_changed -# ------------------ -# Whether the xref files were changed since the previous run. -xref_files_changed () -{ - # LaTeX (and the package changebar) report in the LOG file if it - # should be rerun. This is needed for files included from - # subdirs, since texi2dvi does not try to compare xref files in - # subdirs. Performing xref files test is still good since LaTeX - # does not report changes in xref files. - if grep "Rerun to get" "$in_noext.log" >&6 2>&1; then - return 0 - fi - - # If old and new lists don't at least have the same file list, - # then one file or another has definitely changed. - xref_files_new=`generated_files_get "$in_noext" xref_file_p` - verbose "Original xref files = $xref_files_orig" - verbose "New xref files = $xref_files_new" - if test "x$xref_files_orig" != "x$xref_files_new"; then - return 0 - fi - - # Compare each file until we find a difference. - for this_file in $xref_files_new; do - verbose "Comparing xref file `echo $this_file | sed 's|\./||g'` ..." - # cmp -s returns nonzero exit status if files differ. - if cmp -s "$this_file" "$work_bak/$this_file"; then :; else - verbose "xref file `echo $this_file | sed 's|\./||g'` differed ..." - if $debug; then - diff -u "$work_bak/$this_file" "$this_file" - fi - return 0 - fi - done - - # No change. - return 1 -} - - - -## ----------------------- ## -## Running the TeX suite. ## -## ----------------------- ## - - - -# run_tex () -# ---------- -# Run TeX as "$tex $in_input", taking care of errors and logs. -run_tex () -{ - case $in_lang:$latex2html:`out_lang_tex` in - latex:*:dvi|latex:tex4ht:html) - tex=${LATEX:-latex};; - latex:*:pdf) - tex=${PDFLATEX:-pdflatex};; - texinfo:*:dvi) - # MetaPost also uses the TEX environment variable. If the user - # has set TEX=latex for that reason, don't bomb out. - case $TEX in - *latex) tex=tex;; # don't bother trying to find etex - *) tex=$TEX - esac;; - texinfo:*:pdf) tex=$PDFTEX;; - - *) error 1 "$out_lang not supported for $in_lang";; - esac - - # do the special catcode trick for ~ in filenames only for Texinfo, - # not LaTeX. - if test x"$in_lang" = xtexinfo && test $catcode_special = maybe; then - catcode_special=true - else - catcode_special=false - fi - - # Beware of aux files in subdirectories that require the - # subdirectory to exist. - case $in_lang:$tidy in - latex:true) - sed -n 's|^[ ]*\\include{\(.*\)/.*}.*|\1|p' "$in_input" | - sort -u | - while read d - do - ensure_dir "$work_build/$d" - done - ;; - esac - - # Note that this will be used via an eval: quote properly. - local cmd="$tex" - - # If possible, make TeX report error locations in GNU format. - if $line_error; then - if test "${tex_help:+set}" != set; then - # Go to a temporary directory to try --help, since old versions that - # don't accept --help will generate a texput.log. - tex_help_dir=$t2ddir/tex_help - ensure_dir "$tex_help_dir" - tex_help=`cd "$tex_help_dir" >&6 && $tex --help </dev/null 2>&1 || true` - fi - # The mk program and perhaps others want to parse TeX's - # original error messages. - case $tex_help in - *file-line-error*) cmd="$cmd --file-line-error";; - esac - fi - - # Tell TeX about TCX file, if specified. - test -n "$translate_file" && cmd="$cmd --translate-file=$translate_file" - - # Tell TeX to make source specials (for backtracking from output to - # source, given a sufficiently smart editor), if specified. - test -n "$src_specials" && cmd="$cmd $src_specials" - - # Tell TeX to be batch if requested. - if $batch; then - # \batchmode does not show terminal output at all, so we don't - # want that. And even in batch mode, TeX insists on having input - # from the user. Close its stdin to make it impossible. - cmd="$cmd </dev/null '${escape}nonstopmode'" - fi - - # we'd like to handle arbitrary input file names, especially - # foo~bar/a~b.tex, since Debian likes ~ characters. - if $catcode_special; then - # $normaltilde is just to reduce line length in this source file. - # The idea is to define \normaltilde as a catcode other ~ character, - # then make the active ~ be equivalent to that, instead of the plain - # TeX tie. Then when the active ~ appears in the filename, it will - # be expanded to itself, as far as \input will see. (This is the - # same thing that texinfo.tex does in general, BTW.) - normaltilde="${escape}catcode126=12 ${escape}def${escape}normaltilde{~}" - cmd="$cmd '$normaltilde${escape}catcode126=13 ${escape}let~\normaltilde '" - fi - # Other special (non-active) characters could be supported by - # resetting their catcodes to other on the command line and changing - # texinfo.tex to initialize everything to plain catcodes. Maybe someday. - - # append the \input command. - cmd="$cmd '${escape}input'" - - # TeX's \input does not (easily or reliably) support whitespace - # characters or other special characters in file names. Our intensive - # use of absolute file names makes this worse: the enclosing directory - # names may include white spaces. Improve the situation using a - # symbolic link to the filename in the current directory, in tidy mode - # only. Do not alter in_input. - # - # The filename is almost always tokenized using plain TeX conventions - # (the exception would be if the user made a texinfo.fmt file). Not - # all the plain TeX special characters cause trouble, but there's no - # harm in making the link. - # - case $tidy:`func_dirname "$in_input"` in - true:*["$space$tab$newline\"#\$%\\^_{}~"]*) - _run_tex_file_name=`basename "$in_input"` - if test ! -f "$_run_tex_file_name"; then - # It might not be a file, clear it. - run rm -f "$_run_tex_file_name" - run ln -s "$in_input" - fi - cmd="$cmd '$_run_tex_file_name'" - ;; - - *) - cmd="$cmd '$in_input'" - ;; - esac - - verbose "$0: Running $cmd ..." - if eval "$cmd" >&5; then - case $out_lang in - dvi | pdf ) move_to_dest "$in_noext.$out_lang";; - esac - else - error 1 "$tex exited with bad status, quitting." - fi -} - -# run_bibtex () -# ------------- -# Run bibtex on current file. -# - If its input (AUX) exists. -# - If some citations are missing (LOG contains `Citation'). -# or the LOG complains of a missing .bbl -# -# Don't try to be too smart: -# -# 1. Running bibtex only if the bbl file exists and is older than -# the LaTeX file is wrong, since the document might include files -# that have changed. -# -# 3. Because there can be several AUX (if there are \include's), -# but a single LOG, looking for missing citations in LOG is -# easier, though we take the risk to match false messages. -run_bibtex () -{ - case $in_lang in - latex) bibtex=${BIBTEX:-bibtex};; - texinfo) return;; - esac - - # "Citation undefined" is for LaTeX, "Undefined citation" for btxmac.tex. - # The no .aux && \bibdata test is also for btxmac, in case it was the - # first run of a bibtex-using document. Otherwise, it's possible that - # bibtex would never be run. - if test -r "$in_noext.aux" \ - && test -r "$in_noext.log" \ - && ((grep 'Warning:.*Citation.*undefined' "$in_noext.log" \ - || grep '.*Undefined citation' "$in_noext.log" \ - || grep 'No file .*\.bbl\.' "$in_noext.log") \ - || (grep 'No \.aux file' "$in_noext.log" \ - && grep '^\\bibdata' "$in_noext.aux")) \ - >&6 2>&1; \ - then - for f in `generated_files_get "$in_noext" bibaux_file_p` - do - run $bibtex "$f" - done - fi -} - -# run_index () -# ------------ -# Run texindex (or makeindex or texindy) on current index files. If -# they already exist, and after running TeX a first time the index -# files don't change, then there's no reason to run TeX again. But we -# won't know that if the index files are out of date or nonexistent. -run_index () -{ - local index_files=`generated_files_get $in_noext index_file_p` - test -n "$index_files" || - return 0 - - : ${MAKEINDEX:=makeindex} - : ${TEXINDEX:=texindex} - : ${TEXINDY:=texindy} - - local index_file - local index_noext - case $in_lang:$latex2html:`out_lang_tex` in - latex:tex4ht:html) - for index_file in $index_files - do - index_noext=`noext "$index_file"` - run tex \ - '\def\filename{{'"$index_noext"'}{idx}{4dx}{ind}} - \input idxmake.4ht' - run $MAKEINDEX -o $index_noext.ind $index_noext.4dx - done - ;; - - latex:*) - if $TEXINDY --version >&6 2>&1; then - run $TEXINDY $index_files - else - run $MAKEINDEX $index_files - fi - ;; - - texinfo:*) - run $TEXINDEX $index_files - ;; - esac -} - - -# run_tex4ht () -# ------------- -# Run the last two phases of TeX4HT: tex4ht extracts the HTML from the -# instrumented DVI file, and t4ht converts the figures and installs -# the files when given -d. -# -# Because knowing exactly which files are created is complex (in -# addition the names are not simple to compute), which makes it -# difficult to install the output files in a second step, it is much -# simpler to install directly the output files. -run_tex4ht () -{ - case $in_lang:$latex2html:`out_lang_tex` in - latex:tex4ht:html) - : ${TEX4HT=tex4ht} ${T4HT=t4ht} - run "$TEX4HT" "-f/$in_noext" - # Do not remove the / after the destdir. - run "$T4HT" "-d`destdir`/" "-f/$in_noext" - ;; - esac -} - - -# run_thumbpdf () -# --------------- -run_thumbpdf () -{ - if test `out_lang_tex` = pdf \ - && test -r "$in_noext.log" \ - && grep 'thumbpdf\.sty' "$in_noext.log" >&6 2>&1; \ - then - thumbpdf=${THUMBPDF:-thumbpdf} - thumbcmd="$thumbpdf $in_dir/$in_noext" - verbose "Running $thumbcmd ..." - if $thumbcmd >&5; then - run_tex - else - report "$thumbpdf exited with bad status." \ - "Ignoring its output." - fi - fi -} - - -# run_dvipdf FILE.dvi -# ------------------- -# Convert FILE.dvi to FILE.pdf. -run_dvipdf () -{ - # Find which dvi->pdf program is available. - if test -z "$dvipdf"; then - for i in "$DVIPDF" dvipdfmx dvipdfm dvipdf dvi2pdf dvitopdf; - do - if findprog $i; then - dvipdf=$i - fi - done - fi - # These tools have varying interfaces, some 'input output', others - # 'input -o output'. They all seem to accept 'input' only, - # outputting using the expected file name. - run $dvipdf "$1" - if test ! -f `echo "$1" | sed -e 's/\.dvi$/.pdf/'`; then - error 1 "cannot find output file" - fi -} - -# run_tex_suite () -# ---------------- -# Run the TeX tools until a fix point is reached. -run_tex_suite () -{ - # Move to the working directory. - if $tidy; then - verbose "cd $work_build" - cd "$work_build" || exit 1 - fi - - # Count the number of cycles. - local cycle=0 - - while :; do - # check for probably LaTeX loop (e.g. varioref) - if test $cycle -eq "$max_iters"; then - error 0 "Maximum of $max_iters cycles exceeded" - break - fi - - # report progress - cycle=`expr $cycle + 1` - verbose "Cycle $cycle for $command_line_filename" - - xref_files_save - - # We run bibtex first, because I can see reasons for the indexes - # to change after bibtex is run, but I see no reason for the - # converse. - run_bibtex - run_index - run_core_conversion - - xref_files_changed || break - done - - # If we were using thumbpdf and producing PDF, then run thumbpdf - # and TeX one last time. - run_thumbpdf - - # If we are using tex4ht, call it. - run_tex4ht - - # Install the result if we didn't already (i.e., if the output is - # dvipdf or ps). - case $latex2html:$out_lang in - *:dvipdf) - run_dvipdf "$in_noext.`out_lang_tex`" - move_to_dest "$in_noext.`out_lang_ext`" - ;; - *:ps) - : {DVIPS=dvips} - $DVIPS -o "$in_noext.`out_lang_ext`" "$in_noext.`out_lang_tex`" - move_to_dest "$in_noext.`out_lang_ext`" - ;; - esac - - cd_orig -} - -## -------------------------------- ## -## TeX processing auxiliary tools. ## -## -------------------------------- ## - - -# A sed script that preprocesses Texinfo sources in order to keep the -# iftex sections only. We want to remove non TeX sections, and comment -# (with `@c _texi2dvi') TeX sections so that makeinfo does not try to -# parse them. Nevertheless, while commenting TeX sections, don't -# comment @macro/@end macro so that makeinfo does propagate them. -# Unfortunately makeinfo --iftex --no-ifinfo doesn't work well enough -# (yet), makeinfo can't parse the TeX commands, so work around with sed. -# -# We assume that `@c _texi2dvi' starting a line is not present in the -# document. -# -comment_iftex=\ -'/^@tex/,/^@end tex/{ - s/^/@c _texi2dvi/ -} -/^@iftex/,/^@end iftex/{ - s/^/@c _texi2dvi/ - /^@c _texi2dvi@macro/,/^@c _texi2dvi@end macro/{ - s/^@c _texi2dvi// - } -} -/^@ifnottex/,/^@end ifnottex/{ - s/^/@c (_texi2dvi)/ -} -/^@ifinfo/,/^@end ifinfo/{ - /^@node/p - /^@menu/,/^@end menu/p - t - s/^/@c (_texi2dvi)/ -} -s/^@ifnotinfo/@c _texi2dvi@ifnotinfo/ -s/^@end ifnotinfo/@c _texi2dvi@end ifnotinfo/' - -# Uncommenting is simpler: remove any leading `@c texi2dvi'; repeated -# copies can sneak in via macro invocations. -uncomment_iftex='s/^@c _texi2dvi\(@c _texi2dvi\)*//' - - -# run_makeinfo () -# --------------- -# Expand macro commands in the original source file using Makeinfo. -# Always use `end' footnote style, since the `separate' style -# generates different output (arguably this is a bug in -E). Discard -# main info output, the user asked to run TeX, not makeinfo. -run_makeinfo () -{ - test $in_lang = texinfo \ - || return 0 - - # Unless required by the user, makeinfo expansion is wanted only - # if texinfo.tex is too old. - if $expand; then - makeinfo=${MAKEINFO:-makeinfo} - else - # Check if texinfo.tex performs macro expansion by looking for - # its version. The version is a date of the form YEAR-MO-DA. - # We don't need to use [0-9] to match the digits since anyway - # the comparison with $txiprereq, a number, will fail with non - # digits. - # Run in a temporary directory to avoid leaving files. - version_test_dir=$t2ddir/version_test - ensure_dir "$version_test_dir" - ( - cd "$version_test_dir" - echo '\input texinfo.tex @bye' >txiversion.tex - # Be sure that if tex wants to fail, it is not interactive: - # close stdin. - $TEX txiversion.tex </dev/null >txiversion.out 2>txiversion.err - ) - if test $? != 0; then - cat "$version_test_dir/txiversion.out" - cat "$version_test_dir/txiversion.err" >&2 - error 1 "texinfo.tex appears to be broken, quitting." - fi - eval `sed -n 's/^.*\[\(.*\)version \(....\)-\(..\)-\(..\).*$/txiformat=\1 txiversion="\2\3\4"/p' "$version_test_dir/txiversion.out"` - verbose "texinfo.tex preloaded as \`$txiformat', version is \`$txiversion' ..." - if test "$txiprereq" -le "$txiversion" >&6 2>&1; then - makeinfo= - else - makeinfo=${MAKEINFO:-makeinfo} - fi - # If TeX is preloaded, offer the user this convenience: - if test "$txiformat" = Texinfo; then - escape=@ - fi - fi - - if test -n "$makeinfo"; then - # in_src: the file with macros expanded. - # Use the same basename to generate the same aux file names. - work_src=$workdir/src - ensure_dir "$work_src" - in_src=$work_src/$in_base - local miincludes - miincludes=`list_prefix includes -I` - verbose "Macro-expanding $command_line_filename to $in_src ..." - # eval $makeinfo because it might be defined as something complex - # (running missing) and then we end up with things like '"-I"', - # and "-I" (including the quotes) is not an option name. This - # happens with gettext 0.14.5, at least. - sed "$comment_iftex" "$command_line_filename" \ - | eval $makeinfo --footnote-style=end -I "$in_dir" $miincludes \ - -o /dev/null --macro-expand=- \ - | sed "$uncomment_iftex" >"$in_src" - # Continue only if everything succeeded. - if test $? -ne 0 \ - || test ! -r "$in_src"; then - verbose "Expansion failed, ignored..."; - else - in_input=$in_src - fi - fi -} - -# insert_commands () -# ------------------ -# Used most commonly for @finalout, @smallbook, etc. -insert_commands () -{ - if test -n "$textra"; then - # _xtr. The file with the user's extra commands. - work_xtr=$workdir/xtr - in_xtr=$work_xtr/$in_base - ensure_dir "$work_xtr" - verbose "Inserting extra commands: $textra" - local textra_cmd - case $in_lang in - latex) textra_cmd=1i;; - texinfo) textra_cmd='/^@setfilename/a';; - *) error 1 "internal error, unknown language: $in_lang";; - esac - sed "$textra_cmd\\ -$textra" "$in_input" >"$in_xtr" - in_input=$in_xtr - fi - - case $in_lang:$latex2html:`out_lang_tex` in - latex:tex4ht:html) - # _tex4ht. The file with the added \usepackage{tex4ht}. - work_tex4ht=$workdir/tex4ht - in_tex4ht=$work_tex4ht/$in_base - ensure_dir "$work_tex4ht" - verbose "Inserting \\usepackage{tex4ht}" - perl -pe 's<\\documentclass(?:\[.*\])?{.*}> - <$&\\usepackage[xhtml]{tex4ht}>' \ - "$in_input" >"$in_tex4ht" - in_input=$in_tex4ht - ;; - esac -} - -# run_recode () -# ------------- -# If this is a Texinfo file with a specified input encoding, and -# recode is available, then recode to plain 7 bit Texinfo. -run_recode () -{ - local from - local to - - if test $in_lang = texinfo; then - pgm='s/^ *@documentencoding *\([^ ][^ ]*\) *$/\1/ - t found - d - :found - q' - encoding=`sed -e "$pgm" "$in_input"` - if $recode && test -n "$encoding" && findprog recode; then - if test -n "$recode_from"; then - from=$recode_from - to=$encoding - else - from=$encoding - to=$texinfo - fi - verbose "Recoding from $from to $to." - # _rcd. The Texinfo file recoded in 7bit. - work_rcd=$workdir/recode - in_rcd=$work_rcd/$in_base - ensure_dir "$work_rcd" - if recode "$encoding..$to" <"$in_input" >"$in_rcd" \ - && test -s "$in_rcd"; then - in_input=$in_rcd - else - verbose "Recoding failed, using original input." - fi - fi - fi -} - -# compute_language FILENAME -# ------------------------- -# Return the short string describing the language in which FILENAME -# is written: `texinfo' or `latex'. -compute_language () -{ - # If the user explicitly specified the language, use that. - # Otherwise, if the first line is \input texinfo, assume it's texinfo. - # Otherwise, guess from the file extension. - if test -n "$set_language"; then - echo $set_language - elif sed 1q "$1" | grep 'input texinfo' >&6; then - echo texinfo - else - # Get the type of the file (latex or texinfo) from the given language - # we just guessed, or from the file extension if not set yet. - case $1 in - *.ltx | *.tex | *.drv | *.dtx) echo latex;; - *) echo texinfo;; - esac - fi -} - - -# run_hevea (MODE) -# ---------------- -# Convert to HTML/INFO/TEXT. -# -# Don't pass `-noiso' to hevea: it's useless in HTML since anyway the -# charset is set to latin1, and troublesome in other modes since -# accented characters loose their accents. -# -# Don't pass `-o DEST' to hevea because in that case it leaves all its -# auxiliary files there too... Too bad, because it means we will need -# to handle images some day. -run_hevea () -{ - local hevea="${HEVEA:-hevea}" - local run_hevea="$hevea" - - case $1 in - html) ;; - text|info) run_hevea="$run_hevea -$1";; - *) error 1 "run_hevea: invalid argument: $1";; - esac - - # Compiling to the tmp directory enables to preserve a previous - # successful compilation. - run_hevea="$run_hevea -fix -O -o '$out_base'" - run_hevea="$run_hevea `list_prefix includes -I` -I '$orig_pwd' " - run_hevea="$run_hevea '$in_input'" - - if $debug; then - run_hevea="$run_hevea -v -v" - fi - - verbose "running $run_hevea" - if eval "$run_hevea" >&5; then - # hevea leaves trailing white spaces, this is annoying. - case $1 in text|info) - perl -pi -e 's/[ \t]+$//g' "$out_base"*;; - esac - case $1 in - html|text) move_to_dest "$out_base";; - info) # There can be foo.info-1, foo.info-2 etc. - move_to_dest "$out_base"*;; - esac - else - error 1 "$hevea exited with bad status, quitting." - fi -} - - -# run_core_conversion () -# ---------------------- -# Run the TeX (or HeVeA). -run_core_conversion () -{ - case $in_lang:$latex2html:`out_lang_tex` in - *:dvi|*:pdf|latex:tex4ht:html) - run_tex;; - latex:*:html|latex:*:text|latex:*:info) - run_hevea $out_lang;; - *) - error 1 "invalid input/output combination: $in_lang/$out_lang";; - esac -} - - -# compile () -# ---------- -# Run the full compilation chain, from pre-processing to installation -# of the output at its expected location. -compile () -{ - # Source file might include additional sources. - # We want `.:$orig_pwd' before anything else. (We'll add `.:' later - # after all other directories have been turned into absolute paths.) - # `.' goes first to ensure that any old .aux, .cps, - # etc. files in ${directory} don't get used in preference to fresher - # files in `.'. Include orig_pwd in case we are in clean build mode, where - # we have cd'd to a temp directory. - common="$orig_pwd$path_sep$in_dir$path_sep" - # - # If we have any includes, put those at the end. - # Keep a final path_sep to get the default (system) TeX directories included. - txincludes=`list_infix includes $path_sep` - test -n "$txincludes" && common="$common$txincludes$path_sep" - # - for var in $tex_envvars; do - eval val="\$common\$${var}_orig" - # Convert relative paths to absolute paths, so we can run in another - # directory (e.g., in clean build mode, or during the macro-support - # detection). ".:" is added here. - val=`absolute_filenames "$val"` - eval $var="\"$val\"" - export $var - eval verbose \"$var=\'\$${var}\'\" - done - - # --expand - run_makeinfo - - # --command, --texinfo - insert_commands - - # --recode - run_recode - - # Run until a fix point is reached. - run_tex_suite -} - - -# remove FILES -# ------------ -remove () -{ - verbose "Removing" "$@" - rm -rf "$@" -} - - -# mostly_clean -# ------------ -# Remove auxiliary files and directories. Changes the current directory. -mostly_clean () -{ - cd_orig - set X "$t2ddir" - shift - $tidy || { - local log="$work_build/$in_noext.log" - set X ${1+"$@"} "$log" `generated_files_get "$work_build/$in_noext"` - shift - } - remove ${1+"$@"} -} - - -# cleanup () -# ---------- -# Remove what should be removed according to options. -# Called at the end of each compilation cycle, and at the end of -# the script. Changes the current directory. -cleanup () -{ - case $build_mode in - local) cd_orig; remove "$t2ddir";; - clean) mostly_clean;; - tidy) ;; - esac -} - - - -## ---------------------- ## -## Command line parsing. ## -## ---------------------- ## - -# Push a token among the arguments that will be used to notice when we -# ended options/arguments parsing. -# Use "set dummy ...; shift" rather than 'set - ..." because on -# Solaris set - turns off set -x (but keeps set -e). -# Use ${1+"$@"} rather than "$@" because Digital Unix and Ultrix 4.3 -# still expand "$@" to a single argument (the empty string) rather -# than nothing at all. -arg_sep="$$--$$" -set dummy ${1+"$@"} "$arg_sep"; shift - -# -# Parse command line arguments. -while test x"$1" != x"$arg_sep"; do - - # Handle --option=value by splitting apart and putting back on argv. - case "$1" in - --*=*) - opt=`echo "$1" | sed -e 's/=.*//'` - val=`echo "$1" | sed -e 's/[^=]*=//'` - shift - set dummy "$opt" "$val" ${1+"$@"}; shift - ;; - esac - - # This recognizes --quark as --quiet. Oh well. - case "$1" in - -@ ) escape=@;; - -~ ) catcode_special=false;; - # Silently and without documentation accept -b and --b[atch] as synonyms. - -b | --batch) batch=true;; - --build) shift; build_mode=$1;; - --build-dir) shift; build_dir=$1; build_mode=tidy;; - -c | --clean) build_mode=clean;; - -D | --debug) debug=true;; - -e | -E | --expand) expand=true;; - -h | --help) usage;; - -I) shift; list_concat_dirs includes "$1";; - -l | --lang | --language) shift; set_language=$1;; - --mostly-clean) action=mostly-clean;; - --no-line-error) line_error=false;; - --max-iterations) shift; max_iters=$1;; - -o | --out | --output) - shift - # Make it absolute, just in case we also have --clean, or whatever. - oname=`absolute "$1"`;; - - # Output formats. - -O|--output-format) shift; out_lang_set "$1";; - --dvi|--dvipdf|--html|--info|--pdf|--ps|--text) - out_lang_set `echo "x$1" | sed 's/^x--//'`;; - - -p) out_lang_set pdf;; - -q | -s | --quiet | --silent) quiet=true; batch=true;; - -r | --recode) recode=true;; - --recode-from) shift; recode=true; recode_from="$1";; - --src-specials) src_specials=--src-specials;; - --tex4ht) latex2html=tex4ht;; - -t | --texinfo | --command ) shift; textra="$textra\\ -"`echo "$1" | sed 's/\\\\/\\\\\\\\/g'`;; - --translate-file ) shift; translate_file="$1";; - --tidy) build_mode=tidy;; - -v | --vers*) version;; - -V | --verb*) verb=true;; - --) # What remains are not options. - shift - while test x"$1" != x"$arg_sep"; do - set dummy ${1+"$@"} "$1"; shift - shift - done - break;; - -*) - error 1 "Unknown or ambiguous option \`$1'." \ - "Try \`--help' for more information." - ;; - *) set dummy ${1+"$@"} "$1"; shift;; - esac - shift -done -# Pop the token -shift - -# $tidy: compile in a t2d directory. -# $clean: remove all the aux files. -case $build_mode in - local) clean=false; tidy=false;; - tidy) clean=false; tidy=true;; - clean) clean=true; tidy=true;; - *) error 1 "invalid build mode: $build_mode";; -esac - -# Interpret remaining command line args as filenames. -case $# in - 0) - error 2 "Missing file arguments." "Try \`--help' for more information." - ;; - 1) ;; - *) - if test -n "$oname"; then - error 2 "Can't use option \`--output' with more than one argument." - fi - ;; -esac - - -# We can't do much without tex. -# -if findprog ${TEX:-tex}; then :; else cat <<EOM -You don't have a working TeX binary (${TEX:-tex}) installed anywhere in -your PATH, and texi2dvi cannot proceed without one. If you want to use -this script, you'll need to install TeX (if you don't have it) or change -your PATH or TEX environment variable (if you do). See the --help -output for more details. - -For information about obtaining TeX, please see http://www.tug.org. If -you happen to be using Debian, you can get it with this command: - apt-get install tetex-bin -EOM - exit 1 -fi - - -# We want to use etex (or pdftex) if they are available, and the user -# didn't explicitly specify. We don't check for elatex and pdfelatex -# because (as of 2003), the LaTeX team has asked that new distributions -# use etex by default anyway. -# -# End up with the TEX and PDFTEX variables set to what we are going to use. -if test -z "$TEX"; then - if findprog etex; then TEX=etex; else TEX=tex; fi -fi -# -if test -z "$PDFTEX"; then - if findprog pdfetex; then PDFTEX=pdfetex; else PDFTEX=pdftex; fi -fi - - -# File descriptor usage: -# 0 standard input -# 1 standard output (--verbose messages) -# 2 standard error -# 3 some systems may open it to /dev/tty -# 4 used on the Kubota Titan -# 5 tools output (turned off by --quiet) -# 6 tracing/debugging (set -x output, etc.) - - -# Main tools' output (TeX, etc.) that TeX users are used to seeing. -# -# If quiet, discard, else redirect to the message flow. -if $quiet; then - exec 5>/dev/null -else - exec 5>&1 -fi - - -# Enable tracing, and auxiliary tools output. -# -# Should be used where you'd typically use /dev/null to throw output -# away. But sometimes it is convenient to see that output (e.g., from -# a grep) to aid debugging. Especially debugging at distance, via the -# user. -if $debug; then - exec 6>&1 - set -x -else - exec 6>/dev/null -fi - -# - -# input_file_name_decode -# ---------------------- -# Decode COMMAND_LINE_FILENAME, and compute: -# - COMMAND_LINE_FILENAME clean of TeX commands -# - IN_DIR -# The directory to the input file, possibly absolute if needed. -# - IN_DIR_ABS -# The absolute directory of the input file. -# - IN_BASE -# The input file base name (no directory part). -# - IN_NOEXT -# The input file name without extensions (nor directory part). -# - IN_INPUT -# Defaults to COMMAND_LINE_FILENAME, but might change if the -# input is preprocessed (recode etc.). With directory, possibly absolute. -input_file_name_decode () -{ - # See if we are run from within AUC-Tex, in which case we are - # passed `\input{FOO.tex}' or even `\nonstopmode\input{FOO.tex}'. - case $command_line_filename in - *\\nonstopmode*) - batch=true;; - esac - case $command_line_filename in - *\\input{*}*) - # Let AUC-TeX error parser deal with line numbers. - line_error=false - command_line_filename=`\ - expr X"$command_line_filename" : X'.*input{\([^}]*\)}'` - ;; - esac - - # If the COMMAND_LINE_FILENAME is not absolute (e.g., --debug.tex), - # prepend `./' in order to avoid that the tools take it as an option. - echo "$command_line_filename" | $EGREP '^(/|[A-z]:/)' >&6 \ - || command_line_filename="./$command_line_filename" - - # See if the file exists. If it doesn't we're in trouble since, even - # though the user may be able to reenter a valid filename at the tex - # prompt (assuming they're attending the terminal), this script won't - # be able to find the right xref files and so forth. - test -r "$command_line_filename" || - error 1 "cannot read $command_line_filename, skipping." - - # Get the name of the current directory. - in_dir=`func_dirname "$command_line_filename"` - in_dir_abs=`absolute "$in_dir"` - # In a clean build, we `cd', so get an absolute file name. - if $tidy; then - in_dir=$in_dir_abs - fi - - # Strip directory part but leave extension. - in_base=`basename "$command_line_filename"` - # Strip extension. - in_noext=`noext "$in_base"` - - # The normalized file name to compile. Must always point to the - # file to actually compile (in case of recoding, macro-expansion etc.). - in_input=$in_dir/$in_base - - - # Compute the output file name. - if test x"$oname" != x; then - out_name=$oname - else - out_name=$in_noext.`out_lang_ext` - fi - out_dir=`func_dirname "$out_name"` - out_dir_abs=`absolute "$out_dir"` - out_base=`basename "$out_name"` - out_noext=`noext "$out_base"` -} - - -## -------------- ## -## TeXify files. ## -## -------------- ## - -for command_line_filename -do - verbose "Processing $command_line_filename ..." - - input_file_name_decode - - # `texinfo' or `latex'? - in_lang=`compute_language "$command_line_filename"` - - # An auxiliary directory used for all the auxiliary tasks involved - # in compiling this document. - case $build_dir in - '' | . ) t2ddir=$out_noext.t2d ;; - *) # Avoid collisions between multiple occurrences of the same - # file, so depend on the output path. Remove leading `./', - # at least to avoid creating a file starting with `.!', i.e., - # an invisible file. The sed expression is fragile if the cwd - # has active characters. Transform / into ! so that we don't - # need `mkdir -p'. It might be something to reconsider. - t2ddir=$build_dir/`echo "$out_dir_abs/$out_noext.t2d" | - sed "s,^$orig_pwd/,,;s,^\./,,;s,/,!,g"` - esac - # Remove it at exit if clean mode. - trap "cleanup" 0 1 2 15 - - ensure_dir "$build_dir" "$t2ddir" - - # We will change directory, better work with an absolute path... - t2ddir=`absolute "$t2ddir"` - # Sometimes there are incompatibilities between auxiliary files for - # DVI and PDF. The contents can also change whether we work on PDF - # and/or DVI. So keep separate spaces for each. - workdir=$t2ddir/`out_lang_tex` - ensure_dir "$workdir" - - # _build. In a tidy build, where the auxiliary files are output. - if $tidy; then - work_build=$workdir/build - else - work_build=. - fi - - # _bak. Copies of the previous auxiliary files (another round is - # run if they differ from the new ones). - work_bak=$workdir/bak - - # Make those directories. - ensure_dir "$work_build" "$work_bak" - - case $action in - compile) - # Compile the document. - compile - cleanup - ;; - - mostly-clean) - mostly_clean - ;; - esac -done - -verbose "done." -exit 0 # exit successfully, not however we ended the loop. diff --git a/configure.ac b/configure.ac index 074672f..8d281ef 100644 --- a/configure.ac +++ b/configure.ac @@ -26,9 +26,6 @@ AC_PREREQ([2.61]) AC_INIT([Olena], [1.0a], [olena@lrde.epita.fr], [olena]) -# M4 macros. -AC_CONFIG_MACRO_DIR([m4]) - # Auxiliary files. AC_CONFIG_AUX_DIR([build-aux]) AC_CONFIG_FILES([build-aux/Makefile]) @@ -36,125 +33,14 @@ AC_CONFIG_FILES([build-aux/Makefile]) # Automake. AM_INIT_AUTOMAKE([1.10 subdir-objects check-news dist-bzip2 nostdinc -Wall]) -# Package metadata. -AC_CONFIG_FILES([milena/mln/version.hh]) -AC_DEFINE_UNQUOTED([OLN_PACKAGE_NAME], ["$PACKAGE_NAME"], - [Package Full name.]) -AC_DEFINE_UNQUOTED([OLN_PACKAGE_BUGREPORT], ["$PACKAGE_BUGREPORT"], - [Bug report address.]) -AC_DEFINE_UNQUOTED([OLN_PACKAGE_STRING], ["$PACKAGE_STRING"], - [Full name and version.]) -AC_DEFINE_UNQUOTED([OLN_PACKAGE_VERSION], ["$PACKAGE_VERSION"], - [Package Version.]) - -## --------------------- ## -## C++ compiler set up. ## -## --------------------- ## - -# If the user doesn't provide any CXXFLAGS, prevent Autoconf from -# settings its own default ones (e.g., `-g -O2' for g++). -if test ! ${CXXFLAGS+set}; then - CXXFLAGS="" -fi - -# Look for a C++ compiler. -AC_LANG([C++]) -AC_PROG_CXX - -# Set `ICPC' to `yes' if the Intel C++ compiler is used. -test $CXX --version 2>/dev/null | grep '\bICC\b' >/dev/null 2>&1 && ICPC=yes - -# GNU C++ compiler setup. -if test "$GXX" = yes; then - # Speed up compiling times. - CXXFLAGS="$CXXFLAGS -pipe" - - # The code generated for mln::data::impl::memcpy__() by g++ 4.2 with - # a high optimization level (`-O3') and without - # `-fno-strict-aliasing' might be wrong, at least with Debian's g++ - # 4.2 on IA-32 (see also milena/mln/memcpy_.hh). We observed this - # behavior with e.g. milena/apps/graph-morpho/samples-image2d.cc. - # Note that Debian's g++ 4.0, 4.1, 4.3 and 4.4 are fine. - # - # So, when the C++ compiler is g++ 4.2, set STRICT_ALIASING_CXXFLAGS - # to `-fno-strict-aliasing'. - if $CXX --version | head -n 1 | grep '\b4\.2' >/dev/null 2>&1; then - STRICT_ALIASING_CXXFLAGS=-fno-strict-aliasing - fi -fi -AC_SUBST([STRICT_ALIASING_CXXFLAGS]) - - -# Adjusting warning options according to compilers. -AC_ARG_VAR([WARNINGS_CXXFLAGS], [C++ compiler warning flags]) -case "$CXX" in - # Intel compiler - *icpc*) - WARNINGS_CXXFLAGS="-Wall -wd111,193,279,383,444,522,654,810,981,1418" - ;; - *) - WARNINGS_CXXFLAGS="-Wall -W" - ;; -esac - - -# ------------------------------ # -# C++ compiler flags for tests. # -# ------------------------------ # - -# FIXME: We might want to write an Autoconf macro to factor this. - -# Standard flags for tests. -AC_ARG_VAR([TESTS_CXXFLAGS], [C++ compiler flags for tests]) -# We want no optimization for the tests (it slows down compiling -# times), and debugging information. -if test -z "$TESTS_CXXFLAGS"; then - if test "$GXX" = yes; then - # GNU C++ compiler setup. - TESTS_CXXFLAGS="-O0 -ggdb $WARNINGS_CXXFLAGS" - elif test "$ICPC" = yes; then - # Intel C++ compiler setup. - TESTS_CXXFLAGS="-O0 -g $WARNINGS_CXXFLAGS" - fi -fi - -# Flags for complex tests. -AC_ARG_VAR([TESTS_CXXFLAGS_SPEED], - [C++ compiler optimization flags for (complex) tests]) -# We want optimization for complex tests, and keep debugging flags -# (still useful). -if test -z "$TESTS_CXXFLAGS_SPEED"; then - if test "$GXX" = yes; then - # GNU C++ compiler setup. - TESTS_CXXFLAGS_SPEED="-O3 -DNDEBUG -ggdb $WARNINGS_CXXFLAGS" - elif test "$ICPC" = yes; then - # Intel C++ compiler setup. - TESTS_CXXFLAGS_SPEED="-O3 -DNDEBUG -g $WARNINGS_CXXFLAGS" - fi -fi - -# Flags for tests with with all debugging features turned on. -AC_ARG_VAR([TESTS_CXXFLAGS_DEBUG], [C++ compiler debug flags]) -# We want no optimization for the tests (it slows down compiling -# times), and a lot of debugging features. -# * GNU C++ Library Debug Mode: -# http://gcc.gnu.org/onlinedocs/libstdc++/manual/debug_mode.html -# * GNU C++ Library Compile Time Checks (a.k.a. concept checking): -# http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt12ch29.html -if test -z "$TESTS_CXXFLAGS_DEBUG"; then - if test "$GXX" = yes; then - TESTS_CXXFLAGS_DEBUG="-O0 -ggdb $WARNINGS_CXXFLAGS -D_GLIBCXX_DEBUG -D_GLIBCXX_CONCEPT_CHECKS" - elif test "$ICPC" = yes; then - TESTS_CXXFLAGS_DEBUG="-O0 -g $WARNINGS_CXXFLAGS -D_GLIBCXX_DEBUG -D_GLIBCXX_CONCEPT_CHECKS" - fi -fi +AC_CONFIG_FILES([Makefile]) ## ------------------------------ ## ## ``Enable Everything'' Switch. ## ## ------------------------------ ## -# Enable all bundled features (trimesh2, Swilena, apps, tools). This +# Enable all bundled features (Swilena, Scribo, etc). This # option is useful to maintainers to ensure they do not break optional # parts while modifying the core of the project. If both # ``--enable-all'' is set and a given feature is disabled (say, @@ -163,91 +49,19 @@ fi AC_ARG_ENABLE([all], [AS_HELP_STRING([--enable-all], [enable maintainer mode])], [if test "x$enable_all" != xno; then - enable_trimesh=yes enable_swilena=yes dnl<<lrde enable_scribo=yes dnl>> - enable_apps=yes - enable_tools=yes fi]) -## ------------------ ## -## Libraries set up. ## -## ------------------ ## - -# Use Libtool. -# To be replaced by a call to LT_INIT as soon as Libtool 2.2 is used. -AC_PROG_LIBTOOL - -# Check for Darwin. -AC_CANONICAL_HOST -AM_CONDITIONAL([DARWIN], [echo "$host_os" | grep '^darwin']) - - -## -------------------- ## -## External libraries. ## -## -------------------- ## - -# ------- # -# Boost. # -# ------- # - -BOOST_TUPLE -AM_CONDITIONAL([HAVE_BOOST_TUPLE], - [test "x$ac_cv_header_boost_tuple_tuple_hpp" = xyes]) - -# ----------------- # -# CFITSIO library. # -# ----------------- # - -OLN_WITH_LIB([CFITSIO], [fitsio.h], [cfitsio]) - -# ---------- # -# Magick++. # -# ---------- # - -OLN_WITH_LIB_PKG_CONFIG([Magick++], [Magick++.h], [Magick++], [magickxx], - [MAGICKXX], [], [ImageMagick++]) - -# ---- # -# Qt. # -# ---- # - -AT_WITH_QT([xml], [], [], [:], [oln_have_qt=yes]) -if test x$oln_have_qt = xyes; then - AT_REQUIRE_QT_VERSION([4], - AC_MSG_WARN([Qt-dependent programs will be disabled.]), - oln_have_expected_qt_version=yes) -fi -AM_CONDITIONAL([HAVE_QT], [test "x$oln_have_expected_qt_version" = xyes]) - -# -------------- # -# TIFF library. # -# -------------- # - -OLN_WITH_LIB([TIFF], [tiff.h], [tiff]) - -# --------------------------------- # -# GDCM library (Grassroots DiCom). # -# --------------------------------- # - -OLN_WITH_LIB([GDCM], [gdcm-2.0/gdcmReader.h], [gdcmCommon], [gdcm], - [GDCM], - m4_do([-lgdcmDICT -lgdcmDSED -lgdcmIOD -lgdcmMSFF], - [ -lgdcmexpat -lgdcmjpeg12 -lgdcmjpeg16 -lgdcmjpeg8], - [ -lgdcmopenjpeg -lgdcmuuid -lgdcmzlib])) - -# ---------------------------- # -# (Bundled) trimesh2 library. # -# ---------------------------- # +## -------- ## +## Milena. ## +## -------- ## -AC_ARG_ENABLE([trimesh], - [AS_HELP_STRING([--enable-trimesh], - [build the (bundled) trimesh2 library])]) -AM_CONDITIONAL([ENABLE_TRIMESH], [test "x$enable_trimesh" = xyes]) -AC_CONFIG_SUBDIRS([milena/external/trimesh]) +# Milena is always enabled. +AC_CONFIG_SUBDIRS([milena]) ## --------- ## @@ -274,341 +88,4 @@ AC_CONFIG_SUBDIRS([scribo]) dnl>> -## --------------- ## -## Configuration. ## -## --------------- ## - -# Ask for config.h creation. -AC_CONFIG_HEADERS([config.h]) - -# Ask for the creation of a milena/doc/tool/data.hh, used to access to -# data (images) from the documentation. -AC_CONFIG_FILES([milena/doc/tools/data.hh]) - -# Ask for the Makefile creations. -AC_CONFIG_FILES([ - Makefile - milena/Makefile - milena/doc/Makefile - milena/external/Makefile - milena/mesh/Makefile -]) - - -## ------- ## -## Tests. ## -## ------- ## - -# Ask for the creation of a milena/tests/data.hh, used to access to -# data (images) from tests. -AC_CONFIG_FILES([milena/tests/data.hh]) - -# Ask for the creation of tests' Makefiles. -AC_CONFIG_FILES([ - milena/tests/Makefile - milena/tests/accu/Makefile - milena/tests/accu/image/Makefile - milena/tests/accu/site_set/Makefile - milena/tests/accu/stat/Makefile - milena/tests/accu/math/Makefile - milena/tests/accu/shape/Makefile - milena/tests/algebra/Makefile - milena/tests/arith/Makefile - milena/tests/binarization/Makefile - milena/tests/border/Makefile - milena/tests/canvas/Makefile - milena/tests/canvas/browsing/Makefile - milena/tests/canvas/morpho/Makefile - milena/tests/convert/Makefile - milena/tests/convert/impl/Makefile - milena/tests/core/Makefile - milena/tests/core/alias/Makefile - milena/tests/core/image/Makefile - milena/tests/core/image/dmorph/Makefile - milena/tests/core/image/imorph/Makefile - milena/tests/core/image/vmorph/Makefile - milena/tests/core/other/Makefile - milena/tests/core/routine/Makefile - milena/tests/core/site_set/Makefile - milena/tests/data/Makefile - milena/tests/data/approx/Makefile - milena/tests/data/naive/Makefile - milena/tests/debug/Makefile - milena/tests/display/Makefile - milena/tests/draw/Makefile - milena/tests/estim/Makefile - milena/tests/extension/Makefile - milena/tests/fun/Makefile - milena/tests/fun/i2v/Makefile - milena/tests/fun/p2b/Makefile - milena/tests/fun/p2p/Makefile - milena/tests/fun/p2v/Makefile - milena/tests/fun/stat/Makefile - milena/tests/fun/v2v/Makefile - milena/tests/fun/vv2v/Makefile - milena/tests/fun/x2x/Makefile - milena/tests/geom/Makefile - milena/tests/graph/Makefile - milena/tests/graph/attribute/Makefile - milena/tests/histo/Makefile - milena/tests/io/Makefile - milena/tests/io/dicom/Makefile - milena/tests/io/dump/Makefile - milena/tests/io/fits/Makefile - milena/tests/io/fld/Makefile - milena/tests/io/magick/Makefile - milena/tests/io/off/Makefile - milena/tests/io/pbm/Makefile - milena/tests/io/pbms/Makefile - milena/tests/io/pfm/Makefile - milena/tests/io/pgm/Makefile - milena/tests/io/pgms/Makefile - milena/tests/io/pnm/Makefile - milena/tests/io/ppm/Makefile - milena/tests/io/ppms/Makefile - milena/tests/io/tiff/Makefile - milena/tests/labeling/Makefile - milena/tests/linear/Makefile - milena/tests/linear/local/Makefile - milena/tests/literal/Makefile - milena/tests/logical/Makefile - milena/tests/make/Makefile - milena/tests/math/Makefile - milena/tests/metal/Makefile - milena/tests/metal/make/Makefile - milena/tests/metal/math/Makefile - milena/tests/morpho/Makefile - milena/tests/morpho/approx/Makefile - milena/tests/morpho/attribute/Makefile - milena/tests/morpho/closing/Makefile - milena/tests/morpho/closing/approx/Makefile - milena/tests/morpho/elementary/Makefile - milena/tests/morpho/opening/Makefile - milena/tests/morpho/opening/approx/Makefile - milena/tests/morpho/reconstruction/Makefile - milena/tests/morpho/reconstruction/by_dilation/Makefile - milena/tests/morpho/reconstruction/by_erosion/Makefile - milena/tests/morpho/tree/Makefile - milena/tests/morpho/tree/filter/Makefile - milena/tests/morpho/watershed/Makefile - milena/tests/norm/Makefile - milena/tests/opt/Makefile - milena/tests/pw/Makefile - milena/tests/set/Makefile - milena/tests/tag/Makefile - milena/tests/test/Makefile - milena/tests/topo/Makefile - milena/tests/topo/skeleton/Makefile - milena/tests/trace/Makefile - milena/tests/trait/Makefile - milena/tests/trait/image/Makefile - milena/tests/trait/op/Makefile - milena/tests/trait/value/Makefile - milena/tests/transform/Makefile - milena/tests/unit_test/Makefile - milena/tests/upscaling/Makefile - milena/tests/upscaling/art/Makefile - milena/tests/util/Makefile - milena/tests/value/Makefile - milena/tests/value/builtin/Makefile - milena/tests/value/concept/Makefile - milena/tests/win/Makefile - milena/tests/world/Makefile - milena/tests/world/binary_2d/Makefile - milena/tests/world/inter_pixel/Makefile - milena/tests/world/inter_pixel/dim2/Makefile -]) - -dnl<<lrde -AC_CONFIG_FILES([ - milena/tests/extract/Makefile - milena/tests/linear/gaussian/Makefile - milena/tests/registration/Makefile - milena/tests/subsampling/Makefile -]) -dnl>> - - -## -------------- ## -## Applications. ## -## -------------- ## - -# Ask for the creation of a milena/apps/data.hh, used to access to -# data (images) from apps. -AC_CONFIG_FILES([milena/apps/data.hh]) - -AC_ARG_ENABLE([apps], - [AS_HELP_STRING([--enable-apps], - [enable application])]) -AM_CONDITIONAL([ENABLE_APPS], [test "x$enable_apps" = "xyes"]) - -# Ask for the creation of applications' Makefiles. -AC_CONFIG_FILES([ - milena/apps/Makefile - milena/apps/constrained-connectivity/Makefile - milena/apps/graph-morpho/Makefile - milena/apps/mesh-segm-skel/Makefile - milena/apps/papers/Makefile - milena/apps/papers/levillain.09.ismm/Makefile -]) - -# Configure tests. -# FIXME: Consider using `sed' instead of `configure' to create these -# tests for the sake of speed. -AC_CONFIG_FILES([milena/apps/mesh-segm-skel/test-mesh-max-curv], - [chmod +x milena/apps/mesh-segm-skel/test-mesh-max-curv]) -AC_CONFIG_FILES([milena/apps/mesh-segm-skel/test-mesh-complex-max-curv], - [chmod +x milena/apps/mesh-segm-skel/test-mesh-complex-max-curv]) -AC_CONFIG_FILES([milena/apps/mesh-segm-skel/test-mesh-segm], - [chmod +x milena/apps/mesh-segm-skel/test-mesh-segm]) -AC_CONFIG_FILES([milena/apps/mesh-segm-skel/test-mesh-complex-segm], - [chmod +x milena/apps/mesh-segm-skel/test-mesh-complex-segm]) -AC_CONFIG_FILES([milena/apps/mesh-segm-skel/test-mesh-complex-max-curv-segm], - [chmod +x milena/apps/mesh-segm-skel/test-mesh-complex-max-curv-segm]) -AC_CONFIG_FILES([milena/apps/mesh-segm-skel/test-mesh-complex-skel], - [chmod +x milena/apps/mesh-segm-skel/test-mesh-complex-skel]) - -AC_CONFIG_FILES([milena/apps/constrained-connectivity/test-constrained-connectivity], - [chmod +x milena/apps/constrained-connectivity/test-constrained-connectivity]) - -# Flags for apps. -AC_ARG_VAR([APPS_CXXFLAGS], [C++ compiler flags for applications]) -# We want fast binaries for apps. -if test -z "$APPS_CXXFLAGS"; then - if test "$GXX" = yes; then - APPS_CXXFLAGS="-O3 -DNDEBUG -ggdb $WARNINGS_CXXFLAGS" - elif test "$ICPC" = yes; then - APPS_CXXFLAGS="-O3 -DNDEBUG -g $WARNINGS_CXXFLAGS" - fi -fi - -## ------- ## -## Tools. ## -## ------- ## - -AC_ARG_ENABLE([tools], - [AS_HELP_STRING([--enable-tools], [enable tools])]) -AM_CONDITIONAL([ENABLE_TOOLS], [test "x$enable_tools" = "xyes"]) - -# Ask for the creation of tools' Makefiles. -AC_CONFIG_FILES([milena/tools/Makefile]) - -# Flags for tools. -AC_ARG_VAR([TOOLS_CXXFLAGS], [C++ compiler flags for tools]) -# We want fast binaries for tools. -if test -z "$TOOLS_CXXFLAGS"; then - if test "$GXX" = yes; then - TOOLS_CXXFLAGS="-O3 -DNDEBUG -ggdb $WARNINGS_CXXFLAGS" - elif test "$ICPC" = yes; then - TOOLS_CXXFLAGS="-O3 -DNDEBUG -g $WARNINGS_CXXFLAGS" - fi -fi - - -## ----------------- ## -## Verbose display. ## -## ----------------- ## - -# Do not print this information by default, since `configure' outputs -# should be kept short. Longer explanations are always available in -# config.log. - -AC_ARG_ENABLE([verbose], - [AS_HELP_STRING([--enable-verbose], [enable verbose display])], - [if test "x$enable_verbose" != xno; then - AC_MSG_RESULT([ -------------------------------------------------------------------------------- -Configuration summary. - - -Host system type: $host -Build system type: $build - -================ -| Dependencies | -================ - - - Option Enabled and available -------------------------------------------------------------------------------- -Boost Tuple --with-boost=@<:@=DIR@:>@ $oln_have_boost_tuple -CFITSIO --with-cfitsio@<:@=DIR@:>@ $oln_have_cfitsio -GDCM --with-gdcm@<:@=DIR@:>@ $oln_have_gdcm -Magick++ --with-magickxx $oln_have_magickxx -Qt --with-qt $oln_have_qt -Tesseract --with-tesseract@<:@=DIR@:>@ $oln_have_tesseract -TIFF --with-tiff@<:@=DIR@:>@ $oln_have_tiff -Trimesh --enable-trimesh $enable_trimesh -------------------------------------------------------------------------------- - - - - -=========== -| Modules | -=========== - - - Option Enabled -------------------------------------------------------------------------------- -Scribo --enable-scribo $enable_scribo -Swilena --enable-swilena $enable_swilena -------------------------------------------------------------------------------- - - - - -============= -| Utilities | -============= - - - Option Enabled -------------------------------------------------------------------------------- -Apps --enable-apps $enable_apps -Tools --enable-tools $enable_tools -------------------------------------------------------------------------------- - - - -Options used to compile and link: - PREFIX = $PREFIX_DIR - EXEC-PREFIX = $EXEC_PREFIX_DIR - VERSION = $PACKAGE_VERSION - CC = $CC - CFLAGS = $CFLAGS - CPPFLAGS = $MAGICK_CPPFLAGS - DEFS = $DEFS - LDFLAGS = $LDFLAGS - LIBS = $MAGICK_LIBS - CXX = $CXX - CXXFLAGS = $CXXFLAGS - PKG_CONFIG = $PKG_CONFIG - QT_PATH = $QT_PATH - QMAKE = $QMAKE - MOC = $MOC - UIC = $UIC - RCC = $RCC - BOOST_ROOT = $BOOST_ROOT - MAGICKXX_CFLAGS = $MAGICKXX_CPPFLAGS - MAGICKXX_LIBS = $MAGICKXX_LDFLAGS - APPS_CXXFLAGS = $APPS_CXXFLAGS - TOOLS_CXXFLAGS = $TOOLS_CXXFLAGS - - - -******************************************************************************* -Olena is configured as stated above. Please verify that this configuration -matches your expectations. - -Then, type 'make' to build Olena and 'make install' to install it on -your system. -]) -fi]) - - -## -------- ## -## Output. ## -## -------- ## - AC_OUTPUT -- 1.5.6.5
participants (1)
-
Roland Levillain