-
Notifications
You must be signed in to change notification settings - Fork 2
/
release.nix
111 lines (103 loc) · 4.03 KB
/
release.nix
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
100
101
102
103
104
105
106
107
108
109
110
111
{ nixpkgs ? <nixpkgs>
, systems ? [ "i686-linux" "x86_64-linux" ]
, libiffJobset ? import ../libiff/release.nix { inherit nixpkgs systems officialRelease buildForWindows; }
, libilbmJobset ? import ../libilbm/release.nix { inherit nixpkgs systems officialRelease buildForWindows; }
, libamivideoJobset ? import ../libamivideo/release.nix { inherit nixpkgs systems officialRelease buildForWindows; }
, SDL_ILBM ? { outPath = ./.; rev = 1234; }
, officialRelease ? false
, buildForWindows ? false
}:
let
pkgs = import nixpkgs {};
version = builtins.readFile ./version;
SDL2devel = pkgs.stdenv.mkDerivation {
name = "SDL2-devel-2.0.3";
src = pkgs.fetchurl {
url = http://www.libsdl.org/release/SDL2-devel-2.0.3-VC.zip;
sha256 = "0q6fs678i59xycjlw7blp949dl0p2f1y914prpbs1cspz98x3pld";
};
buildInputs = [ pkgs.unzip ];
installPhase = ''
mkdir -p $out
mv * $out
'';
dontStrip = true;
};
jobs = rec {
tarball =
with pkgs;
let
libiff = builtins.getAttr (builtins.currentSystem) (libiffJobset.build);
libilbm = builtins.getAttr (builtins.currentSystem) (libilbmJobset.build);
libamivideo = builtins.getAttr (builtins.currentSystem) (libamivideoJobset.build);
in
releaseTools.sourceTarball {
name = "SDL_ILBM-tarball";
src = SDL_ILBM;
inherit version officialRelease;
dontBuild = false;
buildInputs = [ pkg-config libiff libilbm libamivideo SDL2 help2man ];
CFLAGS = "-ansi -pedantic -Wall";
};
build =
(pkgs.lib.genAttrs systems (system:
with import nixpkgs { inherit system; };
let
libiff = builtins.getAttr system (libiffJobset.build);
libilbm = builtins.getAttr system (libilbmJobset.build);
libamivideo = builtins.getAttr system (libamivideoJobset.build);
in
releaseTools.nixBuild {
name = "SDL_ILBM";
inherit version;
src = tarball;
buildInputs = [ pkg-config libiff libilbm libamivideo SDL2 ];
CFLAGS = "-ansi -pedantic -Wall";
}
)) //
(pkgs.lib.optionalAttrs (buildForWindows) {
i686-windows =
let
libiff = libiffJobset.build.i686-windows;
libilbm = libilbmJobset.build.i686-windows;
libamivideo = libamivideoJobset.build.i686-windows;
in
pkgs.dotnetenv.buildSolution {
name = "SDL_ILBM";
src = ./.;
baseDir = "src";
slnFile = "SDL_ILBM.sln";
preBuild = ''
export msBuildOpts="/p:libiffIncludePath=\"$(cygpath --windows ${libiff}/include)\" /p:libiffLibPath=\"$(cygpath --windows ${libiff})\""
export msBuildOpts="$msBuildOpts /p:libilbmIncludePath=\"$(cygpath --windows ${libilbm}/include)\" /p:libilbmLibPath=\"$(cygpath --windows ${libilbm})\""
export msBuildOpts="$msBuildOpts /p:libamivideoIncludePath=\"$(cygpath --windows ${libamivideo}/include)\" /p:libamivideoLibPath=\"$(cygpath --windows ${libamivideo})\""
export msBuildOpts="$msBuildOpts /p:SDL2IncludePath=\"$(cygpath --windows ${SDL2devel}/include)\" /p:SDL2LibPath=\"$(cygpath --windows ${SDL2devel}/lib/x86)\""
'';
postInstall = ''
mkdir -p $out/include/SDL_ILBM
cp -v SDL_ILBM/*.h $out/include/SDL_ILBM
'';
};
});
};
in
jobs // (pkgs.lib.optionalAttrs (buildForWindows) {
windist =
let
libiff = libiffJobset.build.i686-windows;
libilbm = libilbmJobset.build.i686-windows;
libamivideo = libamivideoJobset.build.i686-windows;
SDL_ILBM = jobs.build.i686-windows;
in
pkgs.stdenv.mkDerivation {
name = "SDL_ILBM-windist";
buildCommand = ''
mkdir -p $out
cp ${libiff}/{*.exe,*.dll} $out
cp ${libilbm}/{*.exe,*.dll} $out
cp ${libamivideo}/{*.exe,*.dll} $out
cp ${SDL2devel}/lib/x86/*.dll $out
cp ${SDL_ILBM}/{*.exe,*.dll} $out
'';
};
})