freetype-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [ft-devel] compiling FreeType with C++


From: David Turner
Subject: Re: [ft-devel] compiling FreeType with C++
Date: Sat, 25 Feb 2006 18:25:33 +0100
User-agent: Mozilla Thunderbird 1.0.2 (Windows/20050317)

Hi Behdad,

funny, I've received your e-mail from the mailing lists seconds after
committing
the same fixes :-). Your patch is deeper though, because it also
involves the
-Wmissing-prototypes warnings. I'll apply it manually to get rid of these
as well.

Thanks,

- David Turner
- The FreeType Project  (www.freetype.org)


Behdad Esfahbod a écrit :

>On Sat, 25 Feb 2006, Werner LEMBERG wrote:
>
>  
>
>>David,
>>
>>
>>please fix compilation with a C++ compiler!  For example, `make devel
>>CC=g++' fails currently.  Otherwise we get zillions of bug reports
>>from Nelson Beebe :-)
>>
>>If there isn't an easy fix there should be a snippet in the configure
>>script (or directly in the Makefiles) which activates the proper
>>configuration macros.
>>    
>>
>
>Patch attached.  It also fixes a bunch of warnings/errors not
>related to C++.  The highlights:
>
>  * For C++, it seems like undefining FT_STRICT_ALIASING makes
>most of the errors go away, and with FT_STRICT_ALIASING, I
>couldn't find any (easy) way to make it go.
>
>  * The rest of C++ errors were missing casts (of ints to enums
>or the other way..., geez.)
>
>
>With gcc, I have a lot of warning options enabled, the most
>important here was -Wmissing-prototypes, which reveals functions
>that should be static but are not, or missing header includes.
>So:
>
>  * A bunch of missing includes fixed.
>
>  * src/sfnt/ttbdf.c seems to have \r\n line endings.  The change
>I have made there was because of the goto statement, g++ was
>erring that the variables may not be initialized...  So I made
>them assignments instead of initialization, fixed that.
>
>  * In src/smooth/ftgrays.c, there was an extern function that I
>made it static to go with the rest of the functions in that file,
>but I think they all should be changed to FT_Callback.
>
>
>
>That was basically it.  I'm not quite convinced that
>FT_STRICT_ALIASING is needed.  David, were you getting new
>warnings with gcc 4.1?  Cause I fxied all strict-aliasing
>warnings on gcc 4.0 previously.
>
>--behdad
>http://behdad.org/
>
>"Commandment Three says Do Not Kill, Amendment Two says Blood Will Spill"
>       -- Dan Bern, "New American Language"
>
>------------------------------------------------------------------------
>
>? objs/apinames
>? objs/ftexport.sym
>? objs/ftmodule.h
>Index: builds/unix/ftsystem.c
>===================================================================
>RCS file: /cvsroot/freetype/freetype2/builds/unix/ftsystem.c,v
>retrieving revision 1.29
>diff -u -p -d -r1.29 ftsystem.c
>--- builds/unix/ftsystem.c     18 Nov 2005 08:23:06 -0000      1.29
>+++ builds/unix/ftsystem.c     25 Feb 2006 12:26:19 -0000
>@@ -24,6 +24,7 @@
> #include FT_ERRORS_H
> #include FT_TYPES_H
> #include FT_INTERNAL_OBJECTS_H
>+#include FT_INTERNAL_STREAM_H
> 
>   /* memory-mapping includes and definitions */
> #ifdef HAVE_UNISTD_H
>@@ -224,7 +225,7 @@
>   }
> 
> 
>-  /* documentation is in ftobjs.h */
>+  /* documentation is in ftstream.h */
> 
>   FT_BASE_DEF( FT_Error )
>   FT_Stream_Open( FT_Stream    stream,
>Index: include/freetype/config/ftheader.h
>===================================================================
>RCS file: /cvsroot/freetype/freetype2/include/freetype/config/ftheader.h,v
>retrieving revision 1.39
>diff -u -p -d -r1.39 ftheader.h
>--- include/freetype/config/ftheader.h 27 Jan 2006 14:16:16 -0000      1.39
>+++ include/freetype/config/ftheader.h 25 Feb 2006 12:26:19 -0000
>@@ -603,6 +603,19 @@
> #define FT_GX_VALIDATE_H  <freetype/ftgxval.h>
> 
> 
>+  /*************************************************************************
>+   *
>+   * @macro:
>+   *   FT_PFR_H
>+   *
>+   * @description:
>+   *   A macro used in #include statements to name the file containing the
>+   *   FreeType 2 API used to access PFR-specific data.
>+   *
>+   */
>+#define FT_PFR_H  <freetype/ftpfr.h>
>+
>+
>   /* */
> 
> #define FT_TRIGONOMETRY_H       <freetype/fttrigon.h>
>Index: include/freetype/config/ftoption.h
>===================================================================
>RCS file: /cvsroot/freetype/freetype2/include/freetype/config/ftoption.h,v
>retrieving revision 1.104
>diff -u -p -d -r1.104 ftoption.h
>--- include/freetype/config/ftoption.h 22 Feb 2006 08:23:35 -0000      1.104
>+++ include/freetype/config/ftoption.h 25 Feb 2006 12:26:20 -0000
>@@ -587,7 +587,9 @@ FT_BEGIN_HEADER
>    * releases from emitting zillions of `strict aliasing' warning messages
>    * each time a memory-management function is called.
>    */
>+#ifndef __cplusplus
> #define FT_STRICT_ALIASING
>+#endif
> 
> 
>   /*
>Index: include/freetype/internal/services/svotval.h
>===================================================================
>RCS file: 
>/cvsroot/freetype/freetype2/include/freetype/internal/services/svotval.h,v
>retrieving revision 1.1
>diff -u -p -d -r1.1 svotval.h
>--- include/freetype/internal/services/svotval.h       10 Sep 2004 14:39:00 
>-0000      1.1
>+++ include/freetype/internal/services/svotval.h       25 Feb 2006 12:26:20 
>-0000
>@@ -19,6 +19,8 @@
> #ifndef __SVOTVAL_H__
> #define __SVOTVAL_H__
> 
>+#include FT_OPENTYPE_VALIDATE_H
>+#include FT_INTERNAL_VALIDATE_H
> 
> FT_BEGIN_HEADER
> 
>Index: include/freetype/internal/services/svpfr.h
>===================================================================
>RCS file: 
>/cvsroot/freetype/freetype2/include/freetype/internal/services/svpfr.h,v
>retrieving revision 1.2
>diff -u -p -d -r1.2 svpfr.h
>--- include/freetype/internal/services/svpfr.h 22 Sep 2003 09:53:52 -0000      
>1.2
>+++ include/freetype/internal/services/svpfr.h 25 Feb 2006 12:26:20 -0000
>@@ -19,6 +19,7 @@
> #ifndef __SVPFR_H__
> #define __SVPFR_H__
> 
>+#include FT_PFR_H
> #include FT_INTERNAL_SERVICE_H
> 
> 
>Index: src/autofit/afcjk.c
>===================================================================
>RCS file: /cvsroot/freetype/freetype2/src/autofit/afcjk.c,v
>retrieving revision 1.5
>diff -u -p -d -r1.5 afcjk.c
>--- src/autofit/afcjk.c        15 Feb 2006 06:05:52 -0000      1.5
>+++ src/autofit/afcjk.c        25 Feb 2006 12:26:20 -0000
>@@ -131,7 +131,7 @@
>     {
>       AF_Point  pt   = seg->first;
>       AF_Point  last = seg->last;
>-      AF_Flags  f0   = pt->flags & AF_FLAG_CONTROL;
>+      AF_Flags  f0   = (AF_Flags)(pt->flags & AF_FLAG_CONTROL);
>       AF_Flags  f1;
> 
> 
>@@ -140,7 +140,7 @@
>       for ( ; pt != last; f0 = f1 )
>       {
>         pt = pt->next;
>-        f1 = pt->flags & AF_FLAG_CONTROL;
>+        f1 = (AF_Flags)(pt->flags & AF_FLAG_CONTROL);
> 
>         if ( !f0 && !f1 )
>           break;
>@@ -921,7 +921,8 @@
> 
>     org_len    = edge2->opos - edge->opos;
>     cur_len    = af_cjk_compute_stem_width( hints, dim, org_len,
>-                                            edge->flags, edge2->flags );
>+                                            (AF_Edge_Flags)edge->flags,
>+                                          (AF_Edge_Flags)edge2->flags );
>     org_center = ( edge->opos + edge2->opos ) / 2 + anchor;
>     cur_pos1   = org_center - cur_len / 2;
>     cur_pos2   = cur_pos1 + cur_len;
>@@ -1123,7 +1124,7 @@
> 
> #endif /* 0 */
> 
>-          delta = af_hint_normal_stem( hints, edge, edge2, 0, 0 );
>+          delta = af_hint_normal_stem( hints, edge, edge2, AF_DIMENSION_HORZ, 
>AF_DIMENSION_HORZ );
>       }
>       else
>         af_hint_normal_stem( hints, edge, edge2, delta, dim );
>Index: src/base/ftobjs.c
>===================================================================
>RCS file: /cvsroot/freetype/freetype2/src/base/ftobjs.c,v
>retrieving revision 1.243
>diff -u -p -d -r1.243 ftobjs.c
>--- src/base/ftobjs.c  24 Feb 2006 06:11:30 -0000      1.243
>+++ src/base/ftobjs.c  25 Feb 2006 12:26:21 -0000
>@@ -2125,7 +2125,7 @@
> 
>     if ( FT_IS_SCALABLE( face ) )
>     {
>-      FT_Long  w, h, scaled_w, scaled_h;
>+      FT_Long  w, h, scaled_w = 0, scaled_h = 0; /* shut gcc up */
> 
> 
>       switch ( req->type )
>@@ -3688,8 +3688,8 @@
>         FT_Service_TrueTypeEngine  service;
> 
> 
>-        service = ft_module_get_service( module,
>-                                         FT_SERVICE_ID_TRUETYPE_ENGINE );
>+        service = (FT_Service_TrueTypeEngine)ft_module_get_service( module,
>+                                               FT_SERVICE_ID_TRUETYPE_ENGINE 
>);
>         if ( service )
>           result = service->engine_type;
>       }
>Index: src/base/ftutil.c
>===================================================================
>RCS file: /cvsroot/freetype/freetype2/src/base/ftutil.c,v
>retrieving revision 1.16
>diff -u -p -d -r1.16 ftutil.c
>--- src/base/ftutil.c  17 Feb 2006 08:07:09 -0000      1.16
>+++ src/base/ftutil.c  25 Feb 2006 12:26:21 -0000
>@@ -624,7 +624,11 @@
>   {
>     if ( *P )
>     {
>+#ifdef FT_STRICT_ALIASING
>       ft_mem_free( memory, *P );
>+#else
>+      ft_mem_free( memory, P );
>+#endif
>       *P = NULL;
>     }
>   }
>Index: src/bdf/bdfdrivr.c
>===================================================================
>RCS file: /cvsroot/freetype/freetype2/src/bdf/bdfdrivr.c,v
>retrieving revision 1.57
>diff -u -p -d -r1.57 bdfdrivr.c
>--- src/bdf/bdfdrivr.c 16 Feb 2006 22:45:31 -0000      1.57
>+++ src/bdf/bdfdrivr.c 25 Feb 2006 12:26:21 -0000
>@@ -337,7 +337,7 @@ THE SOFTWARE.
>     BDF_Face       face   = (BDF_Face)bdfface;
>     FT_Memory      memory = FT_FACE_MEMORY( face );
> 
>-    bdf_font_t*    font;
>+    bdf_font_t*    font = NULL; /* shut gcc up */
>     bdf_options_t  options;
> 
>     FT_UNUSED( num_params );
>Index: src/cff/cffcmap.c
>===================================================================
>RCS file: /cvsroot/freetype/freetype2/src/cff/cffcmap.c,v
>retrieving revision 1.14
>diff -u -p -d -r1.14 cffcmap.c
>--- src/cff/cffcmap.c  17 Jan 2006 16:55:32 -0000      1.14
>+++ src/cff/cffcmap.c  25 Feb 2006 12:26:21 -0000
>@@ -119,7 +119,7 @@
>   /*************************************************************************/
>   /*************************************************************************/
> 
>-  const char *
>+  FT_CALLBACK_DEF( const char * )
>   cff_sid_to_glyph_name( CFF_Font  cff,
>                          FT_UInt   idx )
>   {
>Index: src/cff/cffobjs.c
>===================================================================
>RCS file: /cvsroot/freetype/freetype2/src/cff/cffobjs.c,v
>retrieving revision 1.79
>diff -u -p -d -r1.79 cffobjs.c
>--- src/cff/cffobjs.c  14 Feb 2006 06:40:10 -0000      1.79
>+++ src/cff/cffobjs.c  25 Feb 2006 12:26:22 -0000
>@@ -206,7 +206,7 @@
>     if ( FT_HAS_FIXED_SIZES( size->face ) )
>     {
>       CFF_Face      cffface = (CFF_Face)size->face;
>-      SFNT_Service  sfnt    = cffface->sfnt;
>+      SFNT_Service  sfnt    = (SFNT_Service)cffface->sfnt;
>       FT_ULong      index;
> 
> 
>Index: src/gzip/ftgzip.c
>===================================================================
>RCS file: /cvsroot/freetype/freetype2/src/gzip/ftgzip.c,v
>retrieving revision 1.21
>diff -u -p -d -r1.21 ftgzip.c
>--- src/gzip/ftgzip.c  27 Jan 2006 14:16:16 -0000      1.21
>+++ src/gzip/ftgzip.c  25 Feb 2006 12:26:22 -0000
>@@ -24,6 +24,7 @@
> #include FT_INTERNAL_MEMORY_H
> #include FT_INTERNAL_STREAM_H
> #include FT_INTERNAL_DEBUG_H
>+#include FT_GZIP_H
> #include <string.h>
> 
> 
>Index: src/lzw/ftlzw.c
>===================================================================
>RCS file: /cvsroot/freetype/freetype2/src/lzw/ftlzw.c,v
>retrieving revision 1.4
>diff -u -p -d -r1.4 ftlzw.c
>--- src/lzw/ftlzw.c    16 Mar 2005 01:49:54 -0000      1.4
>+++ src/lzw/ftlzw.c    25 Feb 2006 12:26:22 -0000
>@@ -26,6 +26,7 @@
> #include FT_INTERNAL_MEMORY_H
> #include FT_INTERNAL_STREAM_H
> #include FT_INTERNAL_DEBUG_H
>+#include FT_LZW_H
> #include <string.h>
> #include <stdio.h>
> 
>Index: src/lzw/ftlzw2.c
>===================================================================
>RCS file: /cvsroot/freetype/freetype2/src/lzw/ftlzw2.c,v
>retrieving revision 1.3
>diff -u -p -d -r1.3 ftlzw2.c
>--- src/lzw/ftlzw2.c   23 Oct 2005 19:25:41 -0000      1.3
>+++ src/lzw/ftlzw2.c   25 Feb 2006 12:26:22 -0000
>@@ -26,6 +26,7 @@
> #include FT_INTERNAL_MEMORY_H
> #include FT_INTERNAL_STREAM_H
> #include FT_INTERNAL_DEBUG_H
>+#include FT_LZW_H
> #include <string.h>
> #include <stdio.h>
> 
>Index: src/psaux/afmparse.c
>===================================================================
>RCS file: /cvsroot/freetype/freetype2/src/psaux/afmparse.c,v
>retrieving revision 1.6
>diff -u -p -d -r1.6 afmparse.c
>--- src/psaux/afmparse.c       31 Jan 2006 07:01:24 -0000      1.6
>+++ src/psaux/afmparse.c       25 Feb 2006 12:26:22 -0000
>@@ -513,7 +513,7 @@
>             return AFM_TOKEN_UNKNOWN;
> 
>           if ( ft_strncmp( afm_key_table[n], key, len ) == 0 )
>-            return n;
>+            return (AFM_Token)n;
>         }
>       }
>     }
>Index: src/psaux/t1cmap.c
>===================================================================
>RCS file: /cvsroot/freetype/freetype2/src/psaux/t1cmap.c,v
>retrieving revision 1.16
>diff -u -p -d -r1.16 t1cmap.c
>--- src/psaux/t1cmap.c 12 Jan 2006 08:12:26 -0000      1.16
>+++ src/psaux/t1cmap.c 25 Feb 2006 12:26:22 -0000
>@@ -257,7 +257,7 @@
>   /*************************************************************************/
>   /*************************************************************************/
> 
>-  const char *
>+  FT_CALLBACK_DEF( const char * )
>   t1_get_glyph_name( T1_Face  face,
>                      FT_UInt  idx )
>   {
>Index: src/sfnt/ttbdf.c
>===================================================================
>RCS file: /cvsroot/freetype/freetype2/src/sfnt/ttbdf.c,v
>retrieving revision 1.3
>diff -u -p -d -r1.3 ttbdf.c
>--- src/sfnt/ttbdf.c   28 Dec 2005 06:47:12 -0000      1.3
>+++ src/sfnt/ttbdf.c   25 Feb 2006 12:26:23 -0000
>@@ -86,6 +86,9 @@
>       FT_UInt    num_strikes = FT_NEXT_USHORT( p );
>
>       FT_UInt32  strings     = FT_NEXT_ULONG ( p );
>
> 
>
>+      FT_UInt   count;
>
>+      FT_Byte*  strike;
>
>+
>
> 
>
>       if ( version != 0x0001                 ||
>
>            strings < 8                       ||
>
>@@ -102,13 +105,11 @@
>       bdf->num_strikes  = num_strikes;
>
>       bdf->strings      = bdf->table + strings;
>
>       bdf->strings_size = length - strings;
>
>-    }
>
> 
>
>-    /* check the strike descriptors */
>
>-    {
>
>-      FT_UInt   count  = bdf->num_strikes;
>
>-      FT_Byte*  p      = bdf->table + 8;
>
>-      FT_Byte*  strike = p + count * 4;
>
>+      /* check the strike descriptors */
>
>+      count  = bdf->num_strikes;
>
>+      p      = bdf->table + 8;
>
>+      strike = p + count * 4;
>
> 
>
> 
>
>       for ( ; count > 0; count-- )
>
>Index: src/smooth/ftgrays.c
>===================================================================
>RCS file: /cvsroot/freetype/freetype2/src/smooth/ftgrays.c,v
>retrieving revision 1.66
>diff -u -p -d -r1.66 ftgrays.c
>--- src/smooth/ftgrays.c       20 May 2005 06:22:20 -0000      1.66
>+++ src/smooth/ftgrays.c       25 Feb 2006 12:26:23 -0000
>@@ -1959,7 +1959,7 @@
>   }
> 
> 
>-  extern int
>+  static int
>   gray_raster_render( PRaster                  raster,
>                       const FT_Raster_Params*  params )
>   {
>Index: src/tools/apinames.c
>===================================================================
>RCS file: /cvsroot/freetype/freetype2/src/tools/apinames.c,v
>retrieving revision 1.4
>diff -u -p -d -r1.4 apinames.c
>--- src/tools/apinames.c       27 Jan 2006 12:11:22 -0000      1.4
>+++ src/tools/apinames.c       25 Feb 2006 12:26:24 -0000
>@@ -86,14 +86,14 @@ names_add( const char*  name,
>   if ( num_names >= max_names )
>   {
>     max_names += (max_names >> 1) + 4;
>-    the_names  = realloc( the_names, sizeof(the_names[0])*max_names );
>+    the_names  = (NameRec *)realloc( the_names, 
>sizeof(the_names[0])*max_names );
>     if ( the_names == NULL )
>       panic( "not enough memory" );
>   }
>   nm = &the_names[num_names++];
> 
>   nm->hash = h;
>-  nm->name = malloc( len+1 );
>+  nm->name = (char*)malloc( len+1 );
>   if ( nm->name == NULL )
>     panic( "not enough memory" );
> 
>@@ -298,7 +298,7 @@ usage( void )
>            "usage: %s header1 [options] [header2 ...]\n\n"
> 
>            "options:   -      : parse the content of stdin, ignore 
> arguments\n"
>-           "           -v     : verbose mode, output sent to standard 
>error\n",
>+           "           -v     : verbose mode, output sent to standard error\n"
>            "           -oFILE : write output to FILE instead of standard 
> output\n"
>            "           -dNAME : indicate DLL file name, 'freetype.dll' by 
> default\n"
>            "           -w     : output .DEF file for Visual C++ and Mingw\n"
>Index: src/truetype/ttdriver.c
>===================================================================
>RCS file: /cvsroot/freetype/freetype2/src/truetype/ttdriver.c,v
>retrieving revision 1.90
>diff -u -p -d -r1.90 ttdriver.c
>--- src/truetype/ttdriver.c    22 Feb 2006 08:23:35 -0000      1.90
>+++ src/truetype/ttdriver.c    25 Feb 2006 12:26:24 -0000
>@@ -158,7 +158,7 @@
>     }
>     else
>     {
>-      SFNT_Service      sfnt    = ttface->sfnt;
>+      SFNT_Service      sfnt    = (SFNT_Service)ttface->sfnt;
>       FT_Size_Metrics*  metrics = &size->metrics;
> 
> 
>@@ -186,7 +186,7 @@
>     if ( FT_HAS_FIXED_SIZES( size->face ) )
>     {
>       TT_Face       ttface = (TT_Face)size->face;
>-      SFNT_Service  sfnt = ttface->sfnt;
>+      SFNT_Service  sfnt = (SFNT_Service)ttface->sfnt;
>       FT_ULong      index;
> 
> 
>  
>
>------------------------------------------------------------------------
>
>_______________________________________________
>Freetype-devel mailing list
>address@hidden
>http://lists.nongnu.org/mailman/listinfo/freetype-devel
>  
>





reply via email to

[Prev in Thread] Current Thread [Next in Thread]