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.
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.
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, as its name says, is the tool used to create libraries (static and dynamic) managing the inherent constraints.
There are many advantages to this migration:
LSB & FHS compatibly works are greatly simplified
File | Description |
configure.ac | Transformed by autoconf to create the famous ./configure, this program handles: |
m4/* | Contains all the various macros used to perform dedicated checks |
Makefile.am | Defines a few important operations: |
Makefile.incl.am | This file is included in each Makefile.am of a Scilab module. |
modules/Makefile.am | This file contains the list of the module to build, the creation of the libscilab library |
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
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
Create your tree in \$SCI/modules/
Copy an already existing Makefile.am from an other module
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)