[Cairo] make error with cvs cairo

Bill Spitzak spitzak at d2.com
Mon Sep 15 15:40:21 PDT 2003

On Monday 15 September 2003 12:46 pm, Carl Worth wrote:
> On Sep 13, Carol Spears wrote:
>  > help:
>  >
>  > In file included from cairoint.h:45,
>  >                  from cairo.c:28:
>  > cairo.h:78: error: `PictStandardARGB32' undeclared here (not in a
>  > function)
> The errors indicate that the Xrender.h file you have is older than
> what Cairo expects. You may upgrade your Xrender library by getting a
> new version from keithp.com CVS:
> 	$ cvs -d :pserver:anoncvs at keithp.com:/local/src/CVS login
> 	(Logging in to anoncvs at keithp.com)
> 	CVS password: [hit return here]
> 	$ cvs -d :pserver:anoncvs at keithp.com:/local/src/CVS co Xrender
> Patches would be gratefully accepted to improve the portability of
> Cairo with respect to this and other problems.

I have tried to do this several times now, but have been continuously 
frustrated and have to revert back to the CVS code.

I strongly recommend that Cairo eliminate ALL other header files that are not 
on a plain POSIX system from it's headers. This means no Xlib or Xrender or 
freetype. And get rid of typedefs like CairoDouble, such things serve ZERO 
purpose for portability because either code must assumme that is a double 
(thus defeating the whole reason) or code must wrap all Cairo calls in "copy 
data from double to CairoDouble" code that is a big waste of time. However it 
is unclear if any work I did along these lines would be accepted.

Attached is notes I made from my most recent attempts to get Cairo compiled 
on a RedHat 2.4.18 machine, without root access, so you can see just how 
frustrating this is. I *really* want to help with Cairo but the current 
design is preventing this:


slim autogen.sh ran the "1.4" version of programs like automake. I
typed the commands by hand without that version number.

I don't have root access, so I set the --prefix= when running

I set it first to a directory that started from an NFS mounted remote
drive. Then "make install" did not work because mkdir screwed up
trying to create the directory, giving me an error that it could not
create the root directory name.

The directory I wanted was in fact a symlink off that NFS pointing to
a local disk. So I decided to change install directory to the actual
local name. Running configure again insisted I make distclean. So I
made that, ran (by hand) autogen, then make and make install. It seems
to have worked! It put files in my local prefix directory.

Went to libpixregion:

It complained about slim. Said PKG_CONFIG_PATH had to be set, so I set
it to prefix. Still compained, so I figured out it had to be set to
local/lib/pkgconfig. It really ought to try the prefix!

make worked.

make install worked but printed a lot of stuff.

Went to libic:

./autogen produced compaint: checking whether build environment is
sane... configure: error: newly created file is older than distributed
files!  Check your system clock

Running it again worked.

make produced warnings about Makefile having timestamp in the
future. I don't know what is wrong, this is a local disk and clock skew
has never been a problem. However make seemed to work.

make install seemed to work.

Then figured out that I had accidentally typed "cd" before checking
out libic, and it went to my NFS-mounted home directory. Deleted that,
rechecked it out in the correct location.

make install from here, atop the previous install, worked.

Went to cairo:

./autogen complained that package xft was not found. I have xft on the
machine, but it is not the new version. My plan was to get this to
work with the older one anyway, so I continue on. I deleted xft from
the configure.in file and ran autogen again and it worked.

Make stopped on an error that "fontconfig.h" was missing.

I found fontconfig-2.2.90 on the net and put it in another directory, and
attempted to compile it:

./configure with --prefix seemed to work.

make quit at fcfreetype.c:360 complaining that PS-FontInfoRec was
undeclared. I think I have an older version of freetype.

I gave up for now and ran make install. It installed the header
files, so I went back to cairo:

make in Cairo now quit at cairo.h complaining about
PictStandardARGB32 and many other symbols were undefined.
Commented out those symbols.

make in Cairo now quit at cairoint.h:228 complaining about Xtransform.
I found the defintion of that in new Xrender header files, cut and
pasted into cairoint.h

Now it quit on XFixed. Copied that (this REALLY should be int!!!)

Now it went quite awhile and quit in cairo_path_scroke, complaining
about XDouble. Copied that as well.

Then it was XPointDouble. Copied that.

Then it quit on PictStandardA8 agian, in cairo_surface. This time I
decided to copy those symbols from the Xrender header file.

Then it quit on XTrapezoid. Which required XLineFixed, and that
required XPointFixed.

Then cairo compiled!!!!

make install seemed to work as well.

Now I went to cairo-demo.

No configure program. So I just tried make. It immediatly complained
about Package xft. and PKG_CONFIG_PATH.

I decided instead to compile by hand. Adding -I and using all the .a
files that the other compilations produced did not work, produced many
missing symbols (but at least the code compiled). Some symbols seem to
be new Xrender (XFixedToDouble) but others were cairo (cairo_move_to)

Gave up at this point but promised I would get back to it. I now have to wipe 
this work out because Cairo has been updated.

                   ,~,~,~,~ ~ ~ ~ ~
     /\_       _|_========___         Bill Spitzak
 ~~~/\/\\~~~~~~\____________/~~~~~~~~ spitzak at d2.com

More information about the cairo mailing list