freetype
[Top][All Lists]
Advanced

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

Cross-compiling tripped up by CC being set, and unusual build platform d


From: Ellie
Subject: Cross-compiling tripped up by CC being set, and unusual build platform detection
Date: Wed, 18 Mar 2020 13:32:57 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.5.0

Hi everyone,

Thanks for your nice work on freetype2!

I tried cross-compiling freetype2 for Windows, and ran into a few
strange behaviors. E.g. when I set the CC variable to the cross compiler
that it should be using anyway, things break:

bash ./autogen.sh && ./configure --host=x86_64-w64-mingw32
--with-zlib=no --with-bzip2=no --with-png=no --with-harfbuzz=no && make
CC=x86_64-w64-mingw32-gcc
...
./builds/unix/libtool --mode=link x86_64-w64-mingw32-gcc -o
/home/ellie/Develop/myprj/vendor/freetype2/objs/libfreetype.la
/home/ellie/Develop/myprj/vendor/freetype2/objs/ftsystem.lo
/home/ellie/Develop/myprj/vendor/freetype2/objs/ftdebug.lo
/home/ellie/Develop/myprj/vendor/freetype2/objs/ftinit.lo
/home/ellie/Develop/myprj/vendor/freetype2/objs/ftver.lo
/home/ellie/Develop/myprj/vendor/freetype2/objs/ftbase.lo
/home/ellie/Develop/myprj/vendor/freetype2/objs/ftbbox.lo
/home/ellie/Develop/myprj/vendor/freetype2/objs/ftbdf.lo
/home/ellie/Develop/myprj/vendor/freetype2/objs/ftbitmap.lo
/home/ellie/Develop/myprj/vendor/freetype2/objs/ftcid.lo
/home/ellie/Develop/myprj/vendor/freetype2/objs/ftfstype.lo
/home/ellie/Develop/myprj/vendor/freetype2/objs/ftgasp.lo
/home/ellie/Develop/myprj/vendor/freetype2/objs/ftglyph.lo
/home/ellie/Develop/myprj/vendor/freetype2/objs/ftgxval.lo
/home/ellie/Develop/myprj/vendor/freetype2/objs/ftmm.lo
/home/ellie/Develop/myprj/vendor/freetype2/objs/ftotval.lo
/home/ellie/Develop/myprj/vendor/freetype2/objs/ftpatent.lo
/home/ellie/Develop/myprj/vendor/freetype2/objs/ftpfr.lo
/home/ellie/Develop/myprj/vendor/freetype2/objs/ftstroke.lo
/home/ellie/Develop/myprj/vendor/freetype2/objs/ftsynth.lo
/home/ellie/Develop/myprj/vendor/freetype2/objs/fttype1.lo
/home/ellie/Develop/myprj/vendor/freetype2/objs/ftwinfnt.lo
/home/ellie/Develop/myprj/vendor/freetype2/objs/truetype.lo
/home/ellie/Develop/myprj/vendor/freetype2/objs/type1.lo
/home/ellie/Develop/myprj/vendor/freetype2/objs/cff.lo
/home/ellie/Develop/myprj/vendor/freetype2/objs/type1cid.lo
/home/ellie/Develop/myprj/vendor/freetype2/objs/pfr.lo
/home/ellie/Develop/myprj/vendor/freetype2/objs/type42.lo
/home/ellie/Develop/myprj/vendor/freetype2/objs/winfnt.lo
/home/ellie/Develop/myprj/vendor/freetype2/objs/pcf.lo
/home/ellie/Develop/myprj/vendor/freetype2/objs/bdf.lo
/home/ellie/Develop/myprj/vendor/freetype2/objs/sfnt.lo
/home/ellie/Develop/myprj/vendor/freetype2/objs/autofit.lo
/home/ellie/Develop/myprj/vendor/freetype2/objs/pshinter.lo
/home/ellie/Develop/myprj/vendor/freetype2/objs/raster.lo
/home/ellie/Develop/myprj/vendor/freetype2/objs/smooth.lo
/home/ellie/Develop/myprj/vendor/freetype2/objs/ftcache.lo
/home/ellie/Develop/myprj/vendor/freetype2/objs/ftgzip.lo
/home/ellie/Develop/myprj/vendor/freetype2/objs/ftlzw.lo
/home/ellie/Develop/myprj/vendor/freetype2/objs/ftbzip2.lo
/home/ellie/Develop/myprj/vendor/freetype2/objs/psaux.lo
/home/ellie/Develop/myprj/vendor/freetype2/objs/psnames.lo -rpath
/usr/local/lib -version-info 23:0:17  -no-undefined -export-symbols
/home/ellie/Develop/myprj/vendor/freetype2/objs/ftexport.sym
libtool:   error:
'/home/ellie/Develop/myprj/vendor/freetype2/objs/ftsystem.lo' is not a
valid libtool object
make: *** [config.mk:55:
/home/ellie/Develop/myprj/vendor/freetype2/objs/libfreetype.la] Error 1
$ echo $?
2

While this works fine:

bash ./autogen.sh && ./configure --host=x86_64-w64-mingw32
--with-zlib=no --with-bzip2=no --with-png=no --with-harfbuzz=no && make
...
libtool: link: ( cd
"/home/ellie/Develop/myprj/vendor/freetype2/objs/.libs" && rm -f
"libfreetype.la" && ln -s "../libfreetype.la" "libfreetype.la" )
$ echo $?
0

This is rather inconvenient when calling freetype2's build from a nested
Makefile that also already runs under the same cross-compile
environment, and hence might have CC set either directly, or via MAKEFLAGS.

Also, even for the working second build line, it seems freetype assumes
I am compiling for Unix for some reason:

  platform                    unix
  compiler                    cc
  configuration directory     ./builds/unix
  configuration rules         ./builds/unix/unix.mk

The build runs through, so I'm not sure how much this matters, but it
does nevertheless feel like it might potentially be a bug. For what it's
worth, it IS possible to build with the Windows build files for
cross-compilation:

bash ./autogen.sh && ./configure $(HOSTOPTION) --with-zlib=no
--with-bzip2=no --with-png=no --with-harfbuzz=no && cp
"./builds/windows/w32-mingw32.mk" "./config.mk" && make SEP=/

^ works fine too! Shouldn't that be what it automatically picks?

I hope the CC issue particularly can be addressed, because I feel like I
won't be the last person losing some time debugging environment changes
to track this culprit down. All the other libraries I cross-compile
don't have an issue with this, so this one really struck me by surprise.

Best regards,

Ellie



reply via email to

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