• Show log

    Commit

  • Hash : 66978a58
    Author : David Turner
    Date : 2020-05-17T18:45:41

    Add Meson build project file.
    
    Example usage:
    
      # Configure Meson build in directory `build-meson` to generate
      # release binaries comparable to to the ones from the
      # autotools/make build system.
      meson setup build-meson \
            --prefix=/usr/local \
            --buildtype=debugoptimized \
            --strip \
            -Db_ndebug=true
    
      # After configuring the Meson build with the above command,
      # compile and install to `/usr/local/`; this includes a pkg-config
      # file.
      ninja -C build-meson install
    
      # Alternatively, compile and install to `/tmp/aa/usr/local/...`
      # for packaging.
      DESTDIR=/tmp/aa ninja -C build-meson install
    
      # Generate documentation under `build-meson/docs`.
      ninja -C build-meson docs
    
    Library size comparison for stripped `libfreetype.so` generated by
    all three build systems:
    
      - Default build (autotools + libtool): 712 KiB
      - CMake build (RelWithDebInfo):        712 KiB
      - Meson build:                         712 KiB
    
    * meson.build: New top-level Meson build file for the library.
    
    * meson_options.txt: New file.  It holds user-selectable options for
    the build, which can be printed with `meson configure`, and selected
    at `meson setup` or `meson --reconfigure` time with
    `-D<option>=<value>`.
    
    * scripts/parse_modules_cfg.py: A script invoked by `meson.build` to
    parse `modules.cfg` and extract important information out of it
    (i.e., the list of modules).
    
    * scripts/process_ftoption_h.py: New script invoked by `meson.build`
    to process the original `ftoption.h` file.  It enables or disables
    configuration macro variables based on the available dependencies.
    This is similar to what other build systems are using (i.e., Meson's
    `configure_file()` command is not used here).
    
    * scripts/extract_freetype_version.py: New script invoked by
    `meson.build` to extract the FreeType version number from
    `<freetype/freetype.h>`.
    
    * scripts/extract_libtool_version.py: New script invoked by
    `meson.build` to extract the libtool `revision_info` data from
    `builds/unix/configure.raw`, and to generate the corresponding
    shared library suffix.
    
    * scripts/generate_reference_docs.py: New script invoked by
    `meson.build` to generate the FreeType 2 reference documentation
    (using the `docwriter` and `mkdocs` packages, which must be already
    installed).