cpphs: A liberalised re-implementation of cpp, the C pre-processor.

[ development, library, program ] [ Propose Tags ] [ Report a vulnerability ]

Cpphs is a re-implementation of the C pre-processor that is both more compatible with Haskell, and itself written in Haskell so that it can be distributed with compilers.

This version of the C pre-processor is pretty-much feature-complete and compatible with traditional (K&R) pre-processors. Additional features include: a plain-text mode; an option to unlit literate code files; and an option to turn off macro-expansion.

Old homepage: https://archives.haskell.org/projects.haskell.org/cpphs/


[Skip to Readme]

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

Versions [RSS] 1.3, 1.5, 1.6, 1.7, 1.8, 1.9, 1.10, 1.11, 1.12, 1.13, 1.13.1, 1.13.2, 1.13.3, 1.14, 1.15, 1.16, 1.17, 1.17.1, 1.18, 1.18.1, 1.18.2, 1.18.3, 1.18.4, 1.18.5, 1.18.6, 1.18.7, 1.18.8, 1.18.9, 1.19, 1.19.1, 1.19.2, 1.19.3, 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.20.7, 1.20.8, 1.20.9, 1.20.9.1, 1.20.10 (info)
Change log CHANGELOG.md
Dependencies base (>=4.9 && <5), directory (<1.4), polyparse (>=1.13 && <1.14), time (>=1.5 && <2) [details]
Tested with ghc ==9.14.1, ghc ==9.12.2, ghc ==9.10.2, ghc ==9.8.4, ghc ==9.6.7, ghc ==9.4.8, ghc ==9.2.8, ghc ==9.0.2, ghc ==8.10.7, ghc ==8.8.4, ghc ==8.6.5, ghc ==8.4.4, ghc ==8.2.2, ghc ==8.0.2
License LicenseRef-LGPL
Copyright 2004-2017, Malcolm Wallace
Author Malcolm Wallace <Malcolm.Wallace@me.com>
Maintainer Andreas Abel
Category Development
Bug tracker https://github.com/haskell-pkg-janitors/cpphs/issues
Source repo head: git clone https://github.com/haskell-pkg-janitors/cpphs.git
Uploaded by AndreasAbel at 2025-09-14T15:58:20Z
Distributions Arch:1.20.9.1, Debian:1.20.9.1, Fedora:1.20.9.1, FreeBSD:1.19, LTSHaskell:1.20.9.1, NixOS:1.20.9.1, Stackage:1.20.10, openSUSE:1.20.9.1
Reverse Dependencies 38 direct, 4388 indirect [details]
Executables cpphs
Downloads 240921 total (173 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2025-09-14 [all 1 reports]

Readme for cpphs-1.20.10

[back to package description]

Hackage version Stackage LTS version cpphs on Stackage Nightly Cabal build

cpphs

A liberalised re-implementation of cpp, the C pre-processor.

cpphs is a re-implementation of the C pre-processor that is both more compatible with Haskell, and itself written in Haskell so that it can be distributed with compilers.

This version of the C pre-processor is pretty-much feature-complete and compatible with traditional (K&R) pre-processors. Additional features include: a plain-text mode; an option to unlit literate code files; and an option to turn off macro-expansion.

Usage

cpphs  [filename | -Dsym | -Dsym=val | -Ipath]+  [-Ofile]
       [ --include=file ]*
       [ --nomacro | --noline | --nowarn | --strip | --strip-eol |
         --pragma | --text | --hashes | --layout | --unlit |
         --linepragma ]*
       [ --cpp compatopts ]

For fuller details, see docs/index.html.

If you want to use cpphs as a completely drop-in replacement for the real cpp, that is, to accept the same arguments, and have broadly the same behaviour in response to them, then use the --cpp compatibility option.

(c) 2004-2017 Malcolm Wallace (Malcolm.Wallace@me.com)

Licence

These library modules are distributed under the terms of the LGPL. The application module cpphs.hs is GPL.

This software comes with no warranty. Use at your own risk.

If you have a commercial use for cpphs, and feel the terms of the (L)GPL are too onerous, you have the option of distributing unmodified binaries (only, not sources) under the terms of a different licence (see LICENCE-commercial).

Website

Description see: https://hackage.haskell.org/package/cpphs

Old homepage: https://archives.haskell.org/projects.haskell.org/cpphs/