I think there are three reasons:
- c++ compiler generally does better type checking. "Enums = ints", and "void * 
= (any type) *" are bad things in c, and their usage should be warned...
- there is at least one library which has inter-dependence with freetype - 
harfbuzz, which is in c++...
- we have a historical problem where ft2-demos depends on and uses freetype2's 
configure, without its own. The newer demos (some of them in c++, and depending 
on qt, etc)aren't even built by default / together with the older ones.
I am really approaching it on a 4th reason, of using skia in ft2-demos, 
somewhat related to 2nd and the 3rd.
At the moment, it looks as if the only option of generally supporting COLRv1 on 
Linux /freetype-based system is via skia; until somebody else write a COLRv1 
library that interops with freetype, I guess.
Decoupling ft2-demos from freetype, splitting it into "genuine demos" (using 
public APIs only, can work with system freetype binary library and headers) and 
"advanced usage" (needing freetype internals) and ft2-demos having its own 
configure, etc, is probably the long-term way forward...


    On Thursday 23 May 2024 at 06:45:26 BST, Vincent Torri 
<vincent.to...@gmail.com> wrote:  
 
 hello

I don't understand the interest of compiling Freetype with a c++
compiler. The source code is written in C. By convention, CC is
usually for C compilers. To compile C++ code, CXX env var should be
used, not CC

best regards

Vincent Torri

On Thu, May 23, 2024 at 3:16 AM Alexei Podtelezhnikov
<apodt...@gmail.com> wrote:
>
> Hi Hin-Tak,
>
> These macros were never used before. I fixed them. Now I think they
> made the code less readable and I might revert to the old code.
>
> Thanks,
> Alexei
>
> On Wed, May 22, 2024 at 6:12 PM Hin-Tak Leung
> <ht...@users.sourceforge.net> wrote:
> >
> > Actually it might be a good idea to stick CC=g++/clang++ as an additional 
> > job in .gitlab-ci.yml ? I mean, it already does gcc and clang.
> >
> > On Wednesday 22 May 2024 at 23:05:47 BST, Hin-Tak Leung 
> > <ht...@users.sourceforge.net> wrote:
> >
> >
> > Should be obvious - needs casting from "void *" to "unsigned char *" and 
> > etc...
> >
> > Shouldn't be too hard to see yourself with CC=c++ when building...
> >
> > In file included from 
> > /__w/freetype2-demos-skia/freetype2-demos-skia/freetype2/src/truetype/truetype.c:22:
> > /__w/freetype2-demos-skia/freetype2-demos-skia/freetype2/src/truetype/ttgload.c:421:14:
> >  error: assigning to 'FT_Byte *' (aka 'unsigned char *') from incompatible 
> > type 'FT_Pointer' (aka 'void *')
> >  421 |        if ( FT_DUP( exec->glyphIns, p, n_ins ) )
> >      |              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> > /__w/freetype2-demos-skia/freetype2-demos-skia/freetype2/include/freetype/internal/ftmemory.h:378:29:
> >  note: expanded from macro 'FT_DUP'
> >  378 |          FT_MEM_SET_ERROR( FT_MEM_DUP( dst, address, size ) )
> >      |          ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> > /__w/freetype2-demos-skia/freetype2-demos-skia/freetype2/include/freetype/internal/ftmemory.h:375:19:
> >  note: expanded from macro 'FT_MEM_DUP'
> >  375 |          (dst) = ft_mem_dup( memory, (address), (FT_ULong)(size), 
> >&error )
> >      |                  ^
> > /__w/freetype2-demos-skia/freetype2-demos-skia/freetype2/include/freetype/internal/ftmemory.h:231:38:
> >  note: expanded from macro 'FT_MEM_SET_ERROR'
> >  231 | #define FT_MEM_SET_ERROR( cond )  ( (cond), error != 0 )
> >      |                                      ^~~~
> > In file included from 
> > /__w/freetype2-demos-skia/freetype2-demos-skia/freetype2/src/truetype/truetype.c:23:
> > /__w/freetype2-demos-skia/freetype2-demos-skia/freetype2/src/truetype/ttgxvar.c:2718:12:
> >  error: assigning to 'FT_MM_Var *' (aka 'FT_MM_Var_ *') from incompatible 
> > type 'FT_Pointer' (aka 'void *')
> >  2718 |      if ( FT_DUP( mmvar, ttface->blend->mmvar, 
> >ttface->blend->mmvar_len ) )
> >      |            
> >^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> > /__w/freetype2-demos-skia/freetype2-demos-skia/freetype2/include/freetype/internal/ftmemory.h:378:29:
> >  note: expanded from macro 'FT_DUP'
> >  378 |          FT_MEM_SET_ERROR( FT_MEM_DUP( dst, address, size ) )
> >      |          ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> > /__w/freetype2-demos-skia/freetype2-demos-skia/freetype2/include/freetype/internal/ftmemory.h:375:19:
> >  note: expanded from macro 'FT_MEM_DUP'
> >  375 |          (dst) = ft_mem_dup( memory, (address), (FT_ULong)(size), 
> >&error )
> >      |                  ^
> > /__w/freetype2-demos-skia/freetype2-demos-skia/freetype2/include/freetype/internal/ftmemory.h:231:38:
> >  note: expanded from macro 'FT_MEM_SET_ERROR'
> >  231 | #define FT_MEM_SET_ERROR( cond )  ( (cond), error != 0 )
> >      |                                      ^~~~
> > 2 errors generated.
> > make: *** 
> > [/__w/freetype2-demos-skia/freetype2-demos-skia/freetype2/src/truetype/rules.mk:60:
> >  /__w/freetype2-demos-skia/freetype2-demos-skia/freetype2/objs/truetype.lo] 
> > Error 1
> > /__w/freetype2-demos-skia/freetype2-demos-skia
> > Error: Process completed with exit code 1.
>
>
>
> --
> Alexei A. Podtelezhnikov, PhD
>
  

Reply via email to