about summary refs log tree commit diff
path: root/nixpkgs/pkgs/tools/text/highlight/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/tools/text/highlight/default.nix')
-rw-r--r--nixpkgs/pkgs/tools/text/highlight/default.nix58
1 files changed, 58 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/tools/text/highlight/default.nix b/nixpkgs/pkgs/tools/text/highlight/default.nix
new file mode 100644
index 000000000000..f44ddc9d0e91
--- /dev/null
+++ b/nixpkgs/pkgs/tools/text/highlight/default.nix
@@ -0,0 +1,58 @@
+{ lib, stdenv, fetchFromGitLab, getopt, lua, boost, pkg-config, swig, perl, gcc }:
+
+with lib;
+
+let
+  self = stdenv.mkDerivation rec {
+    pname = "highlight";
+    version = "4.1";
+
+    src = fetchFromGitLab {
+      owner = "saalen";
+      repo = "highlight";
+      rev = "v${version}";
+      sha256 = "sha256-KktwbnL13Tcc2iWAjgqQSMSenUN6nYBEGbFrpB1kkr0=";
+    };
+
+    enableParallelBuilding = true;
+
+    nativeBuildInputs = [ pkg-config swig perl ] ++ optional stdenv.isDarwin gcc;
+
+    buildInputs = [ getopt lua boost ];
+
+    prePatch = lib.optionalString stdenv.cc.isClang ''
+      substituteInPlace src/makefile \
+          --replace 'CXX=g++' 'CXX=clang++'
+    '';
+
+    preConfigure = ''
+      makeFlags="PREFIX=$out conf_dir=$out/etc/highlight/ CXX=$CXX AR=$AR"
+    '';
+
+    # This has to happen _before_ the main build because it does a
+    # `make clean' for some reason.
+    preBuild = optionalString (!stdenv.isDarwin) ''
+      make -C extras/swig $makeFlags perl
+    '';
+
+    postCheck = optionalString (!stdenv.isDarwin) ''
+      perl -Iextras/swig extras/swig/testmod.pl
+    '';
+
+    preInstall = optionalString (!stdenv.isDarwin) ''
+      mkdir -p $out/${perl.libPrefix}
+      install -m644 extras/swig/highlight.{so,pm} $out/${perl.libPrefix}
+      make -C extras/swig clean # Clean up intermediate files.
+    '';
+
+    meta = with lib; {
+      description = "Source code highlighting tool";
+      homepage = "http://www.andre-simon.de/doku/highlight/en/highlight.php";
+      platforms = platforms.unix;
+      maintainers = with maintainers; [ willibutz ];
+    };
+  };
+
+in
+  if stdenv.isDarwin then self
+  else perl.pkgs.toPerlModule self