nodejs: fix build on 32 bit platforms (#354842)
[NixPkgs.git] / pkgs / by-name / ae / aegisub / package.nix
blobd4c593fb5de12e4eb772cf5e361f6c3fe6bea8c6
2   lib,
3   alsa-lib,
4   boost,
5   cmake,
6   config,
7   darwin,
8   expat,
9   fetchFromGitHub,
10   fetchpatch,
11   ffmpeg,
12   ffms,
13   fftw,
14   fontconfig,
15   freetype,
16   fribidi,
17   glib,
18   harfbuzz,
19   hunspell,
20   icu,
21   intltool,
22   libGL,
23   libGLU,
24   libX11,
25   libass,
26   libiconv,
27   libpulseaudio,
28   libuchardet,
29   luajit,
30   ninja,
31   openal,
32   pcre,
33   pkg-config,
34   portaudio,
35   stdenv,
36   which,
37   wrapGAppsHook3,
38   wxGTK,
39   zlib,
40   # Boolean guard flags
41   alsaSupport ? stdenv.hostPlatform.isLinux,
42   openalSupport ? true,
43   portaudioSupport ? true,
44   pulseaudioSupport ? config.pulseaudio or stdenv.hostPlatform.isLinux,
45   spellcheckSupport ? true,
46   useBundledLuaJIT ? false,
49 let
50   inherit (darwin.apple_sdk.frameworks)
51     AppKit
52     Carbon
53     Cocoa
54     CoreFoundation
55     CoreText
56     IOKit
57     OpenAL;
59 stdenv.mkDerivation (finalAttrs: {
60   pname = "aegisub";
61   version = "3.3.3";
63   src = fetchFromGitHub {
64     owner = "wangqr";
65     repo = "aegisub";
66     rev = "v${finalAttrs.version}";
67     hash = "sha256-oKhLv81EFudrJaaJ2ga3pVh4W5Hd2YchpjsoYoqRm78=";
68   };
70   nativeBuildInputs = [
71     cmake
72     intltool
73     luajit
74     ninja
75     pkg-config
76     which
77     wrapGAppsHook3
78     wxGTK
79   ];
81   buildInputs = [
82     boost
83     expat
84     ffmpeg
85     ffms
86     fftw
87     fontconfig
88     freetype
89     fribidi
90     glib
91     harfbuzz
92     icu
93     libGL
94     libGLU
95     libX11
96     libass
97     libiconv
98     libuchardet
99     pcre
100     wxGTK
101     zlib
102   ]
103   ++ lib.optionals alsaSupport [ alsa-lib ]
104   ++ lib.optionals openalSupport [
105     (if stdenv.hostPlatform.isDarwin then OpenAL else openal)
106   ]
107   ++ lib.optionals portaudioSupport [ portaudio ]
108   ++ lib.optionals pulseaudioSupport [ libpulseaudio ]
109   ++ lib.optionals spellcheckSupport [ hunspell ]
110   ++ lib.optionals stdenv.hostPlatform.isDarwin [
111     AppKit
112     Carbon
113     Cocoa
114     CoreFoundation
115     CoreText
116     IOKit
117   ];
119   hardeningDisable = [
120     "bindnow"
121     "relro"
122   ];
124   patches = [
125     (fetchpatch {
126       name = "move-iconv-include-to-charset_conv.h.patch";
127       url = "https://github.com/arch1t3cht/Aegisub/commit/b8f4c98c4cbc698e4adbba302c2dc328fe193435.patch";
128       hash = "sha256-dCm/VG+8yK7qWKWF4Ew/M2hbbAC/d3hiuRglR9BvWtw=";
129     })
130   ] ++ lib.optionals (!useBundledLuaJIT) [
131     ./000-remove-bundled-luajit.patch
132   ];
134   # error: unknown type name 'NSUInteger'
135   postPatch = ''
136     substituteInPlace src/dialog_colorpicker.cpp \
137       --replace-fail "NSUInteger" "size_t"
138   '';
140   env = {
141     NIX_CFLAGS_COMPILE = "-I${lib.getDev luajit}/include";
142     NIX_CFLAGS_LINK = "-L${lib.getLib luajit}/lib";
143   };
145   preConfigure = ''
146     export FORCE_GIT_VERSION=${finalAttrs.version}
147   '';
149   cmakeBuildDir = "build-directory";
151   strictDeps = true;
153   meta = {
154     homepage = "https://github.com/wangqr/Aegisub";
155     description = "Advanced subtitle editor; wangqr's fork";
156     longDescription = ''
157       Aegisub is a free, cross-platform open source tool for creating and
158       modifying subtitles. Aegisub makes it quick and easy to time subtitles to
159       audio, and features many powerful tools for styling them, including a
160       built-in real-time video preview.
161     '';
162     # The Aegisub sources are itself BSD/ISC, but they are linked against GPL'd
163     # softwares - so the resulting program will be GPL
164     license = with lib.licenses; [
165       bsd3
166     ];
167     mainProgram = "aegisub";
168     maintainers = with lib.maintainers; [ wegank ];
169     platforms = lib.platforms.unix;
170   };