summaryrefslogtreecommitdiff
path: root/pkgs/development/tools/misc/premake/5.nix
blob: efa213aa0fdef9bc547e521646cb8dd873802f28 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
{
  lib,
  stdenv,
  fetchFromGitHub,
  fetchpatch,

  # build inputs
  cacert,
  libuuid,

  # build inputs (darwin)
  readline,
}:

stdenv.mkDerivation (finalAttrs: {
  pname = "premake5";
  version = "5.0.0-beta8";

  src = fetchFromGitHub {
    owner = "premake";
    repo = "premake-core";
    rev = "v${finalAttrs.version}";
    hash = "sha256-Tl/XU9Hy/VZw59S4K478EaLgE88/oTzLCe+DoVwtlcU=";
  };

  buildInputs = [
    libuuid
  ]
  ++ lib.optionals stdenv.hostPlatform.isDarwin [
    readline
  ];

  patches = [
    # https://github.com/premake/premake-core/issues/2614
    (fetchpatch {
      name = "0001-premake5-Fix-filters-using-alias-value.patch";
      url = "https://github.com/premake/premake-core/commit/d01097bb38da6855beeef7158b8b04ab1e63249b.patch";
      hash = "sha256-ZGhNUoXZbbW9ioFnAgPwypYhepoChtWF1SOCxs1WLj8=";
    })

    ./no-curl-ca.patch
  ];
  postPatch = ''
    substituteInPlace contrib/curl/premake5.lua \
      --replace-fail "ca = nil" "ca = '${cacert}/etc/ssl/certs/ca-bundle.crt'"
  ''
  + lib.optionalString stdenv.hostPlatform.isDarwin ''
    substituteInPlace premake5.lua \
      --replace-fail '"-arch arm64"' '""' \
      --replace-fail '"-arch x86_64"' '""'
  ''
  + lib.optionalString stdenv.hostPlatform.isStatic ''
    substituteInPlace \
      binmodules/example/premake5.lua \
      binmodules/luasocket/premake5.lua \
      --replace-fail SharedLib StaticLib
  '';

  buildPhase =
    if stdenv.hostPlatform.isDarwin then
      # Error compiling the builtin zlib source, but it's not used currently
      ''
        make PREMAKE_OPTS="--zlib-src=none" \
             PLATFORM="Universal" \
             -f Bootstrap.mak osx
      ''
    else
      ''
        make PLATFORM=${stdenv.hostPlatform.linuxArch} \
          -f Bootstrap.mak linux
      '';

  env.NIX_CFLAGS_COMPILE = toString (
    lib.optionals stdenv.cc.isClang [
      "-Wno-error=implicit-function-declaration"
    ]
  );

  installPhase = ''
    install -Dm755 bin/release/premake5 $out/bin/premake5
  '';

  premake_cmd = "premake5";
  setupHook = ./setup-hook.sh;

  meta = {
    homepage = "https://premake.github.io";
    description = "Simple build configuration and project generation tool using lua";
    mainProgram = "premake5";
    license = lib.licenses.bsd3;
    maintainers = [ lib.maintainers.sarahec ];
    platforms = [
      "x86_64-linux"
      "aarch64-linux"
      "x86_64-darwin"
      "aarch64-darwin"
    ];
  };
})