Greetings,
The Fedora project recently rebuilt all packages with gcc 7. The ecl
build failed, due to gcc 7 complaining about missing braces on almost
every line of src/c/unicode/ucd_names_pair.c. The massive amount of
logging triggered for this slowed the build down so much that the
builder eventually concluded the build had stalled and killed it.
You need one pair of braces for the top-level array,
ecl_ucd_names_pair. Then, since each element of that array is a
struct, you need another set of braces around the elements of the
array. That struct has only one element, so there should be 1 value
inside those braces. That value is an array, so another set of braces
is needed around the initializers for the array. The upshot is that
the initalizer lines all need to have two sets of curly braces, like
so:
{{1, 0, 0, 0}}
,{{2, 0, 3, 0}}
...
GCC 6 also complained about this, but less verbosely. :-)
Here's a quick fix:
sed -i 's/{.*,.*,.*,.*}/{&}/g' src/c/unicode/ucd_names_pair.c
Also, while looking through the build log, I noticed this:
/builddir/build/BUILD/ecl-16.1.3/src/c/file.d: In function
'ecl_make_string_input_stream':
/builddir/build/BUILD/ecl-16.1.3/src/c/file.d:1630:32: warning:
comparison of constant '16' with boolean expression is always false
[-Wbool-compare]
That refers to this line:
if (ECL_BASE_STRING_P(strng) == t_base_string) {
shouldn't that be:
if (ECL_BASE_STRING_P(strng)) {
?
Regards,
--
Jerry James
http://www.jamezone.org/
In ecl/config.h line 220 there is a block labelled /* Missing integer types
*/
The int8_t has a typedef of char which is incompatible with Windows
standard types.
https://msdn.microsoft.com/en-us/library/323b6b3k.aspx
changing line 221 from:
typedef char int8_t;
to
typedef signed char int8_t;
Fixes the issue for me and allows me to compile both lisp code and C++
projects using ecl.lib
I know that char and signed char should be the same but the MS VS compile
disagrees.