1{ stdenv, fetchFromGitHub, bobcat, icmake, yodl }:
2
3stdenv.mkDerivation rec {
4 name = "flexc++-${version}";
5 version = "2.05.00";
6
7 src = fetchFromGitHub {
8 sha256 = "0s25d9jsfsqvm34rwf48cxwz23aq1zja3cqlzfz3z33p29wwazwz";
9 rev = version;
10 repo = "flexcpp";
11 owner = "fbb-git";
12 };
13
14 setSourceRoot = ''
15 sourceRoot=$(echo */flexc++)
16 '';
17
18 buildInputs = [ bobcat ];
19 nativeBuildInputs = [ icmake yodl ];
20
21 postPatch = ''
22 substituteInPlace INSTALL.im --replace /usr $out
23 patchShebangs .
24 '';
25
26 buildPhase = ''
27 ./build man
28 ./build manual
29 ./build program
30 '';
31
32 installPhase = ''
33 ./build install x
34 '';
35
36 meta = with stdenv.lib; {
37 description = "C++ tool for generating lexical scanners";
38 longDescription = ''
39 Flexc++ was designed after `flex'. Flexc++ offers a cleaner class design
40 and requires simpler specification files than offered by flex's C++
41 option.
42 '';
43 homepage = https://fbb-git.github.io/flexcpp/;
44 license = licenses.gpl3;
45 platforms = platforms.linux;
46 };
47}