forked from clementgallet/libTAS
-
Notifications
You must be signed in to change notification settings - Fork 0
/
libTAS.nix
93 lines (76 loc) · 2.32 KB
/
libTAS.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
{ stdenv, multiStdenv, lib,
# nativeBuildInputs
wrapQtAppsHook, # Because multiarch + qt5 is hard
autoreconfHook, pkgconfig,
git, # Used in configure to generate a version string or something like that
# buildInputs
xcbutilcursor, SDL2, alsaLib, ffmpeg,
# Even more dependencies
file, # Used to get information about the architecture of a file
glibc, gcc-unwrapped, qtbase,
libX11, libxcb, xcbutilkeysyms,
fontconfig, freetype,
libGL,
# Multiarch is enabled whenever possible
multiArch ? stdenv.hostPlatform.isx86_64, pkgsi686Linux
}:
let
relevantStdenv = if multiArch then multiStdenv else stdenv;
in relevantStdenv.mkDerivation rec {
pname = "libTAS";
version = "0.0.0"; # This is debatable
src = lib.cleanSource ./.;
nativeBuildInputs = [ autoreconfHook pkgconfig wrapQtAppsHook git ];
buildInputs = [
xcbutilcursor SDL2 alsaLib ffmpeg
] ++ lib.optionals multiArch [
pkgsi686Linux.xorg.xcbutilcursor
pkgsi686Linux.SDL2
pkgsi686Linux.alsaLib
pkgsi686Linux.ffmpeg
# Why are these required here but not above?
pkgsi686Linux.fontconfig
pkgsi686Linux.freetype
];
dontStrip = true; # Segfaults, bug in patchelf
dontPatchELF = true; # We'll do this ourselves
patches = [
./libtaspath.patch
];
# Note that this builds an extra .so file in the same derivation
# Ideally the library and executable might be split into separate derivations,
# but this is easier for now
configureFlags = lib.optional multiArch "--with-i386";
postPatch = ''
substituteInPlace src/program/main.cpp \
--subst-var out
'';
postInstall = ''
mkdir -p $out/lib
mv $out/bin/libtas*.so $out/lib/
'';
enableParallelBuilding = true;
/*
preFixup = ''
for file in $out/{bin/libTAS,lib/libtas.so}; do
patchelf \
--set-rpath ${lib.makeLibraryPath [
glibc gcc-unwrapped.lib qtbase
libX11 libxcb xcbutilkeysyms xcbutilcursor
ffmpeg alsaLib
fontconfig.lib freetype
libGL
]} \
$file
done
'';
*/
postFixup = ''
wrapProgram $out/bin/libTAS --suffix PATH : ${lib.makeBinPath [ file ]}
'';
meta = {
platforms = [ "x86_64-linux" "i686-linux" ];
description = "GNU/Linux software to (hopefully) give TAS tools to native games";
license = lib.licenses.gpl3Only;
};
}