Commit 87980dd5 authored by Guillaume Lazzara's avatar Guillaume Lazzara
Browse files

Add missing INSTALL and README.

	* add missing Makefile entry.

	* README: new files.

git-svn-id: 4aad255d-cdde-0310-9447-f3009e2ae8c0
parent a7ca2c92
2008-12-18 Guillaume Lazzara <>
Add missing INSTALL and README.
* add missing Makefile entry.
* README: new files.
2008-12-18 Nicolas Ballas <> 2008-12-18 Nicolas Ballas <>
Add milena/tests/opt/Makefile in Add milena/tests/opt/Makefile in
This file contains information about the installation process of Olena.
You can read the `README' file for general information about Olena.
1.1 Required software
Here is a non-exhaustive list of required software required to build
Olena successfully.
* to compile the user examples:
- a POSIX shell, like Bash
- a decent C++ compiler, like GNU C++
- a `make' utility, like GNU or BSD `make'
* to compile the documentation:
- a LaTeX distribution
- the `listings' TeX package
- the utility `convert' from ImageMagick
- GNU Autogen
- `hevea', a TeX to HTML conversion tool
- the `texinfo' utilities from GNU
* to develop _in_ Olena:
- GNU Autotools (Autoconf 2.54, Automake 1.7)
1.2 Configuration
In order to prepare the build process, you need to configure the source
Assuming your Olena distribution is uncompressed in directory
`olena-1.0', follow these steps:
$ mkdir ../build
$ cd ../build && ../olena-1.0/configure CXXFLAGS=''
*Note:* take care to set `CXXFLAGS' always when running `configure',
for the default value computed by `configure' may yield to compilation
issues (conflicts between optimization and debugging).
The build process can be altered by a number of options you can pass
to the `configure' script. The following sections describe them.
Additionally, if you are an Olena maintainer (a person who runs
`make distcheck'), _prefer setting `CXXFLAGS' as an environment
variable_: the flags given on the commandline to `configure' are not
propagated to recursive runs by `make distcheck'.
1.2.1 Installation path
By default, Olena is installed in the standard "local" directory of
your system. This is usually `/usr/local' under Unix.
You can change this path with the following flag:
--prefix=<installation prefix>
1.2.2 Compiler selection and compilation flags
By default, `configure' will try to use the first C++ compiler it
encounters on your system. If `CXX' is not set, it will look, in order,
- the value of the `CCC' environment variable,
- the GNU C++ compiler (`g++'),
- the `c++' or `gpp' commands on your system,
- `aCC', the HP-UX standard C++ compiler,
- the `CC', `cxx', `cc++' or `cl' commands on your system,
- KAI's C++ compiler (`KCC'),
- `RCC', `xlC_r' or `xlC'.
You can override the detection system by passing your favorite
compiler name to `configure', as follows:
$ .../configure CXX=<your-favorite-C++-compiler>
As an alternative, you can also set the environment variable `CXX'.
For most compilers, `configure' will select debugging and minimal
optimization (`-g -O2' with g++), which is wrong. You should override
the default C++ flags by giving `configure' your selection of flags:
$ .../configure CXXFLAGS="<your-favorite-flags>"
This is especially useful to solve a number of problems, described
in the following section.
1.3 Using `CXXFLAGS' to solve compilation problems
1.3.1 Olena needs C99
While Olena is written in C++, it uses a number of features (math
functions) from ISO C99. However most C++ compilers do not enable these
features by default. If your compilation fails with (e.g.) undefined
references to `roundf', but you know what flags can activate these
functions, add them to `CXXFLAGS'.
In case your system does not provide some math functions necessary
for Olena, you can force the use of a local, overloaded, implementation,
by using macros of the form `-DOLN_NEED_xxx', where `xxx' stands for
the name of the missing function, in uppercase. For example, on Darwin
(MacOS X), the flag `-DOLN_NEED_SQRTF' is needed (but `configure'
should add it anyway).
1.3.2 Olena needs deep template recursion
The C++ design patterns used in Olena use deep template nesting and
recursion. However, the C++ standard specifies that C++ compiler need
only handle template recursion up to 19 levels, which is insufficient
for Olena. This is a problem for GCC 2.95 and probably other compilers.
Hopefully, `configure' tries to fix this automatically by adding
`-ftemplate-depth-NN' when necessary, but other compilers than GCC may
need other flags. If you know these flags, add them to `CXXFLAGS'.
1.3.3 Debugging flags make Olena slow
Because Olena depends on C++ optimizations to provide the best
performance, and enabling debugging flags often disable optimizations,
you are advised to override the `CXXFLAGS_OPTIMIZE' with any options
that gives the best optimization/conformance tradeoff. However, note
that passing `-DNDEBUG' disable many sanity checks, while providing
only a poor performance improvement.
1.3.4 Speeding up the compilation
When using GCC, by default separate phases of the compilation of each
file are run sequentially (compilation then assembly). Using `-pipe' in
`CXXFLAGS' allows GCC to fork processes and run compilation phases in
parallel, which brings a compilation speedup on multiprocessor machines
or machines with slow storage access (when using `-pipe', no
intermediary data is saved).
1.4 Speeding up the configuration process
`configure' can manage a cache of autodetected features and values.
This cache speeds up `configure' runs and can be activated with the
`-C' option.
_NOTE_: the effects of many of the flags passed to `configure' are
stored in the cache. If you decide to re-run `configure' with other
flags, delete the `config.cache' file first.
1.5 Elidable components
Several build targets can be disabled, in case you are only interested
in "parts" of the full Olena distribution.
The elidable parts are so-called "components", and you can obtain a
list of them by running:
$ .../configure --help
1.6 Building
Once your build directory is `configure'd, you can run
$ make
to recursively build all selected components.
Additionally, you can build and run the testsuite and demonstration
programs with:
$ make check
However, this process is very time- and memory- consuming.
1.7 Compiler notes
Olena has been tested on the following configurations :
System Compiler
Linux g++ 4.0, 4.1, 4.2
MacOS X g++ 4.0.1
2.1 Installing
To install the Olena headers and additional files on your system, run:
$ make install
from the build directory.
If not overridden with `--prefix' (see the BUILD file) , this will
* the headers in `/usr/local/include/mln',
* sample images in `/usr/local/share/milena',
You can later remove Olena from your system by running
$ make uninstall
from the build directory.
Olena 1.0 Olena 1.0beta
* Rewritten from scratch. * Rewritten from scratch.
* First release of the Olena Platform with Milena as the * First release of the Olena Platform with Milena as the
This is a public testing version of Olena, a generic image processing
library in C++.
Please read the files INSTALL for information about building and
installing Olena.
Olena is a project developed by the EPITA Research and Development
Laboratory (<>) since 1997. We did numerous
prototypes and throwaway experiments before settling into the kind of
programming paradigm which is finally here.
The documentation does not cover the whole project yet. In the `doc/'
directory you will find the first draft of a reference manual. It
includes a quick reference guide and a tutorial. This is a good start.
In `milena/tools', `milena/doc/tutorial/samples' and `milena/doc/examples'
few sample programs are available. Most of them are already used to
illustrate the tutorial.
For the rest, we're afraid you will have to dig the code or e-mail us.
Please direct any question or comments to <>, or
Olena also has a web page, located at
Further information about Olena can be found into the following related
* Thierry Géraud, Yoann Fabre, Dimitri Papadopoulos-Orfanos, and
Jean-François Mangin. `Vers une réutilisabilité totale des
algorithmes de traitement d'images'. In the Proceedings of the
17th Symposium GRETSI on Signal and Image Processing, vol. 2,
pages 331-334, Vannes, France, September 1999. In French
(available in English as Technical Report 9902: `Towards a Total
Reusability of Image Processing Algorithms').
* Thierry Géraud, Yoann Fabre, Alexandre Duret-Lutz, Dimitri
Papadopoulos-Orfanos, and Jean-François Mangin. `Obtaining
Genericity for Image Processing and Pattern Recognition
Algorithms'. In the Proceedings of the 15th International
Conference on Pattern Recognition (ICPR'2000), IEEE Computer
Society, vol. 4, pages 816-819, Barcelona, Spain, September 2000.
* Alexandre Duret-Lutz. `Olena: a Component-Based Platform for
Image Processing, mixing Generic, Generative and OO
Programming'. In the Proceedings of the 2nd International
Symposium on Generative and Component-Based Software Engineering
(GCSE 2000), Young Researchers Workshop (published in
"Net.ObjectDays2000"; ISBN 3-89683-932-2), pages 653-659,
Erfurt, Germany, October 2000.
* Alexandre Duret-Lutz, Thierry Géraud, and Akim Demaille. `Generic
Design Patterns in C++'. In the Proceedings of the 6th USENIX
Conference on Object-Oriented Technologies and Systems
(COOTS'2001), pages 189-202, San Antonio, Texas, USA,
January-February 2001.
* Thierry Géraud, Yoann Fabre, and Alexandre Duret-Lutz. `Applying
Generic Programming to Image Processing'. In the Proceedings of
the IASTED International Conference on Applied Informatics
(AI'2001) - Symposium Advances in Computer Applications, ACTA
Press, pages 577-581, Innsbruck, Austria, February 2001.
* `Generic Implementation of Morphological Image Operators',
Jérôme Darbon, Thierry Géraud, and Alexandre Duret-Lutz,
submitted to International Symposium On Mathematical Morphology VI
(ISMM 2002), April 3-5, 2002, Sydney, Australia.
* `Static C++ Object-Oriented Programming (SCOOP)' Nicolas
Burrus, Alexandre Duret-Lutz, Thierry Géraud, David Lesage, and
Raphaël Poss. In the Proceedings of the Workshop on Multiple
Paradigm with OO Languages (MPOOL'03) Anaheim, CA Oct. 2003.
You can download these papers and related materials from
# -*- Autoconf -*- # -*- Autoconf -*-
# Process this file with autoconf to produce a configure script. # Process this file with autoconf to produce a configure script.
AC_PREREQ([2.61]) AC_PREREQ([2.61])
...@@ -8,7 +10,7 @@ AC_PREREQ([2.61]) ...@@ -8,7 +10,7 @@ AC_PREREQ([2.61])
## Package set up. ## ## Package set up. ##
## ---------------- ## ## ---------------- ##
AC_INIT([Olena], [1.0], [], [olena]) AC_INIT([Olena], [1.0beta], [], [olena])
# Auxiliary files. # Auxiliary files.
AC_CONFIG_AUX_DIR([build-aux]) AC_CONFIG_AUX_DIR([build-aux])
...@@ -16,7 +18,7 @@ AC_CONFIG_FILES([build-aux/Makefile]) ...@@ -16,7 +18,7 @@ AC_CONFIG_FILES([build-aux/Makefile])
# Automake. # Automake.
AM_INIT_AUTOMAKE([1.10 foreign check-news dist-bzip2 nostdinc -Wall]) AM_INIT_AUTOMAKE([1.10 foreign check-news dist-bzip2 nostdinc -Wall])
AC_CONFIG_HEADERS([config.h] [milena/mln/version.hh])
## --------------------- ## ## --------------------- ##
## C++ compiler set up. ## ## C++ compiler set up. ##
...@@ -136,7 +138,7 @@ AC_CONFIG_FILES(m4_do([swilena/python/sps-local], ...@@ -136,7 +138,7 @@ AC_CONFIG_FILES(m4_do([swilena/python/sps-local],
## --------------- ## ## --------------- ##
# Ask for config.h. # Ask for config.h.
AM_CONFIG_HEADER([config.h]) #AM_CONFIG_HEADER([config.h])
# Ask for the Makefile creations. # Ask for the Makefile creations.
...@@ -219,6 +221,7 @@ AC_CONFIG_FILES([ ...@@ -219,6 +221,7 @@ AC_CONFIG_FILES([
milena/tests/norm/Makefile milena/tests/norm/Makefile
milena/tests/opt/Makefile milena/tests/opt/Makefile
milena/tests/pw/Makefile milena/tests/pw/Makefile
milena/tests/set/Makefile milena/tests/set/Makefile
milena/tests/subsampling/Makefile milena/tests/subsampling/Makefile
milena/tests/tag/Makefile milena/tests/tag/Makefile
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment