diff options
Diffstat (limited to 'nixpkgs/pkgs/tools/text/highlight/default.nix')
-rw-r--r-- | nixpkgs/pkgs/tools/text/highlight/default.nix | 58 |
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 |