freetype
[Top][All Lists]
Advanced

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

Re: [ft] Freetype x86


From: Werner LEMBERG
Subject: Re: [ft] Freetype x86
Date: Wed, 03 Jun 2015 07:06:22 +0200 (CEST)

Hello Aleksandra,
hello J,


finally I've reached your responses while wading through my pile of
e-mails :-)

> We have been looking into the use of Freetype and the compatibility
> with x86 devices, and as you noted in your first email, it should
> run on any platform, as it creates Libs/armeabi/libfreetype.so,
> libs/armeabi-v7a/libfreetype.so or libs/x86/libfreetype.so depending
> on the APP_ABI configuration of the software developer.  Therefore
> my question would be if you provide specific scripts to developers
> using Freetype to build their library or is this the main source
> that developers use:
> http://en.wikibooks.org/wiki/OpenGL_Programming/Installation/Android_NDK#FreeType
> ?

FreeType doesn't provide such scripts.  I'm sorry to say that my
knowledge of Android device programming is zero, so I can't tell you
whether this OpenGL guide works in general.

> In that case, since the wiki-resource doesn't have any mention of
> the creation of x86 libs for the developers, would it be possible
> for you to add the instructions for developers to inform them about
> the possibility of setting their APP_ABI as APP_ABI:=all or
> APP_ABI:=armeabi-v7a x86 to create applications with x86 support?

Of course I'm willing to add information to both the FreeType
documentation and the build scripts that is necessary to make
compilation work on specific targets.  The very problem is that I'm
not the right person to write it.  I've CCed Behdad Esfahbod, a Google
developer who is actively working for Android.  Maybe he can give
advice or point to proper instructions.

Note that the OpenGL recipe given in the above link is quite specific
and probably too limiting in general.  In particular, it essentially
disables FreeType's support of color Emojis, as far as I can see (due
to the `--with-png=no' configure switch).  There is also an
intertwined dependency on the HarfBuzz library if you need good
auto-hinting support of various scripts.  Today, a generic compilation
of FreeType enabling all features needs three steps, assuming that you
start from scratch.

  1. Compile FreeType.
  2. Compile HarfBuzz (which needs FreeType).
  3. Compile FreeType again – now the configure script finds the
     HarfBuzz library and uses it unconditionally.

> It looks to me that freetype is a configure based build?

Yes.  This is what we actively use.

> I guess it's primary build required Jam
> (http://www.freetype.org/jam/)

No, it was always just an alternative way to compile FreeType.  I must
admit that support for Jam in FreeType is very weak today, since none
of the core developers use it (any more).  The `support' is mainly my
try to stay in sync with the files in the repository, but it isn't
actively tested.

> Many years ago I just made a cmake code snippet to build freetype
> for my own purposes (added at end) that makes the list of sources
> that I can add to my external 3rd party library build as
> ${FREETYPE_SOURCE}; but that's certainly far from the standard.

What I've just said about Jam essentially holds for CMake support
also: The `CMakeLists.txt' control file was contributed, and I try to
hold it in sync without using it.

> For Me, building for android was a simple as setting the toolchain
> for cmake and rebuilding everything as usual;

Good to know.  Have you used FreeType's `CMakeLists.txt'?  Right now,
it contains specific support for OS X and iOS.  Is there something to
add for Android's NDK?

> [...] but looking now Freetype is kind of a legacy product and there
> is a lot of scripts under <freetype>/builds but none there say
> 'android' or 'arm'...  and unless one assumed android would just be
> 'some unix thing that supports configure' it wouldn't really be
> clear how to build it.

Yes, I consider Android to be `some unix thing' – it's essentially a
Linux kernel, right?

By the way, looking into the `config' git repository (which holds
the newest versions of `config.guess' and `config.sub'),

  http://git.savannah.gnu.org/cgit/config.git   ,

I don't see any recent commits related to the Intel architecture, so I
conclude that the necessary Intel ABI targets for Android are already
there, and the standard

  configure; make; make install

incantation should work out of the box if you provide the necessary
cross compilation switches.  In other words, generic instructions how
to use the Android NDK for Intel should apply to the FreeType library
also.

> at least Freetype sources themselves are somewhat easily gathered
> since each 'module' has a single source that includes all related
> sources for that module instead of having to enumerate absolutely
> every source in the tree somehow.

You can also go one step further and use Vinnie Falco's FreeType
amalgamation, cf.

  https://github.com/vinniefalco/FreeTypeAmalgam

Those files are for an older FreeType version, but there's a link to
the necessary scripts to recreate it.  After doing this, you have a
single file that contains the whole FreeType library!  However, I've
never used it, so there might be additional issues due to linking with
other libraries like PNG or HarfBuzz.


    Werner

reply via email to

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