base16-schemes: unstable-2024-06-21 -> unstable-2024-11-12 (#356361)
[NixPkgs.git] / pkgs / tools / text / highlight / default.nix
blobc843d6c0b5290e36a4897f13fc773866207963a9
1 { lib, stdenv, fetchFromGitLab, getopt, lua, boost, libxcrypt, pkg-config, swig, perl, gcc }:
3 let
4   self = stdenv.mkDerivation rec {
5     pname = "highlight";
6     version = "4.14";
8     src = fetchFromGitLab {
9       owner = "saalen";
10       repo = "highlight";
11       rev = "v${version}";
12       hash = "sha256-UxbgYspocoy9ul2dhIhvIwqKMeWSG7vJY1df3UkgpHQ=";
13     };
15     enableParallelBuilding = true;
17     nativeBuildInputs = [ pkg-config swig perl ]
18       ++ lib.optional stdenv.hostPlatform.isDarwin gcc;
20     buildInputs = [ getopt lua boost libxcrypt ];
22     postPatch = ''
23       substituteInPlace src/makefile \
24         --replace "shell pkg-config" "shell $PKG_CONFIG"
25       substituteInPlace makefile \
26         --replace 'gzip' 'gzip -n'
27     '' + lib.optionalString stdenv.cc.isClang ''
28       substituteInPlace src/makefile \
29           --replace 'CXX=g++' 'CXX=clang++'
30     '';
32     preConfigure = ''
33       makeFlags="PREFIX=$out conf_dir=$out/etc/highlight/ CXX=$CXX AR=$AR"
34     '';
36     # This has to happen _before_ the main build because it does a
37     # `make clean' for some reason.
38     preBuild = lib.optionalString (!stdenv.hostPlatform.isDarwin) ''
39       make -C extras/swig $makeFlags perl
40     '';
42     postCheck = lib.optionalString (!stdenv.hostPlatform.isDarwin) ''
43       perl -Iextras/swig extras/swig/testmod.pl
44     '';
46     preInstall = lib.optionalString (!stdenv.hostPlatform.isDarwin) ''
47       mkdir -p $out/${perl.libPrefix}
48       install -m644 extras/swig/highlight.{so,pm} $out/${perl.libPrefix}
49       make -C extras/swig clean # Clean up intermediate files.
50     '';
52     meta = with lib; {
53       description = "Source code highlighting tool";
54       mainProgram = "highlight";
55       homepage = "http://www.andre-simon.de/doku/highlight/en/highlight.php";
56       platforms = platforms.unix;
57       maintainers = with maintainers; [ willibutz ];
58     };
59   };
62   if stdenv.hostPlatform.isDarwin then self
63   else perl.pkgs.toPerlModule self