Adw – 1: Compiling with Libadwaita
Description: Reference for Adw-1: Compiling with Libadwaita

# Compiling with Libadwaita

If you need to build Libadwaita, get the source from here and see the `README.md` file.

## Using `pkg-config`

Like other GNOME libraries, Libadwaita uses `pkg-config` to provide compiler options. The package name is `libadwaita-1`.

When using the Meson build system you can declare a dependency like:

    dependency('libadwaita-1')

The `1` in the package name is the “API version” (indicating “the version of the Libadwaita API that first appeared in version 1”) and is essentially just part of the package name.

## Bundling the Library

As Libadwaita uses the Meson build system, bundling it as a subproject when it is not installed is easy. Add this to your `meson.build`:

    libadwaita_dep = dependency('libadwaita-1', version: '>= 1.0.0', required: false)
    if not libadwaita_dep.found()
    libadwaita = subproject(
      'libadwaita',
      install: false,
      default_options: [
        'examples=false',
        'package_subdir=my-project-name',
        'tests=false',
      ]
    )
    libadwaita_dep = libadwaita.get_variable('libadwaita_dep')
    endif

Then add Libadwaita as a git submodule:

    git submodule add https://gitlab.gnome.org/GNOME/libadwaita.git subprojects/libadwaita

To bundle the library with your Flatpak application, add the following module to your manifest:

    {
      "name" : "libadwaita",
      "buildsystem" : "meson",
      "config-opts": [
        "-Dexamples=false",
        "-Dtests=false"
      ],
      "sources" : [
        {
          "type" : "git",
          "url" : "https://gitlab.gnome.org/GNOME/libadwaita.git",
          "branch" : "main"
        }
      ]
    }

## Building on macOS

To build on macOS you need to install the build-dependencies first. This can e.g. be done via `brew`:

    brew install pkg-config gtk4 meson gobject-introspection vala

After running the command above, one may now build the library:

    git clone https://gitlab.gnome.org/GNOME/libadwaita.git
    cd libadwaita
    meson _build
    ninja -C _build
    ninja -C _build install

Working with the library on macOS is pretty much the same as on Linux. To link it, use `pkg-config`:

    gcc $(pkg-config --cflags --libs gtk4) $(pkg-config --cflags --libs libadwaita-1) main.c -o main