Problem with compiling with c++

Mats Lidell matsl at contactor.se
Mon Jun 25 17:28:52 EDT 2007


Hi, 

I have continued using C++ for my XEmacs build and while the latest
patches have improved the situation the following problems still
exists. Below follows:

 - Build report
 - make -k for further problems
 - Patch that fixes it (but maybe just by making the compiler silent)

----------------------------------------------------------------------
uname -a: Linux spencer 2.6.20-suspend2-r6 #1 SMP Sun Jun 17 11:50:44 CEST 2007 i686 Intel(R) Core(TM)2 CPU T7200 @ 2.00GHz GenuineIntel GNU/Linux

./configure  '--prefix=/src/beta/xemacs' '--enable-mule' '--with-package-path=/src/xemacs/xemacs-packages:/src/xemacs/mule-packages:/src/xemacs/site-packages' '--enable-sound=esd' '--enable-database=no' '--enable-widgets=athena' '--enable-dialogs=athena' '--with-athena=3d' '--with-newgc' '--with-xft=emacs,tabs,menubars,gauges' '--with-xim=no' '--with-xemacs-compiler=g++'


XEmacs 21.5-b28 "fuki" (+CVS-20070624) configured for `i686-pc-linux'.

Compilation Environment and Installation Defaults:
  Source code location:              /src/xemacs/working
  Installation prefix:               /src/beta/xemacs
  Operating system description file: `s/linux.h'
  Machine description file:          `m/intel386.h'
  Compiler version:                  g++ (GCC) 4.1.2 (Gentoo 4.1.2)
    - GCC specs file:                specs.
    - Compiler command:              g++   -Wall -Wno-switch -Wundef -Wsign-compare -Wno-char-subscripts -Wpacked -Weffc++ -g  
  Compiler version for lib-src:      (detection code unimplemented)
    - Compiler command for lib-src:  gcc -Wall -Wno-switch -Wundef -Wsign-compare -Wno-char-subscripts -Wpacked -Wshadow -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -g
  libc version:                      2.5
  Relocating allocator for buffers:  no
  GNU version of malloc:             yes
    - Using Doug Lea's new malloc from the GNU C Library.

Window System:
  Compiling in support for the X window system:
    - X Windows headers location:                 /usr/X11R6/include
    - X Windows libraries location:               /usr/X11R6/lib
    - Handling WM_COMMAND properly.
    - Using fontconfig to manage fonts.
    - Compiling in support for Xft antialiased fonts (EXPERIMENTAL).
  Compiling in support for the Athena widget set:
    - Athena headers location:                    X11/Xaw3d
    - Athena library to link:                     Xaw3d
  Using Lucid menubars.
    - Using Xft to render antialiased fonts in menubars.
      WARNING: This feature will be replaced with a face.
  Using Lucid scrollbars.
  Using Athena dialog boxes.
  Using Athena native widgets.
    - Using Xft to render antialiased fonts in tab controls.
      WARNING: This feature will be replaced with a face.
    - Using Xft to render antialiased fonts in progress bars.
      WARNING: This feature will be replaced with a face.
      WARNING: This feature not yet implemented; setting ignored.

TTY:
  Compiling in support for ncurses.
  Compiling in support for GPM (General Purpose Mouse).

Images:
  Compiling in support for GIF  images (builtin).
  Compiling in support for XPM  images.
  Compiling in support for PNG  images.
  Compiling in support for JPEG images.
  Compiling in support for TIFF images.

Sound:
  Compiling in support for sound (native).
  Compiling in support for ALSA (Advanced Linux Sound Architecture).
  Compiling in support for ESD (Enlightened Sound Daemon).

Databases:
  Compiling in support for LDAP.

Internationalization:
  Compiling in support for Mule (multi-lingual Emacs).

Mail:
  Compiling in support for "file" mail spool file locking method.

Other Features:
  Inhibiting IPv6 canonicalization at startup.
  Compiling in support for dynamic shared object modules.
  Using the new GC mark algorithms (KKCC).
  WARNING: ---------------------------------------------------------
  WARNING: The new algorithms are experimental. They are enabled by
  WARNING: default for this release. Use `--disable-kkcc' to
  WARNING: turn it off.
  WARNING: ---------------------------------------------------------
  Using the new incremental garbage collector and the new allocator.
  Using POSIX sigaction() to install fault handler.
  Using the new portable dumper.
  Compiling in support for extra debugging code.
  Compiling in support for runtime error checking.
  WARNING: ---------------------------------------------------------
  WARNING: XEmacs will run noticeably more slowly as a result.
  WARNING: Error checking is on by default for XEmacs beta releases.
  WARNING: ---------------------------------------------------------


Contents of file xemacs-make-all.err
Keeping lines matching (in python regexp syntax): "^--\[\[|\]\]$|^(cd|n?make)\s|errors?|warnings?|pure.*(space|size)|hides|strange|shadowings|^Compil(ing\s+in|ation)|^Using|not\s+found|^Note:|Installing|[Ff]ile\(s\) copied|\s+tests\s+|^[A-Z] [^ ]+$|^Wrong number of arguments:|^  \*\* |^(FAIL|SKIP):"
... and then deleting lines matching (in python regexp syntax): "confl.*with.*auto-inlining|^Formatting:|^PASS:|\(100%\) tests successful"
------------------------------------------------------------------------------
cd ./lib-src && make  all
cd ./lwlib && make  all
cd ./src && make  all
emacs.c:3371: warning: statement has no effect
gc.c:137: warning: non-local variable '<anonymous struct> gc_state' uses anonymous type
objects-tty.c:381: error: invalid conversion from 'int' to 'font_specifier_matchspec_stages'
objects-tty.c:381: error:   initializing argument 7 of 'int tty_font_spec_matches_charset(device*, Lisp_Object, const Ibyte*, Lisp_Object, Bytecount, Bytecount, font_specifier_matchspec_stages)'
------------------------------------------------------------------------------

Doing a make -k build in src reveals further problems.
----------------------------------------------------------------------
cd /src/xemacs/working/src/
LANG=C make -k
g++ -c -Wall -Wno-switch -Wundef -Wsign-compare -Wno-char-subscripts -Wpacked -Weffc++ -g    -Demacs -I. -I/src/xemacs/working/src -DHAVE_CONFIG_H -I/usr/X11R6/include/freetype2 -I/usr/include/freetype2 -I/usr/X11R6/include objects-tty.c
objects-tty.c: In function 'Lisp_Object tty_find_charset_font(Lisp_Object, Lisp_Object, Lisp_Object, font_specifier_matchspec_stages)':
objects-tty.c:381: error: invalid conversion from 'int' to 'font_specifier_matchspec_stages'
objects-tty.c:381: error:   initializing argument 7 of 'int tty_font_spec_matches_charset(device*, Lisp_Object, const Ibyte*, Lisp_Object, Bytecount, Bytecount, font_specifier_matchspec_stages)'
make: *** [objects-tty.o] Error 1
[...]
g++ -c -Wall -Wno-switch -Wundef -Wsign-compare -Wno-char-subscripts -Wpacked -Weffc++ -g    -Demacs -I. -I/src/xemacs/working/src -DHAVE_CONFIG_H -I/usr/X11R6/include/freetype2 -I/usr/include/freetype2 -I/usr/X11R6/include objects-x.c
objects-xlike-inc.c: In function 'int count_hyphens(const Ibyte*, Bytecount, Ibyte**)':
objects-xlike-inc.c:64: error: invalid conversion from 'void*' to 'const Ibyte*'
objects-xlike-inc.c: In function 'Lisp_Object xft_find_charset_font(Lisp_Object, Lisp_Object, font_specifier_matchspec_stages)':
objects-xlike-inc.c:435: error: invalid conversion from 'FcChar8*' to 'const Extbyte*'
objects-xlike-inc.c:439: error: invalid conversion from 'FcChar8*' to 'const Extbyte*'
objects-xlike-inc.c:441: error: invalid conversion from 'FcChar8*' to 'const Extbyte*'
objects-xlike-inc.c:445: error: invalid conversion from 'FcChar8*' to 'const Extbyte*'
objects-xlike-inc.c:521: error: invalid conversion from 'Ibyte*' to 'const Extbyte*'
objects-xlike-inc.c: In function 'Lisp_Object x_find_charset_font(Lisp_Object, Lisp_Object, Lisp_Object, font_specifier_matchspec_stages)':
objects-xlike-inc.c:789: error: invalid conversion from 'const char*' to 'const Ibyte*'
objects-xlike-inc.c:789: error:   initializing argument 2 of 'int qxestrcasecmp(const Ibyte*, const Ibyte*)'
make: *** [objects-x.o] Error 1
[...]
make: Target `all' not remade because of errors.
----------------------------------------------------------------------

This patch is maybe not the best way to do it but it makes C++ happy.

Index: src/font-mgr.h
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/font-mgr.h,v
retrieving revision 1.6
diff -u -r1.6 font-mgr.h
--- src/font-mgr.h	2007/04/30 16:46:36	1.6
+++ src/font-mgr.h	2007/06/25 20:53:36
@@ -137,7 +137,7 @@
     DECLARE_EISTRING (eistrpxft_name);				\
     FcChar8 *name = FcNameUnparse (pattern);			\
 								\
-    eicpy_ext(eistrpxft_name, name, Qfc_font_name_encoding);	\
+    eicpy_ext(eistrpxft_name, (Extbyte*)name, Qfc_font_name_encoding);	\
     DEBUG_XFT1 (level, format, eidata(eistrpxft_name));		\
     free (name);						\
   } while (0)
Index: src/objects-tty.c
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/objects-tty.c,v
retrieving revision 1.19
diff -u -r1.19 objects-tty.c
--- src/objects-tty.c	2007/02/22 16:19:44	1.19
+++ src/objects-tty.c	2007/06/25 20:53:36
@@ -378,7 +378,7 @@
   if (strchr ((const char *) fontname, '/'))
     {
       if (tty_font_spec_matches_charset (XDEVICE (device), charset, 0,
-					 font, 0, -1, 0))
+					 font, 0, -1, initial))
 	return font;
       return Qnil;
     }
Index: src/objects-xlike-inc.c
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/objects-xlike-inc.c,v
retrieving revision 1.6
diff -u -r1.6 objects-xlike-inc.c
--- src/objects-xlike-inc.c	2007/02/22 16:19:44	1.6
+++ src/objects-xlike-inc.c	2007/06/25 20:53:36
@@ -61,7 +61,7 @@
   const Ibyte *new_hyphening;
 
   for (hyphen_count = 0; 
-       NULL != (new_hyphening = memchr((const void *)hyphening, '-', length));
+       NULL != (new_hyphening = (const Ibyte*)memchr((const void *)hyphening, '-', length));
        hyphen_count++)
     {
       ++new_hyphening;
@@ -518,7 +518,7 @@
 	if (cr->rfc3066)
 	  {
 	    DECLARE_DEBUG_FONTNAME (name);
-	    CHECKING_LANG (0, eidata(name), cr->language);
+	    CHECKING_LANG (0, (Extbyte *)eidata(name), cr->language);
 	    lang = (FcChar8 *) cr->rfc3066;
 	  }
 	else if (cr->charset)
@@ -786,7 +786,7 @@
       for (j = 0; j < registries_len; ++j)
 	{
 	  if (0 == qxestrcasecmp(XSTRING_DATA(XVECTOR_DATA(registries)[j]),
-				 FALLBACK_ASCII_REGISTRY))
+				 (Ibyte*)FALLBACK_ASCII_REGISTRY))
 	    {
 	      have_latin1 = 1;
 	      break;
----------------------------------------------------------------------

Yours
-- 
%% Mats



More information about the XEmacs-Beta mailing list