Header inclusion in external toolboxes source files (GNU/Linux)
Matteo Morelli
mmorelli at users.sf.net
Mon Apr 6 08:59:06 CEST 2009
Dear all,
I'd like to point out two little issues I've encountered in applying
the external contribs installation procedure in Scilab-5.x. In order to
avoid a kilometric post, I decided to split my report in two separate
mails. The following is the description of first little issue I dealt
with. It only occurs by running Scilab-5.x under GNU/Linux.
Let's take the toolbox skeleton and add to it the includes directory,
which the header file "foo.h" has been defined in. If we modified the
file src/c/csum.c as follows
#include "../../includes/foo.h" /* header file inclusion */
int csum(double *a, double *b, double *c)
{
...
}
and tried to build the toolbox, we'd get:
[...]
ilib_gen_Make: Copy csum.c to TMPDIR
ilib_gen_Make: configure : Generate Makefile.
ilib_gen_Make: Modification of the Makefile in TMPDIR.
Running the Makefile
ilib_compile: An error occured during the compilation:
!csum.c:7:32: error: ../../includes/foo.h: No such file or directory !
! !
!make: *** [csum.lo] Error 1 !
ilib_compile: The command was:
make
CFLAGS="-I/usr/local/share/scilab//../../include/scilab/malloc/
-I/usr/local/share/scilab//../../include/scilab/output_stream/
-I/usr/local/share/scilab//../../include/scilab/mexlib/
-I/usr/local/share/scilab//../../include/scilab/core/ "
CXXFLAGS="-I/usr/local/share/scilab//../../include/scilab/malloc/
-I/usr/local/share/scilab//../../include/scilab/output_stream/
-I/usr/local/share/scilab//../../include/scilab/mexlib/
-I/usr/local/share/scilab//../../include/scilab/core/ "
FFLAGS="-I/usr/local/share/scilab//../../include/scilab/core/ "
[...]
The error above occurs only under Linux, because ilib_gen_Make_unix()
copies all *.c files from src/c to TMPDIR without caring about the
headers the files include. Of course, you could expect the developers of
toolboxes fix the problem by changing the file inclusion directive to
#include <foo.h>, by adding something similar to the following
directory search option to CFLAGS
1. "-I""" + tbx_src_path + "../../includes/""", in the Windows case
or
2. "-I" + tbx_src_path + "../../includes/", in the GNU/Linux case,
and, finally, by modifying the src builder with a piece of code like
if MSDOS then
... 1. ...
else
... 2. ...
end
That's just what I made to fix the problem with the toolbox skeleton.
However, in my opinion, it would be better if Scilab handled the issue
automatically.
Any comments or suggestions?
Regards,
--
Matteo
More information about the dev
mailing list