# Install gpp with Homebrew, apt, dnf, MacPorts, Nix, zypper

General-purpose preprocessor with customizable syntax. Version 2.28 via Homebrew; verified from local package data.

## Install

```sh
sudo av install brew:gpp
```

Additional install commands:

### macOS

- Homebrew (100%):

```sh
brew install gpp
```

  Evidence: local Homebrew formula metadata

- MacPorts (94%):

```sh
sudo port install gpp
```

  Evidence: MacPorts ports tree: lang/gpp/Portfile from https://api.github.com/repos/macports/macports-ports/git/trees/master?recursive=1

### Linux

- Debian apt (92%):

```sh
sudo apt install gpp
```

  Evidence: Debian stable package indexes: gpp from https://deb.debian.org/debian/dists/stable/main/binary-amd64/Packages.xz

- dnf (92%):

```sh
sudo dnf install general-purpose-preprocessor
```

  Evidence: Fedora Rawhide package metadata: general-purpose-preprocessor from https://dl.fedoraproject.org/pub/fedora/linux/development/rawhide/Everything/x86_64/os/repodata/e5ca8ce900cd68f5419e1c39ae517343100b306336cbaeb70a3c153121d95094-primary.xml.zst

- Nix (92%):

```sh
nix profile install nixpkgs#gpp
```

  Evidence: nixpkgs package indexes: pkgs/by-name/gp/gpp/package.nix from https://api.github.com/repos/NixOS/nixpkgs/git/trees/master?recursive=1

- zypper (92%):

```sh
sudo zypper install gpp
```

  Evidence: openSUSE Tumbleweed package metadata: gpp from https://download.opensuse.org/tumbleweed/repo/oss/repodata/be8d3611d25469107f32075a1697e69ec57a2b850b42348a658cc671ad5ec2b50760d02c3e59524d50da9a11d5be799bdaffba2e166e8ca8858512e3c0bd665d-primary.xml.zst

## Package facts

- **Package key:** brew:gpp
- **Package manager:** Homebrew
- **Package manager page:** <https://formulae.brew.sh/formula/gpp>
- **Version:** 2.28
- **Source summary:** General-purpose preprocessor with customizable syntax
- **Homepage:** <https://logological.org/gpp>
- **Repository:** <https://github.com/logological/gpp>
- **Upstream docs:** <https://logological.org/gpp>
- **License:** LGPL-3.0-only
- **Source archive:** <https://files.nothingisreal.com/software/gpp/gpp-2.28.tar.bz2>
- **Generated:** 2026-07-08T18:08:21+00:00

## Executables

- gpp (cli)
- gpp (alias)

## Install behavior

- Post-install hook: not defined
- Bottle: available on arm64_linux, arm64_monterey, arm64_sequoia, arm64_sonoma, arm64_tahoe, arm64_ventura, monterey, sonoma, ventura, x86_64_linux

## Freshness

- Page generated: 2026-07-08
- Package-manager version: 2.28
- Local data: ok
- Upstream repository: https://logological.org/gpp
- info: No package-manager update timestamp was available.
- info: Release/tag comparison is only available for GitHub repositories.
## Project history and usage

GPP is a general-purpose preprocessor with customizable syntax. The project README and citation metadata emphasize that it is independent of any one programming language, lighter than GNU m4 for many tasks, and includes built-in macro support for C/C++, LaTeX, HTML, XHTML, and Prolog files.

### Project history

The GitHub repository is the official development location and the project homepage links users to online documentation, portable source packages, and binary-package references. The repository includes source, documentation, Autotools files, license files, and citation metadata.

GPP has academic documentation as well as package metadata: its CITATION.cff points to a 2020 Journal of Open Source Software article by Tristan Miller and Denis Auroux describing it as an extensible, customizable preprocessor for software development, document processing, and research workflows.

### Adoption history

The input package-manager facts list Homebrew, Debian, Fedora, MacPorts, Nix, Ubuntu, and openSUSE packages. That spread fits a small C command-line tool that is useful in build pipelines and documentation generation without needing a runtime service.

Homebrew packages it as gpp, Fedora uses the more descriptive general-purpose-preprocessor name, and the official README points users to binary-package links on the project homepage.

### How it is used

Users invoke gpp to preprocess text with syntax tuned to the target language or document format. The README notes that the documentation itself is generated by GPP from a gpp.pp input file, making the docs both reference material and a working example.

The package is most useful when cpp is too language-specific and m4 is heavier than needed: templating LaTeX or HTML, defining domain-specific macro syntax, or generating source fragments in build systems.

### Why package nerds care

GPP is a compact example of a Unix filter that earns packaging despite a small footprint: it has a single executable, man/HTML documentation, portable source releases, and a stable niche that overlaps build systems, documentation, and research tooling.

Its significance is less about popularity and more about substitutability: package users can reach for it when they need a configurable macro processor without bringing in a full template engine or language-specific preprocessor.

### Timeline

- 2020: The project citation metadata records a Journal of Open Source Software article for GPP.
- 2023: GitHub release metadata records GPP 2.28 dated Sep 26, 2023.
- 2026: Homebrew metadata packages GPP as version 2.28 with bottles for macOS and Linux.

### Related projects

- cpp is the language-specific baseline that GPP explicitly contrasts with.
- GNU m4 is the heavier general macro processor that GPP positions itself beside.
- Autotools-style source packages are related operationally because the development checkout requires generating the build system before end-user installation steps apply.

### Sources

- <https://formulae.brew.sh/formula/gpp>
- <https://github.com/logological/gpp>
- <https://logological.org/gpp>
- <https://raw.githubusercontent.com/logological/gpp/master/CITATION.cff>


## Security Notes

narrow executable package without higher-risk signals.

- **Geiger risk:** green / low
- narrow executable package without higher-risk signals

## Source Database Details

- **Source Database:** Homebrew formula API
- **Tap:** homebrew/core
- **Full Name:** gpp
- **Version Scheme:** 0
- **Revision:** 0
- **Head Version:** HEAD
- **Bottle Stable Root URL:** <https://ghcr.io/v2/homebrew/core>
- **Deprecated:** no
- **Disabled:** no
- **Keg Only:** no
- **URL Keys:** head, stable

## Other Package-Manager Records

- Debian apt - gpp - 2.28-2: normalized package name match | Debian stable package indexes: gpp from https://deb.debian.org/debian/dists/stable/main/binary-amd64/Packages.xz | general-purpose preprocessor with customizable syntax | https://logological.org/gpp
- Nix - gpp: normalized package name match | nixpkgs package indexes: pkgs/by-name/gp/gpp/package.nix from https://api.github.com/repos/NixOS/nixpkgs/git/trees/master?recursive=1
- Ubuntu apt - gpp - 2.28-1: normalized package name match | Ubuntu 24.04 LTS package indexes: gpp from https://archive.ubuntu.com/ubuntu/dists/noble/universe/binary-amd64/Packages.gz | general-purpose preprocessor with customizable syntax | https://logological.org/gpp
- dnf - general-purpose-preprocessor - 2.28-7.fc44: normalized package name match | Fedora Rawhide package metadata: general-purpose-preprocessor from https://dl.fedoraproject.org/pub/fedora/linux/development/rawhide/Everything/x86_64/os/repodata/e5ca8ce900cd68f5419e1c39ae517343100b306336cbaeb70a3c153121d95094-primary.xml.zst | Customizable language-agnostic preprocessor | https://logological.org/gpp
- zypper - gpp - 2.28-1.7: normalized package name match | openSUSE Tumbleweed package metadata: gpp from https://download.opensuse.org/tumbleweed/repo/oss/repodata/be8d3611d25469107f32075a1697e69ec57a2b850b42348a658cc671ad5ec2b50760d02c3e59524d50da9a11d5be799bdaffba2e166e8ca8858512e3c0bd665d-primary.xml.zst | Generic Preprocessor | https://logological.org/gpp/
- MacPorts - gpp: normalized package name match | MacPorts ports tree: lang/gpp/Portfile from https://api.github.com/repos/macports/macports-ports/git/trees/master?recursive=1


## Related links

- [Terminal utility packages](https://www.automicvault.com/pkg/terminal-utilities/) - Matched terminal and command-line workflow metadata.
- [Text processing packages](https://www.automicvault.com/pkg/text-processing-tools/) - Matched text, document, or structured-data processing metadata.
- [Developer build packages](https://www.automicvault.com/pkg/developer-build-tools/) - Matched build, compiler, generator, or developer workflow metadata.
- [Networking and protocol packages](https://www.automicvault.com/pkg/networking-protocol-tools/) - Matched network, protocol, or remote-service metadata.
- [cppp](https://www.automicvault.com/pkg/brew/cppp/) - Shares av.db curated category or tags: cli, developer-tools, preprocessor, preprocessors.
- [fypp](https://www.automicvault.com/pkg/brew/fypp/) - Shares av.db curated category or tags: cli, developer-tools, preprocessor, preprocessors.
- [fmpp](https://www.automicvault.com/pkg/brew/fmpp/) - Shares av.db curated category or tags: cli, developer-tools, preprocessors, text-processing.
- [align](https://www.automicvault.com/pkg/brew/align/) - Shares av.db curated category or tags: cli, developer-tools, text-processing.
- [angle-grinder](https://www.automicvault.com/pkg/brew/angle-grinder/) - Shares av.db curated category or tags: cli, developer-tools, text-processing.
- [bsdconv](https://www.automicvault.com/pkg/brew/bsdconv/) - Shares av.db curated category or tags: cli, developer-tools, text-processing.
- [camlp5](https://www.automicvault.com/pkg/brew/camlp5/) - Shares av.db curated category or tags: cli, developer-tools, preprocessor.
- [cargo-expand](https://www.automicvault.com/pkg/brew/cargo-expand/) - Shares av.db curated category or tags: cli, developer-tools, macros.
- [smu](https://www.automicvault.com/pkg/brew/smu/) - Local package facts share a topical domain. Shared terms: cli, developer, developer-tools, processing, syntax.

## Combined YAML source

View the package source record on GitHub. [combined/gpp.yml](https://github.com/automic-vault/db/blob/main/combined/gpp.yml)


## Sources

- Nucleus package database
- Geiger risk classifier
- package-page enrichment
- curated package history
- package version freshness
- av.db category and tag curation
- package relationship graph
- external package-manager database matches
- cross-ecosystem install command graph
