Pantheon updates 2024-12-13 (#364951)
[NixPkgs.git] / pkgs / applications / science / math / lp_solve / default.nix
blob63722349629dafb59d42ee953d4c51da113674de
2   lib,
3   stdenv,
4   fetchurl,
5   cctools,
6   fixDarwinDylibNames,
7   autoSignDarwinBinariesHook,
8 }:
10 stdenv.mkDerivation rec {
11   pname = "lp_solve";
12   version = "5.5.2.11";
14   src = fetchurl {
15     url = "mirror://sourceforge/project/lpsolve/lpsolve/${version}/lp_solve_${version}_source.tar.gz";
16     sha256 = "sha256-bUq/9cxqqpM66ObBeiJt8PwLZxxDj2lxXUHQn+gfkC8=";
17   };
19   nativeBuildInputs =
20     lib.optionals stdenv.hostPlatform.isDarwin [
21       cctools
22       fixDarwinDylibNames
23     ]
24     ++ lib.optionals (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64) [
25       autoSignDarwinBinariesHook
26     ];
28   env =
29     {
30       NIX_CFLAGS_COMPILE = "-Wno-error=implicit-int";
31     }
32     // lib.optionalAttrs (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isx86_64) {
33       NIX_LDFLAGS = "-headerpad_max_install_names";
34     };
36   dontConfigure = true;
38   buildPhase =
39     let
40       ccc = if stdenv.hostPlatform.isDarwin then "ccc.osx" else "ccc";
41     in
42     ''
43       runHook preBuild
45       (cd lpsolve55 && bash -x -e ${ccc})
46       (cd lp_solve  && bash -x -e ${ccc})
48       runHook postBuild
49     '';
51   installPhase = ''
52     runHook preInstall
54     install -d -m755 $out/bin $out/lib $out/include/lpsolve
55     install -m755 lp_solve/bin/*/lp_solve -t $out/bin
56     install -m644 lpsolve55/bin/*/liblpsolve* -t $out/lib
57     install -m644 lp_*.h -t $out/include/lpsolve
59     rm $out/lib/liblpsolve*.a
60     rm $out/include/lpsolve/lp_solveDLL.h  # A Windows header
62     runHook postInstall
63   '';
65   meta = with lib; {
66     description = "Mixed Integer Linear Programming (MILP) solver";
67     mainProgram = "lp_solve";
68     homepage = "https://lpsolve.sourceforge.net";
69     license = licenses.gpl2Plus;
70     maintainers = with maintainers; [ smironov ];
71     platforms = platforms.unix;
72   };