Full Description of the compilation of Scilab

  • Immutable Page
  • Comments
  • Info
  • Attachments
  • More Actions: Raw Text Print View Render as Docbook Delete Cache ------------------------ Check Spelling Like Pages Local Site Map ------------------------ Rename Page Copy Page Delete Page ------------------------ My Pages Subscribe User ------------------------ Remove Spam Revert to this revision Package Pages Sync Pages ------------------------ CreatePdfDocument Load RenderAsOpenDocument Save SlideShow

Full Description of the compilation of Scilab

Description

Scilab 4 and previous versions compilation process were using an outdated compilation method based on the include of series of Makefiles, I was hard and painful to maintain but also to port the Scilab build process on new platform. Scilab 5 is fully based on the autotools. There are programs which greatly simplify the conception, maintenance and portability of a multi-platform project.

Autotools are composed by a few programs :

  • autoconf (at least version 2.61)

  • automake (at least version 1.10)

  • libtool

Each one is designed for a specific task.

autoconf

From configure.ac (formely configure.in), autoconf creates the configure script which will check if libraries are available on the computer (or not), set a few flags for the compiler... In theory, if the configure is successful, that ensure that all the mandatory dependencies of Scilab 5 are available on the operating system.

automake

From Makefile.am and indirectly from configure.ac, for each Makefile.am declared in the configure.ac (see the macro AC_CONFIG_FILES) , automake will create the file Makefile.in. It specifies which file must be compiled, with which libs... The autogenerated makefiles contain the directive for the compilation for many compilers, operating systems & archs.

libtool

libtool, as its name says, is the tool used to create libraries (static and dynamic) managing the inherent constraints.

Advantages

There are many advantages to this migration:

  • LSB & FHS compatibly works are greatly simplified

  • Simplify the portage to new architectures and compilers
  • Facilitate the work of distribution packagers

Technical description

Important files

File

Description

configure.ac

Transformed by autoconf to create the famous ./configure, this program handles:
* all the --with-xxx & --without-xxx options
* check if headers are available and usable
* check the versions
* Manages compilation flags
* ...

m4/*

Contains all the various macros used to perform dedicated checks

Makefile.am

Defines a few important operations:
* Create the actual Scilab binary
* Build all Scilab macros
* Build the Scilab documentation
* Build the localization
* Launch all the tests

Makefile.incl.am

This file is included in each Makefile.am of a Scilab module.
It contains target for:
* Scilab macros build
* java build
* swig/giws generation
* installation of data files
* Launch tests of a specific module

modules/Makefile.am

This file contains the list of the module to build, the creation of the libscilab library

How to regenerate all the files

The best way is to call autoreconf, this command will call all the other commands (aclocal, autoconf, automake...). Otherwise, when working on the source tree, adding the option --enable-maintainer-mode to the ./configure will automatically rebuild Makefile & configure when any changes occurs

Howto

Add a new source file for compilation

  • Go into the module you want to edit
  • Edit Makefile.am and add the file where it belongs (*_C_SOURCES, *_FORTRAN_SOURCES, GATEWAY_C_SOURCES, GATEWAY_FORTRAN_SOURCES...)

  • Go into the root of the scilab source tree (cd \$SCI)

  • Type automake

This command should rebuild Makefile.in from Makefile.am

Add a new module to Scilab

  • Create your tree in \$SCI/modules/

  • Copy an already existing Makefile.am from an other module

  • Modify it in order to match your changes (sources, libraries dependencies...)
  • Edit \$SCI/modules/Makefile.am

  • Add in the variable SUBDIRS the name of your directory you just created & and add the library to the variable ALL_LIBS

  • In configure.ac, look for AC_CONFIG_FILES and add your future Makefile

  • Go into the root of the Scilab source tree (cd \$SCI)

  • Type autoreconf (make sure that you have the right versions of the autotools).

  • Relaunch the ./configure file in order to create your Makefile from your brand new Makefile.in

public: Full Description of the compilation of Scilab (last edited 2011-03-30 16:18:07 by localhost)

你可能感兴趣的:(Full Description of the compilation of Scilab)