README.git
----------

The git  archive doesn't  contain pre-built configuration  scripts for
UNIXish platforms.  To generate them say

  sh autogen.sh

which in turn depends on the following packages:

  automake (1.10.1)
  libtool (2.2.4)
  autoconf (2.62)

The versions given  in parentheses are known to  work.  Newer versions
should  work too,  of course.   Note  that `autogen.sh`  also sets  up
proper file permissions for the `configure` and auxiliary scripts.

The `autogen.sh`  script now  checks the versions  of the  above three
packages  whether they  match the  numbers above.   Otherwise it  will
complain and suggest either upgrading or using an environment variable
to point to a more recent version of the required tool(s).

Note that  `aclocal` is provided  by the 'automake' package  on Linux,
and that `libtoolize` is called `glibtoolize` on Darwin (OS X).


For static  builds that don't use  platform-specific optimizations, no
configure script is necessary at all; saying

  make setup ansi
  make

should  work on  all platforms  that  have GNU  `make` (or  `makepp`).
Similarly, a build  with `cmake` or `meson` can be  done directly from
the git repository.


For  using  the `FT_DEBUG_LOGGING`  macro  while  debugging (see  file
`docs/DEBUG`  for more  information)  the following  git commands  are
necessary to check out the 'dlg' library as a git submodule.

  git submodule init
  git submodule update


If you want to contribute to FreeType it is recommended to install the
`git-merge-changelog` program – we use a `ChangeLog` file, which often
prevents   simple   merging   due  to   conflicts.    Most   GNU/Linux
distributions  have a  package  for this  program;  otherwise you  can
install it via the 'gnulib' git repository.  Detailed instructions can
be found at the beginning of

  https://git.savannah.gnu.org/cgit/gnulib.git/tree/lib/git-merge-changelog.c

To make  it actually work, add  to file `.git/config` in  the FreeType
git repository (or to your `$HOME/.gitconfig` file) the lines

  [merge "merge-changelog"]
     name = GNU-style ChangeLog merge driver
     driver = /usr/local/bin/git-merge-changelog %O %A %B


----------------------------------------------------------------------

Copyright (C) 2005-2021 by
David Turner, Robert Wilhelm, and Werner Lemberg.

This  file is  part of  the FreeType  project, and  may only  be used,
modified,  and distributed  under the  terms of  the  FreeType project
license,  LICENSE.TXT.  By  continuing to  use, modify,  or distribute
this file you  indicate that you have read  the license and understand
and accept it fully.


--- end of README.git ---
