On Wed, Feb 23, 2011 at 12:28 PM, Martin Rubey <martin.rubey@math.uni-hannover.de> wrote:
gcc -DECLDIR="\"/usr/local/lib/ecl-11.1.1\"" -I. -I/cygdrive/d/ecl-11.1.1/build
-I/cygdrive/d/ecl-11.1.1/src/c -I../ecl/gc -DECL_API -DECL_NO_LEGACY    -g -O2
-Dcygwin -c -o ffi/libraries.o tmp.c
/cygdrive/d/ecl-11.1.1/src/c/ffi/libraries.d: In function `copy_object_file':
/cygdrive/d/ecl-11.1.1/src/c/ffi/libraries.d:108: error: `S_IRWXU' undeclared (f
irst use in this function)
/cygdrive/d/ecl-11.1.1/src/c/ffi/libraries.d:108: error: (Each undeclared identi
fier is reported only once
/cygdrive/d/ecl-11.1.1/src/c/ffi/libraries.d:108: error: for each function it ap
pears in.)

I am really puzzled. On re-reading your email I realized this problem was actually located in the loader code, in a piece that is cygwin-specific. This suggests that something has either changed on cygwin or that this behavior depends on the version of the Windows you are using.

The code, shown below, (src/c/ffi/libraries.d) changes the extension of a compiled file to turn it into a *.dll and also changes permissions, so that cygwin can load it. Could you simply comment it out and try rebuilding?

Juanjo

#ifdef cygwin
{
cl_object new_copy = make_constant_base_string(".dll");
new_copy = si_base_string_concatenate(2, copy, new_copy);
cl_rename_file(2, copy, new_copy);
copy = new_copy;
}
ecl_disable_interrupts();
err = chmod(copy->base_string.self, S_IRWXU) < 0;
ecl_enable_interrupts();
if (err) {
FElibc_error("Unable to give executable permissions to ~A",
    1, copy);
}
#endif

 

--
Instituto de Física Fundamental, CSIC
c/ Serrano, 113b, Madrid 28006 (Spain)
http://juanjose.garciaripoll.googlepages.com