at master 72 lines 1.7 kB view raw
1{ 2 lib, 3 stdenv, 4 fetchurl, 5 gprbuild, 6 which, 7 gnat, 8 xmlada, 9 gnatcoll-core, 10 gnatcoll-iconv, 11 gnatcoll-gmp, 12 enableShared ? !stdenv.hostPlatform.isStatic, 13 # kb database source, if null assume it is pregenerated 14 gpr2kbdir ? null, 15}: 16 17stdenv.mkDerivation rec { 18 pname = "gpr2"; 19 version = "25.0.0"; 20 21 src = fetchurl { 22 url = "https://github.com/AdaCore/gpr/releases/download/v${version}/gpr2-with-gprconfig_kb-${lib.versions.majorMinor version}.tgz"; 23 sha512 = "70fe0fcf541f6d3d90a34cab1638bbc0283dcd765c000406e0cfb73bae1817b30ddfe73f3672247a97c6b6bfc41900bc96a4440ca0c660f9c2f7b9d3cc8f8dcf"; 24 }; 25 26 nativeBuildInputs = [ 27 which 28 gnat 29 gprbuild 30 ]; 31 32 makeFlags = [ 33 "prefix=$(out)" 34 "PROCESSORS=$(NIX_BUILD_CORES)" 35 "ENABLE_SHARED=${if enableShared then "yes" else "no"}" 36 "GPR2_BUILD=release" 37 ] 38 ++ lib.optionals (gpr2kbdir != null) [ 39 "GPR2KBDIR=${gpr2kbdir}" 40 ]; 41 42 configurePhase = '' 43 runHook preConfigure 44 make setup "''${makeFlagsArray[@]}" $makeFlags 45 runHook postConfigure 46 ''; 47 48 # fool make into thinking pregenerated targets are up to date 49 preBuild = lib.optionalString (gpr2kbdir == null) '' 50 touch .build/kb/{*.adb,*.ads,collect_kb} 51 ''; 52 53 propagatedBuildInputs = [ 54 xmlada 55 gnatcoll-gmp 56 gnatcoll-core 57 gnatcoll-iconv 58 ]; 59 60 meta = with lib; { 61 description = "Framework for analyzing the GNAT Project (GPR) files"; 62 homepage = "https://github.com/AdaCore/gpr"; 63 license = with licenses; [ 64 asl20 65 gpl3Only 66 ]; 67 maintainers = with maintainers; [ heijligen ]; 68 platforms = platforms.all; 69 # TODO(@sternenseemann): investigate failure with gnat 13 70 broken = lib.versionOlder gnat.version "14"; 71 }; 72}