Compare commits

...

263 commits

Author SHA1 Message Date
BtbN
0a5e19d524 Move iconv submodule fetch to cache 2023-07-25 14:39:11 +02:00
BtbN
336c8909c8 Don't depend on zip
Closes #284
2023-07-22 15:46:57 +02:00
BtbN
c07b573acd Avisynth insist on a tag to exist 2023-07-20 15:54:19 +02:00
BtbN
2fe73c5aab Bump avisynth 2023-07-20 15:29:53 +02:00
BtbN
683e3a4dc9 Bump libjxl 2023-07-10 22:40:41 +02:00
BtbN
7a5bf0c0bb Switch to gmplib github mirror 2023-07-09 19:44:10 +02:00
BtbN
a7ae13efb7 Fix cache invalidation on commit update 2023-07-08 20:11:09 +02:00
BtbN
6c86fdaad0 Downgrade libjxl, they removed deprecated stuff 2023-07-08 19:26:54 +02:00
BtbN
49684930d2 Jxl has a new submodule 2023-07-08 19:26:54 +02:00
BtbN
71c3a919b8 Update dependencies 2023-07-08 19:26:54 +02:00
Chad Kimes
20172ca00a Use GH_REPO build-arg in target-base builds 2023-06-30 22:26:18 +02:00
nihil-admirari
0e9c6f8e4d Package man 2023-06-23 21:11:59 +02:00
BtbN
0071c270bb Specify dlltool in meson cross files 2023-06-21 14:04:39 +02:00
BtbN
9465728b3b Disable doxgen for xz 2023-06-21 13:50:46 +02:00
BtbN
547eee9db4 Update dependencies 2023-06-21 13:44:00 +02:00
BtbN
be992fa253 Be more generous with cache image retention
Avoid pointless rebuilds on revert or other situations.
2023-06-21 00:55:45 +02:00
BtbN
0598fb3dba Make final dl cache image FROM scratch 2023-06-21 00:38:32 +02:00
BtbN
73f17b7213 Force C locale in Dockerfile generation
Turns out bash sorting behaviour differs between locales, causing cache
mismatches...
2023-06-21 00:06:33 +02:00
BtbN
91b977f84d Simplify download Dockerfile generation 2023-06-20 23:58:06 +02:00
BtbN
8c336b4dec Add more explicit cache image name 2023-06-20 23:44:31 +02:00
BtbN
3e75fcc0e4 Enable new DL-Cache in Workflow 2023-06-18 21:47:40 +02:00
BtbN
61debb00e5 Switch to a more direct Dockerfile.dl generation
Otherwise the entire build cache effectively invalidates the moment one
script changes..
2023-06-18 21:25:52 +02:00
BtbN
c3fec1bd50 Add infrastructure for caching downloads in separate image 2023-06-18 19:57:13 +02:00
BtbN
78191a73a6 Add fork-guard into workflow 2023-06-18 12:20:47 +02:00
BtbN
d75466340a Use old release version of gmp again
Their hg server is way too flakey to rely on, download a release tarball
from GNU mirror instead.

I hope no important fixes are missed due to the loss of update
automation this causes.
2023-06-16 20:36:29 +02:00
BtbN
1ae971430e Update ct-ng configs 2023-06-04 01:29:42 +02:00
BtbN
a197b3f9ca Do full clone for mingw
SF's git server seems to be incapable of bandwidth saving single-commit
clones.
2023-06-02 17:42:44 +02:00
BtbN
915d6e0afa Switch mingw-w64 to official git repo
The Github mirror seems to be broken, maybe switch back once it's
revived.

Closes #276
2023-05-29 23:09:09 +02:00
BtbN
ccda3224ff Update Ubuntu base version 2023-05-29 15:29:46 +02:00
BtbN
67723fc5c2 iconv: Force autogen to use hostcc to build its stuff 2023-05-29 15:29:31 +02:00
BtbN
0d1bf557c8 Update dependencies 2023-05-29 14:10:36 +02:00
BtbN
9f930118ab Remove libmfx support
Intel discontinued support for it. There will be no security fixes and
updates for it anymore.

Unfortunately this means that older versions of ffmpeg will be losing
support for QSV hardware acceleration, but it's either that or knowingly
leaving people open to security issues.
2023-05-29 14:07:27 +02:00
BtbN
94dcf28fad
Fix vidstab commit variable 2023-05-15 18:55:30 +02:00
bitraid
c02dbf2722 Fix variable name of fftw3 build script 2023-05-15 13:26:59 +02:00
BtbN
5ab621cb66 Update OpenSSL to 3.0 2023-04-30 23:46:30 +02:00
BtbN
e2acf44a52 Add explicit enable step to vulkan script dir 2023-04-19 14:18:03 +02:00
BtbN
8a04456211 Disable libplacebo for all current versions 2023-04-19 11:42:25 +02:00
BtbN
341ed9f992 Update dependencies 2023-04-18 16:23:16 +02:00
BtbN
5e54b68d5e Update mbedtls 2023-03-28 14:52:55 +02:00
BtbN
ccbc205c57
Increate latest re-release delay again 2023-03-28 12:46:57 +02:00
BtbN
01980b12aa Update ct-ng config 2023-03-22 18:26:58 +01:00
BtbN
a1fdcf77ae Downgrade libplacebo again 2023-03-19 18:16:36 +01:00
BtbN
521d708a8e Update dependencies 2023-03-19 12:26:11 +01:00
BtbN
13129c7061 Allow cleanup step to fail 2023-03-18 15:12:08 +01:00
BtbN
1b3fd62fbf Do package cleanup as part of build workflow 2023-03-18 14:58:57 +01:00
BtbN
ffa7c41e0f Work around PAT existence check 2023-03-18 14:30:26 +01:00
BtbN
c6c7051948 Use PAT for cleanup 2023-03-18 14:27:17 +01:00
BtbN
b78f798c9f Add cleanup workflow 2023-03-18 14:20:02 +01:00
BtbN
3aaec67422 Retry flaky iconv clone 2023-03-16 17:48:38 +01:00
BtbN
f0568e9a9a
Update readme for 6.0 addin
Closes #246
2023-03-12 17:16:25 +01:00
nyanmisaka
a6e38b38fd Fix the path to fontconfig configuration file
instead of using the install prefix + /etc or /var

Signed-off-by: nyanmisaka <nst799610810@gmail.com>
2023-03-12 17:06:30 +01:00
BtbN
193f55691b
Remove libvpl debugging leftover 2023-03-08 23:19:42 +01:00
BtbN
0e5f512f8a Add 6.0 to builds
Will probably drop 4.4 if this causes build times to be too crazy, or if
it exhausts the asset size limit.
2023-03-03 18:55:03 +01:00
BtbN
1a3257f655 Add ffmpeg 6.0 addin 2023-02-28 15:09:04 +01:00
BtbN
75f7b8e218 Bump uavs3d 2023-02-23 12:11:23 +01:00
Dennis E. Mungai
7e91dfcaa5 Omit the `--filter=blob:none` option passed to git clone
This should prevent the "filtering not recognized by server, ignoring" warning on git clone.
2023-02-16 16:49:54 +01:00
BtbN
2bb8f6d5e0 Alaways do full clone of iconv repo 2023-02-15 16:54:25 +01:00
BtbN
74a2af1977 Switch frei0r to "cmake" 2023-02-12 17:11:50 +01:00
BtbN
3183ec99b3 Update dependencies 2023-02-12 14:40:12 +01:00
BtbN
60ce7242b7 Update libiconv
Closes #237
2023-02-07 21:01:26 +01:00
BtbN
583334e450 Bump libiconv 2023-02-01 15:31:20 +01:00
BtbN
0d2e5c7051 Fix rusts nonsensical root-only permissions on its library
Fixes #234
2023-01-29 14:10:07 +01:00
BtbN
98b1aa8b2d Downgrade vulkan headers 2022-12-25 00:37:03 +01:00
BtbN
b1fcac316e Account for fixed bortli buildsystem 2022-12-24 21:37:48 +01:00
BtbN
12473a216f Add new python dependency 2022-12-24 15:55:49 +01:00
BtbN
e676b22a71 Update dependencies 2022-12-24 15:23:31 +01:00
BtbN
ef8c6edf64 Disable -fstack-clash-protection on Windows
Apparently broken and unneccesary anyway: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90458#c4
2022-12-05 21:33:15 +01:00
BtbN
d89d75ea4a Enable -fstack-clash-protection on all targets 2022-12-05 18:57:54 +01:00
BtbN
ab4299b595 Fix lib-Prefixless OpenCL library linking 2022-12-03 01:14:46 +01:00
BtbN
6eab5153f5 Add new lilv dep 2022-12-02 21:03:31 +01:00
BtbN
8dac144f1c Stick to SDL2 instead of 3 2022-12-02 18:11:12 +01:00
BtbN
d88a84b308 Update dependencies 2022-12-02 16:21:37 +01:00
Yicheng Liu
37d82154fd Update SVT-AV1 to v1.4.0 2022-12-02 12:21:20 +01:00
BtbN
d74737d76b
Reduce wait time after deleting old latest release 2022-11-24 13:26:47 +01:00
BtbN
e6e28d4704 Bump ffnvcodec 2022-11-10 15:33:05 +01:00
BtbN
c83db5db6a Update dependencies 2022-11-06 14:06:20 +01:00
BtbN
cca0f227ac Update README.md
Closes #170
2022-11-06 13:01:12 +01:00
BtbN
81c3431e57 Enable 10 bit support for uavs3d
Closes #211
2022-11-06 12:25:08 +01:00
BtbN
e7853fda68 Bump openssl 2022-11-06 01:22:37 +01:00
BtbN
3bb2b17e48 Bump ffnvcodec for master only 2022-11-06 01:21:33 +01:00
BtbN
f395efe8a1 Update libxml2 2022-11-05 21:04:57 +01:00
nyanmisaka
c03ab7a812 Add chromaprint
Signed-off-by: nyanmisaka <nst799610810@gmail.com>
2022-11-04 21:29:28 +01:00
nanake
fd4fac0ec7 Update rubberband build options
Signed-off-by: nanake <nanake@users.noreply.github.com>
2022-11-04 21:18:55 +01:00
BtbN
bbad7e7057 Don't bail on missing dockeraddin 2022-11-03 01:41:44 +01:00
BtbN
fe0e366d93 Add LTO addin 2022-11-02 22:23:08 +01:00
BtbN
009c516860 Run ranlib on libvpx.a after install
libvpx strips it, which mangles the symbol index when LTO is enabled.
ranlib fixes it again.
2022-11-02 22:09:11 +01:00
BtbN
ec535f414f Update base Image to Ubuntu 22.10
This has newer meson, which fixes an important LTO related issue.
2022-11-02 22:06:40 +01:00
BtbN
2f0d9dbf8b Explicitly declare toolchain tools in base image 2022-11-02 22:02:09 +01:00
BtbN
1f74f0a60a Consolidate/clean up meson and cmake toolchain files 2022-11-02 21:53:03 +01:00
BtbN
782f731350 Add function for addins to generate Dockerfile header 2022-11-02 21:50:05 +01:00
BtbN
41079cb7bf Reduce duplication of toolchain name a bit 2022-10-31 21:47:07 +01:00
BtbN
18e540f47d Enable OpenAL for master builds 2022-10-31 20:44:20 +01:00
BtbN
768ded56fa Fix x/davs2 configure for recent binutils+gcc 2022-10-30 21:42:44 +01:00
BtbN
cf6565ec66 Disable unused libvpx unit-tests 2022-10-30 21:42:22 +01:00
BtbN
e768af40fb Enable gcc LTO optimization 2022-10-30 17:50:30 +01:00
BtbN
f5cf1599d6 Update OpenSSL 2022-10-30 01:27:14 +02:00
BtbN
6f44be6038 Add missing OpenAL dependency to its .pc file 2022-10-29 19:19:28 +02:00
BtbN
7028cb01c4 Add OpenAL
Needs fixes to ffmpeg configure before it can be enabled
2022-10-29 18:50:06 +02:00
BtbN
1896b0d138 Fix another use of deprecated set-output 2022-10-26 14:19:55 +02:00
mrintrepide
ef36e7e00d Enable AVX512 support for SVT-AV1 2022-10-24 14:12:41 +02:00
mrintrepide
86e25e0657 Update SVT-AV1 to v1.3.0 2022-10-24 14:12:41 +02:00
BtbN
2c3417550c Fix mfx disabling logic 2022-10-24 14:04:17 +02:00
BtbN
8fff2b2a8e Switch to onevpl by default
Closes #182
2022-10-23 22:06:09 +02:00
BtbN
f83799c36f Fix build of old glibc with default-pie gcc 2022-10-23 21:52:56 +02:00
BtbN
869e257511 Increase ct-ng log level 2022-10-23 21:52:56 +02:00
BtbN
b6b1d68d83 Revert "Bump linux64 minimum toolchain version"
This reverts commit 37f2a44634.
2022-10-23 19:20:49 +02:00
BtbN
37f2a44634 Bump linux64 minimum toolchain version
The old-old stuff finally started breaking things
2022-10-23 18:17:12 +02:00
BtbN
15babf288b Bump zlib 2022-10-23 17:17:33 +02:00
BtbN
5bd1b6a1e1 Bump ct-ng configs 2022-10-23 17:16:34 +02:00
BtbN
ce62fe2fee Fix use of deprecated set-output 2022-10-23 02:51:12 +02:00
BtbN
3b673c5169 Rename clashing but exported internal libass symbol 2022-10-19 23:33:57 +02:00
BtbN
36f1ff77a4 Disable Debug for mp3lame
c9e146e787

Closes #198
2022-10-10 13:12:36 +02:00
BtbN
bce41a5cce Disable liblzma/xz symbol versioning
Does not make a whole lot of sense for static builds to begin with,
and since 913ddc5572
it's outright broken for unknown reasons:

ld: libavcodec/libavcodec.so.59: version node not found for symbol lzma_get_progress@XZ_5.2.2
ld: failed to set dynamic section sizes: bad value
2022-10-06 14:33:36 +02:00
BtbN
17c294f25c Fix libplacebo build 2022-10-06 01:11:36 +02:00
BtbN
22440fc549 Update dependencies 2022-10-06 00:40:44 +02:00
BtbN
8bc793644e Fix rust cross-build. Again. 2022-09-12 23:47:09 +02:00
BtbN
7bb9176330 Fix rust build some more 2022-09-12 22:46:28 +02:00
BtbN
bd13b3b07d Windows fix breaks Linux-Build 2022-09-12 21:43:10 +02:00
BtbN
7d31bb2d06 Fix building latest rav1e 2022-09-12 21:27:14 +02:00
nanake
7689f421fd libssh: remove workaround
fixed as https://git.libssh.org/projects/libssh.git/commit/?id=17aec429f539517468446191e3da91df40e352d1

Signed-off-by: nanake <nanake@users.noreply.github.com>
2022-09-04 16:27:06 +02:00
BtbN
9210cc598d Add incremenal backoff and random delay to retry tool 2022-09-02 14:26:23 +02:00
BtbN
be519d8dc5 Update libdrm meson options 2022-09-01 19:22:44 +02:00
BtbN
0c02e8fe66 Rav1e still broken, revert update 2022-09-01 16:04:48 +02:00
BtbN
d7fe570326 Update dependencies 2022-09-01 15:49:07 +02:00
ZaquL
c9a6797b95
Bump uavs3d version
Old commit has been removed from history
2022-08-31 20:11:10 +02:00
ななけ
843642ae9b
Add libssh (#186)
Closes #158

Signed-off-by: nanake <nanake@users.noreply.github.com>
2022-08-21 18:56:41 +02:00
nanake
c406209c93 Add kvazaar
Closes #173

Signed-off-by: nanake <nanake@users.noreply.github.com>
2022-08-20 03:02:55 +02:00
BtbN
d4de0513b5 Only do one full build per target on PR builds 2022-08-18 10:23:25 +02:00
BtbN
512e0fe9b4 Work around weird library install overrides by onevpls build system 2022-08-17 20:50:30 +02:00
BtbN
5be16c7672 Downgrade rav1e to last working version 2022-08-16 17:11:32 +02:00
BtbN
8c1fe93e89 Update dependencies 2022-08-16 12:44:22 +02:00
BtbN
3ccb2f20b4 Add preliminary libvpl support 2022-08-12 14:29:44 +02:00
BtbN
11741adccb Retry flakey hg clone 2022-08-05 12:32:16 +02:00
BtbN
21f5e861bb Adjust build scripts after updates 2022-08-04 20:25:22 +02:00
BtbN
c7a73215c6 Update dependencies 2022-08-04 19:25:20 +02:00
n00mkrad
d1b90729b6 Update SVT-AV1 to 1.2 2022-08-03 17:16:46 +02:00
BtbN
fcc7e6d9fb Make local build script spin up a temporary registry 2022-08-02 20:37:17 +02:00
BtbN
ab020724b4 Bump opencore-amr to fix build 2022-08-02 20:10:01 +02:00
BtbN
dfdfc29311 Bump release from 5.0 to 5.1.
5.1 and 5.0 share the same ABI, so instead of cluttering the list even more, just bump to 5.1 entirely.
2022-07-24 16:44:13 +02:00
BtbN
64cc9bb50d More stuff is using libsamplerate now 2022-07-14 00:52:00 +02:00
BtbN
975fd8d3fd Add new sdl2 dependency to its .pc file 2022-07-14 00:16:48 +02:00
BtbN
13f25e0993 Revert libjxl update 2022-07-13 21:40:17 +02:00
BtbN
2c02757377 Fix build of xext on aarch64 2022-07-13 20:25:29 +02:00
BtbN
ce66686c5a Update dependencies 2022-07-13 17:08:17 +02:00
BtbN
f8f6de13db zimg depends on submodules now 2022-07-13 17:08:04 +02:00
BtbN
c065001c71 Serd switched build system 2022-07-13 17:07:25 +02:00
BtbN
801aa94c0e Add mercurial auto update support 2022-07-13 15:15:08 +02:00
BtbN
20ef083828 Build GMP from hg 2022-07-13 14:19:14 +02:00
BtbN
3ad7540a02 xvidcore appears to have fixed the lib name on Windows 2022-07-13 12:51:27 +02:00
BtbN
d1dd644b80 Make retry tool generic 2022-07-13 01:46:13 +02:00
BtbN
b7ca4432e1 Use explicit buildx builder with limited parallelism 2022-07-13 01:25:52 +02:00
BtbN
d726824cf5 Build fftw3 from git version 2022-07-13 00:23:51 +02:00
BtbN
5339e22d26 Migrate more scripts to git 2022-07-12 23:35:23 +02:00
BtbN
a74783a375 Add missing build dependencies to base Dockerfile 2022-07-12 23:35:23 +02:00
BtbN
42202d95bc Add auto update script and needed script metadata 2022-07-12 23:35:23 +02:00
BtbN
38fccdcd44 Unify repo/commit/rev variable names 2022-07-12 23:35:23 +02:00
BtbN
b9a3f7ffce Bump mbedtls again.
Not strictly neccesary, since the generated files are now being
generated anyway, but this makes version check happy.
2022-07-12 17:31:33 +02:00
BtbN
a4c1851a86 Add missing python dep 2022-07-11 21:43:48 +02:00
BtbN
f7882ac230 Add new required mbedtls build options 2022-07-11 21:36:32 +02:00
BtbN
ad7773b276 Bump mbedtls 2022-07-11 21:20:20 +02:00
BtbN
8a44955e4c Enable linuxarm64 for autobuilds 2022-07-06 17:03:11 +02:00
BtbN
9c766b0b33 Fix X11 and rust build on arm64 2022-07-06 14:55:26 +02:00
tsukumi
f29d3b5662 Add support for Linux aarch64 builds 2022-07-06 14:47:59 +02:00
BtbN
cfd9fde44f Update ct-ng config, use gcc 12 2022-07-06 13:25:52 +02:00
BtbN
7730280bd8 Update OpenSSL 2022-07-06 13:09:57 +02:00
BtbN
26daa8f380 Update OpenSSL 2022-06-29 15:58:02 +02:00
BtbN
7407f42884 Fix x265 .pc file 2022-06-13 23:57:53 +02:00
BtbN
03f047df3a Fix srt.pc file 2022-06-13 23:28:37 +02:00
BtbN
1e5dc2ed56 Fix build of libdrm 2022-06-13 21:15:38 +02:00
BtbN
a807ae4523 PA: use library, not static_library 2022-06-13 18:55:53 +02:00
BtbN
84385814bd Allow cancelling of manual jobs 2022-06-13 12:24:41 +02:00
BtbN
e57447b1c8 Fix publish release condition logic 2022-06-13 01:44:36 +02:00
BtbN
76aacb4b85 Actually make build step run 2022-06-13 00:32:46 +02:00
BtbN
7f6eef0e5f Add option to trigger ffmpeg-only build 2022-06-13 00:25:51 +02:00
nihil-admirari
dcbf2a77f3 Fix Windows-only or Linux-only builds 2022-06-12 21:01:08 +02:00
BtbN
c68820877b Update to Ubuntu 22.04 2022-06-12 13:24:06 +02:00
BtbN
8906c0968c Fix SDL2 .pc file some more 2022-06-10 01:00:16 +02:00
BtbN
c9635455a0 Bump libplacebo 2022-06-10 00:48:44 +02:00
BtbN
d7a253b168 libjxl fixed static library names 2022-06-10 00:09:03 +02:00
BtbN
42174778e7 Update dependencies 2022-06-09 22:21:18 +02:00
BtbN
48f83820fb
Fix unaligned stack access by highway in libjxl 2022-05-27 20:49:17 +02:00
bitraid
0d5fea8a18 Update SVT-AV1 to 1.1.0 2022-05-25 21:32:40 +02:00
BtbN
3be839badf
Create (lib)mfx compat symlink 2022-05-25 18:10:17 +02:00
BtbN
8573a684fb Bump OpenSSL 2022-05-12 12:45:00 +02:00
BtbN
22eebe8ea6
Attempt to fix libjxl 2022-05-07 21:42:25 +02:00
BtbN
ce9add44fb Try updating all action versions 2022-05-06 18:04:22 +02:00
BtbN
6fdf7bf4fa
Update libjxl
Attempt to fix the issue mentioned in https://github.com/BtbN/FFmpeg-Builds/issues/151
2022-05-05 16:16:34 +02:00
BtbN
ee8ea9129e Update mbedtls 2022-04-27 19:06:29 +02:00
BtbN
89c0e1b825
Update OpenCL-ICD-Loader
Should be fine to update now, ssee https://github.com/KhronosGroup/OpenCL-ICD-Loader/issues/170
2022-04-27 13:38:13 +02:00
shirt
e176c33861 Add aribb24 for ARIB caption support
Closes #152
2022-04-26 01:56:19 +02:00
BtbN
71b37989a5 Add libjxl for JPEG-XL support 2022-04-24 20:10:44 +02:00
BtbN
aef227430c Revert "Bump to new mbedtls major version"
Seems like FFmpeg itself is not ready for it...

This reverts commit 07084d6909.
2022-04-24 00:48:25 +02:00
BtbN
07084d6909 Bump to new mbedtls major version 2022-04-23 23:47:55 +02:00
BtbN
0795443336 Update dependencies 2022-04-23 21:49:20 +02:00
n00mkrad
787aa9ab39 Update to rc2
Update SVT-AV1 to 1.0.0-rc1
2022-04-15 19:15:48 +02:00
Ogün Karakuş
06e3063275 Update 20-zlib.sh 2022-03-30 16:28:30 +02:00
BtbN
22719ab0c0 Update OpenSSL 2022-03-15 20:42:46 +01:00
BtbN
760b8c3dec Update SVT-AV1
Closes #139
2022-03-14 16:33:35 +01:00
BtbN
dd3eefc083 Fix rubberband static build 2022-02-27 15:09:08 +01:00
BtbN
f0fba7b6b0 Restore old openh264 include prefix 2022-02-27 14:47:27 +01:00
BtbN
f899933422 Fixup OpenCL ICD Loader build 2022-02-27 01:26:55 +01:00
BtbN
0db921593e Update dependencies 2022-02-27 00:37:15 +01:00
BtbN
915cbaa276 Switch to workflow_dispatch 2022-02-15 18:10:39 +01:00
BtbN
015beac49a AviSynth+ also generates version header now 2022-02-14 23:20:17 +01:00
BtbN
c4ec85d577 Update ct-ng configs 2022-02-14 17:01:17 +01:00
BtbN
530851e039 Just generate a fake AviSynth version header to make configure happy... 2022-02-14 16:56:42 +01:00
BtbN
d45fc4a498 Manually generate AviSynth+ version header 2022-02-14 15:45:12 +01:00
BtbN
43be1babc3 Update AviSynth+ headers 2022-02-14 14:18:15 +01:00
BtbN
8c306d93d6 Update x264 2022-02-11 15:09:07 +01:00
BtbN
48671665e3 Update fdk-aac 2022-02-11 15:08:36 +01:00
BtbN
4d6aadd759 Explain "latest" build 2022-02-01 12:51:24 +01:00
BtbN
aae6f518b8 Make actual number of monthly releases consistent with readme 2022-02-01 12:15:46 +01:00
BtbN
c8d2ea0cb6 Update libvmaf 2022-01-23 22:26:39 +01:00
BtbN
2178fdcce9 Update SVTAV1 2022-01-22 19:56:56 +01:00
BtbN
30c0d7cae8 Parallelize repacking 2022-01-15 02:35:58 +01:00
BtbN
bf95872731 Fix renaming on exact tags 2022-01-14 23:50:28 +01:00
BtbN
c4b62f47f3 Build 5.0 2022-01-14 20:44:21 +01:00
BtbN
fcf104f942 Update libplacebo 2022-01-05 13:22:54 +01:00
BtbN
7320c777e8 Build 5.0 base images while freedesktop gitlab is working 2022-01-04 23:18:32 +01:00
BtbN
df8e5bf96f Try building Linux images again with aggressiv fetch retries 2022-01-04 19:49:05 +01:00
BtbN
d442ab7a0d Revert "Use cgit for freedesktop clones to work around broken gitlab"
This reverts commit 7cf9552af5.
2022-01-03 23:27:46 +01:00
BtbN
7cf9552af5 Use cgit for freedesktop clones to work around broken gitlab 2022-01-03 22:37:05 +01:00
BtbN
31f67b5dba 5.0 has been branched 2022-01-03 22:26:15 +01:00
BtbN
78895a8c49 Disable building new Linux target images until Freedesktop fixes their gitlab 2022-01-01 22:10:49 +01:00
BtbN
ba9757634a Update dependencies 2021-12-31 21:48:23 +01:00
BtbN
20d4bf3ef7 Give Github some time to process release deletion 2021-12-26 02:43:51 +01:00
BtbN
db4e36b8f1 More descriptively name latest release archives 2021-12-24 19:07:28 +01:00
BtbN
490e081b18 Maintain floating "latest"-Release 2021-12-24 16:49:28 +01:00
BtbN
b773ed8d71 Update PA to remove one fixup 2021-12-24 15:05:36 +01:00
BtbN
a209c6b6c5 Use non-hacky hidden shim symbols 2021-12-24 14:05:08 +01:00
BtbN
1571708edc No need to stay verbose 2021-12-21 02:12:10 +01:00
BtbN
c6b1f3a439 Hide trampoline symbols, lazy-load vaapi as well 2021-12-21 01:50:55 +01:00
BtbN
60c5fd666d Exclude additional glibc libraries from static linking 2021-12-20 22:02:14 +01:00
BtbN
1fcefa4a08 Use dynamic implib wrapper for all X11 libs 2021-12-20 17:32:39 +01:00
BtbN
3938a661be Add libglvnd 2021-12-20 15:44:35 +01:00
BtbN
4bb38fd65a Add PulseAudio support 2021-12-18 01:03:48 +01:00
BtbN
1466a4d8de Remove alsa again. Statically linking it is broken. 2021-12-12 00:29:13 +01:00
BtbN
5b6c9e28b3 Add alsa-lib 2021-12-11 01:57:56 +01:00
BtbN
6d3ce02bf7 Remove garbage from Windows-SDL pc-file 2021-12-09 01:45:15 +01:00
BtbN
12d1805f31 Separate Linux-Specific SDL cmake args 2021-12-09 01:11:24 +01:00
BtbN
5aa01f37e3 Use cmake for SDL, add more X11 dependencies 2021-12-09 00:48:19 +01:00
BtbN
3efcb24f50 Explicitly use buildx for local script 2021-12-07 17:59:11 +01:00
BtbN
bdf1cc507a Switch all base images to ct-ng based toolchains 2021-12-06 18:23:09 +01:00
BtbN
71994e145a Update linux64 ct-ng config 2021-12-06 14:18:36 +01:00
BtbN
d7aed6010e Add pkg-config files to shared archives
Closes #118
2021-12-05 23:30:34 +01:00
BtbN
7c29552e05 4.4 does not know about shaderc 2021-12-05 22:14:09 +01:00
BtbN
611b7a694c Revert "Try to work around buildkit bug"
Should be fixed upstream now

This reverts commit d1d43c42b0.
2021-12-05 21:47:21 +01:00
BtbN
8ccc3a04d5 Update dependencies 2021-12-05 21:10:10 +01:00
BtbN
6c878d3f15 Switch from glslang to shaderc 2021-12-05 20:45:45 +01:00
BtbN
2d6767df32 Add libopenmpt
Closes #113
2021-12-05 18:10:48 +01:00
nanake
cf8de5ee5e Add librist 2021-11-21 18:17:15 +01:00
BtbN
31dadc6444 Bump libplacebo 2021-11-14 14:49:59 +01:00
BtbN
b0416c8f36 Use make-based openh264 build system 2021-11-14 14:49:36 +01:00
BtbN
d1d43c42b0 Try to work around buildkit bug 2021-11-14 00:09:20 +01:00
BtbN
b84fcf068c Revert back to registry based caching 2021-11-13 19:16:18 +01:00
BtbN
c26651fc14 Make ffmpeg repo overridable 2021-11-13 17:54:05 +01:00
BtbN
482c7d7987 Use GitHub Actions Cache for image cache 2021-11-13 17:11:15 +01:00
BtbN
4b7c1ac9f9 Fix openh264 linux build 2021-11-13 17:10:50 +01:00
BtbN
634a3f68ac Add OpenH264 2021-11-13 16:47:42 +01:00
BtbN
78645acdd7 Limit parallelism of buildx builds 2021-11-13 16:25:52 +01:00
BtbN
1cd3f207c5 Re-Organize Vulkan build order a bit 2021-11-13 14:06:39 +01:00
BtbN
176e853bbe Add libplacebo 2021-11-13 00:48:45 +01:00
BtbN
6328ecc7fc
Fix typo in README 2021-11-08 23:47:49 +01:00
167 changed files with 5761 additions and 1124 deletions

2
.github/buildkit.toml vendored Normal file
View file

@ -0,0 +1,2 @@
[worker.oci]
max-parallelism = 4

View file

@ -5,114 +5,238 @@ on:
paths-ignore:
- '**.md'
- 'LICENSE'
repository_dispatch:
types: [build]
workflow_dispatch:
inputs:
doRelease:
description: 'Publish new release'
type: boolean
default: false
required: false
buildOnly:
description: 'Only build ffmpeg'
type: boolean
default: false
required: false
schedule:
- cron: '0 12 * * *'
env:
DOCKER_BUILDKIT: 1
HAVE_CLEANUP_PAT: ${{ secrets.CLEANUP_PAT != '' }}
jobs:
pre_check:
name: Pre Checks
if: ${{ github.event.inputs.buildOnly != 'true' }}
runs-on: ubuntu-latest
steps:
- name: Repo Check
run: |
if [[ "$GITHUB_REPOSITORY" != "BtbN/FFmpeg-Builds" ]]; then
echo "When forking this repository to make your own builds, you have to adjust this check."
echo "When doing so make sure to randomize the scheduled cron time above, in order to spread out the various build times as much as possible."
echo "This has been put in place due to the enormous amounts of traffic hundreds/thousands of parallel builds can cause on external infrastructure."
exit 1
fi
exit 0
build_base:
name: Build base image
if: ${{ github.event.inputs.buildOnly != 'true' }}
needs: pre_check
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@v3
- name: Install buildx
uses: docker/setup-buildx-action@v2
with:
config: .github/buildkit.toml
- name: Login to Docker
uses: docker/login-action@v1
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ github.token }}
- name: Image Name
id: imagename
run: echo "::set-output name=name::ghcr.io/${GITHUB_REPOSITORY,,}/base:latest"
- name: Build base image
run: |
T="$(echo -n ${{ github.token }} | sha256sum | head -c 64)" && echo -e "::add-mask::${T}\n::stop-commands::${T}"
docker build --pull --build-arg BUILDKIT_INLINE_CACHE=1 --cache-from ${{ steps.imagename.outputs.name }} --tag ${{ steps.imagename.outputs.name }} images/base
- name: Push base image
run: docker push ${{ steps.imagename.outputs.name }}
IMG="${GITHUB_REPOSITORY,,}/base"
DLIMG="${GITHUB_REPOSITORY,,}/dl_cache"
echo "name=ghcr.io/${IMG/ /-}" >> $GITHUB_OUTPUT
echo "rawname=${IMG/ /-}" >> $GITHUB_OUTPUT
echo "dlname=ghcr.io/${DLIMG/ /-}" >> $GITHUB_OUTPUT
echo "dlrawname=${DLIMG/ /-}" >> $GITHUB_OUTPUT
- name: Stop Commands
run: T="$(echo -n ${{ github.token }} | sha256sum | head -c 64)" && echo -e "::add-mask::${T}\n::stop-commands::${T}"
- name: Build target base image
uses: docker/build-push-action@v3
with:
context: images/base
pull: true
push: true
tags: ${{ steps.imagename.outputs.name }}:latest
cache-to: type=registry,mode=max,ref=${{ steps.imagename.outputs.name }}:cache
cache-from: type=registry,ref=${{ steps.imagename.outputs.name }}:cache
- name: Generate download cache Dockerfile
id: dl_cache
run: |
./generate.sh dl only
echo "dltagname=$(./util/get_dl_cache_tag.sh)" >> $GITHUB_OUTPUT
cat Dockerfile.dl
- name: Build download cache image
uses: docker/build-push-action@v3
with:
context: .
file: Dockerfile.dl
pull: true
push: true
tags: ${{ steps.imagename.outputs.dlname }}:${{ steps.dl_cache.outputs.dltagname }}
cache-to: type=registry,mode=max,ref=${{ steps.imagename.outputs.dlname }}:cache
cache-from: type=registry,ref=${{ steps.imagename.outputs.dlname }}:cache
- name: Cleanup
if: ${{ env.HAVE_CLEANUP_PAT == 'true' }}
continue-on-error: true
uses: BtbN/delete-untagged-ghcr-action@main
with:
token: ${{ secrets.CLEANUP_PAT }}
package_name: ${{ steps.imagename.outputs.rawname }}
repository_owner: ${{ github.repository_owner }}
repository: ${{ github.repository }}
owner_type: user
untagged_only: true
- name: Cleanup Download Cache
if: ${{ env.HAVE_CLEANUP_PAT == 'true' }}
continue-on-error: true
uses: BtbN/delete-untagged-ghcr-action@main
with:
token: ${{ secrets.CLEANUP_PAT }}
package_name: ${{ steps.imagename.outputs.dlrawname }}
repository_owner: ${{ github.repository_owner }}
repository: ${{ github.repository }}
owner_type: user
untagged_only: false
keep_latest: 20
build_target_bases:
name: Build target base image
if: ${{ github.event.inputs.buildOnly != 'true' }}
needs: build_base
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
target: [win64,linux64]
target: [win64,linux64,linuxarm64]
steps:
- name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@v3
- name: Install buildx
uses: docker/setup-buildx-action@v2
with:
config: .github/buildkit.toml
- name: Login to Docker
uses: docker/login-action@v1
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ github.token }}
- name: Image Name
id: imagename
run: echo "::set-output name=name::ghcr.io/${GITHUB_REPOSITORY,,}/base-${{ matrix.target }}:latest"
- name: Build target base image
run: |
T="$(echo -n ${{ github.token }} | sha256sum | head -c 64)" && echo -e "::add-mask::${T}\n::stop-commands::${T}"
docker build --pull --build-arg BUILDKIT_INLINE_CACHE=1 --build-arg GH_REPO=${GITHUB_REPOSITORY,,} --cache-from ${{ steps.imagename.outputs.name }} --tag ${{ steps.imagename.outputs.name }} images/base-${{ matrix.target }}
- name: Push target base image
run: docker push ${{ steps.imagename.outputs.name }}
IMG="${GITHUB_REPOSITORY,,}/base-${{ matrix.target }}"
echo "name=ghcr.io/${IMG/ /-}" >> $GITHUB_OUTPUT
echo "rawname=${IMG/ /-}" >> $GITHUB_OUTPUT
echo "gh_repo=${GITHUB_REPOSITORY,,}" >> $GITHUB_OUTPUT
- name: Stop Commands
run: T="$(echo -n ${{ github.token }} | sha256sum | head -c 64)" && echo -e "::add-mask::${T}\n::stop-commands::${T}"
- name: Build target base image
uses: docker/build-push-action@v3
with:
context: images/base-${{ matrix.target }}
pull: true
push: true
tags: ${{ steps.imagename.outputs.name }}:latest
cache-to: type=registry,mode=max,ref=${{ steps.imagename.outputs.name }}:cache
cache-from: type=registry,ref=${{ steps.imagename.outputs.name }}:cache
build-args: |
GH_REPO=ghcr.io/${{ steps.imagename.outputs.gh_repo }}
- name: Cleanup
if: ${{ env.HAVE_CLEANUP_PAT == 'true' }}
continue-on-error: true
uses: BtbN/delete-untagged-ghcr-action@main
with:
token: ${{ secrets.CLEANUP_PAT }}
package_name: ${{ steps.imagename.outputs.rawname }}
repository_owner: ${{ github.repository_owner }}
repository: ${{ github.repository }}
owner_type: user
untagged_only: true
build_targets:
name: Build target-variant image
if: ${{ github.event.inputs.buildOnly != 'true' }}
needs: build_target_bases
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
target: [win64,linux64]
variant: [gpl,lgpl,gpl 4.4,lgpl 4.4,gpl-shared,lgpl-shared,gpl-shared 4.4,lgpl-shared 4.4]
target: [win64,linux64,linuxarm64]
variant: [gpl,lgpl,gpl 4.4,gpl 5.1,gpl 6.0,lgpl 4.4,lgpl 5.1,lgpl 6.0,gpl-shared,lgpl-shared,gpl-shared 4.4,gpl-shared 5.1,gpl-shared 6.0,lgpl-shared 4.4,lgpl-shared 5.1,lgpl-shared 6.0]
steps:
- name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@v3
- name: Install buildx
uses: docker/setup-buildx-action@v1
- name: Generate Dockerfile
run: ./generate.sh ${{ matrix.target }} ${{ matrix.variant }}
uses: docker/setup-buildx-action@v2
with:
config: .github/buildkit.toml
- name: Login to Docker
uses: docker/login-action@v1
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ github.token }}
- name: Generate Dockerfile
run: ./generate.sh ${{ matrix.target }} ${{ matrix.variant }}
- name: Image Name
id: imagename
run: |
IMG="ghcr.io/${GITHUB_REPOSITORY,,}/${{ matrix.target }}-${{ matrix.variant }}"
echo "::set-output name=name::${IMG/ /-}:latest"
echo "::set-output name=cache_name::${IMG/ /-}:cache"
- name: Build variant image
run: |
T="$(echo -n ${{ github.token }} | sha256sum | head -c 64)" && echo -e "::add-mask::${T}\n::stop-commands::${T}"
docker buildx build \
--pull \
--tag ${{ steps.imagename.outputs.name }} \
--cache-to=type=registry,mode=max,ref=${{ steps.imagename.outputs.cache_name }} \
--cache-from=type=registry,ref=${{ steps.imagename.outputs.cache_name }} \
--output=type=image,push=true,name=${{ steps.imagename.outputs.name }} \
.
IMG="${GITHUB_REPOSITORY,,}/${{ matrix.target }}-${{ matrix.variant }}"
echo "name=ghcr.io/${IMG/ /-}" >> $GITHUB_OUTPUT
echo "rawname=${IMG/ /-}" >> $GITHUB_OUTPUT
- name: Stop Commands
run: T="$(echo -n ${{ github.token }} | sha256sum | head -c 64)" && echo -e "::add-mask::${T}\n::stop-commands::${T}"
- name: Build target base image
uses: docker/build-push-action@v3
with:
context: .
pull: true
push: true
tags: ${{ steps.imagename.outputs.name }}:latest
cache-to: type=registry,mode=max,ref=${{ steps.imagename.outputs.name }}:cache
cache-from: type=registry,ref=${{ steps.imagename.outputs.name }}:cache
- name: Cleanup
if: ${{ env.HAVE_CLEANUP_PAT == 'true' }}
continue-on-error: true
uses: BtbN/delete-untagged-ghcr-action@main
with:
token: ${{ secrets.CLEANUP_PAT }}
package_name: ${{ steps.imagename.outputs.rawname }}
repository_owner: ${{ github.repository_owner }}
repository: ${{ github.repository }}
owner_type: user
untagged_only: true
build_ffmpeg:
name: Build ffmpeg
if: ${{ ( github.event.inputs.buildOnly == 'true' && !cancelled() ) || success() }}
needs: build_targets
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
target: [win64,linux64]
variant: [gpl,lgpl,gpl 4.4,lgpl 4.4,gpl-shared,lgpl-shared,gpl-shared 4.4,lgpl-shared 4.4]
target: [win64,linux64,linuxarm64]
variant: [gpl,lgpl,gpl 4.4,gpl 5.1,gpl 6.0,lgpl 4.4,lgpl 5.1,lgpl 6.0,gpl-shared,lgpl-shared,gpl-shared 4.4,gpl-shared 5.1,gpl-shared 6.0,lgpl-shared 4.4,lgpl-shared 5.1,lgpl-shared 6.0]
steps:
- name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@v3
- name: Login to Docker
uses: docker/login-action@v1
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.actor }}
@ -122,20 +246,20 @@ jobs:
T="$(echo -n ${{ github.token }} | sha256sum | head -c 64)" && echo -e "::add-mask::${T}\n::stop-commands::${T}"
./build.sh ${{ matrix.target }} ${{ matrix.variant }}
- name: Upload artifacts
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v3
with:
name: ffmpeg
path: artifacts/*
publish_release:
name: Publish release
if: github.event_name != 'push'
if: ${{ !cancelled() && ( github.event_name == 'schedule' || github.event.inputs.doRelease == 'true' ) && needs.build_ffmpeg.result == 'success' }}
needs: build_ffmpeg
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@v3
- name: Download artifacts
uses: actions/download-artifact@v2
uses: actions/download-artifact@v3
with:
name: ffmpeg
path: artifacts
@ -143,10 +267,27 @@ jobs:
id: create_release
run: |
set -xe
NAME="Auto-Build $(date +'%Y-%m-%d %H:%M')"
shopt -s nullglob
RELDATE="$(date +'%Y-%m-%d %H:%M')"
NAME="Auto-Build $RELDATE"
TAGNAME="autobuild-$(date +'%Y-%m-%d-%H-%M')"
hub release create $(for a in artifacts/*.{zip,tar.xz}; do echo -a $a; done) -m "$NAME" -t "master" "$TAGNAME"
echo "::set-output name=tag_name::${TAGNAME}"
echo "tag_name=${TAGNAME}" >> $GITHUB_OUTPUT
echo "rel_date=${RELDATE}" >> $GITHUB_OUTPUT
env:
GITHUB_TOKEN: ${{ github.token }}
- name: Update Latest
run: |
set -xe
shopt -s nullglob
mkdir latest_artifacts
./util/repack_latest.sh latest_artifacts artifacts/*.{zip,tar.xz}
NAME="Latest Auto-Build (${{ steps.create_release.outputs.rel_date }})"
TAGNAME="latest"
hub release delete "$TAGNAME" || true
git push --delete origin "$TAGNAME" || true
sleep 15
hub release create $(for a in latest_artifacts/*; do echo -a $a; done) -m "$NAME" -t "master" "$TAGNAME"
env:
GITHUB_TOKEN: ${{ github.token }}
- name: Update Wiki

View file

@ -17,17 +17,35 @@ jobs:
strategy:
fail-fast: false
matrix:
target: [win64,linux64]
variant: [gpl,lgpl,gpl 4.4,lgpl 4.4,gpl-shared,lgpl-shared,gpl-shared 4.4,lgpl-shared 4.4]
target: [win64,linux64,linuxarm64]
variant: [lgpl,gpl 6.0,gpl 5.1,lgpl 6.0,lgpl 5.1,gpl-shared,lgpl-shared,gpl-shared 6.0,gpl-shared 5.1,lgpl-shared 6.0,lgpl-shared 5.1]
quickbuild: [1]
include:
- target: win64
variant: gpl
quickbuild: ''
- target: linux64
variant: gpl
quickbuild: ''
- target: linuxarm64
variant: gpl
quickbuild: ''
steps:
- name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@v3
- name: Install buildx
uses: docker/setup-buildx-action@v2
with:
config: .github/buildkit.toml
driver: docker
- name: Build Image
run: ./makeimage.sh ${{ matrix.target }} ${{ matrix.variant }}
env:
QUICKBUILD: ${{ matrix.quickbuild }}
- name: Build ffmpeg
run: ./build.sh ${{ matrix.target }} ${{ matrix.variant }}
- name: Upload artifacts
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v3
with:
name: ffmpeg
path: artifacts/*

3
.gitignore vendored
View file

@ -1,3 +1,4 @@
/Dockerfile
/Dockerfile*
/ffbuild/
/artifacts/
/.cache/

View file

@ -4,18 +4,21 @@ Static Windows (x86_64) and Linux (x86_64) Builds of ffmpeg master and latest re
Windows builds are targetting Windows 7 and newer.
Linux builds are targetting Ubuntu 16.04 (glibc-2.23 + linux-4.4) and anything more recent.
Linux (x86_64) builds are targetting Ubuntu 16.04 (glibc-2.23 + linux-4.4) and anything more recent.
Linux (arm64) builds are targetting Ubuntu 18.04 (glibc-2.27 + linux-4.15) and anything more recent.
## Auto-Builds
Builds run daily at 12:00 UTC (or GitHubs idea of that time) and are automatically released on success.
**Auto-Builds run ONLY for win64 and linux64. There are no win32/x86 auto-builds, though you can product win32 builds yourself following the instructions below.**
**Auto-Builds run ONLY for win64 and linux(arm)64. There are no win32/x86 auto-builds, though you can produce win32 builds yourself following the instructions below.**
### Release Retention Policy
- The last build of each month is kept for two years.
- The last 14 daily builds are kept.
- The special "latest" build floats and provides consistent URLs always pointing to the latest build.
## Package List
@ -31,11 +34,11 @@ Every file corresponds to its respective package.
### Build Image
* `./makeimage.sh target variant [addins]`
* `./makeimage.sh target variant [addin [addin] [addin] ...]`
### Build FFmpeg
* `./build.sh target variant [addins]`
* `./build.sh target variant [addin [addin] [addin] ...]`
On success, the resulting zip file will be in the `artifacts` subdir.
@ -45,13 +48,22 @@ Available targets:
* `win64` (x86_64 Windows)
* `win32` (x86 Windows)
* `linux64` (x86_64 Linux, glibc>=2.23, linux>=4.4)
* `linuxarm64` (arm64 (aarch64) Linux, glibc>=2.27, linux>=4.15)
Available:
The linuxarm64 target will not build some dependencies due to lack of arm64 (aarch64) architecture support or cross-compiling restrictions.
* `davs2` and `xavs2`: aarch64 support is broken.
* `libmfx` and `libva`: Library for Intel QSV, so there is no aarch64 support.
Available variants:
* `gpl` Includes all dependencies, even those that require full GPL instead of just LGPL.
* `lgpl` Lacking libraries that are GPL-only. Most prominently libx264 and libx265.
* `nonfree` Includes fdk-aac in addition to all the dependencies of the gpl variant.
* `gpl-shared` Same as gpl, but comes with the libav* family of shared libs instead of pure static executables.
* `lgpl-shared` Same again, but with the lgpl set of dependencies.
* `nonfree-shared` Same again, but with the nonfree set of dependencies.
All of those can be optionally combined with any combination of addins.
* `4.4` to build from the 4.4 release branch instead of master.
All of those can be optionally combined with any combination of addins:
* `4.4`/`5.0`/`5.1`/`6.0` to build from the respective release branch instead of master.
* `debug` to not strip debug symbols from the binaries. This increases the output size by about 250MB.
* `lto` build all dependencies and ffmpeg with -flto=auto (HIGHLY EXPERIMENTAL, broken for Windows, sometimes works for Linux)

2
addins/5.0.sh Normal file
View file

@ -0,0 +1,2 @@
#!/bin/bash
GIT_BRANCH="release/5.0"

2
addins/5.1.sh Normal file
View file

@ -0,0 +1,2 @@
#!/bin/bash
GIT_BRANCH="release/5.1"

2
addins/6.0.sh Normal file
View file

@ -0,0 +1,2 @@
#!/bin/bash
GIT_BRANCH="release/6.0"

7
addins/lto.sh Normal file
View file

@ -0,0 +1,7 @@
#!/bin/bash
FF_CONFIGURE="$FF_CONFIGURE --enable-lto"
ffbuild_dockeraddin() {
to_df 'ENV CFLAGS="$CFLAGS -flto=auto" CXXFLAGS="$CXXFLAGS -flto=auto" LDFLAGS="$LDFLAGS -flto=auto"'
to_df 'ENV FFBUILD_TARGET_FLAGS="$FFBUILD_TARGET_FLAGS --ar=${FFBUILD_TOOLCHAIN}-gcc-ar --nm=${FFBUILD_TOOLCHAIN}-gcc-nm --ranlib=${FFBUILD_TOOLCHAIN}-gcc-ranlib"'
}

View file

@ -50,6 +50,11 @@ rm -f "$TESTFILE"
rm -rf ffbuild
mkdir ffbuild
FFMPEG_REPO="${FFMPEG_REPO:-https://github.com/FFmpeg/FFmpeg.git}"
FFMPEG_REPO="${FFMPEG_REPO_OVERRIDE:-$FFMPEG_REPO}"
GIT_BRANCH="${GIT_BRANCH:-master}"
GIT_BRANCH="${GIT_BRANCH_OVERRIDE:-$GIT_BRANCH}"
BUILD_SCRIPT="$(mktemp)"
trap "rm -f -- '$BUILD_SCRIPT'" EXIT
@ -58,9 +63,8 @@ cat <<EOF >"$BUILD_SCRIPT"
cd /ffbuild
rm -rf ffmpeg prefix
git clone https://github.com/FFmpeg/FFmpeg.git ffmpeg
git clone --filter=blob:none --branch='$GIT_BRANCH' '$FFMPEG_REPO' ffmpeg
cd ffmpeg
git checkout $GIT_BRANCH
./configure --prefix=/ffbuild/prefix --pkg-config-flags="--static" \$FFBUILD_TARGET_FLAGS $FF_CONFIGURE \
--extra-cflags='$FF_CFLAGS' --extra-cxxflags='$FF_CXXFLAGS' \
@ -86,16 +90,16 @@ package_variant ffbuild/prefix "ffbuild/pkgroot/$BUILD_NAME"
cd ffbuild/pkgroot
if [[ "${TARGET}" == win* ]]; then
OUTPUT_FNAME="${BUILD_NAME}.zip"
zip -9 -r "${ARTIFACTS_PATH}/${OUTPUT_FNAME}" "$BUILD_NAME"
docker run --rm -i $TTY_ARG "${UIDARGS[@]}" -v "${ARTIFACTS_PATH}":/out -v "${PWD}/${BUILD_NAME}":"/${BUILD_NAME}" -w / "$IMAGE" zip -9 -r "/out/${OUTPUT_FNAME}" "$BUILD_NAME"
else
OUTPUT_FNAME="${BUILD_NAME}.tar.xz"
tar cJf "${ARTIFACTS_PATH}/${OUTPUT_FNAME}" "$BUILD_NAME"
docker run --rm -i $TTY_ARG "${UIDARGS[@]}" -v "${ARTIFACTS_PATH}":/out -v "${PWD}/${BUILD_NAME}":"/${BUILD_NAME}" -w / "$IMAGE" tar cJf "/out/${OUTPUT_FNAME}" "$BUILD_NAME"
fi
cd -
rm -rf ffbuild
if [[ -n "$GITHUB_ACTIONS" ]]; then
echo "::set-output name=build_name::${BUILD_NAME}"
echo "build_name=${BUILD_NAME}" >> "$GITHUB_OUTPUT"
echo "${OUTPUT_FNAME}" > "${ARTIFACTS_PATH}/${TARGET}-${VARIANT}${ADDINS_STR:+-}${ADDINS_STR}.txt"
fi

View file

@ -1,34 +1,95 @@
#!/bin/bash
set -xe
set -e
cd "$(dirname "$0")"
source util/vars.sh
rm -f Dockerfile
export LC_ALL=C.UTF-8
rm -f Dockerfile Dockerfile.{dl,final,dl.final}
layername() {
printf "layer-"
basename "$1" | sed 's/.sh$//'
}
exec_dockerstage() {
SCRIPT="$1"
(
SELF="$SCRIPT"
source "$SCRIPT"
ffbuild_enabled || exit 0
ffbuild_dockerstage || exit $?
)
}
to_df() {
_of="${TODF:-Dockerfile}"
printf "$@" >> "$_of"
echo >> "$_of"
}
default_dl() {
to_df "RUN git-mini-clone \"$SCRIPT_REPO\" \"$SCRIPT_COMMIT\" \"$1\""
}
###
### Generate download Dockerfile
###
exec_dockerstage_dl() {
SCRIPT="$1"
(
SELF="$SCRIPT"
SELFLAYER="$(layername "$STAGE")"
source "$SCRIPT"
ffbuild_dockerdl || exit $?
TODF="Dockerfile.dl.final" ffbuild_dockerlayer_dl || exit $?
)
}
export TODF="Dockerfile.dl"
to_df "FROM ${REGISTRY}/${REPO}/base:latest AS base"
to_df "ENV TARGET=$TARGET VARIANT=$VARIANT REPO=$REPO ADDINS_STR=$ADDINS_STR"
to_df "WORKDIR \$FFBUILD_DLDIR"
for STAGE in scripts.d/*.sh scripts.d/*/*.sh; do
to_df "FROM base AS $(layername "$STAGE")"
exec_dockerstage_dl "$STAGE"
done
to_df "FROM base AS intermediate"
cat Dockerfile.dl.final >> "$TODF"
rm Dockerfile.dl.final
to_df "FROM scratch"
to_df "COPY --from=intermediate /opt/ffdl/. /"
if [[ "$TARGET" == "dl" && "$VARIANT" == "only" ]]; then
exit 0
fi
DL_IMAGE="${DL_IMAGE_RAW}:$(./util/get_dl_cache_tag.sh)"
###
### Generate main Dockerfile
###
exec_dockerstage() {
SCRIPT="$1"
(
SELF="$SCRIPT"
source "$SCRIPT"
ffbuild_enabled || exit 0
to_df "ENV SELF=\"$SELF\""
ffbuild_dockerstage || exit $?
)
}
export TODF="Dockerfile"
to_df "FROM ${REGISTRY}/${REPO}/base-${TARGET}:latest AS base"
to_df "ENV TARGET=$TARGET VARIANT=$VARIANT REPO=$REPO ADDINS_STR=$ADDINS_STR"
for addin in "${ADDINS[@]}"; do
(
source addins/"${addin}.sh"
type ffbuild_dockeraddin &>/dev/null && ffbuild_dockeraddin || true
)
done
PREVLAYER="base"
for ID in $(ls -1d scripts.d/??-* | sed -s 's|^.*/\(..\).*|\1|' | sort -u); do
LAYER="layer-$ID"

View file

@ -1,9 +1,8 @@
ARG GH_REPO=btbn/ffmpeg-builds
FROM ghcr.io/$GH_REPO/base:latest
ARG GH_REPO=ghcr.io/btbn/ffmpeg-builds
FROM $GH_REPO/base:latest
ENV PATH="/opt/ct-ng/bin:${PATH}"
RUN --mount=src=ct-ng-config,dst=/.config \
git clone https://github.com/crosstool-ng/crosstool-ng.git /ct-ng && cd /ct-ng && \
git clone --filter=blob:none https://github.com/crosstool-ng/crosstool-ng.git /ct-ng && cd /ct-ng && \
./bootstrap && \
./configure --enable-local && \
make -j$(nproc) && \
@ -20,26 +19,43 @@ RUN \
-and -not -name 'libdl.*' \
-and -not -name 'libc.*' \
-and -not -name 'libm.*' \
-and -not -name 'libmvec.*' \
-and -not -name 'librt.*' \
-and -not -name 'libpthread.*' \
-delete && \
find /opt/ct-ng \
-name 'libdl.a' \
-or -name 'libc.a' \
-or -name 'libm.a' \
-delete
-or -name 'libmvec.a' \
-or -name 'librt.a' \
-or -name 'libpthread.a' \
-delete && \
mkdir /opt/ffbuild
ADD toolchain.cmake /toolchain.cmake
ADD cross.meson /cross.meson
ENV FFBUILD_TARGET_FLAGS="--pkg-config=pkg-config --cross-prefix=x86_64-ffbuild-linux-gnu- --arch=x86_64 --target-os=linux" \
FFBUILD_TOOLCHAIN=x86_64-ffbuild-linux-gnu \
FFBUILD_CROSS_PREFIX="x86_64-ffbuild-linux-gnu-" \
ADD gen-implib.sh /usr/bin/gen-implib
RUN git clone --filter=blob:none --depth=1 https://github.com/yugr/Implib.so /opt/implib
ENV FFBUILD_TOOLCHAIN=x86_64-ffbuild-linux-gnu
ENV PATH="/opt/ct-ng/bin:${PATH}" \
FFBUILD_TARGET_FLAGS="--pkg-config=pkg-config --cross-prefix=${FFBUILD_TOOLCHAIN}- --arch=x86_64 --target-os=linux" \
FFBUILD_CROSS_PREFIX="${FFBUILD_TOOLCHAIN}-" \
FFBUILD_RUST_TARGET="x86_64-unknown-linux-gnu" \
FFBUILD_PREFIX=/opt/ffbuild \
FFBUILD_CMAKE_TOOLCHAIN=/toolchain.cmake \
PKG_CONFIG=pkg-config \
PKG_CONFIG_LIBDIR=/opt/ffbuild/lib/pkgconfig:/opt/ffbuild/share/pkgconfig \
CFLAGS="-static-libgcc -static-libstdc++ -I/opt/ffbuild/include -O2 -pipe -fPIC -DPIC -D_FORTIFY_SOURCE=2 -fstack-protector-strong -pthread" \
CXXFLAGS="-static-libgcc -static-libstdc++ -I/opt/ffbuild/include -O2 -pipe -fPIC -DPIC -D_FORTIFY_SOURCE=2 -fstack-protector-strong -pthread" \
LDFLAGS="-static-libgcc -static-libstdc++ -L/opt/ffbuild/lib -O2 -pipe -fstack-protector-strong -Wl,-z,relro,-z,now -pthread -lm" \
CC="${FFBUILD_TOOLCHAIN}-gcc" \
CXX="${FFBUILD_TOOLCHAIN}-g++" \
LD="${FFBUILD_TOOLCHAIN}-ld" \
AR="${FFBUILD_TOOLCHAIN}-gcc-ar" \
RANLIB="${FFBUILD_TOOLCHAIN}-gcc-ranlib" \
NM="${FFBUILD_TOOLCHAIN}-gcc-nm" \
CFLAGS="-static-libgcc -static-libstdc++ -I/opt/ffbuild/include -O2 -pipe -fPIC -DPIC -D_FORTIFY_SOURCE=2 -fstack-protector-strong -fstack-clash-protection -pthread" \
CXXFLAGS="-static-libgcc -static-libstdc++ -I/opt/ffbuild/include -O2 -pipe -fPIC -DPIC -D_FORTIFY_SOURCE=2 -fstack-protector-strong -fstack-clash-protection -pthread" \
LDFLAGS="-static-libgcc -static-libstdc++ -L/opt/ffbuild/lib -O2 -pipe -fstack-protector-strong -fstack-clash-protection -Wl,-z,relro,-z,now -pthread -lm" \
STAGE_CFLAGS="-fvisibility=hidden -fno-semantic-interposition" \
STAGE_CXXFLAGS="-fvisibility=hidden -fno-semantic-interposition"

View file

@ -2,7 +2,8 @@
c = 'x86_64-ffbuild-linux-gnu-gcc'
cpp = 'x86_64-ffbuild-linux-gnu-g++'
ld = 'x86_64-ffbuild-linux-gnu-ld'
ar = 'x86_64-ffbuild-linux-gnu-ar'
ar = 'x86_64-ffbuild-linux-gnu-gcc-ar'
ranlib = 'x86_64-ffbuild-linux-gnu-gcc-ranlib'
strip = 'x86_64-ffbuild-linux-gnu-strip'
[host_machine]

View file

@ -1,6 +1,6 @@
#
# Automatically generated file; DO NOT EDIT.
# crosstool-NG 1.24.0.479_aa52493 Configuration
# crosstool-NG 1.25.0.196_227d99d Configuration
#
CT_CONFIGURE_has_static_link=y
CT_CONFIGURE_has_cxx11=y
@ -8,16 +8,18 @@ CT_CONFIGURE_has_wget=y
CT_CONFIGURE_has_curl=y
CT_CONFIGURE_has_meson=y
CT_CONFIGURE_has_ninja=y
CT_CONFIGURE_has_rsync=y
CT_CONFIGURE_has_make_3_81_or_newer=y
CT_CONFIGURE_has_make_4_0_or_newer=y
CT_CONFIGURE_has_libtool_2_4_or_newer=y
CT_CONFIGURE_has_libtoolize_2_4_or_newer=y
CT_CONFIGURE_has_autoconf_2_65_or_newer=y
CT_CONFIGURE_has_autoreconf_2_65_or_newer=y
CT_CONFIGURE_has_automake_1_15_or_newer=y
CT_CONFIGURE_has_autoconf_2_71_or_newer=y
CT_CONFIGURE_has_autoreconf_2_71_or_newer=y
CT_CONFIGURE_has_automake_1_16_or_newer=y
CT_CONFIGURE_has_gnu_m4_1_4_12_or_newer=y
CT_CONFIGURE_has_python_3_4_or_newer=y
CT_CONFIGURE_has_bison_2_7_or_newer=y
CT_CONFIGURE_has_bison_3_0_4_or_newer=y
CT_CONFIGURE_has_python=y
CT_CONFIGURE_has_svn=y
CT_CONFIGURE_has_git=y
@ -26,11 +28,11 @@ CT_CONFIGURE_has_sha1sum=y
CT_CONFIGURE_has_sha256sum=y
CT_CONFIGURE_has_sha512sum=y
CT_CONFIGURE_has_install_with_strip_program=y
CT_VERSION="1.24.0.479_aa52493"
CT_VERSION="1.25.0.196_227d99d"
CT_VCHECK=""
CT_CONFIG_VERSION_ENV="3"
CT_CONFIG_VERSION_CURRENT="3"
CT_CONFIG_VERSION="3"
CT_CONFIG_VERSION_ENV="4"
CT_CONFIG_VERSION_CURRENT="4"
CT_CONFIG_VERSION="4"
CT_MODULES=y
#
@ -44,6 +46,7 @@ CT_OBSOLETE=y
CT_EXPERIMENTAL=y
CT_ALLOW_BUILD_AS_ROOT=y
CT_ALLOW_BUILD_AS_ROOT_SURE=y
# CT_ENABLE_EXPERIMENTAL_BUNDLED_PATCHES is not set
# CT_DEBUG_CT is not set
#
@ -62,6 +65,7 @@ CT_REMOVE_DOCS=y
# CT_PREFIX_DIR_RO is not set
CT_STRIP_HOST_TOOLCHAIN_EXECUTABLES=y
CT_STRIP_TARGET_TOOLCHAIN_EXECUTABLES=y
# CT_TARBALL_RESULT is not set
#
# Downloading
@ -119,12 +123,11 @@ CT_CONFIG_SHELL="${bash}"
# CT_LOG_ERROR is not set
# CT_LOG_WARN is not set
# CT_LOG_INFO is not set
CT_LOG_EXTRA=y
# CT_LOG_EXTRA is not set
# CT_LOG_ALL is not set
# CT_LOG_DEBUG is not set
CT_LOG_LEVEL_MAX="EXTRA"
CT_LOG_DEBUG=y
CT_LOG_LEVEL_MAX="DEBUG"
# CT_LOG_SEE_TOOLS_WARN is not set
# CT_LOG_PROGRESS_BAR is not set
# CT_LOG_TO_FILE is not set
# end of Paths and misc options
@ -135,7 +138,9 @@ CT_LOG_LEVEL_MAX="EXTRA"
# CT_ARCH_ARC is not set
# CT_ARCH_ARM is not set
# CT_ARCH_AVR is not set
# CT_ARCH_BPF is not set
# CT_ARCH_C6X is not set
# CT_ARCH_LOONGARCH is not set
# CT_ARCH_M68K is not set
# CT_ARCH_MICROBLAZE is not set
# CT_ARCH_MIPS is not set
@ -160,7 +165,7 @@ CT_ARCH_X86_SHOW=y
# Options for x86
#
CT_ARCH_X86_PKG_KSYM=""
CT_ALL_ARCH_CHOICES="ALPHA ARC ARM AVR C6X M68K MICROBLAZE MIPS MOXIE MSP430 NIOS2 POWERPC PRU RISCV S390 SH SPARC X86 XTENSA"
CT_ALL_ARCH_CHOICES="ALPHA ARC ARM AVR BPF C6X LOONGARCH M68K MICROBLAZE MIPS MOXIE MSP430 NIOS2 POWERPC PRU RISCV S390 SH SPARC X86 XTENSA"
CT_ARCH_SUFFIX=""
# CT_OMIT_TARGET_VENDOR is not set
@ -170,6 +175,7 @@ CT_ARCH_SUFFIX=""
# CT_MULTILIB is not set
CT_DEMULTILIB=y
CT_ARCH_USE_MMU=y
CT_ARCH_SUPPORTS_LIBSANITIZER=y
CT_ARCH_SUPPORTS_32=y
CT_ARCH_SUPPORTS_64=y
CT_ARCH_DEFAULT_32=y
@ -263,6 +269,15 @@ CT_LINUX_PATCH_GLOBAL=y
# CT_LINUX_PATCH_LOCAL_BUNDLED is not set
# CT_LINUX_PATCH_NONE is not set
CT_LINUX_PATCH_ORDER="global"
# CT_LINUX_V_6_3 is not set
# CT_LINUX_V_6_2 is not set
# CT_LINUX_V_6_1 is not set
# CT_LINUX_V_6_0 is not set
# CT_LINUX_V_5_19 is not set
# CT_LINUX_V_5_18 is not set
# CT_LINUX_V_5_17 is not set
# CT_LINUX_V_5_16 is not set
# CT_LINUX_V_5_15 is not set
# CT_LINUX_V_5_14 is not set
# CT_LINUX_V_5_13 is not set
# CT_LINUX_V_5_12 is not set
@ -299,18 +314,27 @@ CT_LINUX_V_4_4=y
# CT_LINUX_V_3_4 is not set
# CT_LINUX_V_3_2 is not set
# CT_LINUX_V_2_6_32 is not set
CT_LINUX_VERSION="4.4.283"
CT_LINUX_VERSION="4.4.302"
CT_LINUX_MIRRORS="$(CT_Mirrors kernel.org linux ${CT_LINUX_VERSION})"
CT_LINUX_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_LINUX_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
CT_LINUX_ARCHIVE_FORMATS=".tar.xz .tar.gz"
CT_LINUX_SIGNATURE_FORMAT="unpacked/.sign"
CT_LINUX_5_19_or_older=y
CT_LINUX_older_than_5_19=y
CT_LINUX_5_12_or_older=y
CT_LINUX_older_than_5_12=y
CT_LINUX_5_5_or_older=y
CT_LINUX_older_than_5_5=y
CT_LINUX_5_3_or_older=y
CT_LINUX_older_than_5_3=y
CT_LINUX_4_8_or_older=y
CT_LINUX_older_than_4_8=y
CT_LINUX_later_than_3_7=y
CT_LINUX_3_7_or_later=y
CT_LINUX_later_than_3_2=y
CT_LINUX_3_2_or_later=y
CT_KERNEL_DEP_RSYNC=y
CT_KERNEL_LINUX_VERBOSITY_0=y
# CT_KERNEL_LINUX_VERBOSITY_1 is not set
# CT_KERNEL_LINUX_VERBOSITY_2 is not set
@ -353,7 +377,10 @@ CT_BINUTILS_PATCH_GLOBAL=y
# CT_BINUTILS_PATCH_LOCAL_BUNDLED is not set
# CT_BINUTILS_PATCH_NONE is not set
CT_BINUTILS_PATCH_ORDER="global"
CT_BINUTILS_V_2_37=y
CT_BINUTILS_V_2_40=y
# CT_BINUTILS_V_2_39 is not set
# CT_BINUTILS_V_2_38 is not set
# CT_BINUTILS_V_2_37 is not set
# CT_BINUTILS_V_2_36 is not set
# CT_BINUTILS_V_2_35 is not set
# CT_BINUTILS_V_2_34 is not set
@ -365,12 +392,14 @@ CT_BINUTILS_V_2_37=y
# CT_BINUTILS_V_2_28 is not set
# CT_BINUTILS_V_2_27 is not set
# CT_BINUTILS_V_2_26 is not set
CT_BINUTILS_VERSION="2.37"
CT_BINUTILS_VERSION="2.40"
CT_BINUTILS_MIRRORS="$(CT_Mirrors GNU binutils) $(CT_Mirrors sourceware binutils/releases)"
CT_BINUTILS_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_BINUTILS_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
CT_BINUTILS_ARCHIVE_FORMATS=".tar.xz .tar.bz2 .tar.gz"
CT_BINUTILS_SIGNATURE_FORMAT="packed/.sig"
CT_BINUTILS_later_than_2_39=y
CT_BINUTILS_2_39_or_later=y
CT_BINUTILS_later_than_2_30=y
CT_BINUTILS_2_30_or_later=y
CT_BINUTILS_later_than_2_27=y
@ -390,6 +419,7 @@ CT_BINUTILS_LINKERS_LIST="ld"
CT_BINUTILS_LINKER_DEFAULT="bfd"
CT_BINUTILS_PLUGINS=y
CT_BINUTILS_RELRO=m
CT_BINUTILS_DETERMINISTIC_ARCHIVES=y
CT_BINUTILS_EXTRA_CONFIG_ARRAY=""
# CT_BINUTILS_FOR_TARGET is not set
CT_ALL_BINUTILS_CHOICES="BINUTILS"
@ -398,13 +428,11 @@ CT_ALL_BINUTILS_CHOICES="BINUTILS"
#
# C-library
#
# CT_LIBC_BIONIC is not set
CT_LIBC_GLIBC=y
# CT_LIBC_MUSL is not set
# CT_LIBC_UCLIBC is not set
# CT_LIBC_UCLIBC_NG is not set
CT_LIBC="glibc"
CT_LIBC_CHOICE_KSYM="GLIBC"
CT_THREADS="nptl"
CT_LIBC_GLIBC_SHOW=y
#
@ -426,6 +454,9 @@ CT_GLIBC_PATCH_GLOBAL=y
# CT_GLIBC_PATCH_LOCAL_BUNDLED is not set
# CT_GLIBC_PATCH_NONE is not set
CT_GLIBC_PATCH_ORDER="global"
# CT_GLIBC_V_2_37 is not set
# CT_GLIBC_V_2_36 is not set
# CT_GLIBC_V_2_35 is not set
# CT_GLIBC_V_2_34 is not set
# CT_GLIBC_V_2_33 is not set
# CT_GLIBC_V_2_32 is not set
@ -440,15 +471,22 @@ CT_GLIBC_PATCH_ORDER="global"
CT_GLIBC_V_2_23=y
# CT_GLIBC_V_2_19 is not set
# CT_GLIBC_V_2_17 is not set
# CT_GLIBC_V_2_12_1 is not set
CT_GLIBC_VERSION="2.23"
CT_GLIBC_MIRRORS="$(CT_Mirrors GNU glibc)"
CT_GLIBC_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_GLIBC_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
CT_GLIBC_ARCHIVE_FORMATS=".tar.xz .tar.bz2 .tar.gz"
CT_GLIBC_SIGNATURE_FORMAT="packed/.sig"
CT_GLIBC_2_37_or_older=y
CT_GLIBC_older_than_2_37=y
CT_GLIBC_2_36_or_older=y
CT_GLIBC_older_than_2_36=y
CT_GLIBC_2_34_or_older=y
CT_GLIBC_older_than_2_34=y
CT_GLIBC_2_32_or_older=y
CT_GLIBC_older_than_2_32=y
CT_GLIBC_2_31_or_older=y
CT_GLIBC_older_than_2_31=y
CT_GLIBC_2_30_or_older=y
CT_GLIBC_older_than_2_30=y
CT_GLIBC_2_29_or_older=y
@ -476,13 +514,15 @@ CT_GLIBC_DEP_BINUTILS=y
CT_GLIBC_DEP_GCC=y
CT_GLIBC_DEP_PYTHON=y
CT_GLIBC_SPARC_ALLOW_V7=y
CT_THREADS="nptl"
CT_GLIBC_HAS_LIBIDN_ADDON=y
# CT_GLIBC_USE_LIBIDN_ADDON is not set
CT_GLIBC_NO_SPARC_V8=y
CT_GLIBC_HAS_OBSOLETE_RPC=y
CT_GLIBC_EXTRA_CONFIG_ARRAY="--with-pic"
CT_GLIBC_CONFIGPARMS=""
CT_GLIBC_EXTRA_CFLAGS="-fPIC -DPIC"
# CT_GLIBC_ENABLE_DEBUG is not set
CT_GLIBC_EXTRA_CFLAGS="-fPIC -DPIC -no-pie"
CT_GLIBC_ENABLE_OBSOLETE_RPC=y
# CT_GLIBC_ENABLE_FORTIFIED_BUILD is not set
# CT_GLIBC_DISABLE_VERSIONING is not set
@ -492,9 +532,9 @@ CT_GLIBC_FORCE_UNWIND=y
# CT_GLIBC_KERNEL_VERSION_NONE is not set
CT_GLIBC_KERNEL_VERSION_AS_HEADERS=y
# CT_GLIBC_KERNEL_VERSION_CHOSEN is not set
CT_GLIBC_MIN_KERNEL="4.4.283"
CT_GLIBC_MIN_KERNEL="4.4.302"
CT_GLIBC_ENABLE_COMMON_FLAG=y
CT_ALL_LIBC_CHOICES="AVR_LIBC BIONIC GLIBC MINGW_W64 MOXIEBOX MUSL NEWLIB NONE UCLIBC"
CT_ALL_LIBC_CHOICES="AVR_LIBC GLIBC MINGW_W64 MOXIEBOX MUSL NEWLIB NONE PICOLIBC UCLIBC_NG"
CT_LIBC_SUPPORT_THREADS_ANY=y
CT_LIBC_SUPPORT_THREADS_NATIVE=y
@ -509,12 +549,12 @@ CT_LIBC_XLDD=y
#
# C compiler
#
CT_CC_CORE_PASSES_NEEDED=y
CT_CC_CORE_PASS_1_NEEDED=y
CT_CC_CORE_PASS_2_NEEDED=y
CT_CC_CORE_NEEDED=y
CT_CC_SUPPORT_CXX=y
CT_CC_SUPPORT_FORTRAN=y
CT_CC_SUPPORT_ADA=y
CT_CC_SUPPORT_D=y
CT_CC_SUPPORT_JIT=y
CT_CC_SUPPORT_OBJC=y
CT_CC_SUPPORT_OBJCXX=y
CT_CC_SUPPORT_GOLANG=y
@ -543,7 +583,9 @@ CT_GCC_PATCH_GLOBAL=y
# CT_GCC_PATCH_LOCAL_BUNDLED is not set
# CT_GCC_PATCH_NONE is not set
CT_GCC_PATCH_ORDER="global"
CT_GCC_V_11=y
CT_GCC_V_13=y
# CT_GCC_V_12 is not set
# CT_GCC_V_11 is not set
# CT_GCC_V_10 is not set
# CT_GCC_V_9 is not set
# CT_GCC_V_8 is not set
@ -551,12 +593,16 @@ CT_GCC_V_11=y
# CT_GCC_V_6 is not set
# CT_GCC_V_5 is not set
# CT_GCC_V_4_9 is not set
CT_GCC_VERSION="11.2.0"
CT_GCC_VERSION="13.1.0"
CT_GCC_MIRRORS="$(CT_Mirrors GNU gcc/gcc-${CT_GCC_VERSION}) $(CT_Mirrors sourceware gcc/releases/gcc-${CT_GCC_VERSION})"
CT_GCC_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_GCC_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
CT_GCC_ARCHIVE_FORMATS=".tar.xz .tar.gz"
CT_GCC_SIGNATURE_FORMAT=""
CT_GCC_later_than_13=y
CT_GCC_13_or_later=y
CT_GCC_later_than_12=y
CT_GCC_12_or_later=y
CT_GCC_later_than_11=y
CT_GCC_11_or_later=y
CT_GCC_later_than_10=y
@ -573,13 +619,11 @@ CT_GCC_later_than_5=y
CT_GCC_5_or_later=y
CT_GCC_later_than_4_9=y
CT_GCC_4_9_or_later=y
CT_GCC_later_than_4_8=y
CT_GCC_4_8_or_later=y
CT_CC_GCC_ENABLE_PLUGINS=y
CT_CC_GCC_HAS_LIBMPX=y
CT_CC_GCC_ENABLE_CXX_FLAGS=""
CT_CC_GCC_CORE_EXTRA_CONFIG_ARRAY="--enable-host-shared --enable-default-ssp"
CT_CC_GCC_EXTRA_CONFIG_ARRAY="--enable-host-shared --enable-default-ssp"
CT_CC_GCC_EXTRA_CONFIG_ARRAY="--enable-host-shared --enable-default-ssp --with-build-config=bootstrap-lto-lean --enable-link-serialization=2"
# CT_CC_GCC_STATIC_LIBSTDCXX is not set
# CT_CC_GCC_SYSTEM_ZLIB is not set
CT_CC_GCC_CONFIG_TLS=m
@ -594,6 +638,7 @@ CT_CC_GCC_LTO_ZSTD=m
#
# Settings for libraries running on target
#
CT_CC_GCC_ENABLE_DEFAULT_PIE=y
# CT_CC_GCC_ENABLE_TARGET_OPTSPACE is not set
# CT_CC_GCC_LIBMUDFLAP is not set
CT_CC_GCC_LIBGOMP=y
@ -601,6 +646,7 @@ CT_CC_GCC_LIBSSP=m
# CT_CC_GCC_LIBQUADMATH is not set
# CT_CC_GCC_LIBSANITIZER is not set
# CT_CC_GCC_LIBMPX is not set
# CT_CC_GCC_LIBSTDCXX_VERBOSE is not set
#
# Misc. obscure options.
@ -627,8 +673,10 @@ CT_ALL_CC_CHOICES="GCC"
# Additional supported languages:
#
CT_CC_LANG_CXX=y
CT_CC_LANG_FORTRAN=y
# CT_CC_LANG_FORTRAN is not set
# CT_CC_LANG_JIT is not set
# CT_CC_LANG_ADA is not set
# CT_CC_LANG_D is not set
# CT_CC_LANG_OBJC is not set
# CT_CC_LANG_OBJCXX is not set
# CT_CC_LANG_GOLANG is not set
@ -665,14 +713,30 @@ CT_GETTEXT_PATCH_GLOBAL=y
# CT_GETTEXT_PATCH_LOCAL_BUNDLED is not set
# CT_GETTEXT_PATCH_NONE is not set
CT_GETTEXT_PATCH_ORDER="global"
CT_GETTEXT_V_0_20_1=y
CT_GETTEXT_V_0_21=y
# CT_GETTEXT_V_0_20_1 is not set
# CT_GETTEXT_V_0_19_8_1 is not set
CT_GETTEXT_VERSION="0.20.1"
CT_GETTEXT_VERSION="0.21"
CT_GETTEXT_MIRRORS="$(CT_Mirrors GNU gettext)"
CT_GETTEXT_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_GETTEXT_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
CT_GETTEXT_ARCHIVE_FORMATS=".tar.xz .tar.gz"
CT_GETTEXT_SIGNATURE_FORMAT="packed/.sig"
CT_GETTEXT_0_21_or_later=y
CT_GETTEXT_0_21_or_older=y
CT_GETTEXT_INCOMPATIBLE_WITH_UCLIBC_NG=y
#
# This version of gettext is not compatible with uClibc-NG. Select
#
#
# a different version if uClibc-NG is used on the target or (in a
#
#
# Canadian cross build) on the host.
#
CT_COMP_LIBS_GMP=y
CT_COMP_LIBS_GMP_PKG_KSYM="GMP"
CT_GMP_DIR_NAME="gmp"
@ -695,11 +759,6 @@ CT_GMP_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_GMP_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
CT_GMP_ARCHIVE_FORMATS=".tar.xz .tar.lz .tar.bz2"
CT_GMP_SIGNATURE_FORMAT="packed/.sig"
CT_GMP_later_than_5_1_0=y
CT_GMP_5_1_0_or_later=y
CT_GMP_later_than_5_0_0=y
CT_GMP_5_0_0_or_later=y
CT_GMP_REQUIRE_5_0_0_or_later=y
CT_COMP_LIBS_ISL=y
CT_COMP_LIBS_ISL_PKG_KSYM="ISL"
CT_ISL_DIR_NAME="isl"
@ -714,7 +773,10 @@ CT_ISL_PATCH_GLOBAL=y
# CT_ISL_PATCH_LOCAL_BUNDLED is not set
# CT_ISL_PATCH_NONE is not set
CT_ISL_PATCH_ORDER="global"
CT_ISL_V_0_24=y
CT_ISL_V_0_26=y
# CT_ISL_V_0_25 is not set
# CT_ISL_V_0_24 is not set
# CT_ISL_V_0_23 is not set
# CT_ISL_V_0_22 is not set
# CT_ISL_V_0_21 is not set
# CT_ISL_V_0_20 is not set
@ -723,8 +785,9 @@ CT_ISL_V_0_24=y
# CT_ISL_V_0_17 is not set
# CT_ISL_V_0_16 is not set
# CT_ISL_V_0_15 is not set
CT_ISL_VERSION="0.24"
CT_ISL_MIRRORS="https://ftp.halifax.rwth-aachen.de/gentoo/distfiles"
# CT_ISL_V_0_11 is not set
CT_ISL_VERSION="0.26"
CT_ISL_MIRRORS="https://libisl.sourceforge.io"
CT_ISL_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_ISL_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
CT_ISL_ARCHIVE_FORMATS=".tar.xz .tar.bz2 .tar.gz"
@ -733,15 +796,6 @@ CT_ISL_later_than_0_18=y
CT_ISL_0_18_or_later=y
CT_ISL_later_than_0_15=y
CT_ISL_0_15_or_later=y
CT_ISL_REQUIRE_0_15_or_later=y
CT_ISL_later_than_0_14=y
CT_ISL_0_14_or_later=y
CT_ISL_REQUIRE_0_14_or_later=y
CT_ISL_later_than_0_13=y
CT_ISL_0_13_or_later=y
CT_ISL_later_than_0_12=y
CT_ISL_0_12_or_later=y
CT_ISL_REQUIRE_0_12_or_later=y
# CT_COMP_LIBS_LIBELF is not set
CT_COMP_LIBS_LIBICONV=y
CT_COMP_LIBS_LIBICONV_PKG_KSYM="LIBICONV"
@ -782,7 +836,7 @@ CT_MPC_PATCH_ORDER="global"
CT_MPC_V_1_2=y
# CT_MPC_V_1_1 is not set
# CT_MPC_V_1_0 is not set
CT_MPC_VERSION="1.2.0"
CT_MPC_VERSION="1.2.1"
CT_MPC_MIRRORS="http://www.multiprecision.org/downloads $(CT_Mirrors GNU mpc)"
CT_MPC_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_MPC_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
@ -815,9 +869,6 @@ CT_MPFR_ARCHIVE_FORMATS=".tar.xz .tar.bz2 .tar.gz .zip"
CT_MPFR_SIGNATURE_FORMAT="packed/.asc"
CT_MPFR_later_than_4_0_0=y
CT_MPFR_4_0_0_or_later=y
CT_MPFR_later_than_3_0_0=y
CT_MPFR_3_0_0_or_later=y
CT_MPFR_REQUIRE_3_0_0_or_later=y
CT_COMP_LIBS_NCURSES=y
CT_COMP_LIBS_NCURSES_PKG_KSYM="NCURSES"
CT_NCURSES_DIR_NAME="ncurses"
@ -832,10 +883,11 @@ CT_NCURSES_PATCH_GLOBAL=y
# CT_NCURSES_PATCH_LOCAL_BUNDLED is not set
# CT_NCURSES_PATCH_NONE is not set
CT_NCURSES_PATCH_ORDER="global"
CT_NCURSES_V_6_2=y
CT_NCURSES_V_6_4=y
# CT_NCURSES_V_6_2 is not set
# CT_NCURSES_V_6_1 is not set
# CT_NCURSES_V_6_0 is not set
CT_NCURSES_VERSION="6.2"
CT_NCURSES_VERSION="6.4"
CT_NCURSES_MIRRORS="https://invisible-mirror.net/archives/ncurses $(CT_Mirrors GNU ncurses)"
CT_NCURSES_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_NCURSES_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
@ -862,14 +914,37 @@ CT_ZLIB_PATCH_GLOBAL=y
# CT_ZLIB_PATCH_LOCAL_BUNDLED is not set
# CT_ZLIB_PATCH_NONE is not set
CT_ZLIB_PATCH_ORDER="global"
CT_ZLIB_V_1_2_11=y
CT_ZLIB_VERSION="1.2.11"
CT_ZLIB_MIRRORS="http://downloads.sourceforge.net/project/libpng/zlib/${CT_ZLIB_VERSION} https://www.zlib.net/"
CT_ZLIB_V_1_2_13=y
# CT_ZLIB_V_1_2_12 is not set
CT_ZLIB_VERSION="1.2.13"
CT_ZLIB_MIRRORS="https://github.com/madler/zlib/releases/download/v${CT_ZLIB_VERSION} https://www.zlib.net/"
CT_ZLIB_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_ZLIB_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
CT_ZLIB_ARCHIVE_FORMATS=".tar.xz .tar.gz"
CT_ZLIB_SIGNATURE_FORMAT="packed/.asc"
CT_ALL_COMP_LIBS_CHOICES="CLOOG EXPAT GETTEXT GMP GNUPRUMCU ISL LIBELF LIBICONV MPC MPFR NCURSES NEWLIB_NANO PICOLIBC ZLIB"
CT_COMP_LIBS_ZSTD=y
CT_COMP_LIBS_ZSTD_PKG_KSYM="ZSTD"
CT_ZSTD_DIR_NAME="zstd"
CT_ZSTD_PKG_NAME="zstd"
CT_ZSTD_SRC_RELEASE=y
# CT_ZSTD_SRC_DEVEL is not set
# CT_ZSTD_SRC_CUSTOM is not set
CT_ZSTD_PATCH_GLOBAL=y
# CT_ZSTD_PATCH_BUNDLED is not set
# CT_ZSTD_PATCH_LOCAL is not set
# CT_ZSTD_PATCH_BUNDLED_LOCAL is not set
# CT_ZSTD_PATCH_LOCAL_BUNDLED is not set
# CT_ZSTD_PATCH_NONE is not set
CT_ZSTD_PATCH_ORDER="global"
CT_ZSTD_V_1_5_5=y
# CT_ZSTD_V_1_5_2 is not set
CT_ZSTD_VERSION="1.5.5"
CT_ZSTD_MIRRORS="https://github.com/facebook/zstd/releases/download/v${CT_ZSTD_VERSION} https://www.zstd.net/"
CT_ZSTD_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_ZSTD_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
CT_ZSTD_ARCHIVE_FORMATS=".tar.gz"
CT_ZSTD_SIGNATURE_FORMAT="packed/.sig"
CT_ALL_COMP_LIBS_CHOICES="CLOOG EXPAT GETTEXT GMP GNUPRUMCU ISL LIBELF LIBICONV MPC MPFR NCURSES NEWLIB_NANO PICOLIBC ZLIB ZSTD"
CT_LIBICONV_NEEDED=y
CT_GETTEXT_NEEDED=y
CT_GMP_NEEDED=y
@ -878,6 +953,7 @@ CT_ISL_NEEDED=y
CT_MPC_NEEDED=y
CT_NCURSES_NEEDED=y
CT_ZLIB_NEEDED=y
CT_ZSTD_NEEDED=y
CT_LIBICONV=y
CT_GETTEXT=y
CT_GMP=y
@ -886,6 +962,7 @@ CT_ISL=y
CT_MPC=y
CT_NCURSES=y
CT_ZLIB=y
CT_ZSTD=y
# end of Companion libraries
#

View file

@ -0,0 +1,17 @@
#!/bin/bash
set -e
if [[ $# != 2 ]]; then
echo "Invalid arguments"
exit 1
fi
IN="$1"
OUT="$2"
TMPDIR="$(mktemp -d)"
trap "rm -rf '$TMPDIR'" EXIT
cd "$TMPDIR"
set -x
python3 /opt/implib/implib-gen.py --target x86_64-linux-gnu --dlopen --lazy-load --verbose "$IN"
${FFBUILD_CROSS_PREFIX}gcc $CFLAGS $STAGE_CFLAGS -DIMPLIB_HIDDEN_SHIMS -c *.tramp.S *.init.c
${FFBUILD_CROSS_PREFIX}ar -rcs "$OUT" *.tramp.o *.init.o

View file

@ -5,8 +5,8 @@ set(triple x86_64-ffbuild-linux-gnu)
set(CMAKE_C_COMPILER ${triple}-gcc)
set(CMAKE_CXX_COMPILER ${triple}-g++)
set(CMAKE_RANLIB ${triple}-ranlib)
set(CMAKE_AR ${triple}-ar)
set(CMAKE_RANLIB ${triple}-gcc-ranlib)
set(CMAKE_AR ${triple}-gcc-ar)
set(CMAKE_SYSROOT /opt/ct-ng/${triple}/sysroot)
set(CMAKE_FIND_ROOT_PATH /opt/ct-ng /opt/ct-ng/${triple}/sysroot /opt/ffbuild)

View file

@ -0,0 +1,63 @@
ARG GH_REPO=ghcr.io/btbn/ffmpeg-builds
FROM $GH_REPO/base:latest
RUN --mount=src=ct-ng-config,dst=/.config \
git clone --filter=blob:none https://github.com/crosstool-ng/crosstool-ng.git /ct-ng && cd /ct-ng && \
./bootstrap && \
./configure --enable-local && \
make -j$(nproc) && \
cp /.config .config && \
./ct-ng build && \
cd / && \
rm -rf ct-ng
# Prepare cross environment to heavily favour static builds
RUN \
find /opt/ct-ng -type l \
-and -name '*.so' \
-and -not -ipath '*plugin*' \
-and -not -name 'libdl.*' \
-and -not -name 'libc.*' \
-and -not -name 'libm.*' \
-and -not -name 'libmvec.*' \
-and -not -name 'librt.*' \
-and -not -name 'libpthread.*' \
-delete && \
find /opt/ct-ng \
-name 'libdl.a' \
-or -name 'libc.a' \
-or -name 'libm.a' \
-or -name 'libmvec.a' \
-or -name 'librt.a' \
-or -name 'libpthread.a' \
-delete && \
mkdir /opt/ffbuild
RUN rustup target add aarch64-unknown-linux-gnu
ADD toolchain.cmake /toolchain.cmake
ADD cross.meson /cross.meson
ADD gen-implib.sh /usr/bin/gen-implib
RUN git clone --filter=blob:none --depth=1 https://github.com/yugr/Implib.so /opt/implib
ENV FFBUILD_TOOLCHAIN=aarch64-ffbuild-linux-gnu
ENV PATH="/opt/ct-ng/bin:${PATH}" \
FFBUILD_TARGET_FLAGS="--pkg-config=pkg-config --cross-prefix=${FFBUILD_TOOLCHAIN}- --arch=aarch64 --target-os=linux" \
FFBUILD_CROSS_PREFIX="${FFBUILD_TOOLCHAIN}-" \
FFBUILD_RUST_TARGET="aarch64-unknown-linux-gnu" \
FFBUILD_PREFIX=/opt/ffbuild \
FFBUILD_CMAKE_TOOLCHAIN=/toolchain.cmake \
PKG_CONFIG=pkg-config \
PKG_CONFIG_LIBDIR=/opt/ffbuild/lib/pkgconfig:/opt/ffbuild/share/pkgconfig \
CC="${FFBUILD_TOOLCHAIN}-gcc" \
CXX="${FFBUILD_TOOLCHAIN}-g++" \
LD="${FFBUILD_TOOLCHAIN}-ld" \
AR="${FFBUILD_TOOLCHAIN}-gcc-ar" \
RANLIB="${FFBUILD_TOOLCHAIN}-gcc-ranlib" \
NM="${FFBUILD_TOOLCHAIN}-gcc-nm" \
CFLAGS="-static-libgcc -static-libstdc++ -I/opt/ffbuild/include -O2 -pipe -fPIC -DPIC -D_FORTIFY_SOURCE=2 -fstack-protector-strong -fstack-clash-protection -pthread" \
CXXFLAGS="-static-libgcc -static-libstdc++ -I/opt/ffbuild/include -O2 -pipe -fPIC -DPIC -D_FORTIFY_SOURCE=2 -fstack-protector-strong -fstack-clash-protection -pthread" \
LDFLAGS="-static-libgcc -static-libstdc++ -L/opt/ffbuild/lib -O2 -pipe -fstack-protector-strong -fstack-clash-protection -Wl,-z,relro,-z,now -pthread -lm" \
STAGE_CFLAGS="-fvisibility=hidden -fno-semantic-interposition" \
STAGE_CXXFLAGS="-fvisibility=hidden -fno-semantic-interposition"

View file

@ -0,0 +1,13 @@
[binaries]
c = 'aarch64-ffbuild-linux-gnu-gcc'
cpp = 'aarch64-ffbuild-linux-gnu-g++'
ld = 'aarch64-ffbuild-linux-gnu-ld'
ar = 'aarch64-ffbuild-linux-gnu-gcc-ar'
ranlib = 'x86_64-ffbuild-linux-gnu-gcc-ranlib'
strip = 'aarch64-ffbuild-linux-gnu-strip'
[host_machine]
system = 'linux'
cpu_family = 'aarch64'
cpu = 'aarch64'
endian = 'little'

View file

@ -0,0 +1,998 @@
#
# Automatically generated file; DO NOT EDIT.
# crosstool-NG 1.25.0.196_227d99d Configuration
#
CT_CONFIGURE_has_static_link=y
CT_CONFIGURE_has_cxx11=y
CT_CONFIGURE_has_wget=y
CT_CONFIGURE_has_curl=y
CT_CONFIGURE_has_meson=y
CT_CONFIGURE_has_ninja=y
CT_CONFIGURE_has_rsync=y
CT_CONFIGURE_has_make_3_81_or_newer=y
CT_CONFIGURE_has_make_4_0_or_newer=y
CT_CONFIGURE_has_libtool_2_4_or_newer=y
CT_CONFIGURE_has_libtoolize_2_4_or_newer=y
CT_CONFIGURE_has_autoconf_2_71_or_newer=y
CT_CONFIGURE_has_autoreconf_2_71_or_newer=y
CT_CONFIGURE_has_automake_1_16_or_newer=y
CT_CONFIGURE_has_gnu_m4_1_4_12_or_newer=y
CT_CONFIGURE_has_python_3_4_or_newer=y
CT_CONFIGURE_has_bison_2_7_or_newer=y
CT_CONFIGURE_has_bison_3_0_4_or_newer=y
CT_CONFIGURE_has_python=y
CT_CONFIGURE_has_svn=y
CT_CONFIGURE_has_git=y
CT_CONFIGURE_has_md5sum=y
CT_CONFIGURE_has_sha1sum=y
CT_CONFIGURE_has_sha256sum=y
CT_CONFIGURE_has_sha512sum=y
CT_CONFIGURE_has_install_with_strip_program=y
CT_VERSION="1.25.0.196_227d99d"
CT_VCHECK=""
CT_CONFIG_VERSION_ENV="4"
CT_CONFIG_VERSION_CURRENT="4"
CT_CONFIG_VERSION="4"
CT_MODULES=y
#
# Paths and misc options
#
#
# crosstool-NG behavior
#
CT_OBSOLETE=y
CT_EXPERIMENTAL=y
CT_ALLOW_BUILD_AS_ROOT=y
CT_ALLOW_BUILD_AS_ROOT_SURE=y
# CT_ENABLE_EXPERIMENTAL_BUNDLED_PATCHES is not set
# CT_DEBUG_CT is not set
#
# Paths
#
CT_LOCAL_TARBALLS_DIR="${HOME}/src"
# CT_SAVE_TARBALLS is not set
# CT_TARBALLS_BUILDROOT_LAYOUT is not set
CT_WORK_DIR="${CT_TOP_DIR}/build"
CT_BUILD_TOP_DIR="${CT_WORK_DIR:-${CT_TOP_DIR}/.build}/${CT_HOST:+HOST-${CT_HOST}/}${CT_TARGET}"
CT_BUILD_DIR="${CT_BUILD_TOP_DIR}/build"
CT_PREFIX_DIR="/opt/ct-ng"
CT_RM_RF_PREFIX_DIR=y
CT_REMOVE_DOCS=y
# CT_INSTALL_LICENSES is not set
# CT_PREFIX_DIR_RO is not set
CT_STRIP_HOST_TOOLCHAIN_EXECUTABLES=y
CT_STRIP_TARGET_TOOLCHAIN_EXECUTABLES=y
# CT_TARBALL_RESULT is not set
#
# Downloading
#
CT_DOWNLOAD_AGENT_WGET=y
# CT_DOWNLOAD_AGENT_CURL is not set
# CT_DOWNLOAD_AGENT_NONE is not set
# CT_FORBID_DOWNLOAD is not set
# CT_FORCE_DOWNLOAD is not set
CT_CONNECT_TIMEOUT=10
CT_DOWNLOAD_WGET_OPTIONS="--passive-ftp --tries=3 -nc --progress=dot:binary"
# CT_ONLY_DOWNLOAD is not set
# CT_USE_MIRROR is not set
CT_VERIFY_DOWNLOAD_DIGEST=y
CT_VERIFY_DOWNLOAD_DIGEST_SHA512=y
# CT_VERIFY_DOWNLOAD_DIGEST_SHA256 is not set
# CT_VERIFY_DOWNLOAD_DIGEST_SHA1 is not set
# CT_VERIFY_DOWNLOAD_DIGEST_MD5 is not set
CT_VERIFY_DOWNLOAD_DIGEST_ALG="sha512"
# CT_VERIFY_DOWNLOAD_SIGNATURE is not set
#
# Extracting
#
# CT_FORCE_EXTRACT is not set
CT_OVERRIDE_CONFIG_GUESS_SUB=y
# CT_ONLY_EXTRACT is not set
CT_PATCH_BUNDLED=y
# CT_PATCH_LOCAL is not set
# CT_PATCH_BUNDLED_LOCAL is not set
# CT_PATCH_LOCAL_BUNDLED is not set
# CT_PATCH_NONE is not set
CT_PATCH_ORDER="bundled"
#
# Build behavior
#
CT_PARALLEL_JOBS=0
CT_LOAD=""
CT_USE_PIPES=y
CT_EXTRA_CFLAGS_FOR_BUILD="-fPIC -DPIC"
CT_EXTRA_CXXFLAGS_FOR_BUILD="-fPIC -DPIC"
CT_EXTRA_LDFLAGS_FOR_BUILD=""
CT_EXTRA_CFLAGS_FOR_HOST="-fPIC -DPIC"
CT_EXTRA_LDFLAGS_FOR_HOST=""
# CT_CONFIG_SHELL_SH is not set
# CT_CONFIG_SHELL_ASH is not set
CT_CONFIG_SHELL_BASH=y
# CT_CONFIG_SHELL_CUSTOM is not set
CT_CONFIG_SHELL="${bash}"
#
# Logging
#
# CT_LOG_ERROR is not set
# CT_LOG_WARN is not set
# CT_LOG_INFO is not set
# CT_LOG_EXTRA is not set
# CT_LOG_ALL is not set
CT_LOG_DEBUG=y
CT_LOG_LEVEL_MAX="DEBUG"
# CT_LOG_SEE_TOOLS_WARN is not set
# CT_LOG_TO_FILE is not set
# end of Paths and misc options
#
# Target options
#
# CT_ARCH_ALPHA is not set
# CT_ARCH_ARC is not set
CT_ARCH_ARM=y
# CT_ARCH_AVR is not set
# CT_ARCH_BPF is not set
# CT_ARCH_C6X is not set
# CT_ARCH_LOONGARCH is not set
# CT_ARCH_M68K is not set
# CT_ARCH_MICROBLAZE is not set
# CT_ARCH_MIPS is not set
# CT_ARCH_MOXIE is not set
# CT_ARCH_MSP430 is not set
# CT_ARCH_NIOS2 is not set
# CT_ARCH_POWERPC is not set
# CT_ARCH_PRU is not set
# CT_ARCH_RISCV is not set
# CT_ARCH_S390 is not set
# CT_ARCH_SH is not set
# CT_ARCH_SPARC is not set
# CT_ARCH_X86 is not set
# CT_ARCH_XTENSA is not set
CT_ARCH="arm"
CT_ARCH_CHOICE_KSYM="ARM"
CT_ARCH_CPU=""
CT_ARCH_TUNE=""
CT_ARCH_ARM_SHOW=y
#
# Options for arm
#
CT_ARCH_ARM_PKG_KSYM=""
CT_ALL_ARCH_CHOICES="ALPHA ARC ARM AVR BPF C6X LOONGARCH M68K MICROBLAZE MIPS MOXIE MSP430 NIOS2 POWERPC PRU RISCV S390 SH SPARC X86 XTENSA"
CT_ARCH_SUFFIX=""
# CT_OMIT_TARGET_VENDOR is not set
#
# Generic target options
#
# CT_MULTILIB is not set
CT_DEMULTILIB=y
CT_ARCH_SUPPORTS_BOTH_MMU=y
CT_ARCH_DEFAULT_HAS_MMU=y
CT_ARCH_USE_MMU=y
CT_ARCH_SUPPORTS_FLAT_FORMAT=y
CT_ARCH_SUPPORTS_LIBSANITIZER=y
CT_ARCH_SUPPORTS_EITHER_ENDIAN=y
CT_ARCH_DEFAULT_LE=y
# CT_ARCH_BE is not set
CT_ARCH_LE=y
CT_ARCH_ENDIAN="little"
CT_ARCH_SUPPORTS_32=y
CT_ARCH_SUPPORTS_64=y
CT_ARCH_DEFAULT_32=y
CT_ARCH_BITNESS=64
# CT_ARCH_32 is not set
CT_ARCH_64=y
#
# Target optimisations
#
CT_ARCH_SUPPORTS_WITH_ARCH=y
CT_ARCH_SUPPORTS_WITH_CPU=y
CT_ARCH_SUPPORTS_WITH_TUNE=y
CT_ARCH_EXCLUSIVE_WITH_CPU=y
CT_ARCH_ARCH=""
CT_TARGET_CFLAGS="-fPIC -DPIC"
CT_TARGET_LDFLAGS=""
# end of Target options
#
# Toolchain options
#
#
# General toolchain options
#
CT_USE_SYSROOT=y
CT_SYSROOT_NAME="sysroot"
CT_SYSROOT_DIR_PREFIX=""
# CT_STATIC_TOOLCHAIN is not set
CT_SHOW_CT_VERSION=y
CT_TOOLCHAIN_PKGVERSION=""
CT_TOOLCHAIN_BUGURL=""
#
# Tuple completion and aliasing
#
CT_TARGET_VENDOR="ffbuild"
CT_TARGET_ALIAS_SED_EXPR=""
CT_TARGET_ALIAS=""
#
# Toolchain type
#
# CT_NATIVE is not set
CT_CROSS=y
# CT_CROSS_NATIVE is not set
# CT_CANADIAN is not set
CT_TOOLCHAIN_TYPE="cross"
#
# Build system
#
CT_BUILD=""
CT_BUILD_PREFIX=""
CT_BUILD_SUFFIX=""
#
# Misc options
#
# CT_TOOLCHAIN_ENABLE_NLS is not set
# end of Toolchain options
#
# Operating System
#
CT_KERNEL_SUPPORTS_SHARED_LIBS=y
# CT_KERNEL_BARE_METAL is not set
CT_KERNEL_LINUX=y
CT_KERNEL="linux"
CT_KERNEL_CHOICE_KSYM="LINUX"
CT_KERNEL_LINUX_SHOW=y
#
# Options for linux
#
CT_KERNEL_LINUX_PKG_KSYM="LINUX"
CT_LINUX_DIR_NAME="linux"
CT_LINUX_USE_WWW_KERNEL_ORG=y
# CT_LINUX_USE_ORACLE is not set
CT_LINUX_USE="LINUX"
CT_LINUX_PKG_NAME="linux"
CT_LINUX_SRC_RELEASE=y
# CT_LINUX_SRC_DEVEL is not set
# CT_LINUX_SRC_CUSTOM is not set
CT_LINUX_PATCH_GLOBAL=y
# CT_LINUX_PATCH_BUNDLED is not set
# CT_LINUX_PATCH_LOCAL is not set
# CT_LINUX_PATCH_BUNDLED_LOCAL is not set
# CT_LINUX_PATCH_LOCAL_BUNDLED is not set
# CT_LINUX_PATCH_NONE is not set
CT_LINUX_PATCH_ORDER="global"
# CT_LINUX_V_6_3 is not set
# CT_LINUX_V_6_2 is not set
# CT_LINUX_V_6_1 is not set
# CT_LINUX_V_6_0 is not set
# CT_LINUX_V_5_19 is not set
# CT_LINUX_V_5_18 is not set
# CT_LINUX_V_5_17 is not set
# CT_LINUX_V_5_16 is not set
# CT_LINUX_V_5_15 is not set
# CT_LINUX_V_5_14 is not set
# CT_LINUX_V_5_13 is not set
# CT_LINUX_V_5_12 is not set
# CT_LINUX_V_5_11 is not set
# CT_LINUX_V_5_10 is not set
# CT_LINUX_V_5_9 is not set
# CT_LINUX_V_5_8 is not set
# CT_LINUX_V_5_7 is not set
# CT_LINUX_V_5_5 is not set
# CT_LINUX_V_5_4 is not set
# CT_LINUX_V_5_3 is not set
# CT_LINUX_V_5_2 is not set
# CT_LINUX_V_5_1 is not set
# CT_LINUX_V_5_0 is not set
# CT_LINUX_V_4_20 is not set
# CT_LINUX_V_4_19 is not set
# CT_LINUX_V_4_18 is not set
# CT_LINUX_V_4_17 is not set
# CT_LINUX_V_4_16 is not set
CT_LINUX_V_4_15=y
# CT_LINUX_V_4_14 is not set
# CT_LINUX_V_4_13 is not set
# CT_LINUX_V_4_12 is not set
# CT_LINUX_V_4_11 is not set
# CT_LINUX_V_4_10 is not set
# CT_LINUX_V_4_9 is not set
# CT_LINUX_V_4_4 is not set
# CT_LINUX_V_4_1 is not set
# CT_LINUX_V_3_18 is not set
# CT_LINUX_V_3_16 is not set
# CT_LINUX_V_3_13 is not set
# CT_LINUX_V_3_12 is not set
# CT_LINUX_V_3_10 is not set
CT_LINUX_VERSION="4.15.18"
CT_LINUX_MIRRORS="$(CT_Mirrors kernel.org linux ${CT_LINUX_VERSION})"
CT_LINUX_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_LINUX_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
CT_LINUX_ARCHIVE_FORMATS=".tar.xz .tar.gz"
CT_LINUX_SIGNATURE_FORMAT="unpacked/.sign"
CT_LINUX_5_19_or_older=y
CT_LINUX_older_than_5_19=y
CT_LINUX_5_12_or_older=y
CT_LINUX_older_than_5_12=y
CT_LINUX_5_5_or_older=y
CT_LINUX_older_than_5_5=y
CT_LINUX_5_3_or_older=y
CT_LINUX_older_than_5_3=y
CT_LINUX_later_than_4_8=y
CT_LINUX_4_8_or_later=y
CT_LINUX_later_than_3_7=y
CT_LINUX_3_7_or_later=y
CT_LINUX_REQUIRE_3_7_or_later=y
CT_LINUX_later_than_3_2=y
CT_LINUX_3_2_or_later=y
CT_LINUX_REQUIRE_3_2_or_later=y
CT_KERNEL_DEP_RSYNC=y
CT_KERNEL_LINUX_VERBOSITY_0=y
# CT_KERNEL_LINUX_VERBOSITY_1 is not set
# CT_KERNEL_LINUX_VERBOSITY_2 is not set
CT_KERNEL_LINUX_VERBOSE_LEVEL=0
# CT_KERNEL_LINUX_INSTALL_CHECK is not set
CT_ALL_KERNEL_CHOICES="BARE_METAL LINUX WINDOWS"
#
# Common kernel options
#
CT_SHARED_LIBS=y
# end of Operating System
#
# Binary utilities
#
CT_ARCH_BINFMT_ELF=y
CT_BINUTILS_BINUTILS=y
CT_BINUTILS="binutils"
CT_BINUTILS_CHOICE_KSYM="BINUTILS"
CT_BINUTILS_BINUTILS_SHOW=y
#
# Options for binutils
#
CT_BINUTILS_BINUTILS_PKG_KSYM="BINUTILS"
CT_BINUTILS_DIR_NAME="binutils"
CT_BINUTILS_USE_GNU=y
# CT_BINUTILS_USE_LINARO is not set
# CT_BINUTILS_USE_ORACLE is not set
CT_BINUTILS_USE="BINUTILS"
CT_BINUTILS_PKG_NAME="binutils"
CT_BINUTILS_SRC_RELEASE=y
# CT_BINUTILS_SRC_DEVEL is not set
# CT_BINUTILS_SRC_CUSTOM is not set
CT_BINUTILS_PATCH_GLOBAL=y
# CT_BINUTILS_PATCH_BUNDLED is not set
# CT_BINUTILS_PATCH_LOCAL is not set
# CT_BINUTILS_PATCH_BUNDLED_LOCAL is not set
# CT_BINUTILS_PATCH_LOCAL_BUNDLED is not set
# CT_BINUTILS_PATCH_NONE is not set
CT_BINUTILS_PATCH_ORDER="global"
CT_BINUTILS_V_2_40=y
# CT_BINUTILS_V_2_39 is not set
# CT_BINUTILS_V_2_38 is not set
# CT_BINUTILS_V_2_37 is not set
# CT_BINUTILS_V_2_36 is not set
# CT_BINUTILS_V_2_35 is not set
# CT_BINUTILS_V_2_34 is not set
# CT_BINUTILS_V_2_33 is not set
# CT_BINUTILS_V_2_32 is not set
# CT_BINUTILS_V_2_31 is not set
# CT_BINUTILS_V_2_30 is not set
# CT_BINUTILS_V_2_29 is not set
# CT_BINUTILS_V_2_28 is not set
# CT_BINUTILS_V_2_27 is not set
# CT_BINUTILS_V_2_26 is not set
CT_BINUTILS_VERSION="2.40"
CT_BINUTILS_MIRRORS="$(CT_Mirrors GNU binutils) $(CT_Mirrors sourceware binutils/releases)"
CT_BINUTILS_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_BINUTILS_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
CT_BINUTILS_ARCHIVE_FORMATS=".tar.xz .tar.bz2 .tar.gz"
CT_BINUTILS_SIGNATURE_FORMAT="packed/.sig"
CT_BINUTILS_later_than_2_39=y
CT_BINUTILS_2_39_or_later=y
CT_BINUTILS_later_than_2_30=y
CT_BINUTILS_2_30_or_later=y
CT_BINUTILS_later_than_2_27=y
CT_BINUTILS_2_27_or_later=y
CT_BINUTILS_later_than_2_26=y
CT_BINUTILS_2_26_or_later=y
#
# GNU binutils
#
CT_BINUTILS_GOLD_SUPPORTS_ARCH=y
CT_BINUTILS_GOLD_SUPPORT=y
CT_BINUTILS_FORCE_LD_BFD_DEFAULT=y
CT_BINUTILS_LINKER_LD=y
# CT_BINUTILS_LINKER_LD_GOLD is not set
CT_BINUTILS_LINKERS_LIST="ld"
CT_BINUTILS_LINKER_DEFAULT="bfd"
CT_BINUTILS_PLUGINS=y
CT_BINUTILS_RELRO=m
CT_BINUTILS_DETERMINISTIC_ARCHIVES=y
CT_BINUTILS_EXTRA_CONFIG_ARRAY=""
# CT_BINUTILS_FOR_TARGET is not set
CT_ALL_BINUTILS_CHOICES="BINUTILS"
# end of Binary utilities
#
# C-library
#
CT_LIBC_GLIBC=y
# CT_LIBC_MUSL is not set
# CT_LIBC_UCLIBC_NG is not set
CT_LIBC="glibc"
CT_LIBC_CHOICE_KSYM="GLIBC"
CT_LIBC_GLIBC_SHOW=y
#
# Options for glibc
#
CT_LIBC_GLIBC_PKG_KSYM="GLIBC"
CT_GLIBC_DIR_NAME="glibc"
CT_GLIBC_USE_GNU=y
# CT_GLIBC_USE_ORACLE is not set
CT_GLIBC_USE="GLIBC"
CT_GLIBC_PKG_NAME="glibc"
CT_GLIBC_SRC_RELEASE=y
# CT_GLIBC_SRC_DEVEL is not set
# CT_GLIBC_SRC_CUSTOM is not set
CT_GLIBC_PATCH_GLOBAL=y
# CT_GLIBC_PATCH_BUNDLED is not set
# CT_GLIBC_PATCH_LOCAL is not set
# CT_GLIBC_PATCH_BUNDLED_LOCAL is not set
# CT_GLIBC_PATCH_LOCAL_BUNDLED is not set
# CT_GLIBC_PATCH_NONE is not set
CT_GLIBC_PATCH_ORDER="global"
# CT_GLIBC_V_2_37 is not set
# CT_GLIBC_V_2_36 is not set
# CT_GLIBC_V_2_35 is not set
# CT_GLIBC_V_2_34 is not set
# CT_GLIBC_V_2_33 is not set
# CT_GLIBC_V_2_32 is not set
# CT_GLIBC_V_2_31 is not set
# CT_GLIBC_V_2_30 is not set
# CT_GLIBC_V_2_29 is not set
# CT_GLIBC_V_2_28 is not set
CT_GLIBC_V_2_27=y
# CT_GLIBC_V_2_26 is not set
# CT_GLIBC_V_2_25 is not set
# CT_GLIBC_V_2_24 is not set
# CT_GLIBC_V_2_23 is not set
# CT_GLIBC_V_2_19 is not set
# CT_GLIBC_V_2_17 is not set
CT_GLIBC_VERSION="2.27"
CT_GLIBC_MIRRORS="$(CT_Mirrors GNU glibc)"
CT_GLIBC_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_GLIBC_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
CT_GLIBC_ARCHIVE_FORMATS=".tar.xz .tar.bz2 .tar.gz"
CT_GLIBC_SIGNATURE_FORMAT="packed/.sig"
CT_GLIBC_2_37_or_older=y
CT_GLIBC_older_than_2_37=y
CT_GLIBC_2_36_or_older=y
CT_GLIBC_older_than_2_36=y
CT_GLIBC_2_34_or_older=y
CT_GLIBC_older_than_2_34=y
CT_GLIBC_2_32_or_older=y
CT_GLIBC_older_than_2_32=y
CT_GLIBC_2_31_or_older=y
CT_GLIBC_older_than_2_31=y
CT_GLIBC_2_30_or_older=y
CT_GLIBC_older_than_2_30=y
CT_GLIBC_2_29_or_older=y
CT_GLIBC_older_than_2_29=y
CT_GLIBC_2_28_or_older=y
CT_GLIBC_older_than_2_28=y
CT_GLIBC_2_27_or_later=y
CT_GLIBC_2_27_or_older=y
CT_GLIBC_later_than_2_26=y
CT_GLIBC_2_26_or_later=y
CT_GLIBC_later_than_2_25=y
CT_GLIBC_2_25_or_later=y
CT_GLIBC_later_than_2_24=y
CT_GLIBC_2_24_or_later=y
CT_GLIBC_later_than_2_23=y
CT_GLIBC_2_23_or_later=y
CT_GLIBC_later_than_2_20=y
CT_GLIBC_2_20_or_later=y
CT_GLIBC_later_than_2_17=y
CT_GLIBC_2_17_or_later=y
CT_GLIBC_later_than_2_14=y
CT_GLIBC_2_14_or_later=y
CT_GLIBC_DEP_KERNEL_HEADERS_VERSION=y
CT_GLIBC_DEP_BINUTILS=y
CT_GLIBC_DEP_GCC=y
CT_GLIBC_DEP_PYTHON=y
CT_GLIBC_SPARC_ALLOW_V7=y
CT_THREADS="nptl"
CT_GLIBC_BUILD_SSP=y
CT_GLIBC_HAS_LIBIDN_ADDON=y
# CT_GLIBC_USE_LIBIDN_ADDON is not set
CT_GLIBC_NO_SPARC_V8=y
CT_GLIBC_HAS_OBSOLETE_RPC=y
CT_GLIBC_EXTRA_CONFIG_ARRAY="--with-pic"
CT_GLIBC_CONFIGPARMS=""
# CT_GLIBC_ENABLE_DEBUG is not set
CT_GLIBC_EXTRA_CFLAGS="-fPIC -DPIC"
CT_GLIBC_ENABLE_OBSOLETE_RPC=y
# CT_GLIBC_ENABLE_FORTIFIED_BUILD is not set
# CT_GLIBC_DISABLE_VERSIONING is not set
CT_GLIBC_OLDEST_ABI=""
CT_GLIBC_FORCE_UNWIND=y
# CT_GLIBC_LOCALES is not set
# CT_GLIBC_KERNEL_VERSION_NONE is not set
CT_GLIBC_KERNEL_VERSION_AS_HEADERS=y
# CT_GLIBC_KERNEL_VERSION_CHOSEN is not set
CT_GLIBC_MIN_KERNEL="4.15.18"
CT_GLIBC_SSP_DEFAULT=y
# CT_GLIBC_SSP_NO is not set
# CT_GLIBC_SSP_YES is not set
# CT_GLIBC_SSP_ALL is not set
# CT_GLIBC_SSP_STRONG is not set
CT_GLIBC_ENABLE_COMMON_FLAG=y
CT_ALL_LIBC_CHOICES="AVR_LIBC GLIBC MINGW_W64 MOXIEBOX MUSL NEWLIB NONE PICOLIBC UCLIBC_NG"
CT_LIBC_SUPPORT_THREADS_ANY=y
CT_LIBC_SUPPORT_THREADS_NATIVE=y
#
# Common C library options
#
CT_THREADS_NATIVE=y
# CT_CREATE_LDSO_CONF is not set
CT_LIBC_XLDD=y
# end of C-library
#
# C compiler
#
CT_CC_CORE_NEEDED=y
CT_CC_SUPPORT_CXX=y
CT_CC_SUPPORT_FORTRAN=y
CT_CC_SUPPORT_ADA=y
CT_CC_SUPPORT_D=y
CT_CC_SUPPORT_JIT=y
CT_CC_SUPPORT_OBJC=y
CT_CC_SUPPORT_OBJCXX=y
CT_CC_SUPPORT_GOLANG=y
CT_CC_GCC=y
CT_CC="gcc"
CT_CC_CHOICE_KSYM="GCC"
CT_CC_GCC_SHOW=y
#
# Options for gcc
#
CT_CC_GCC_PKG_KSYM="GCC"
CT_GCC_DIR_NAME="gcc"
CT_GCC_USE_GNU=y
# CT_GCC_USE_LINARO is not set
# CT_GCC_USE_ORACLE is not set
CT_GCC_USE="GCC"
CT_GCC_PKG_NAME="gcc"
CT_GCC_SRC_RELEASE=y
# CT_GCC_SRC_DEVEL is not set
# CT_GCC_SRC_CUSTOM is not set
CT_GCC_PATCH_GLOBAL=y
# CT_GCC_PATCH_BUNDLED is not set
# CT_GCC_PATCH_LOCAL is not set
# CT_GCC_PATCH_BUNDLED_LOCAL is not set
# CT_GCC_PATCH_LOCAL_BUNDLED is not set
# CT_GCC_PATCH_NONE is not set
CT_GCC_PATCH_ORDER="global"
CT_GCC_V_13=y
# CT_GCC_V_12 is not set
# CT_GCC_V_11 is not set
# CT_GCC_V_10 is not set
# CT_GCC_V_9 is not set
# CT_GCC_V_8 is not set
# CT_GCC_V_7 is not set
# CT_GCC_V_6 is not set
# CT_GCC_V_5 is not set
# CT_GCC_V_4_9 is not set
CT_GCC_VERSION="13.1.0"
CT_GCC_MIRRORS="$(CT_Mirrors GNU gcc/gcc-${CT_GCC_VERSION}) $(CT_Mirrors sourceware gcc/releases/gcc-${CT_GCC_VERSION})"
CT_GCC_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_GCC_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
CT_GCC_ARCHIVE_FORMATS=".tar.xz .tar.gz"
CT_GCC_SIGNATURE_FORMAT=""
CT_GCC_later_than_13=y
CT_GCC_13_or_later=y
CT_GCC_later_than_12=y
CT_GCC_12_or_later=y
CT_GCC_later_than_11=y
CT_GCC_11_or_later=y
CT_GCC_later_than_10=y
CT_GCC_10_or_later=y
CT_GCC_later_than_9=y
CT_GCC_9_or_later=y
CT_GCC_later_than_8=y
CT_GCC_8_or_later=y
CT_GCC_later_than_7=y
CT_GCC_7_or_later=y
CT_GCC_later_than_6=y
CT_GCC_6_or_later=y
CT_GCC_later_than_5=y
CT_GCC_5_or_later=y
CT_GCC_later_than_4_9=y
CT_GCC_4_9_or_later=y
CT_GCC_REQUIRE_4_9_or_later=y
CT_CC_GCC_ENABLE_PLUGINS=y
CT_CC_GCC_HAS_LIBMPX=y
CT_CC_GCC_ENABLE_CXX_FLAGS=""
CT_CC_GCC_CORE_EXTRA_CONFIG_ARRAY="--enable-host-shared --enable-default-ssp"
CT_CC_GCC_EXTRA_CONFIG_ARRAY="--enable-host-shared --enable-default-ssp --with-build-config=bootstrap-lto-lean --enable-link-serialization=2"
# CT_CC_GCC_STATIC_LIBSTDCXX is not set
# CT_CC_GCC_SYSTEM_ZLIB is not set
CT_CC_GCC_CONFIG_TLS=m
#
# Optimisation features
#
CT_CC_GCC_USE_GRAPHITE=y
CT_CC_GCC_USE_LTO=y
CT_CC_GCC_LTO_ZSTD=m
#
# Settings for libraries running on target
#
CT_CC_GCC_ENABLE_DEFAULT_PIE=y
# CT_CC_GCC_ENABLE_TARGET_OPTSPACE is not set
# CT_CC_GCC_LIBMUDFLAP is not set
CT_CC_GCC_LIBGOMP=y
CT_CC_GCC_LIBSSP=m
# CT_CC_GCC_LIBQUADMATH is not set
# CT_CC_GCC_LIBSANITIZER is not set
# CT_CC_GCC_LIBSTDCXX_VERBOSE is not set
#
# Misc. obscure options.
#
CT_CC_CXA_ATEXIT=y
CT_CC_GCC_TM_CLONE_REGISTRY=m
# CT_CC_GCC_DISABLE_PCH is not set
CT_CC_GCC_SJLJ_EXCEPTIONS=m
CT_CC_GCC_LDBL_128=m
# CT_CC_GCC_BUILD_ID is not set
CT_CC_GCC_LNK_HASH_STYLE_DEFAULT=y
# CT_CC_GCC_LNK_HASH_STYLE_SYSV is not set
# CT_CC_GCC_LNK_HASH_STYLE_GNU is not set
# CT_CC_GCC_LNK_HASH_STYLE_BOTH is not set
CT_CC_GCC_LNK_HASH_STYLE=""
CT_CC_GCC_DEC_FLOATS_AUTO=y
# CT_CC_GCC_DEC_FLOATS_BID is not set
# CT_CC_GCC_DEC_FLOATS_DPD is not set
# CT_CC_GCC_DEC_FLOATS_NO is not set
CT_CC_GCC_DEC_FLOATS=""
CT_ALL_CC_CHOICES="GCC"
#
# Additional supported languages:
#
CT_CC_LANG_CXX=y
# CT_CC_LANG_FORTRAN is not set
# CT_CC_LANG_JIT is not set
# CT_CC_LANG_ADA is not set
# CT_CC_LANG_D is not set
# CT_CC_LANG_OBJC is not set
# CT_CC_LANG_OBJCXX is not set
# CT_CC_LANG_GOLANG is not set
CT_CC_LANG_OTHERS=""
# end of C compiler
#
# Debug facilities
#
# CT_DEBUG_DUMA is not set
# CT_DEBUG_GDB is not set
# CT_DEBUG_LTRACE is not set
# CT_DEBUG_STRACE is not set
CT_ALL_DEBUG_CHOICES="DUMA GDB LTRACE STRACE"
# end of Debug facilities
#
# Companion libraries
#
# CT_COMPLIBS_CHECK is not set
# CT_COMP_LIBS_CLOOG is not set
# CT_COMP_LIBS_EXPAT is not set
CT_COMP_LIBS_GETTEXT=y
CT_COMP_LIBS_GETTEXT_PKG_KSYM="GETTEXT"
CT_GETTEXT_DIR_NAME="gettext"
CT_GETTEXT_PKG_NAME="gettext"
CT_GETTEXT_SRC_RELEASE=y
# CT_GETTEXT_SRC_DEVEL is not set
# CT_GETTEXT_SRC_CUSTOM is not set
CT_GETTEXT_PATCH_GLOBAL=y
# CT_GETTEXT_PATCH_BUNDLED is not set
# CT_GETTEXT_PATCH_LOCAL is not set
# CT_GETTEXT_PATCH_BUNDLED_LOCAL is not set
# CT_GETTEXT_PATCH_LOCAL_BUNDLED is not set
# CT_GETTEXT_PATCH_NONE is not set
CT_GETTEXT_PATCH_ORDER="global"
CT_GETTEXT_V_0_21=y
# CT_GETTEXT_V_0_20_1 is not set
# CT_GETTEXT_V_0_19_8_1 is not set
CT_GETTEXT_VERSION="0.21"
CT_GETTEXT_MIRRORS="$(CT_Mirrors GNU gettext)"
CT_GETTEXT_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_GETTEXT_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
CT_GETTEXT_ARCHIVE_FORMATS=".tar.xz .tar.gz"
CT_GETTEXT_SIGNATURE_FORMAT="packed/.sig"
CT_GETTEXT_0_21_or_later=y
CT_GETTEXT_0_21_or_older=y
CT_GETTEXT_INCOMPATIBLE_WITH_UCLIBC_NG=y
#
# This version of gettext is not compatible with uClibc-NG. Select
#
#
# a different version if uClibc-NG is used on the target or (in a
#
#
# Canadian cross build) on the host.
#
CT_COMP_LIBS_GMP=y
CT_COMP_LIBS_GMP_PKG_KSYM="GMP"
CT_GMP_DIR_NAME="gmp"
CT_GMP_PKG_NAME="gmp"
CT_GMP_SRC_RELEASE=y
# CT_GMP_SRC_DEVEL is not set
# CT_GMP_SRC_CUSTOM is not set
CT_GMP_PATCH_GLOBAL=y
# CT_GMP_PATCH_BUNDLED is not set
# CT_GMP_PATCH_LOCAL is not set
# CT_GMP_PATCH_BUNDLED_LOCAL is not set
# CT_GMP_PATCH_LOCAL_BUNDLED is not set
# CT_GMP_PATCH_NONE is not set
CT_GMP_PATCH_ORDER="global"
CT_GMP_V_6_2=y
# CT_GMP_V_6_1 is not set
CT_GMP_VERSION="6.2.1"
CT_GMP_MIRRORS="https://gmplib.org/download/gmp https://gmplib.org/download/gmp/archive $(CT_Mirrors GNU gmp)"
CT_GMP_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_GMP_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
CT_GMP_ARCHIVE_FORMATS=".tar.xz .tar.lz .tar.bz2"
CT_GMP_SIGNATURE_FORMAT="packed/.sig"
CT_COMP_LIBS_ISL=y
CT_COMP_LIBS_ISL_PKG_KSYM="ISL"
CT_ISL_DIR_NAME="isl"
CT_ISL_PKG_NAME="isl"
CT_ISL_SRC_RELEASE=y
# CT_ISL_SRC_DEVEL is not set
# CT_ISL_SRC_CUSTOM is not set
CT_ISL_PATCH_GLOBAL=y
# CT_ISL_PATCH_BUNDLED is not set
# CT_ISL_PATCH_LOCAL is not set
# CT_ISL_PATCH_BUNDLED_LOCAL is not set
# CT_ISL_PATCH_LOCAL_BUNDLED is not set
# CT_ISL_PATCH_NONE is not set
CT_ISL_PATCH_ORDER="global"
CT_ISL_V_0_26=y
# CT_ISL_V_0_25 is not set
# CT_ISL_V_0_24 is not set
# CT_ISL_V_0_23 is not set
# CT_ISL_V_0_22 is not set
# CT_ISL_V_0_21 is not set
# CT_ISL_V_0_20 is not set
# CT_ISL_V_0_19 is not set
# CT_ISL_V_0_18 is not set
# CT_ISL_V_0_17 is not set
# CT_ISL_V_0_16 is not set
# CT_ISL_V_0_15 is not set
# CT_ISL_V_0_11 is not set
CT_ISL_VERSION="0.26"
CT_ISL_MIRRORS="https://libisl.sourceforge.io"
CT_ISL_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_ISL_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
CT_ISL_ARCHIVE_FORMATS=".tar.xz .tar.bz2 .tar.gz"
CT_ISL_SIGNATURE_FORMAT=""
CT_ISL_later_than_0_18=y
CT_ISL_0_18_or_later=y
CT_ISL_later_than_0_15=y
CT_ISL_0_15_or_later=y
# CT_COMP_LIBS_LIBELF is not set
CT_COMP_LIBS_LIBICONV=y
CT_COMP_LIBS_LIBICONV_PKG_KSYM="LIBICONV"
CT_LIBICONV_DIR_NAME="libiconv"
CT_LIBICONV_PKG_NAME="libiconv"
CT_LIBICONV_SRC_RELEASE=y
# CT_LIBICONV_SRC_DEVEL is not set
# CT_LIBICONV_SRC_CUSTOM is not set
CT_LIBICONV_PATCH_GLOBAL=y
# CT_LIBICONV_PATCH_BUNDLED is not set
# CT_LIBICONV_PATCH_LOCAL is not set
# CT_LIBICONV_PATCH_BUNDLED_LOCAL is not set
# CT_LIBICONV_PATCH_LOCAL_BUNDLED is not set
# CT_LIBICONV_PATCH_NONE is not set
CT_LIBICONV_PATCH_ORDER="global"
CT_LIBICONV_V_1_16=y
# CT_LIBICONV_V_1_15 is not set
CT_LIBICONV_VERSION="1.16"
CT_LIBICONV_MIRRORS="$(CT_Mirrors GNU libiconv)"
CT_LIBICONV_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_LIBICONV_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
CT_LIBICONV_ARCHIVE_FORMATS=".tar.gz"
CT_LIBICONV_SIGNATURE_FORMAT="packed/.sig"
CT_COMP_LIBS_MPC=y
CT_COMP_LIBS_MPC_PKG_KSYM="MPC"
CT_MPC_DIR_NAME="mpc"
CT_MPC_PKG_NAME="mpc"
CT_MPC_SRC_RELEASE=y
# CT_MPC_SRC_DEVEL is not set
# CT_MPC_SRC_CUSTOM is not set
CT_MPC_PATCH_GLOBAL=y
# CT_MPC_PATCH_BUNDLED is not set
# CT_MPC_PATCH_LOCAL is not set
# CT_MPC_PATCH_BUNDLED_LOCAL is not set
# CT_MPC_PATCH_LOCAL_BUNDLED is not set
# CT_MPC_PATCH_NONE is not set
CT_MPC_PATCH_ORDER="global"
CT_MPC_V_1_2=y
# CT_MPC_V_1_1 is not set
# CT_MPC_V_1_0 is not set
CT_MPC_VERSION="1.2.1"
CT_MPC_MIRRORS="http://www.multiprecision.org/downloads $(CT_Mirrors GNU mpc)"
CT_MPC_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_MPC_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
CT_MPC_ARCHIVE_FORMATS=".tar.gz"
CT_MPC_SIGNATURE_FORMAT="packed/.sig"
CT_MPC_later_than_1_1_0=y
CT_MPC_1_1_0_or_later=y
CT_COMP_LIBS_MPFR=y
CT_COMP_LIBS_MPFR_PKG_KSYM="MPFR"
CT_MPFR_DIR_NAME="mpfr"
CT_MPFR_PKG_NAME="mpfr"
CT_MPFR_SRC_RELEASE=y
# CT_MPFR_SRC_DEVEL is not set
# CT_MPFR_SRC_CUSTOM is not set
CT_MPFR_PATCH_GLOBAL=y
# CT_MPFR_PATCH_BUNDLED is not set
# CT_MPFR_PATCH_LOCAL is not set
# CT_MPFR_PATCH_BUNDLED_LOCAL is not set
# CT_MPFR_PATCH_LOCAL_BUNDLED is not set
# CT_MPFR_PATCH_NONE is not set
CT_MPFR_PATCH_ORDER="global"
CT_MPFR_V_4_1=y
# CT_MPFR_V_4_0 is not set
# CT_MPFR_V_3_1 is not set
CT_MPFR_VERSION="4.1.0"
CT_MPFR_MIRRORS="http://www.mpfr.org/mpfr-${CT_MPFR_VERSION} $(CT_Mirrors GNU mpfr)"
CT_MPFR_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_MPFR_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
CT_MPFR_ARCHIVE_FORMATS=".tar.xz .tar.bz2 .tar.gz .zip"
CT_MPFR_SIGNATURE_FORMAT="packed/.asc"
CT_MPFR_later_than_4_0_0=y
CT_MPFR_4_0_0_or_later=y
CT_COMP_LIBS_NCURSES=y
CT_COMP_LIBS_NCURSES_PKG_KSYM="NCURSES"
CT_NCURSES_DIR_NAME="ncurses"
CT_NCURSES_PKG_NAME="ncurses"
CT_NCURSES_SRC_RELEASE=y
# CT_NCURSES_SRC_DEVEL is not set
# CT_NCURSES_SRC_CUSTOM is not set
CT_NCURSES_PATCH_GLOBAL=y
# CT_NCURSES_PATCH_BUNDLED is not set
# CT_NCURSES_PATCH_LOCAL is not set
# CT_NCURSES_PATCH_BUNDLED_LOCAL is not set
# CT_NCURSES_PATCH_LOCAL_BUNDLED is not set
# CT_NCURSES_PATCH_NONE is not set
CT_NCURSES_PATCH_ORDER="global"
CT_NCURSES_V_6_4=y
# CT_NCURSES_V_6_2 is not set
# CT_NCURSES_V_6_1 is not set
# CT_NCURSES_V_6_0 is not set
CT_NCURSES_VERSION="6.4"
CT_NCURSES_MIRRORS="https://invisible-mirror.net/archives/ncurses $(CT_Mirrors GNU ncurses)"
CT_NCURSES_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_NCURSES_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
CT_NCURSES_ARCHIVE_FORMATS=".tar.gz"
CT_NCURSES_SIGNATURE_FORMAT="packed/.sig"
# CT_NCURSES_NEW_ABI is not set
CT_NCURSES_HOST_CONFIG_ARGS=""
CT_NCURSES_HOST_DISABLE_DB=y
CT_NCURSES_HOST_FALLBACKS="linux,xterm,xterm-color,xterm-256color,vt100"
CT_NCURSES_TARGET_CONFIG_ARGS=""
# CT_NCURSES_TARGET_DISABLE_DB is not set
CT_NCURSES_TARGET_FALLBACKS=""
CT_COMP_LIBS_ZLIB=y
CT_COMP_LIBS_ZLIB_PKG_KSYM="ZLIB"
CT_ZLIB_DIR_NAME="zlib"
CT_ZLIB_PKG_NAME="zlib"
CT_ZLIB_SRC_RELEASE=y
# CT_ZLIB_SRC_DEVEL is not set
# CT_ZLIB_SRC_CUSTOM is not set
CT_ZLIB_PATCH_GLOBAL=y
# CT_ZLIB_PATCH_BUNDLED is not set
# CT_ZLIB_PATCH_LOCAL is not set
# CT_ZLIB_PATCH_BUNDLED_LOCAL is not set
# CT_ZLIB_PATCH_LOCAL_BUNDLED is not set
# CT_ZLIB_PATCH_NONE is not set
CT_ZLIB_PATCH_ORDER="global"
CT_ZLIB_V_1_2_13=y
# CT_ZLIB_V_1_2_12 is not set
CT_ZLIB_VERSION="1.2.13"
CT_ZLIB_MIRRORS="https://github.com/madler/zlib/releases/download/v${CT_ZLIB_VERSION} https://www.zlib.net/"
CT_ZLIB_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_ZLIB_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
CT_ZLIB_ARCHIVE_FORMATS=".tar.xz .tar.gz"
CT_ZLIB_SIGNATURE_FORMAT="packed/.asc"
CT_COMP_LIBS_ZSTD=y
CT_COMP_LIBS_ZSTD_PKG_KSYM="ZSTD"
CT_ZSTD_DIR_NAME="zstd"
CT_ZSTD_PKG_NAME="zstd"
CT_ZSTD_SRC_RELEASE=y
# CT_ZSTD_SRC_DEVEL is not set
# CT_ZSTD_SRC_CUSTOM is not set
CT_ZSTD_PATCH_GLOBAL=y
# CT_ZSTD_PATCH_BUNDLED is not set
# CT_ZSTD_PATCH_LOCAL is not set
# CT_ZSTD_PATCH_BUNDLED_LOCAL is not set
# CT_ZSTD_PATCH_LOCAL_BUNDLED is not set
# CT_ZSTD_PATCH_NONE is not set
CT_ZSTD_PATCH_ORDER="global"
CT_ZSTD_V_1_5_5=y
# CT_ZSTD_V_1_5_2 is not set
CT_ZSTD_VERSION="1.5.5"
CT_ZSTD_MIRRORS="https://github.com/facebook/zstd/releases/download/v${CT_ZSTD_VERSION} https://www.zstd.net/"
CT_ZSTD_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_ZSTD_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
CT_ZSTD_ARCHIVE_FORMATS=".tar.gz"
CT_ZSTD_SIGNATURE_FORMAT="packed/.sig"
CT_ALL_COMP_LIBS_CHOICES="CLOOG EXPAT GETTEXT GMP GNUPRUMCU ISL LIBELF LIBICONV MPC MPFR NCURSES NEWLIB_NANO PICOLIBC ZLIB ZSTD"
CT_LIBICONV_NEEDED=y
CT_GETTEXT_NEEDED=y
CT_GMP_NEEDED=y
CT_MPFR_NEEDED=y
CT_ISL_NEEDED=y
CT_MPC_NEEDED=y
CT_NCURSES_NEEDED=y
CT_ZLIB_NEEDED=y
CT_ZSTD_NEEDED=y
CT_LIBICONV=y
CT_GETTEXT=y
CT_GMP=y
CT_MPFR=y
CT_ISL=y
CT_MPC=y
CT_NCURSES=y
CT_ZLIB=y
CT_ZSTD=y
# end of Companion libraries
#
# Companion tools
#
# CT_COMP_TOOLS_FOR_HOST is not set
# CT_COMP_TOOLS_AUTOCONF is not set
# CT_COMP_TOOLS_AUTOMAKE is not set
# CT_COMP_TOOLS_BISON is not set
# CT_COMP_TOOLS_DTC is not set
# CT_COMP_TOOLS_LIBTOOL is not set
# CT_COMP_TOOLS_M4 is not set
# CT_COMP_TOOLS_MAKE is not set
CT_ALL_COMP_TOOLS_CHOICES="AUTOCONF AUTOMAKE BISON DTC LIBTOOL M4 MAKE"
# end of Companion tools
#
# Test suite
#
# CT_TEST_SUITE_GCC is not set
# end of Test suite

View file

@ -0,0 +1,17 @@
#!/bin/bash
set -e
if [[ $# != 2 ]]; then
echo "Invalid arguments"
exit 1
fi
IN="$1"
OUT="$2"
TMPDIR="$(mktemp -d)"
trap "rm -rf '$TMPDIR'" EXIT
cd "$TMPDIR"
set -x
python3 /opt/implib/implib-gen.py --target aarch64-linux-gnu --dlopen --lazy-load --verbose "$IN"
${FFBUILD_CROSS_PREFIX}gcc $CFLAGS $STAGE_CFLAGS -DIMPLIB_HIDDEN_SHIMS -c *.tramp.S *.init.c
${FFBUILD_CROSS_PREFIX}ar -rcs "$OUT" *.tramp.o *.init.o

View file

@ -0,0 +1,16 @@
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR aarch64)
set(triple aarch64-ffbuild-linux-gnu)
set(CMAKE_C_COMPILER ${triple}-gcc)
set(CMAKE_CXX_COMPILER ${triple}-g++)
set(CMAKE_RANLIB ${triple}-gcc-ranlib)
set(CMAKE_AR ${triple}-gcc-ar)
set(CMAKE_SYSROOT /opt/ct-ng/${triple}/sysroot)
set(CMAKE_FIND_ROOT_PATH /opt/ct-ng /opt/ct-ng/${triple}/sysroot /opt/ffbuild)
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)

View file

@ -1,15 +1,22 @@
ARG GH_REPO=btbn/ffmpeg-builds
FROM ghcr.io/$GH_REPO/base:latest
ARG GH_REPO=ghcr.io/btbn/ffmpeg-builds
FROM $GH_REPO/base:latest
ENV DEBIAN_FRONTEND noninteractive
RUN --mount=src=ct-ng-config,dst=/.config \
git clone --filter=blob:none https://github.com/crosstool-ng/crosstool-ng.git /ct-ng && cd /ct-ng && \
./bootstrap && \
./configure --enable-local && \
make -j$(nproc) && \
cp /.config .config && \
./ct-ng build && \
cd / && \
rm -rf ct-ng
# Prepare "cross" environment to heavily favour static builds
RUN \
apt-get -y install binutils-mingw-w64-i686 gcc-mingw-w64-i686 g++-mingw-w64-i686 gfortran-mingw-w64-i686 && \
apt-get -y clean && \
rm /usr/lib/gcc/*-w64-mingw32/*/libstdc++*.dll* && \
rm /usr/lib/gcc/*-w64-mingw32/*/libgcc_s* && \
rm /usr/lib/gcc/*-w64-mingw32/*/*.dll.a && \
rm /usr/*-w64-mingw32/lib/*.dll.a && \
find /opt/ct-ng \
-name "*.dll" \
-or -name "*.dll.a" \
-delete && \
mkdir /opt/ffbuild
RUN rustup target add i686-pc-windows-gnu
@ -17,17 +24,24 @@ RUN rustup target add i686-pc-windows-gnu
ADD toolchain.cmake /toolchain.cmake
ADD cross.meson /cross.meson
ENV FFBUILD_TARGET_FLAGS="--pkg-config=pkg-config --cross-prefix=i686-w64-mingw32- --arch=i686 --target-os=mingw32" \
FFBUILD_TOOLCHAIN=i686-w64-mingw32 \
FFBUILD_CROSS_PREFIX=i686-w64-mingw32- \
ENV FFBUILD_TOOLCHAIN=i686-w64-mingw32
ENV PATH="/opt/ct-ng/bin:${PATH}" \
FFBUILD_TARGET_FLAGS="--pkg-config=pkg-config --cross-prefix=${FFBUILD_TOOLCHAIN}- --arch=i686 --target-os=mingw32" \
FFBUILD_CROSS_PREFIX=${FFBUILD_TOOLCHAIN}- \
FFBUILD_RUST_TARGET=i686-pc-windows-gnu \
FFBUILD_PREFIX=/opt/ffbuild \
FFBUILD_CMAKE_TOOLCHAIN=/toolchain.cmake \
PKG_CONFIG=pkg-config \
PKG_CONFIG_LIBDIR=/opt/ffbuild/lib/pkgconfig:/opt/ffbuild/share/pkgconfig \
CC="${FFBUILD_TOOLCHAIN}-gcc" \
CXX="${FFBUILD_TOOLCHAIN}-g++" \
LD="${FFBUILD_TOOLCHAIN}-ld" \
AR="${FFBUILD_TOOLCHAIN}-gcc-ar" \
RANLIB="${FFBUILD_TOOLCHAIN}-gcc-ranlib" \
NM="${FFBUILD_TOOLCHAIN}-gcc-nm" \
DLLTOOL="${FFBUILD_TOOLCHAIN}-dlltool" \
CFLAGS="-static-libgcc -static-libstdc++ -I/opt/ffbuild/include -O2 -pipe -D_FORTIFY_SOURCE=2 -fstack-protector-strong" \
CXXFLAGS="-static-libgcc -static-libstdc++ -I/opt/ffbuild/include -O2 -pipe -D_FORTIFY_SOURCE=2 -fstack-protector-strong" \
LDFLAGS="-static-libgcc -static-libstdc++ -L/opt/ffbuild/lib -O2 -pipe -fstack-protector-strong" \
DLLTOOL="i686-w64-mingw32-dlltool" \
STAGE_CFLAGS="-fno-semantic-interposition" \
STAGE_CXXFLAGS="-fno-semantic-interposition"

View file

@ -1,9 +1,11 @@
[binaries]
c = 'i686-w64-mingw32-gcc'
cpp = 'i686-w64-mingw32-g++'
ar = 'i686-w64-mingw32-ar'
ar = 'i686-w64-mingw32-gcc-ar'
ranlib = 'i686-w64-mingw32-gcc-ranlib'
strip = 'i686-w64-mingw32-strip'
windres = 'i686-w64-mingw32-windres'
dlltool = 'i686-w64-mingw32-dlltool'
exe_wrapper = ['wine']
[properties]

View file

@ -0,0 +1,784 @@
#
# Automatically generated file; DO NOT EDIT.
# crosstool-NG 1.25.0.196_227d99d Configuration
#
CT_CONFIGURE_has_static_link=y
CT_CONFIGURE_has_cxx11=y
CT_CONFIGURE_has_wget=y
CT_CONFIGURE_has_curl=y
CT_CONFIGURE_has_meson=y
CT_CONFIGURE_has_ninja=y
CT_CONFIGURE_has_rsync=y
CT_CONFIGURE_has_make_3_81_or_newer=y
CT_CONFIGURE_has_make_4_0_or_newer=y
CT_CONFIGURE_has_libtool_2_4_or_newer=y
CT_CONFIGURE_has_libtoolize_2_4_or_newer=y
CT_CONFIGURE_has_autoconf_2_71_or_newer=y
CT_CONFIGURE_has_autoreconf_2_71_or_newer=y
CT_CONFIGURE_has_automake_1_16_or_newer=y
CT_CONFIGURE_has_gnu_m4_1_4_12_or_newer=y
CT_CONFIGURE_has_python_3_4_or_newer=y
CT_CONFIGURE_has_bison_2_7_or_newer=y
CT_CONFIGURE_has_bison_3_0_4_or_newer=y
CT_CONFIGURE_has_python=y
CT_CONFIGURE_has_svn=y
CT_CONFIGURE_has_git=y
CT_CONFIGURE_has_md5sum=y
CT_CONFIGURE_has_sha1sum=y
CT_CONFIGURE_has_sha256sum=y
CT_CONFIGURE_has_sha512sum=y
CT_CONFIGURE_has_install_with_strip_program=y
CT_VERSION="1.25.0.196_227d99d"
CT_VCHECK=""
CT_CONFIG_VERSION_ENV="4"
CT_CONFIG_VERSION_CURRENT="4"
CT_CONFIG_VERSION="4"
CT_MODULES=y
#
# Paths and misc options
#
#
# crosstool-NG behavior
#
# CT_OBSOLETE is not set
CT_EXPERIMENTAL=y
CT_ALLOW_BUILD_AS_ROOT=y
CT_ALLOW_BUILD_AS_ROOT_SURE=y
# CT_ENABLE_EXPERIMENTAL_BUNDLED_PATCHES is not set
# CT_DEBUG_CT is not set
#
# Paths
#
CT_LOCAL_TARBALLS_DIR="${HOME}/src"
# CT_SAVE_TARBALLS is not set
# CT_TARBALLS_BUILDROOT_LAYOUT is not set
CT_WORK_DIR="${CT_TOP_DIR}/build"
CT_BUILD_TOP_DIR="${CT_WORK_DIR:-${CT_TOP_DIR}/.build}/${CT_HOST:+HOST-${CT_HOST}/}${CT_TARGET}"
CT_BUILD_DIR="${CT_BUILD_TOP_DIR}/build"
CT_PREFIX_DIR="/opt/ct-ng"
CT_RM_RF_PREFIX_DIR=y
CT_REMOVE_DOCS=y
# CT_INSTALL_LICENSES is not set
# CT_PREFIX_DIR_RO is not set
CT_STRIP_HOST_TOOLCHAIN_EXECUTABLES=y
CT_STRIP_TARGET_TOOLCHAIN_EXECUTABLES=y
# CT_TARBALL_RESULT is not set
#
# Downloading
#
CT_DOWNLOAD_AGENT_WGET=y
# CT_DOWNLOAD_AGENT_CURL is not set
# CT_DOWNLOAD_AGENT_NONE is not set
# CT_FORBID_DOWNLOAD is not set
# CT_FORCE_DOWNLOAD is not set
CT_CONNECT_TIMEOUT=10
CT_DOWNLOAD_WGET_OPTIONS="--passive-ftp --tries=3 -nc --progress=dot:binary"
# CT_ONLY_DOWNLOAD is not set
# CT_USE_MIRROR is not set
CT_VERIFY_DOWNLOAD_DIGEST=y
CT_VERIFY_DOWNLOAD_DIGEST_SHA512=y
# CT_VERIFY_DOWNLOAD_DIGEST_SHA256 is not set
# CT_VERIFY_DOWNLOAD_DIGEST_SHA1 is not set
# CT_VERIFY_DOWNLOAD_DIGEST_MD5 is not set
CT_VERIFY_DOWNLOAD_DIGEST_ALG="sha512"
# CT_VERIFY_DOWNLOAD_SIGNATURE is not set
#
# Extracting
#
# CT_FORCE_EXTRACT is not set
CT_OVERRIDE_CONFIG_GUESS_SUB=y
# CT_ONLY_EXTRACT is not set
CT_PATCH_BUNDLED=y
# CT_PATCH_LOCAL is not set
# CT_PATCH_BUNDLED_LOCAL is not set
# CT_PATCH_LOCAL_BUNDLED is not set
# CT_PATCH_NONE is not set
CT_PATCH_ORDER="bundled"
#
# Build behavior
#
CT_PARALLEL_JOBS=0
CT_LOAD=""
CT_USE_PIPES=y
CT_EXTRA_CFLAGS_FOR_BUILD=""
CT_EXTRA_CXXFLAGS_FOR_BUILD=""
CT_EXTRA_LDFLAGS_FOR_BUILD=""
CT_EXTRA_CFLAGS_FOR_HOST=""
CT_EXTRA_LDFLAGS_FOR_HOST=""
# CT_CONFIG_SHELL_SH is not set
# CT_CONFIG_SHELL_ASH is not set
CT_CONFIG_SHELL_BASH=y
# CT_CONFIG_SHELL_CUSTOM is not set
CT_CONFIG_SHELL="${bash}"
#
# Logging
#
# CT_LOG_ERROR is not set
# CT_LOG_WARN is not set
# CT_LOG_INFO is not set
# CT_LOG_EXTRA is not set
# CT_LOG_ALL is not set
CT_LOG_DEBUG=y
CT_LOG_LEVEL_MAX="DEBUG"
# CT_LOG_SEE_TOOLS_WARN is not set
# CT_LOG_TO_FILE is not set
# end of Paths and misc options
#
# Target options
#
# CT_ARCH_ALPHA is not set
# CT_ARCH_ARC is not set
# CT_ARCH_ARM is not set
# CT_ARCH_AVR is not set
# CT_ARCH_BPF is not set
# CT_ARCH_C6X is not set
# CT_ARCH_LOONGARCH is not set
# CT_ARCH_M68K is not set
# CT_ARCH_MICROBLAZE is not set
# CT_ARCH_MIPS is not set
# CT_ARCH_MOXIE is not set
# CT_ARCH_MSP430 is not set
# CT_ARCH_NIOS2 is not set
# CT_ARCH_POWERPC is not set
# CT_ARCH_PRU is not set
# CT_ARCH_RISCV is not set
# CT_ARCH_S390 is not set
# CT_ARCH_SH is not set
# CT_ARCH_SPARC is not set
CT_ARCH_X86=y
# CT_ARCH_XTENSA is not set
CT_ARCH="x86"
CT_ARCH_CHOICE_KSYM="X86"
CT_ARCH_CPU=""
CT_ARCH_TUNE=""
CT_ARCH_X86_SHOW=y
#
# Options for x86
#
CT_ARCH_X86_PKG_KSYM=""
CT_ALL_ARCH_CHOICES="ALPHA ARC ARM AVR BPF C6X LOONGARCH M68K MICROBLAZE MIPS MOXIE MSP430 NIOS2 POWERPC PRU RISCV S390 SH SPARC X86 XTENSA"
CT_ARCH_SUFFIX=""
# CT_OMIT_TARGET_VENDOR is not set
#
# Generic target options
#
# CT_MULTILIB is not set
CT_DEMULTILIB=y
CT_ARCH_USE_MMU=y
CT_ARCH_SUPPORTS_LIBSANITIZER=y
CT_ARCH_SUPPORTS_32=y
CT_ARCH_SUPPORTS_64=y
CT_ARCH_DEFAULT_32=y
CT_ARCH_BITNESS=32
CT_ARCH_32=y
# CT_ARCH_64 is not set
CT_ARCH_SUPPORTS_WITH_32_64=y
#
# Target optimisations
#
CT_ARCH_SUPPORTS_WITH_ARCH=y
CT_ARCH_SUPPORTS_WITH_CPU=y
CT_ARCH_SUPPORTS_WITH_TUNE=y
CT_ARCH_ARCH="i686"
CT_TARGET_CFLAGS=""
CT_TARGET_LDFLAGS=""
# end of Target options
#
# Toolchain options
#
#
# General toolchain options
#
CT_FORCE_SYSROOT=y
CT_USE_SYSROOT=y
CT_SYSROOT_NAME="sysroot"
CT_SYSROOT_DIR_PREFIX=""
CT_WANTS_STATIC_LINK=y
CT_WANTS_STATIC_LINK_CXX=y
# CT_STATIC_TOOLCHAIN is not set
CT_SHOW_CT_VERSION=y
CT_TOOLCHAIN_PKGVERSION=""
CT_TOOLCHAIN_BUGURL=""
#
# Tuple completion and aliasing
#
CT_TARGET_VENDOR="w64"
CT_TARGET_ALIAS_SED_EXPR=""
CT_TARGET_ALIAS=""
#
# Toolchain type
#
# CT_NATIVE is not set
CT_CROSS=y
# CT_CROSS_NATIVE is not set
# CT_CANADIAN is not set
CT_TOOLCHAIN_TYPE="cross"
#
# Build system
#
CT_BUILD=""
CT_BUILD_PREFIX=""
CT_BUILD_SUFFIX=""
#
# Misc options
#
# CT_TOOLCHAIN_ENABLE_NLS is not set
# end of Toolchain options
#
# Operating System
#
CT_WINDOWS=y
CT_KERNEL_SUPPORTS_SHARED_LIBS=y
# CT_KERNEL_BARE_METAL is not set
# CT_KERNEL_LINUX is not set
CT_KERNEL_WINDOWS=y
CT_KERNEL="windows"
CT_KERNEL_CHOICE_KSYM="WINDOWS"
CT_KERNEL_WINDOWS_SHOW=y
#
# Options for windows
#
CT_KERNEL_WINDOWS_PKG_KSYM=""
CT_ALL_KERNEL_CHOICES="BARE_METAL LINUX WINDOWS"
#
# Common kernel options
#
CT_SHARED_LIBS=y
# end of Operating System
#
# Binary utilities
#
CT_ARCH_BINFMT_ELF=y
CT_BINUTILS_BINUTILS=y
CT_BINUTILS="binutils"
CT_BINUTILS_CHOICE_KSYM="BINUTILS"
CT_BINUTILS_BINUTILS_SHOW=y
#
# Options for binutils
#
CT_BINUTILS_BINUTILS_PKG_KSYM="BINUTILS"
CT_BINUTILS_DIR_NAME="binutils"
CT_BINUTILS_USE_GNU=y
# CT_BINUTILS_USE_LINARO is not set
# CT_BINUTILS_USE_ORACLE is not set
CT_BINUTILS_USE="BINUTILS"
CT_BINUTILS_PKG_NAME="binutils"
CT_BINUTILS_SRC_RELEASE=y
# CT_BINUTILS_SRC_DEVEL is not set
# CT_BINUTILS_SRC_CUSTOM is not set
CT_BINUTILS_PATCH_GLOBAL=y
# CT_BINUTILS_PATCH_BUNDLED is not set
# CT_BINUTILS_PATCH_LOCAL is not set
# CT_BINUTILS_PATCH_BUNDLED_LOCAL is not set
# CT_BINUTILS_PATCH_LOCAL_BUNDLED is not set
# CT_BINUTILS_PATCH_NONE is not set
CT_BINUTILS_PATCH_ORDER="global"
CT_BINUTILS_V_2_40=y
# CT_BINUTILS_V_2_39 is not set
# CT_BINUTILS_V_2_38 is not set
# CT_BINUTILS_V_2_37 is not set
# CT_BINUTILS_V_2_36 is not set
# CT_BINUTILS_V_2_35 is not set
# CT_BINUTILS_V_2_34 is not set
# CT_BINUTILS_V_2_33 is not set
# CT_BINUTILS_V_2_32 is not set
# CT_BINUTILS_V_2_31 is not set
# CT_BINUTILS_V_2_30 is not set
# CT_BINUTILS_V_2_29 is not set
# CT_BINUTILS_V_2_28 is not set
# CT_BINUTILS_V_2_27 is not set
# CT_BINUTILS_V_2_26 is not set
CT_BINUTILS_VERSION="2.40"
CT_BINUTILS_MIRRORS="$(CT_Mirrors GNU binutils) $(CT_Mirrors sourceware binutils/releases)"
CT_BINUTILS_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_BINUTILS_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
CT_BINUTILS_ARCHIVE_FORMATS=".tar.xz .tar.bz2 .tar.gz"
CT_BINUTILS_SIGNATURE_FORMAT="packed/.sig"
CT_BINUTILS_later_than_2_39=y
CT_BINUTILS_2_39_or_later=y
CT_BINUTILS_later_than_2_30=y
CT_BINUTILS_2_30_or_later=y
CT_BINUTILS_later_than_2_27=y
CT_BINUTILS_2_27_or_later=y
CT_BINUTILS_later_than_2_26=y
CT_BINUTILS_2_26_or_later=y
#
# GNU binutils
#
CT_BINUTILS_GOLD_SUPPORTS_ARCH=y
CT_BINUTILS_GOLD_SUPPORT=y
CT_BINUTILS_FORCE_LD_BFD_DEFAULT=y
CT_BINUTILS_LINKER_LD=y
# CT_BINUTILS_LINKER_LD_GOLD is not set
CT_BINUTILS_LINKERS_LIST="ld"
CT_BINUTILS_LINKER_DEFAULT="bfd"
CT_BINUTILS_PLUGINS=y
CT_BINUTILS_RELRO=m
CT_BINUTILS_DETERMINISTIC_ARCHIVES=y
CT_BINUTILS_EXTRA_CONFIG_ARRAY=""
# CT_BINUTILS_FOR_TARGET is not set
CT_ALL_BINUTILS_CHOICES="BINUTILS"
# end of Binary utilities
#
# C-library
#
CT_LIBC_MINGW_W64=y
CT_LIBC="mingw-w64"
CT_LIBC_CHOICE_KSYM="MINGW_W64"
CT_THREADS="posix"
CT_LIBC_MINGW_W64_SHOW=y
#
# Options for mingw-w64
#
CT_LIBC_MINGW_W64_PKG_KSYM="MINGW_W64"
CT_MINGW_W64_DIR_NAME="mingw-w64"
CT_MINGW_W64_PKG_NAME="mingw-w64"
CT_MINGW_W64_SRC_RELEASE=y
# CT_MINGW_W64_SRC_DEVEL is not set
# CT_MINGW_W64_SRC_CUSTOM is not set
CT_MINGW_W64_PATCH_GLOBAL=y
# CT_MINGW_W64_PATCH_BUNDLED is not set
# CT_MINGW_W64_PATCH_LOCAL is not set
# CT_MINGW_W64_PATCH_BUNDLED_LOCAL is not set
# CT_MINGW_W64_PATCH_LOCAL_BUNDLED is not set
# CT_MINGW_W64_PATCH_NONE is not set
CT_MINGW_W64_PATCH_ORDER="global"
CT_MINGW_W64_V_V10_0=y
# CT_MINGW_W64_V_V9_0 is not set
# CT_MINGW_W64_V_V8_0 is not set
# CT_MINGW_W64_V_V7_0 is not set
# CT_MINGW_W64_V_V6_0 is not set
# CT_MINGW_W64_V_V5_0 is not set
# CT_MINGW_W64_V_V4_0 is not set
CT_MINGW_W64_VERSION="v10.0.0"
CT_MINGW_W64_MIRRORS="http://downloads.sourceforge.net/sourceforge/mingw-w64 https://downloads.sourceforge.net/project/mingw-w64/mingw-w64/mingw-w64-release/"
CT_MINGW_W64_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_MINGW_W64_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
CT_MINGW_W64_ARCHIVE_FORMATS=".tar.bz2 .zip"
CT_MINGW_W64_SIGNATURE_FORMAT="packed/.sig"
CT_MINGW_SECURE_API=y
# CT_MINGW_DEFAULT_MSVCRT_DEFAULT is not set
# CT_MINGW_DEFAULT_MSVCRT_MSVCRT is not set
CT_MINGW_DEFAULT_MSVCRT_UCRT=y
# CT_MINGW_DEFAULT_MSVCRT_CUSTOM is not set
CT_MINGW_DIRECTX=y
CT_MINGW_DDK=y
CT_MINGW_TOOLS=y
CT_MINGW_TOOL_LIST_ARRAY="gendef genidl genlib genpeimg widl"
CT_ALL_LIBC_CHOICES="AVR_LIBC GLIBC MINGW_W64 MOXIEBOX MUSL NEWLIB NONE PICOLIBC UCLIBC_NG"
CT_LIBC_SUPPORT_THREADS_ANY=y
CT_LIBC_SUPPORT_THREADS_NATIVE=y
CT_LIBC_SUPPORT_THREADS_POSIX=y
#
# Common C library options
#
# CT_THREADS_NATIVE is not set
CT_THREADS_POSIX=y
# CT_CREATE_LDSO_CONF is not set
CT_LIBC_XLDD=y
# end of C-library
#
# C compiler
#
CT_CC_CORE_NEEDED=y
CT_CC_SUPPORT_CXX=y
CT_CC_SUPPORT_FORTRAN=y
CT_CC_SUPPORT_ADA=y
CT_CC_SUPPORT_D=y
CT_CC_SUPPORT_JIT=y
CT_CC_SUPPORT_OBJC=y
CT_CC_SUPPORT_OBJCXX=y
CT_CC_SUPPORT_GOLANG=y
CT_CC_GCC=y
CT_CC="gcc"
CT_CC_CHOICE_KSYM="GCC"
CT_CC_GCC_SHOW=y
#
# Options for gcc
#
CT_CC_GCC_PKG_KSYM="GCC"
CT_GCC_DIR_NAME="gcc"
CT_GCC_USE_GNU=y
# CT_GCC_USE_LINARO is not set
# CT_GCC_USE_ORACLE is not set
CT_GCC_USE="GCC"
CT_GCC_PKG_NAME="gcc"
CT_GCC_SRC_RELEASE=y
# CT_GCC_SRC_DEVEL is not set
# CT_GCC_SRC_CUSTOM is not set
CT_GCC_PATCH_GLOBAL=y
# CT_GCC_PATCH_BUNDLED is not set
# CT_GCC_PATCH_LOCAL is not set
# CT_GCC_PATCH_BUNDLED_LOCAL is not set
# CT_GCC_PATCH_LOCAL_BUNDLED is not set
# CT_GCC_PATCH_NONE is not set
CT_GCC_PATCH_ORDER="global"
CT_GCC_V_13=y
# CT_GCC_V_12 is not set
# CT_GCC_V_11 is not set
# CT_GCC_V_10 is not set
# CT_GCC_V_9 is not set
# CT_GCC_V_8 is not set
# CT_GCC_V_7 is not set
# CT_GCC_V_6 is not set
# CT_GCC_V_5 is not set
# CT_GCC_V_4_9 is not set
CT_GCC_VERSION="13.1.0"
CT_GCC_MIRRORS="$(CT_Mirrors GNU gcc/gcc-${CT_GCC_VERSION}) $(CT_Mirrors sourceware gcc/releases/gcc-${CT_GCC_VERSION})"
CT_GCC_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_GCC_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
CT_GCC_ARCHIVE_FORMATS=".tar.xz .tar.gz"
CT_GCC_SIGNATURE_FORMAT=""
CT_GCC_later_than_13=y
CT_GCC_13_or_later=y
CT_GCC_later_than_12=y
CT_GCC_12_or_later=y
CT_GCC_later_than_11=y
CT_GCC_11_or_later=y
CT_GCC_later_than_10=y
CT_GCC_10_or_later=y
CT_GCC_later_than_9=y
CT_GCC_9_or_later=y
CT_GCC_later_than_8=y
CT_GCC_8_or_later=y
CT_GCC_later_than_7=y
CT_GCC_7_or_later=y
CT_GCC_later_than_6=y
CT_GCC_6_or_later=y
CT_GCC_later_than_5=y
CT_GCC_5_or_later=y
CT_GCC_later_than_4_9=y
CT_GCC_4_9_or_later=y
CT_CC_GCC_ENABLE_PLUGINS=y
CT_CC_GCC_HAS_LIBMPX=y
CT_CC_GCC_ENABLE_CXX_FLAGS=""
CT_CC_GCC_CORE_EXTRA_CONFIG_ARRAY="--enable-default-ssp"
CT_CC_GCC_EXTRA_CONFIG_ARRAY="--enable-default-ssp --with-build-config=bootstrap-lto-lean --enable-link-serialization=2"
CT_CC_GCC_STATIC_LIBSTDCXX=y
CT_CC_GCC_SYSTEM_ZLIB=y
CT_CC_GCC_CONFIG_TLS=m
#
# Optimisation features
#
CT_CC_GCC_USE_GRAPHITE=y
CT_CC_GCC_USE_LTO=y
CT_CC_GCC_LTO_ZSTD=m
#
# Settings for libraries running on target
#
# CT_CC_GCC_ENABLE_TARGET_OPTSPACE is not set
# CT_CC_GCC_LIBMUDFLAP is not set
CT_CC_GCC_LIBGOMP=y
CT_CC_GCC_LIBSSP=m
# CT_CC_GCC_LIBQUADMATH is not set
# CT_CC_GCC_LIBSTDCXX_VERBOSE is not set
#
# Misc. obscure options.
#
CT_CC_CXA_ATEXIT=y
CT_CC_GCC_TM_CLONE_REGISTRY=m
# CT_CC_GCC_DISABLE_PCH is not set
CT_CC_GCC_SJLJ_EXCEPTIONS=m
CT_CC_GCC_LDBL_128=m
# CT_CC_GCC_BUILD_ID is not set
CT_CC_GCC_LNK_HASH_STYLE_DEFAULT=y
# CT_CC_GCC_LNK_HASH_STYLE_SYSV is not set
# CT_CC_GCC_LNK_HASH_STYLE_GNU is not set
# CT_CC_GCC_LNK_HASH_STYLE_BOTH is not set
CT_CC_GCC_LNK_HASH_STYLE=""
CT_CC_GCC_DEC_FLOATS_AUTO=y
# CT_CC_GCC_DEC_FLOATS_BID is not set
# CT_CC_GCC_DEC_FLOATS_DPD is not set
# CT_CC_GCC_DEC_FLOATS_NO is not set
CT_CC_GCC_DEC_FLOATS=""
CT_ALL_CC_CHOICES="GCC"
#
# Additional supported languages:
#
CT_CC_LANG_CXX=y
# CT_CC_LANG_FORTRAN is not set
# CT_CC_LANG_JIT is not set
# CT_CC_LANG_ADA is not set
# CT_CC_LANG_D is not set
# CT_CC_LANG_OBJC is not set
# CT_CC_LANG_OBJCXX is not set
# CT_CC_LANG_GOLANG is not set
CT_CC_LANG_OTHERS=""
# end of C compiler
#
# Debug facilities
#
# CT_DEBUG_DUMA is not set
# CT_DEBUG_GDB is not set
# CT_DEBUG_LTRACE is not set
# CT_DEBUG_STRACE is not set
CT_ALL_DEBUG_CHOICES="DUMA GDB LTRACE STRACE"
# end of Debug facilities
#
# Companion libraries
#
# CT_COMPLIBS_CHECK is not set
# CT_COMP_LIBS_CLOOG is not set
# CT_COMP_LIBS_EXPAT is not set
CT_COMP_LIBS_GETTEXT=y
CT_COMP_LIBS_GETTEXT_PKG_KSYM="GETTEXT"
CT_GETTEXT_DIR_NAME="gettext"
CT_GETTEXT_PKG_NAME="gettext"
CT_GETTEXT_SRC_RELEASE=y
# CT_GETTEXT_SRC_DEVEL is not set
# CT_GETTEXT_SRC_CUSTOM is not set
CT_GETTEXT_PATCH_GLOBAL=y
# CT_GETTEXT_PATCH_BUNDLED is not set
# CT_GETTEXT_PATCH_LOCAL is not set
# CT_GETTEXT_PATCH_BUNDLED_LOCAL is not set
# CT_GETTEXT_PATCH_LOCAL_BUNDLED is not set
# CT_GETTEXT_PATCH_NONE is not set
CT_GETTEXT_PATCH_ORDER="global"
CT_GETTEXT_V_0_21=y
# CT_GETTEXT_V_0_20_1 is not set
# CT_GETTEXT_V_0_19_8_1 is not set
CT_GETTEXT_VERSION="0.21"
CT_GETTEXT_MIRRORS="$(CT_Mirrors GNU gettext)"
CT_GETTEXT_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_GETTEXT_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
CT_GETTEXT_ARCHIVE_FORMATS=".tar.xz .tar.gz"
CT_GETTEXT_SIGNATURE_FORMAT="packed/.sig"
CT_GETTEXT_0_21_or_later=y
CT_GETTEXT_0_21_or_older=y
CT_GETTEXT_INCOMPATIBLE_WITH_UCLIBC_NG=y
#
# This version of gettext is not compatible with uClibc-NG. Select
#
#
# a different version if uClibc-NG is used on the target or (in a
#
#
# Canadian cross build) on the host.
#
CT_COMP_LIBS_GMP=y
CT_COMP_LIBS_GMP_PKG_KSYM="GMP"
CT_GMP_DIR_NAME="gmp"
CT_GMP_PKG_NAME="gmp"
CT_GMP_SRC_RELEASE=y
# CT_GMP_SRC_DEVEL is not set
# CT_GMP_SRC_CUSTOM is not set
CT_GMP_PATCH_GLOBAL=y
# CT_GMP_PATCH_BUNDLED is not set
# CT_GMP_PATCH_LOCAL is not set
# CT_GMP_PATCH_BUNDLED_LOCAL is not set
# CT_GMP_PATCH_LOCAL_BUNDLED is not set
# CT_GMP_PATCH_NONE is not set
CT_GMP_PATCH_ORDER="global"
CT_GMP_V_6_2=y
# CT_GMP_V_6_1 is not set
CT_GMP_VERSION="6.2.1"
CT_GMP_MIRRORS="https://gmplib.org/download/gmp https://gmplib.org/download/gmp/archive $(CT_Mirrors GNU gmp)"
CT_GMP_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_GMP_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
CT_GMP_ARCHIVE_FORMATS=".tar.xz .tar.lz .tar.bz2"
CT_GMP_SIGNATURE_FORMAT="packed/.sig"
CT_COMP_LIBS_ISL=y
CT_COMP_LIBS_ISL_PKG_KSYM="ISL"
CT_ISL_DIR_NAME="isl"
CT_ISL_PKG_NAME="isl"
CT_ISL_SRC_RELEASE=y
# CT_ISL_SRC_DEVEL is not set
# CT_ISL_SRC_CUSTOM is not set
CT_ISL_PATCH_GLOBAL=y
# CT_ISL_PATCH_BUNDLED is not set
# CT_ISL_PATCH_LOCAL is not set
# CT_ISL_PATCH_BUNDLED_LOCAL is not set
# CT_ISL_PATCH_LOCAL_BUNDLED is not set
# CT_ISL_PATCH_NONE is not set
CT_ISL_PATCH_ORDER="global"
CT_ISL_V_0_26=y
# CT_ISL_V_0_25 is not set
# CT_ISL_V_0_24 is not set
# CT_ISL_V_0_23 is not set
# CT_ISL_V_0_22 is not set
# CT_ISL_V_0_21 is not set
# CT_ISL_V_0_20 is not set
# CT_ISL_V_0_19 is not set
# CT_ISL_V_0_18 is not set
# CT_ISL_V_0_17 is not set
# CT_ISL_V_0_16 is not set
# CT_ISL_V_0_15 is not set
CT_ISL_VERSION="0.26"
CT_ISL_MIRRORS="https://libisl.sourceforge.io"
CT_ISL_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_ISL_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
CT_ISL_ARCHIVE_FORMATS=".tar.xz .tar.bz2 .tar.gz"
CT_ISL_SIGNATURE_FORMAT=""
CT_ISL_later_than_0_18=y
CT_ISL_0_18_or_later=y
CT_ISL_later_than_0_15=y
CT_ISL_0_15_or_later=y
# CT_COMP_LIBS_LIBELF is not set
# CT_COMP_LIBS_LIBICONV is not set
CT_COMP_LIBS_MPC=y
CT_COMP_LIBS_MPC_PKG_KSYM="MPC"
CT_MPC_DIR_NAME="mpc"
CT_MPC_PKG_NAME="mpc"
CT_MPC_SRC_RELEASE=y
# CT_MPC_SRC_DEVEL is not set
# CT_MPC_SRC_CUSTOM is not set
CT_MPC_PATCH_GLOBAL=y
# CT_MPC_PATCH_BUNDLED is not set
# CT_MPC_PATCH_LOCAL is not set
# CT_MPC_PATCH_BUNDLED_LOCAL is not set
# CT_MPC_PATCH_LOCAL_BUNDLED is not set
# CT_MPC_PATCH_NONE is not set
CT_MPC_PATCH_ORDER="global"
CT_MPC_V_1_2=y
# CT_MPC_V_1_1 is not set
# CT_MPC_V_1_0 is not set
CT_MPC_VERSION="1.2.1"
CT_MPC_MIRRORS="http://www.multiprecision.org/downloads $(CT_Mirrors GNU mpc)"
CT_MPC_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_MPC_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
CT_MPC_ARCHIVE_FORMATS=".tar.gz"
CT_MPC_SIGNATURE_FORMAT="packed/.sig"
CT_MPC_later_than_1_1_0=y
CT_MPC_1_1_0_or_later=y
CT_COMP_LIBS_MPFR=y
CT_COMP_LIBS_MPFR_PKG_KSYM="MPFR"
CT_MPFR_DIR_NAME="mpfr"
CT_MPFR_PKG_NAME="mpfr"
CT_MPFR_SRC_RELEASE=y
# CT_MPFR_SRC_DEVEL is not set
# CT_MPFR_SRC_CUSTOM is not set
CT_MPFR_PATCH_GLOBAL=y
# CT_MPFR_PATCH_BUNDLED is not set
# CT_MPFR_PATCH_LOCAL is not set
# CT_MPFR_PATCH_BUNDLED_LOCAL is not set
# CT_MPFR_PATCH_LOCAL_BUNDLED is not set
# CT_MPFR_PATCH_NONE is not set
CT_MPFR_PATCH_ORDER="global"
CT_MPFR_V_4_1=y
# CT_MPFR_V_4_0 is not set
# CT_MPFR_V_3_1 is not set
CT_MPFR_VERSION="4.1.0"
CT_MPFR_MIRRORS="http://www.mpfr.org/mpfr-${CT_MPFR_VERSION} $(CT_Mirrors GNU mpfr)"
CT_MPFR_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_MPFR_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
CT_MPFR_ARCHIVE_FORMATS=".tar.xz .tar.bz2 .tar.gz .zip"
CT_MPFR_SIGNATURE_FORMAT="packed/.asc"
CT_MPFR_later_than_4_0_0=y
CT_MPFR_4_0_0_or_later=y
# CT_COMP_LIBS_NCURSES is not set
CT_COMP_LIBS_ZLIB=y
CT_COMP_LIBS_ZLIB_PKG_KSYM="ZLIB"
CT_ZLIB_DIR_NAME="zlib"
CT_ZLIB_PKG_NAME="zlib"
CT_ZLIB_SRC_RELEASE=y
# CT_ZLIB_SRC_DEVEL is not set
# CT_ZLIB_SRC_CUSTOM is not set
CT_ZLIB_PATCH_GLOBAL=y
# CT_ZLIB_PATCH_BUNDLED is not set
# CT_ZLIB_PATCH_LOCAL is not set
# CT_ZLIB_PATCH_BUNDLED_LOCAL is not set
# CT_ZLIB_PATCH_LOCAL_BUNDLED is not set
# CT_ZLIB_PATCH_NONE is not set
CT_ZLIB_PATCH_ORDER="global"
CT_ZLIB_V_1_2_13=y
CT_ZLIB_VERSION="1.2.13"
CT_ZLIB_MIRRORS="https://github.com/madler/zlib/releases/download/v${CT_ZLIB_VERSION} https://www.zlib.net/"
CT_ZLIB_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_ZLIB_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
CT_ZLIB_ARCHIVE_FORMATS=".tar.xz .tar.gz"
CT_ZLIB_SIGNATURE_FORMAT="packed/.asc"
CT_COMP_LIBS_ZSTD=y
CT_COMP_LIBS_ZSTD_PKG_KSYM="ZSTD"
CT_ZSTD_DIR_NAME="zstd"
CT_ZSTD_PKG_NAME="zstd"
CT_ZSTD_SRC_RELEASE=y
# CT_ZSTD_SRC_DEVEL is not set
# CT_ZSTD_SRC_CUSTOM is not set
CT_ZSTD_PATCH_GLOBAL=y
# CT_ZSTD_PATCH_BUNDLED is not set
# CT_ZSTD_PATCH_LOCAL is not set
# CT_ZSTD_PATCH_BUNDLED_LOCAL is not set
# CT_ZSTD_PATCH_LOCAL_BUNDLED is not set
# CT_ZSTD_PATCH_NONE is not set
CT_ZSTD_PATCH_ORDER="global"
CT_ZSTD_V_1_5_5=y
# CT_ZSTD_V_1_5_2 is not set
CT_ZSTD_VERSION="1.5.5"
CT_ZSTD_MIRRORS="https://github.com/facebook/zstd/releases/download/v${CT_ZSTD_VERSION} https://www.zstd.net/"
CT_ZSTD_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_ZSTD_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
CT_ZSTD_ARCHIVE_FORMATS=".tar.gz"
CT_ZSTD_SIGNATURE_FORMAT="packed/.sig"
CT_ALL_COMP_LIBS_CHOICES="CLOOG EXPAT GETTEXT GMP GNUPRUMCU ISL LIBELF LIBICONV MPC MPFR NCURSES NEWLIB_NANO PICOLIBC ZLIB ZSTD"
# CT_LIBICONV_NEEDED is not set
# CT_GETTEXT_NEEDED is not set
CT_GMP_NEEDED=y
CT_MPFR_NEEDED=y
CT_ISL_NEEDED=y
CT_MPC_NEEDED=y
CT_ZLIB_NEEDED=y
CT_ZSTD_NEEDED=y
CT_GMP=y
CT_MPFR=y
CT_ISL=y
CT_MPC=y
CT_ZLIB=y
CT_ZSTD=y
# end of Companion libraries
#
# Companion tools
#
# CT_COMP_TOOLS_FOR_HOST is not set
# CT_COMP_TOOLS_AUTOCONF is not set
# CT_COMP_TOOLS_AUTOMAKE is not set
# CT_COMP_TOOLS_BISON is not set
# CT_COMP_TOOLS_DTC is not set
# CT_COMP_TOOLS_LIBTOOL is not set
# CT_COMP_TOOLS_M4 is not set
# CT_COMP_TOOLS_MAKE is not set
CT_ALL_COMP_TOOLS_CHOICES="AUTOCONF AUTOMAKE BISON DTC LIBTOOL M4 MAKE"
# end of Companion tools
#
# Test suite
#
# CT_TEST_SUITE_GCC is not set
# end of Test suite

View file

@ -1,12 +1,16 @@
set(CMAKE_SYSTEM_NAME Windows)
set(CMAKE_SYSTEM_PROCESSOR i686)
set(CMAKE_C_COMPILER i686-w64-mingw32-gcc)
set(CMAKE_CXX_COMPILER i686-w64-mingw32-g++)
set(CMAKE_RC_COMPILER i686-w64-mingw32-windres)
set(CMAKE_RANLIB i686-w64-mingw32-ranlib)
set(triple i686-w64-mingw32)
set(CMAKE_FIND_ROOT_PATH /usr/i686-w64-mingw32 /opt/ffbuild)
set(CMAKE_C_COMPILER ${triple}-gcc)
set(CMAKE_CXX_COMPILER ${triple}-g++)
set(CMAKE_RC_COMPILER ${triple}-windres)
set(CMAKE_RANLIB ${triple}-gcc-ranlib)
set(CMAKE_AR ${triple}-gcc-ar)
set(CMAKE_SYSROOT /opt/ct-ng/${triple}/sysroot)
set(CMAKE_FIND_ROOT_PATH /opt/ct-ng /opt/ct-ng/${triple}/sysroot /opt/ffbuild)
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)

View file

@ -1,15 +1,22 @@
ARG GH_REPO=btbn/ffmpeg-builds
FROM ghcr.io/$GH_REPO/base:latest
ARG GH_REPO=ghcr.io/btbn/ffmpeg-builds
FROM $GH_REPO/base:latest
ENV DEBIAN_FRONTEND noninteractive
RUN --mount=src=ct-ng-config,dst=/.config \
git clone --filter=blob:none https://github.com/crosstool-ng/crosstool-ng.git /ct-ng && cd /ct-ng && \
./bootstrap && \
./configure --enable-local && \
make -j$(nproc) && \
cp /.config .config && \
./ct-ng build && \
cd / && \
rm -rf ct-ng
# Prepare "cross" environment to heavily favour static builds
RUN \
apt-get -y install binutils-mingw-w64-x86-64 gcc-mingw-w64-x86-64 g++-mingw-w64-x86-64 gfortran-mingw-w64-x86-64 && \
apt-get -y clean && \
rm /usr/lib/gcc/*-w64-mingw32/*/libstdc++*.dll* && \
rm /usr/lib/gcc/*-w64-mingw32/*/libgcc_s* && \
rm /usr/lib/gcc/*-w64-mingw32/*/*.dll.a && \
rm /usr/*-w64-mingw32/lib/*.dll.a && \
find /opt/ct-ng \
-name "*.dll" \
-or -name "*.dll.a" \
-delete && \
mkdir /opt/ffbuild
RUN rustup target add x86_64-pc-windows-gnu
@ -17,17 +24,24 @@ RUN rustup target add x86_64-pc-windows-gnu
ADD toolchain.cmake /toolchain.cmake
ADD cross.meson /cross.meson
ENV FFBUILD_TARGET_FLAGS="--pkg-config=pkg-config --cross-prefix=x86_64-w64-mingw32- --arch=x86_64 --target-os=mingw32" \
FFBUILD_TOOLCHAIN=x86_64-w64-mingw32 \
FFBUILD_CROSS_PREFIX=x86_64-w64-mingw32- \
ENV FFBUILD_TOOLCHAIN=x86_64-w64-mingw32
ENV PATH="/opt/ct-ng/bin:${PATH}" \
FFBUILD_TARGET_FLAGS="--pkg-config=pkg-config --cross-prefix=${FFBUILD_TOOLCHAIN}- --arch=x86_64 --target-os=mingw32" \
FFBUILD_CROSS_PREFIX=${FFBUILD_TOOLCHAIN}- \
FFBUILD_RUST_TARGET=x86_64-pc-windows-gnu \
FFBUILD_PREFIX=/opt/ffbuild \
FFBUILD_CMAKE_TOOLCHAIN=/toolchain.cmake \
PKG_CONFIG=pkg-config \
PKG_CONFIG_LIBDIR=/opt/ffbuild/lib/pkgconfig:/opt/ffbuild/share/pkgconfig \
CC="${FFBUILD_TOOLCHAIN}-gcc" \
CXX="${FFBUILD_TOOLCHAIN}-g++" \
LD="${FFBUILD_TOOLCHAIN}-ld" \
AR="${FFBUILD_TOOLCHAIN}-gcc-ar" \
RANLIB="${FFBUILD_TOOLCHAIN}-gcc-ranlib" \
NM="${FFBUILD_TOOLCHAIN}-gcc-nm" \
DLLTOOL="${FFBUILD_TOOLCHAIN}-dlltool" \
CFLAGS="-static-libgcc -static-libstdc++ -I/opt/ffbuild/include -O2 -pipe -D_FORTIFY_SOURCE=2 -fstack-protector-strong" \
CXXFLAGS="-static-libgcc -static-libstdc++ -I/opt/ffbuild/include -O2 -pipe -D_FORTIFY_SOURCE=2 -fstack-protector-strong" \
LDFLAGS="-static-libgcc -static-libstdc++ -L/opt/ffbuild/lib -O2 -pipe -fstack-protector-strong" \
DLLTOOL="x86_64-w64-mingw32-dlltool" \
STAGE_CFLAGS="-fno-semantic-interposition" \
STAGE_CXXFLAGS="-fno-semantic-interposition"

View file

@ -1,9 +1,11 @@
[binaries]
c = 'x86_64-w64-mingw32-gcc'
cpp = 'x86_64-w64-mingw32-g++'
ar = 'x86_64-w64-mingw32-ar'
ar = 'x86_64-w64-mingw32-gcc-ar'
ranlib = 'x86_64-w64-mingw32-gcc-ranlib'
strip = 'x86_64-w64-mingw32-strip'
windres = 'x86_64-w64-mingw32-windres'
dlltool = 'x86_64-w64-mingw32-dlltool'
exe_wrapper = ['wine']
[properties]

View file

@ -0,0 +1,784 @@
#
# Automatically generated file; DO NOT EDIT.
# crosstool-NG 1.25.0.196_227d99d Configuration
#
CT_CONFIGURE_has_static_link=y
CT_CONFIGURE_has_cxx11=y
CT_CONFIGURE_has_wget=y
CT_CONFIGURE_has_curl=y
CT_CONFIGURE_has_meson=y
CT_CONFIGURE_has_ninja=y
CT_CONFIGURE_has_rsync=y
CT_CONFIGURE_has_make_3_81_or_newer=y
CT_CONFIGURE_has_make_4_0_or_newer=y
CT_CONFIGURE_has_libtool_2_4_or_newer=y
CT_CONFIGURE_has_libtoolize_2_4_or_newer=y
CT_CONFIGURE_has_autoconf_2_71_or_newer=y
CT_CONFIGURE_has_autoreconf_2_71_or_newer=y
CT_CONFIGURE_has_automake_1_16_or_newer=y
CT_CONFIGURE_has_gnu_m4_1_4_12_or_newer=y
CT_CONFIGURE_has_python_3_4_or_newer=y
CT_CONFIGURE_has_bison_2_7_or_newer=y
CT_CONFIGURE_has_bison_3_0_4_or_newer=y
CT_CONFIGURE_has_python=y
CT_CONFIGURE_has_svn=y
CT_CONFIGURE_has_git=y
CT_CONFIGURE_has_md5sum=y
CT_CONFIGURE_has_sha1sum=y
CT_CONFIGURE_has_sha256sum=y
CT_CONFIGURE_has_sha512sum=y
CT_CONFIGURE_has_install_with_strip_program=y
CT_VERSION="1.25.0.196_227d99d"
CT_VCHECK=""
CT_CONFIG_VERSION_ENV="4"
CT_CONFIG_VERSION_CURRENT="4"
CT_CONFIG_VERSION="4"
CT_MODULES=y
#
# Paths and misc options
#
#
# crosstool-NG behavior
#
# CT_OBSOLETE is not set
CT_EXPERIMENTAL=y
CT_ALLOW_BUILD_AS_ROOT=y
CT_ALLOW_BUILD_AS_ROOT_SURE=y
# CT_ENABLE_EXPERIMENTAL_BUNDLED_PATCHES is not set
# CT_DEBUG_CT is not set
#
# Paths
#
CT_LOCAL_TARBALLS_DIR="${HOME}/src"
# CT_SAVE_TARBALLS is not set
# CT_TARBALLS_BUILDROOT_LAYOUT is not set
CT_WORK_DIR="${CT_TOP_DIR}/build"
CT_BUILD_TOP_DIR="${CT_WORK_DIR:-${CT_TOP_DIR}/.build}/${CT_HOST:+HOST-${CT_HOST}/}${CT_TARGET}"
CT_BUILD_DIR="${CT_BUILD_TOP_DIR}/build"
CT_PREFIX_DIR="/opt/ct-ng"
CT_RM_RF_PREFIX_DIR=y
CT_REMOVE_DOCS=y
# CT_INSTALL_LICENSES is not set
# CT_PREFIX_DIR_RO is not set
CT_STRIP_HOST_TOOLCHAIN_EXECUTABLES=y
CT_STRIP_TARGET_TOOLCHAIN_EXECUTABLES=y
# CT_TARBALL_RESULT is not set
#
# Downloading
#
CT_DOWNLOAD_AGENT_WGET=y
# CT_DOWNLOAD_AGENT_CURL is not set
# CT_DOWNLOAD_AGENT_NONE is not set
# CT_FORBID_DOWNLOAD is not set
# CT_FORCE_DOWNLOAD is not set
CT_CONNECT_TIMEOUT=10
CT_DOWNLOAD_WGET_OPTIONS="--passive-ftp --tries=3 -nc --progress=dot:binary"
# CT_ONLY_DOWNLOAD is not set
# CT_USE_MIRROR is not set
CT_VERIFY_DOWNLOAD_DIGEST=y
CT_VERIFY_DOWNLOAD_DIGEST_SHA512=y
# CT_VERIFY_DOWNLOAD_DIGEST_SHA256 is not set
# CT_VERIFY_DOWNLOAD_DIGEST_SHA1 is not set
# CT_VERIFY_DOWNLOAD_DIGEST_MD5 is not set
CT_VERIFY_DOWNLOAD_DIGEST_ALG="sha512"
# CT_VERIFY_DOWNLOAD_SIGNATURE is not set
#
# Extracting
#
# CT_FORCE_EXTRACT is not set
CT_OVERRIDE_CONFIG_GUESS_SUB=y
# CT_ONLY_EXTRACT is not set
CT_PATCH_BUNDLED=y
# CT_PATCH_LOCAL is not set
# CT_PATCH_BUNDLED_LOCAL is not set
# CT_PATCH_LOCAL_BUNDLED is not set
# CT_PATCH_NONE is not set
CT_PATCH_ORDER="bundled"
#
# Build behavior
#
CT_PARALLEL_JOBS=0
CT_LOAD=""
CT_USE_PIPES=y
CT_EXTRA_CFLAGS_FOR_BUILD=""
CT_EXTRA_CXXFLAGS_FOR_BUILD=""
CT_EXTRA_LDFLAGS_FOR_BUILD=""
CT_EXTRA_CFLAGS_FOR_HOST=""
CT_EXTRA_LDFLAGS_FOR_HOST=""
# CT_CONFIG_SHELL_SH is not set
# CT_CONFIG_SHELL_ASH is not set
CT_CONFIG_SHELL_BASH=y
# CT_CONFIG_SHELL_CUSTOM is not set
CT_CONFIG_SHELL="${bash}"
#
# Logging
#
# CT_LOG_ERROR is not set
# CT_LOG_WARN is not set
# CT_LOG_INFO is not set
# CT_LOG_EXTRA is not set
# CT_LOG_ALL is not set
CT_LOG_DEBUG=y
CT_LOG_LEVEL_MAX="DEBUG"
# CT_LOG_SEE_TOOLS_WARN is not set
# CT_LOG_TO_FILE is not set
# end of Paths and misc options
#
# Target options
#
# CT_ARCH_ALPHA is not set
# CT_ARCH_ARC is not set
# CT_ARCH_ARM is not set
# CT_ARCH_AVR is not set
# CT_ARCH_BPF is not set
# CT_ARCH_C6X is not set
# CT_ARCH_LOONGARCH is not set
# CT_ARCH_M68K is not set
# CT_ARCH_MICROBLAZE is not set
# CT_ARCH_MIPS is not set
# CT_ARCH_MOXIE is not set
# CT_ARCH_MSP430 is not set
# CT_ARCH_NIOS2 is not set
# CT_ARCH_POWERPC is not set
# CT_ARCH_PRU is not set
# CT_ARCH_RISCV is not set
# CT_ARCH_S390 is not set
# CT_ARCH_SH is not set
# CT_ARCH_SPARC is not set
CT_ARCH_X86=y
# CT_ARCH_XTENSA is not set
CT_ARCH="x86"
CT_ARCH_CHOICE_KSYM="X86"
CT_ARCH_CPU=""
CT_ARCH_TUNE=""
CT_ARCH_X86_SHOW=y
#
# Options for x86
#
CT_ARCH_X86_PKG_KSYM=""
CT_ALL_ARCH_CHOICES="ALPHA ARC ARM AVR BPF C6X LOONGARCH M68K MICROBLAZE MIPS MOXIE MSP430 NIOS2 POWERPC PRU RISCV S390 SH SPARC X86 XTENSA"
CT_ARCH_SUFFIX=""
# CT_OMIT_TARGET_VENDOR is not set
#
# Generic target options
#
# CT_MULTILIB is not set
CT_DEMULTILIB=y
CT_ARCH_USE_MMU=y
CT_ARCH_SUPPORTS_LIBSANITIZER=y
CT_ARCH_SUPPORTS_32=y
CT_ARCH_SUPPORTS_64=y
CT_ARCH_DEFAULT_32=y
CT_ARCH_BITNESS=64
# CT_ARCH_32 is not set
CT_ARCH_64=y
CT_ARCH_SUPPORTS_WITH_32_64=y
#
# Target optimisations
#
CT_ARCH_SUPPORTS_WITH_ARCH=y
CT_ARCH_SUPPORTS_WITH_CPU=y
CT_ARCH_SUPPORTS_WITH_TUNE=y
CT_ARCH_ARCH=""
CT_TARGET_CFLAGS=""
CT_TARGET_LDFLAGS=""
# end of Target options
#
# Toolchain options
#
#
# General toolchain options
#
CT_FORCE_SYSROOT=y
CT_USE_SYSROOT=y
CT_SYSROOT_NAME="sysroot"
CT_SYSROOT_DIR_PREFIX=""
CT_WANTS_STATIC_LINK=y
CT_WANTS_STATIC_LINK_CXX=y
# CT_STATIC_TOOLCHAIN is not set
CT_SHOW_CT_VERSION=y
CT_TOOLCHAIN_PKGVERSION=""
CT_TOOLCHAIN_BUGURL=""
#
# Tuple completion and aliasing
#
CT_TARGET_VENDOR="w64"
CT_TARGET_ALIAS_SED_EXPR=""
CT_TARGET_ALIAS=""
#
# Toolchain type
#
# CT_NATIVE is not set
CT_CROSS=y
# CT_CROSS_NATIVE is not set
# CT_CANADIAN is not set
CT_TOOLCHAIN_TYPE="cross"
#
# Build system
#
CT_BUILD=""
CT_BUILD_PREFIX=""
CT_BUILD_SUFFIX=""
#
# Misc options
#
# CT_TOOLCHAIN_ENABLE_NLS is not set
# end of Toolchain options
#
# Operating System
#
CT_WINDOWS=y
CT_KERNEL_SUPPORTS_SHARED_LIBS=y
# CT_KERNEL_BARE_METAL is not set
# CT_KERNEL_LINUX is not set
CT_KERNEL_WINDOWS=y
CT_KERNEL="windows"
CT_KERNEL_CHOICE_KSYM="WINDOWS"
CT_KERNEL_WINDOWS_SHOW=y
#
# Options for windows
#
CT_KERNEL_WINDOWS_PKG_KSYM=""
CT_ALL_KERNEL_CHOICES="BARE_METAL LINUX WINDOWS"
#
# Common kernel options
#
CT_SHARED_LIBS=y
# end of Operating System
#
# Binary utilities
#
CT_ARCH_BINFMT_ELF=y
CT_BINUTILS_BINUTILS=y
CT_BINUTILS="binutils"
CT_BINUTILS_CHOICE_KSYM="BINUTILS"
CT_BINUTILS_BINUTILS_SHOW=y
#
# Options for binutils
#
CT_BINUTILS_BINUTILS_PKG_KSYM="BINUTILS"
CT_BINUTILS_DIR_NAME="binutils"
CT_BINUTILS_USE_GNU=y
# CT_BINUTILS_USE_LINARO is not set
# CT_BINUTILS_USE_ORACLE is not set
CT_BINUTILS_USE="BINUTILS"
CT_BINUTILS_PKG_NAME="binutils"
CT_BINUTILS_SRC_RELEASE=y
# CT_BINUTILS_SRC_DEVEL is not set
# CT_BINUTILS_SRC_CUSTOM is not set
CT_BINUTILS_PATCH_GLOBAL=y
# CT_BINUTILS_PATCH_BUNDLED is not set
# CT_BINUTILS_PATCH_LOCAL is not set
# CT_BINUTILS_PATCH_BUNDLED_LOCAL is not set
# CT_BINUTILS_PATCH_LOCAL_BUNDLED is not set
# CT_BINUTILS_PATCH_NONE is not set
CT_BINUTILS_PATCH_ORDER="global"
CT_BINUTILS_V_2_40=y
# CT_BINUTILS_V_2_39 is not set
# CT_BINUTILS_V_2_38 is not set
# CT_BINUTILS_V_2_37 is not set
# CT_BINUTILS_V_2_36 is not set
# CT_BINUTILS_V_2_35 is not set
# CT_BINUTILS_V_2_34 is not set
# CT_BINUTILS_V_2_33 is not set
# CT_BINUTILS_V_2_32 is not set
# CT_BINUTILS_V_2_31 is not set
# CT_BINUTILS_V_2_30 is not set
# CT_BINUTILS_V_2_29 is not set
# CT_BINUTILS_V_2_28 is not set
# CT_BINUTILS_V_2_27 is not set
# CT_BINUTILS_V_2_26 is not set
CT_BINUTILS_VERSION="2.40"
CT_BINUTILS_MIRRORS="$(CT_Mirrors GNU binutils) $(CT_Mirrors sourceware binutils/releases)"
CT_BINUTILS_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_BINUTILS_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
CT_BINUTILS_ARCHIVE_FORMATS=".tar.xz .tar.bz2 .tar.gz"
CT_BINUTILS_SIGNATURE_FORMAT="packed/.sig"
CT_BINUTILS_later_than_2_39=y
CT_BINUTILS_2_39_or_later=y
CT_BINUTILS_later_than_2_30=y
CT_BINUTILS_2_30_or_later=y
CT_BINUTILS_later_than_2_27=y
CT_BINUTILS_2_27_or_later=y
CT_BINUTILS_later_than_2_26=y
CT_BINUTILS_2_26_or_later=y
#
# GNU binutils
#
CT_BINUTILS_GOLD_SUPPORTS_ARCH=y
CT_BINUTILS_GOLD_SUPPORT=y
CT_BINUTILS_FORCE_LD_BFD_DEFAULT=y
CT_BINUTILS_LINKER_LD=y
# CT_BINUTILS_LINKER_LD_GOLD is not set
CT_BINUTILS_LINKERS_LIST="ld"
CT_BINUTILS_LINKER_DEFAULT="bfd"
CT_BINUTILS_PLUGINS=y
CT_BINUTILS_RELRO=m
CT_BINUTILS_DETERMINISTIC_ARCHIVES=y
CT_BINUTILS_EXTRA_CONFIG_ARRAY=""
# CT_BINUTILS_FOR_TARGET is not set
CT_ALL_BINUTILS_CHOICES="BINUTILS"
# end of Binary utilities
#
# C-library
#
CT_LIBC_MINGW_W64=y
CT_LIBC="mingw-w64"
CT_LIBC_CHOICE_KSYM="MINGW_W64"
CT_THREADS="posix"
CT_LIBC_MINGW_W64_SHOW=y
#
# Options for mingw-w64
#
CT_LIBC_MINGW_W64_PKG_KSYM="MINGW_W64"
CT_MINGW_W64_DIR_NAME="mingw-w64"
CT_MINGW_W64_PKG_NAME="mingw-w64"
CT_MINGW_W64_SRC_RELEASE=y
# CT_MINGW_W64_SRC_DEVEL is not set
# CT_MINGW_W64_SRC_CUSTOM is not set
CT_MINGW_W64_PATCH_GLOBAL=y
# CT_MINGW_W64_PATCH_BUNDLED is not set
# CT_MINGW_W64_PATCH_LOCAL is not set
# CT_MINGW_W64_PATCH_BUNDLED_LOCAL is not set
# CT_MINGW_W64_PATCH_LOCAL_BUNDLED is not set
# CT_MINGW_W64_PATCH_NONE is not set
CT_MINGW_W64_PATCH_ORDER="global"
CT_MINGW_W64_V_V10_0=y
# CT_MINGW_W64_V_V9_0 is not set
# CT_MINGW_W64_V_V8_0 is not set
# CT_MINGW_W64_V_V7_0 is not set
# CT_MINGW_W64_V_V6_0 is not set
# CT_MINGW_W64_V_V5_0 is not set
# CT_MINGW_W64_V_V4_0 is not set
CT_MINGW_W64_VERSION="v10.0.0"
CT_MINGW_W64_MIRRORS="http://downloads.sourceforge.net/sourceforge/mingw-w64 https://downloads.sourceforge.net/project/mingw-w64/mingw-w64/mingw-w64-release/"
CT_MINGW_W64_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_MINGW_W64_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
CT_MINGW_W64_ARCHIVE_FORMATS=".tar.bz2 .zip"
CT_MINGW_W64_SIGNATURE_FORMAT="packed/.sig"
CT_MINGW_SECURE_API=y
# CT_MINGW_DEFAULT_MSVCRT_DEFAULT is not set
# CT_MINGW_DEFAULT_MSVCRT_MSVCRT is not set
CT_MINGW_DEFAULT_MSVCRT_UCRT=y
# CT_MINGW_DEFAULT_MSVCRT_CUSTOM is not set
CT_MINGW_DIRECTX=y
CT_MINGW_DDK=y
CT_MINGW_TOOLS=y
CT_MINGW_TOOL_LIST_ARRAY="gendef genidl genlib genpeimg widl"
CT_ALL_LIBC_CHOICES="AVR_LIBC GLIBC MINGW_W64 MOXIEBOX MUSL NEWLIB NONE PICOLIBC UCLIBC_NG"
CT_LIBC_SUPPORT_THREADS_ANY=y
CT_LIBC_SUPPORT_THREADS_NATIVE=y
CT_LIBC_SUPPORT_THREADS_POSIX=y
#
# Common C library options
#
# CT_THREADS_NATIVE is not set
CT_THREADS_POSIX=y
# CT_CREATE_LDSO_CONF is not set
CT_LIBC_XLDD=y
# end of C-library
#
# C compiler
#
CT_CC_CORE_NEEDED=y
CT_CC_SUPPORT_CXX=y
CT_CC_SUPPORT_FORTRAN=y
CT_CC_SUPPORT_ADA=y
CT_CC_SUPPORT_D=y
CT_CC_SUPPORT_JIT=y
CT_CC_SUPPORT_OBJC=y
CT_CC_SUPPORT_OBJCXX=y
CT_CC_SUPPORT_GOLANG=y
CT_CC_GCC=y
CT_CC="gcc"
CT_CC_CHOICE_KSYM="GCC"
CT_CC_GCC_SHOW=y
#
# Options for gcc
#
CT_CC_GCC_PKG_KSYM="GCC"
CT_GCC_DIR_NAME="gcc"
CT_GCC_USE_GNU=y
# CT_GCC_USE_LINARO is not set
# CT_GCC_USE_ORACLE is not set
CT_GCC_USE="GCC"
CT_GCC_PKG_NAME="gcc"
CT_GCC_SRC_RELEASE=y
# CT_GCC_SRC_DEVEL is not set
# CT_GCC_SRC_CUSTOM is not set
CT_GCC_PATCH_GLOBAL=y
# CT_GCC_PATCH_BUNDLED is not set
# CT_GCC_PATCH_LOCAL is not set
# CT_GCC_PATCH_BUNDLED_LOCAL is not set
# CT_GCC_PATCH_LOCAL_BUNDLED is not set
# CT_GCC_PATCH_NONE is not set
CT_GCC_PATCH_ORDER="global"
CT_GCC_V_13=y
# CT_GCC_V_12 is not set
# CT_GCC_V_11 is not set
# CT_GCC_V_10 is not set
# CT_GCC_V_9 is not set
# CT_GCC_V_8 is not set
# CT_GCC_V_7 is not set
# CT_GCC_V_6 is not set
# CT_GCC_V_5 is not set
# CT_GCC_V_4_9 is not set
CT_GCC_VERSION="13.1.0"
CT_GCC_MIRRORS="$(CT_Mirrors GNU gcc/gcc-${CT_GCC_VERSION}) $(CT_Mirrors sourceware gcc/releases/gcc-${CT_GCC_VERSION})"
CT_GCC_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_GCC_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
CT_GCC_ARCHIVE_FORMATS=".tar.xz .tar.gz"
CT_GCC_SIGNATURE_FORMAT=""
CT_GCC_later_than_13=y
CT_GCC_13_or_later=y
CT_GCC_later_than_12=y
CT_GCC_12_or_later=y
CT_GCC_later_than_11=y
CT_GCC_11_or_later=y
CT_GCC_later_than_10=y
CT_GCC_10_or_later=y
CT_GCC_later_than_9=y
CT_GCC_9_or_later=y
CT_GCC_later_than_8=y
CT_GCC_8_or_later=y
CT_GCC_later_than_7=y
CT_GCC_7_or_later=y
CT_GCC_later_than_6=y
CT_GCC_6_or_later=y
CT_GCC_later_than_5=y
CT_GCC_5_or_later=y
CT_GCC_later_than_4_9=y
CT_GCC_4_9_or_later=y
CT_CC_GCC_ENABLE_PLUGINS=y
CT_CC_GCC_HAS_LIBMPX=y
CT_CC_GCC_ENABLE_CXX_FLAGS=""
CT_CC_GCC_CORE_EXTRA_CONFIG_ARRAY="--enable-default-ssp"
CT_CC_GCC_EXTRA_CONFIG_ARRAY="--enable-default-ssp --with-build-config=bootstrap-lto-lean --enable-link-serialization=2"
CT_CC_GCC_STATIC_LIBSTDCXX=y
CT_CC_GCC_SYSTEM_ZLIB=y
CT_CC_GCC_CONFIG_TLS=m
#
# Optimisation features
#
CT_CC_GCC_USE_GRAPHITE=y
CT_CC_GCC_USE_LTO=y
CT_CC_GCC_LTO_ZSTD=m
#
# Settings for libraries running on target
#
# CT_CC_GCC_ENABLE_TARGET_OPTSPACE is not set
# CT_CC_GCC_LIBMUDFLAP is not set
CT_CC_GCC_LIBGOMP=y
CT_CC_GCC_LIBSSP=m
# CT_CC_GCC_LIBQUADMATH is not set
# CT_CC_GCC_LIBSTDCXX_VERBOSE is not set
#
# Misc. obscure options.
#
CT_CC_CXA_ATEXIT=y
CT_CC_GCC_TM_CLONE_REGISTRY=m
# CT_CC_GCC_DISABLE_PCH is not set
CT_CC_GCC_SJLJ_EXCEPTIONS=m
CT_CC_GCC_LDBL_128=m
# CT_CC_GCC_BUILD_ID is not set
CT_CC_GCC_LNK_HASH_STYLE_DEFAULT=y
# CT_CC_GCC_LNK_HASH_STYLE_SYSV is not set
# CT_CC_GCC_LNK_HASH_STYLE_GNU is not set
# CT_CC_GCC_LNK_HASH_STYLE_BOTH is not set
CT_CC_GCC_LNK_HASH_STYLE=""
CT_CC_GCC_DEC_FLOATS_AUTO=y
# CT_CC_GCC_DEC_FLOATS_BID is not set
# CT_CC_GCC_DEC_FLOATS_DPD is not set
# CT_CC_GCC_DEC_FLOATS_NO is not set
CT_CC_GCC_DEC_FLOATS=""
CT_ALL_CC_CHOICES="GCC"
#
# Additional supported languages:
#
CT_CC_LANG_CXX=y
# CT_CC_LANG_FORTRAN is not set
# CT_CC_LANG_JIT is not set
# CT_CC_LANG_ADA is not set
# CT_CC_LANG_D is not set
# CT_CC_LANG_OBJC is not set
# CT_CC_LANG_OBJCXX is not set
# CT_CC_LANG_GOLANG is not set
CT_CC_LANG_OTHERS=""
# end of C compiler
#
# Debug facilities
#
# CT_DEBUG_DUMA is not set
# CT_DEBUG_GDB is not set
# CT_DEBUG_LTRACE is not set
# CT_DEBUG_STRACE is not set
CT_ALL_DEBUG_CHOICES="DUMA GDB LTRACE STRACE"
# end of Debug facilities
#
# Companion libraries
#
# CT_COMPLIBS_CHECK is not set
# CT_COMP_LIBS_CLOOG is not set
# CT_COMP_LIBS_EXPAT is not set
CT_COMP_LIBS_GETTEXT=y
CT_COMP_LIBS_GETTEXT_PKG_KSYM="GETTEXT"
CT_GETTEXT_DIR_NAME="gettext"
CT_GETTEXT_PKG_NAME="gettext"
CT_GETTEXT_SRC_RELEASE=y
# CT_GETTEXT_SRC_DEVEL is not set
# CT_GETTEXT_SRC_CUSTOM is not set
CT_GETTEXT_PATCH_GLOBAL=y
# CT_GETTEXT_PATCH_BUNDLED is not set
# CT_GETTEXT_PATCH_LOCAL is not set
# CT_GETTEXT_PATCH_BUNDLED_LOCAL is not set
# CT_GETTEXT_PATCH_LOCAL_BUNDLED is not set
# CT_GETTEXT_PATCH_NONE is not set
CT_GETTEXT_PATCH_ORDER="global"
CT_GETTEXT_V_0_21=y
# CT_GETTEXT_V_0_20_1 is not set
# CT_GETTEXT_V_0_19_8_1 is not set
CT_GETTEXT_VERSION="0.21"
CT_GETTEXT_MIRRORS="$(CT_Mirrors GNU gettext)"
CT_GETTEXT_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_GETTEXT_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
CT_GETTEXT_ARCHIVE_FORMATS=".tar.xz .tar.gz"
CT_GETTEXT_SIGNATURE_FORMAT="packed/.sig"
CT_GETTEXT_0_21_or_later=y
CT_GETTEXT_0_21_or_older=y
CT_GETTEXT_INCOMPATIBLE_WITH_UCLIBC_NG=y
#
# This version of gettext is not compatible with uClibc-NG. Select
#
#
# a different version if uClibc-NG is used on the target or (in a
#
#
# Canadian cross build) on the host.
#
CT_COMP_LIBS_GMP=y
CT_COMP_LIBS_GMP_PKG_KSYM="GMP"
CT_GMP_DIR_NAME="gmp"
CT_GMP_PKG_NAME="gmp"
CT_GMP_SRC_RELEASE=y
# CT_GMP_SRC_DEVEL is not set
# CT_GMP_SRC_CUSTOM is not set
CT_GMP_PATCH_GLOBAL=y
# CT_GMP_PATCH_BUNDLED is not set
# CT_GMP_PATCH_LOCAL is not set
# CT_GMP_PATCH_BUNDLED_LOCAL is not set
# CT_GMP_PATCH_LOCAL_BUNDLED is not set
# CT_GMP_PATCH_NONE is not set
CT_GMP_PATCH_ORDER="global"
CT_GMP_V_6_2=y
# CT_GMP_V_6_1 is not set
CT_GMP_VERSION="6.2.1"
CT_GMP_MIRRORS="https://gmplib.org/download/gmp https://gmplib.org/download/gmp/archive $(CT_Mirrors GNU gmp)"
CT_GMP_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_GMP_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
CT_GMP_ARCHIVE_FORMATS=".tar.xz .tar.lz .tar.bz2"
CT_GMP_SIGNATURE_FORMAT="packed/.sig"
CT_COMP_LIBS_ISL=y
CT_COMP_LIBS_ISL_PKG_KSYM="ISL"
CT_ISL_DIR_NAME="isl"
CT_ISL_PKG_NAME="isl"
CT_ISL_SRC_RELEASE=y
# CT_ISL_SRC_DEVEL is not set
# CT_ISL_SRC_CUSTOM is not set
CT_ISL_PATCH_GLOBAL=y
# CT_ISL_PATCH_BUNDLED is not set
# CT_ISL_PATCH_LOCAL is not set
# CT_ISL_PATCH_BUNDLED_LOCAL is not set
# CT_ISL_PATCH_LOCAL_BUNDLED is not set
# CT_ISL_PATCH_NONE is not set
CT_ISL_PATCH_ORDER="global"
CT_ISL_V_0_26=y
# CT_ISL_V_0_25 is not set
# CT_ISL_V_0_24 is not set
# CT_ISL_V_0_23 is not set
# CT_ISL_V_0_22 is not set
# CT_ISL_V_0_21 is not set
# CT_ISL_V_0_20 is not set
# CT_ISL_V_0_19 is not set
# CT_ISL_V_0_18 is not set
# CT_ISL_V_0_17 is not set
# CT_ISL_V_0_16 is not set
# CT_ISL_V_0_15 is not set
CT_ISL_VERSION="0.26"
CT_ISL_MIRRORS="https://libisl.sourceforge.io"
CT_ISL_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_ISL_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
CT_ISL_ARCHIVE_FORMATS=".tar.xz .tar.bz2 .tar.gz"
CT_ISL_SIGNATURE_FORMAT=""
CT_ISL_later_than_0_18=y
CT_ISL_0_18_or_later=y
CT_ISL_later_than_0_15=y
CT_ISL_0_15_or_later=y
# CT_COMP_LIBS_LIBELF is not set
# CT_COMP_LIBS_LIBICONV is not set
CT_COMP_LIBS_MPC=y
CT_COMP_LIBS_MPC_PKG_KSYM="MPC"
CT_MPC_DIR_NAME="mpc"
CT_MPC_PKG_NAME="mpc"
CT_MPC_SRC_RELEASE=y
# CT_MPC_SRC_DEVEL is not set
# CT_MPC_SRC_CUSTOM is not set
CT_MPC_PATCH_GLOBAL=y
# CT_MPC_PATCH_BUNDLED is not set
# CT_MPC_PATCH_LOCAL is not set
# CT_MPC_PATCH_BUNDLED_LOCAL is not set
# CT_MPC_PATCH_LOCAL_BUNDLED is not set
# CT_MPC_PATCH_NONE is not set
CT_MPC_PATCH_ORDER="global"
CT_MPC_V_1_2=y
# CT_MPC_V_1_1 is not set
# CT_MPC_V_1_0 is not set
CT_MPC_VERSION="1.2.1"
CT_MPC_MIRRORS="http://www.multiprecision.org/downloads $(CT_Mirrors GNU mpc)"
CT_MPC_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_MPC_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
CT_MPC_ARCHIVE_FORMATS=".tar.gz"
CT_MPC_SIGNATURE_FORMAT="packed/.sig"
CT_MPC_later_than_1_1_0=y
CT_MPC_1_1_0_or_later=y
CT_COMP_LIBS_MPFR=y
CT_COMP_LIBS_MPFR_PKG_KSYM="MPFR"
CT_MPFR_DIR_NAME="mpfr"
CT_MPFR_PKG_NAME="mpfr"
CT_MPFR_SRC_RELEASE=y
# CT_MPFR_SRC_DEVEL is not set
# CT_MPFR_SRC_CUSTOM is not set
CT_MPFR_PATCH_GLOBAL=y
# CT_MPFR_PATCH_BUNDLED is not set
# CT_MPFR_PATCH_LOCAL is not set
# CT_MPFR_PATCH_BUNDLED_LOCAL is not set
# CT_MPFR_PATCH_LOCAL_BUNDLED is not set
# CT_MPFR_PATCH_NONE is not set
CT_MPFR_PATCH_ORDER="global"
CT_MPFR_V_4_1=y
# CT_MPFR_V_4_0 is not set
# CT_MPFR_V_3_1 is not set
CT_MPFR_VERSION="4.1.0"
CT_MPFR_MIRRORS="http://www.mpfr.org/mpfr-${CT_MPFR_VERSION} $(CT_Mirrors GNU mpfr)"
CT_MPFR_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_MPFR_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
CT_MPFR_ARCHIVE_FORMATS=".tar.xz .tar.bz2 .tar.gz .zip"
CT_MPFR_SIGNATURE_FORMAT="packed/.asc"
CT_MPFR_later_than_4_0_0=y
CT_MPFR_4_0_0_or_later=y
# CT_COMP_LIBS_NCURSES is not set
CT_COMP_LIBS_ZLIB=y
CT_COMP_LIBS_ZLIB_PKG_KSYM="ZLIB"
CT_ZLIB_DIR_NAME="zlib"
CT_ZLIB_PKG_NAME="zlib"
CT_ZLIB_SRC_RELEASE=y
# CT_ZLIB_SRC_DEVEL is not set
# CT_ZLIB_SRC_CUSTOM is not set
CT_ZLIB_PATCH_GLOBAL=y
# CT_ZLIB_PATCH_BUNDLED is not set
# CT_ZLIB_PATCH_LOCAL is not set
# CT_ZLIB_PATCH_BUNDLED_LOCAL is not set
# CT_ZLIB_PATCH_LOCAL_BUNDLED is not set
# CT_ZLIB_PATCH_NONE is not set
CT_ZLIB_PATCH_ORDER="global"
CT_ZLIB_V_1_2_13=y
CT_ZLIB_VERSION="1.2.13"
CT_ZLIB_MIRRORS="https://github.com/madler/zlib/releases/download/v${CT_ZLIB_VERSION} https://www.zlib.net/"
CT_ZLIB_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_ZLIB_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
CT_ZLIB_ARCHIVE_FORMATS=".tar.xz .tar.gz"
CT_ZLIB_SIGNATURE_FORMAT="packed/.asc"
CT_COMP_LIBS_ZSTD=y
CT_COMP_LIBS_ZSTD_PKG_KSYM="ZSTD"
CT_ZSTD_DIR_NAME="zstd"
CT_ZSTD_PKG_NAME="zstd"
CT_ZSTD_SRC_RELEASE=y
# CT_ZSTD_SRC_DEVEL is not set
# CT_ZSTD_SRC_CUSTOM is not set
CT_ZSTD_PATCH_GLOBAL=y
# CT_ZSTD_PATCH_BUNDLED is not set
# CT_ZSTD_PATCH_LOCAL is not set
# CT_ZSTD_PATCH_BUNDLED_LOCAL is not set
# CT_ZSTD_PATCH_LOCAL_BUNDLED is not set
# CT_ZSTD_PATCH_NONE is not set
CT_ZSTD_PATCH_ORDER="global"
CT_ZSTD_V_1_5_5=y
# CT_ZSTD_V_1_5_2 is not set
CT_ZSTD_VERSION="1.5.5"
CT_ZSTD_MIRRORS="https://github.com/facebook/zstd/releases/download/v${CT_ZSTD_VERSION} https://www.zstd.net/"
CT_ZSTD_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_ZSTD_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
CT_ZSTD_ARCHIVE_FORMATS=".tar.gz"
CT_ZSTD_SIGNATURE_FORMAT="packed/.sig"
CT_ALL_COMP_LIBS_CHOICES="CLOOG EXPAT GETTEXT GMP GNUPRUMCU ISL LIBELF LIBICONV MPC MPFR NCURSES NEWLIB_NANO PICOLIBC ZLIB ZSTD"
# CT_LIBICONV_NEEDED is not set
# CT_GETTEXT_NEEDED is not set
CT_GMP_NEEDED=y
CT_MPFR_NEEDED=y
CT_ISL_NEEDED=y
CT_MPC_NEEDED=y
CT_ZLIB_NEEDED=y
CT_ZSTD_NEEDED=y
CT_GMP=y
CT_MPFR=y
CT_ISL=y
CT_MPC=y
CT_ZLIB=y
CT_ZSTD=y
# end of Companion libraries
#
# Companion tools
#
# CT_COMP_TOOLS_FOR_HOST is not set
# CT_COMP_TOOLS_AUTOCONF is not set
# CT_COMP_TOOLS_AUTOMAKE is not set
# CT_COMP_TOOLS_BISON is not set
# CT_COMP_TOOLS_DTC is not set
# CT_COMP_TOOLS_LIBTOOL is not set
# CT_COMP_TOOLS_M4 is not set
# CT_COMP_TOOLS_MAKE is not set
CT_ALL_COMP_TOOLS_CHOICES="AUTOCONF AUTOMAKE BISON DTC LIBTOOL M4 MAKE"
# end of Companion tools
#
# Test suite
#
# CT_TEST_SUITE_GCC is not set
# end of Test suite

View file

@ -1,12 +1,16 @@
set(CMAKE_SYSTEM_NAME Windows)
set(CMAKE_SYSTEM_PROCESSOR x86_64)
set(CMAKE_C_COMPILER x86_64-w64-mingw32-gcc)
set(CMAKE_CXX_COMPILER x86_64-w64-mingw32-g++)
set(CMAKE_RC_COMPILER x86_64-w64-mingw32-windres)
set(CMAKE_RANLIB x86_64-w64-mingw32-ranlib)
set(triple x86_64-w64-mingw32)
set(CMAKE_FIND_ROOT_PATH /usr/x86_64-w64-mingw32 /opt/ffbuild)
set(CMAKE_C_COMPILER ${triple}-gcc)
set(CMAKE_CXX_COMPILER ${triple}-g++)
set(CMAKE_RC_COMPILER ${triple}-windres)
set(CMAKE_RANLIB ${triple}-gcc-ranlib)
set(CMAKE_AR ${triple}-gcc-ar)
set(CMAKE_SYSROOT /opt/ct-ng/${triple}/sysroot)
set(CMAKE_FIND_ROOT_PATH /opt/ct-ng /opt/ct-ng/${triple}/sysroot /opt/ffbuild)
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)

View file

@ -1,10 +1,20 @@
FROM ubuntu:21.10
FROM ubuntu:23.04
ENV FFBUILD_DLDIR="/opt/ffdl"
ENV DEBIAN_FRONTEND noninteractive
RUN \
mkdir -p "$FFBUILD_DLDIR" && \
apt-get -y update && \
apt-get -y dist-upgrade && \
apt-get -y install build-essential yasm nasm xxd pkgconf git curl wget unzip subversion autoconf automake libtool libtool-bin autopoint cmake clang texinfo texi2html help2man flex bison gperf gettext itstool ragel libc6-dev libssl-dev gtk-doc-tools gobject-introspection gawk meson ninja-build p7zip-full python3-distutils python3-apt python-is-python3 && \
apt-get -y install build-essential yasm nasm \
xxd pkgconf curl wget unzip zip git subversion mercurial \
autoconf automake libtool libtool-bin autopoint gettext cmake clang meson ninja-build \
texinfo texi2html help2man flex bison groff \
gperf itstool ragel libc6-dev libssl-dev \
gtk-doc-tools gobject-introspection gawk \
ocaml ocamlbuild libnum-ocaml-dev indent p7zip-full \
python3-distutils python3-jinja2 python3-jsonschema python3-apt python-is-python3 && \
apt-get -y clean && \
git config --global user.email "builder@localhost" && \
git config --global user.name "Builder" && \

View file

@ -5,6 +5,8 @@ REF="$2"
DEST="$3"
git init "$DEST"
git -C "$DEST" remote add origin "$REPO"
git -C "$DEST" fetch --depth=1 origin "$REF"
retry-tool git -C "$DEST" fetch --depth=1 origin "$REF"
git -C "$DEST" config advice.detachedHead false
git -C "$DEST" checkout FETCH_HEAD

16
images/base/retry-tool.sh Executable file
View file

@ -0,0 +1,16 @@
#!/bin/bash
set -xe
RETRY_COUNTER=0
MAX_RETRY=10
CUR_TIMEOUT=120
while [[ $RETRY_COUNTER -lt $MAX_RETRY ]]; do
timeout $CUR_TIMEOUT "$@" && break || sleep $(shuf -i 5-90 -n 1)
RETRY_COUNTER=$(( $RETRY_COUNTER + 1 ))
CUR_TIMEOUT=$(( $CUR_TIMEOUT + 60 ))
echo "Retry $RETRY_COUNTER..."
done
if [[ $RETRY_COUNTER -ge $MAX_RETRY ]]; then
echo "Max retry count exceeded."
exit 1
fi

View file

@ -1,6 +1,9 @@
#!/bin/bash
set -xe
export RAW_CFLAGS="$CFLAGS"
export RAW_CXXFLAGS="$CXXFLAGS"
export RAW_LDFLAGS="$LDFLAGS"
[[ -n "$STAGE_CFLAGS" ]] && export CFLAGS="$CFLAGS $STAGE_CFLAGS"
[[ -n "$STAGE_CXXFLAGS" ]] && export CXXFLAGS="$CXXFLAGS $STAGE_CXXFLAGS"
[[ -n "$STAGE_LDFLAGS" ]] && export LDFLAGS="$LDFLAGS $STAGE_LDFLAGS"
@ -8,5 +11,12 @@ set -xe
mkdir -p /stage
source "$1"
cd /stage
ffbuild_dockerbuild
if [[ -n "$3" ]]; then
cd "$3"
fi
if [[ -z "$2" ]]; then
ffbuild_dockerbuild
else
"$2"
fi
rm -rf /stage "$FFBUILD_PREFIX"/bin

View file

@ -3,16 +3,65 @@ set -xe
cd "$(dirname "$0")"
source util/vars.sh
export DOCKER_BUILDKIT=1
TMPCFG="$(mktemp --suffix=.toml)"
cat <<EOF >"$TMPCFG"
[worker.oci]
max-parallelism = 4
EOF
trap "rm -f '$TMPCFG'" EXIT
docker buildx inspect ffbuilder &>/dev/null || docker buildx create \
--bootstrap \
--name ffbuilder \
--config "$TMPCFG" \
--driver-opt network=host \
--driver-opt env.BUILDKIT_STEP_LOG_MAX_SIZE=-1 \
--driver-opt env.BUILDKIT_STEP_LOG_MAX_SPEED=-1
docker container inspect ffbuildreg &>/dev/null || \
docker run --rm -d -p 127.0.0.1:64647:5000 --name ffbuildreg registry:2
LOCAL_REG_PORT="$(docker container inspect --format='{{range $p, $conf := .NetworkSettings.Ports}}{{(index $conf 0).HostPort}}{{end}}' ffbuildreg)"
LOCAL_ROOT="127.0.0.1:${LOCAL_REG_PORT}/local"
export REGISTRY_OVERRIDE_DL="127.0.0.1:${LOCAL_REG_PORT}" GITHUB_REPOSITORY_DL="local"
if [[ -z "$QUICKBUILD" ]]; then
if grep "FROM.*base.*" "images/base-${TARGET}/Dockerfile" >/dev/null 2>&1; then
docker build --tag "$BASE_IMAGE" images/base
docker buildx --builder ffbuilder build \
--cache-from=type=local,src=.cache/"${BASE_IMAGE/:/_}" \
--cache-to=type=local,mode=max,dest=.cache/"${BASE_IMAGE/:/_}" \
--push --tag "${LOCAL_ROOT}/base:latest" images/base
fi
docker build --build-arg GH_REPO="$REPO" --tag "$TARGET_IMAGE" "images/base-${TARGET}"
docker buildx --builder ffbuilder build \
--cache-from=type=local,src=.cache/"${TARGET_IMAGE/:/_}" \
--cache-to=type=local,mode=max,dest=.cache/"${TARGET_IMAGE/:/_}" \
--push --tag "${LOCAL_ROOT}/base-${TARGET}:latest" \
--build-arg GH_REPO="$LOCAL_ROOT" "images/base-${TARGET}"
export REGISTRY_OVERRIDE="$REGISTRY_OVERRIDE_DL" GITHUB_REPOSITORY="$GITHUB_REPOSITORY_DL"
fi
./generate.sh "$TARGET" "$VARIANT" "${ADDINS[@]}"
DL_CACHE_TAG="$(./util/get_dl_cache_tag.sh)"
DL_IMAGE="${DL_IMAGE_RAW}:${DL_CACHE_TAG}"
exec docker build --tag "$IMAGE" .
if docker pull "${DL_IMAGE}"; then
export REGISTRY_OVERRIDE_DL="$REGISTRY" GITHUB_REPOSITORY_DL="$REPO"
./generate.sh "$TARGET" "$VARIANT" "${ADDINS[@]}"
else
DL_IMAGE="${LOCAL_ROOT}/dl_cache:${DL_CACHE_TAG}"
docker manifest inspect --insecure "${DL_IMAGE}" >/dev/null ||
docker buildx --builder ffbuilder build -f Dockerfile.dl \
--cache-from=type=local,src=.cache/dl_image_cache \
--cache-to=type=local,mode=max,dest=.cache/dl_image_cache \
--push --tag "${DL_IMAGE}" .
fi
docker buildx --builder ffbuilder build \
--cache-from=type=local,src=.cache/"${IMAGE/:/_}" \
--cache-to=type=local,mode=max,dest=.cache/"${IMAGE/:/_}" \
--load --tag "$IMAGE" .
docker container stop ffbuildreg
docker buildx rm -f ffbuilder

31
patches/aribb24/12.patch Normal file
View file

@ -0,0 +1,31 @@
From a5bcc6d17c20e18bdeec295089cc0cdfac9d35c8 Mon Sep 17 00:00:00 2001
From: xtne6f <xt4ubq@gmail.com>
Date: Thu, 7 Feb 2019 20:11:13 +0900
Subject: [PATCH] Fix default macros
---
src/decoder_macro.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/decoder_macro.h b/src/decoder_macro.h
index 86edee4..513b81e 100644
--- a/src/decoder_macro.h
+++ b/src/decoder_macro.h
@@ -30,7 +30,7 @@ static const unsigned char decoder_default_macro_1[] = {
0x1B,0x24,0x39,0x1B,0x29,0x31,0x1B,0x2A,0x30,0x1B,0x2B,0x20,0x70,0x0F,0x1B,0x7D
};
static const unsigned char decoder_default_macro_2[] = {
- 0x1B,0x24,0x39,0x1B,0x29,0x20,0x40,0x1B,0x2A,0x30,0x1B,0x2B,0x20,0x70,0x0F,0x1B,0x7D
+ 0x1B,0x24,0x39,0x1B,0x29,0x20,0x41,0x1B,0x2A,0x30,0x1B,0x2B,0x20,0x70,0x0F,0x1B,0x7D
};
static const unsigned char decoder_default_macro_3[] = {
0x1B,0x28,0x32,0x1B,0x29,0x34,0x1B,0x2A,0x35,0x1B,0x2B,0x20,0x70,0x0F,0x1B,0x7D
@@ -39,7 +39,7 @@ static const unsigned char decoder_default_macro_4[] = {
0x1B,0x28,0x32,0x1B,0x29,0x33,0x1B,0x2A,0x35,0x1B,0x2B,0x20,0x70,0x0F,0x1B,0x7D
};
static const unsigned char decoder_default_macro_5[] = {
- 0x1B,0x28,0x32,0x1B,0x29,0x20,0x40,0x1B,0x2A,0x35,0x1B,0x2B,0x20,0x70,0x0F,0x1B,0x7D
+ 0x1B,0x28,0x32,0x1B,0x29,0x20,0x41,0x1B,0x2A,0x35,0x1B,0x2B,0x20,0x70,0x0F,0x1B,0x7D
};
static const unsigned char decoder_default_macro_6[] = {
0x1B,0x28,0x20,0x41,0x1B,0x29,0x20,0x42,0x1B,0x2A,0x20,0x43,0x1B,0x2B,0x20,0x70,0x0F,0x1B,0x7D

23
patches/aribb24/13.patch Normal file
View file

@ -0,0 +1,23 @@
From facc51923d43f26dec09a9391566de7cba29f8db Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jan=20Ekstr=C3=B6m?= <jeebjp@gmail.com>
Date: Sun, 17 Feb 2019 22:42:31 +0200
Subject: [PATCH] decoder: reset control_time when finalizing decoder
This way finalize_decoder() can properly be utilized as a flush
function.
---
src/decoder.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/decoder.c b/src/decoder.c
index 2b77f38..24c0f06 100644
--- a/src/decoder.c
+++ b/src/decoder.c
@@ -1506,6 +1506,7 @@ void arib_finalize_decoder( arib_decoder_t* decoder )
free( p_region );
}
decoder->p_region = NULL;
+ decoder->i_control_time = 0;
}
size_t arib_decode_buffer( arib_decoder_t* decoder,

151
patches/aribb24/17.patch Normal file
View file

@ -0,0 +1,151 @@
From 58a34b8fabf4d0e9e1984fb603a97f52fb934a09 Mon Sep 17 00:00:00 2001
From: scimmia9286 <scimmia9286@yahoo.co.jp>
Date: Thu, 22 Apr 2021 20:26:45 +0900
Subject: [PATCH] Fixed DRCS parser bug
---
src/decoder.c | 3 ++-
src/drcs.c | 12 ++++++++----
src/drcs.h | 2 +-
src/parser.c | 25 +++++++++++++++++++++----
4 files changed, 32 insertions(+), 10 deletions(-)
diff --git a/src/decoder.c b/src/decoder.c
index 2b77f38..c9d6ac3 100644
--- a/src/decoder.c
+++ b/src/decoder.c
@@ -1139,9 +1139,10 @@ static int decoder_handle_time( arib_decoder_t *decoder )
return 1;
break;
default:
- if( i_mode == 1 && c >= 0x40 && c <= 0x7F )
+ if( i_mode == 1 && c >= 0x40 && c <= 0x7F ) {
decoder->i_control_time += c & 0x3f;
return 1;
+ }
return 0;
}
if( i_mode == 0 )
diff --git a/src/drcs.c b/src/drcs.c
index 114d846..8ff8d4f 100644
--- a/src/drcs.c
+++ b/src/drcs.c
@@ -406,15 +406,19 @@ static void save_drcs_pattern_data_image(
void save_drcs_pattern(
arib_instance_t *p_instance,
int i_width, int i_height,
- int i_depth, const int8_t* p_patternData )
+ int i_depth, const int8_t* p_patternData,
+ int16_t i_CharacterCode )
{
+// int i_drcsPage = (i_CharacterCode >> 16) & 0xff;
+ int i_code = (i_CharacterCode & 0xff) - 0x20;
char* psz_hash = get_drcs_pattern_data_hash( p_instance,
i_width, i_height, i_depth, p_patternData );
- strncpy( p_instance->p->drcs_hash_table[p_instance->p->i_drcs_num], psz_hash, 32 );
- p_instance->p->drcs_hash_table[p_instance->p->i_drcs_num][32] = '\0';
+ strncpy( p_instance->p->drcs_hash_table[i_code-1], psz_hash, 32 );
+ p_instance->p->drcs_hash_table[i_code-1][32] = '\0';
- p_instance->p->i_drcs_num++;
+ p_instance->p->i_drcs_num = i_code > p_instance->p->i_drcs_num ?
+ i_code : p_instance->p->i_drcs_num;
save_drcs_pattern_data_image( p_instance, psz_hash,
i_width, i_height, i_depth, p_patternData );
diff --git a/src/drcs.h b/src/drcs.h
index 274ff44..9c1533e 100644
--- a/src/drcs.h
+++ b/src/drcs.h
@@ -77,6 +77,6 @@ typedef struct drcs_data_s
bool apply_drcs_conversion_table( arib_instance_t * );
bool load_drcs_conversion_table( arib_instance_t * );
-void save_drcs_pattern( arib_instance_t *, int, int, int, const int8_t* );
+void save_drcs_pattern( arib_instance_t *, int, int, int, const int8_t*, int16_t );
#endif
diff --git a/src/parser.c b/src/parser.c
index 1403dd6..6db27ae 100644
--- a/src/parser.c
+++ b/src/parser.c
@@ -79,7 +79,6 @@ static void parse_data_unit_DRCS( arib_parser_t *p_parser, bs_t *p_bs,
uint8_t i_data_unit_parameter,
uint32_t i_data_unit_size )
{
- p_parser->p_instance->p->i_drcs_num = 0;
#ifdef ARIBSUB_GEN_DRCS_DATA
if( p_parser->p_drcs_data != NULL )
{
@@ -119,7 +118,7 @@ static void parse_data_unit_DRCS( arib_parser_t *p_parser, bs_t *p_bs,
for( int i = 0; i < i_NumberOfCode; i++ )
{
- bs_skip( p_bs, 16 ); /* i_character_code */
+ int16_t i_CharacterCode = bs_read( p_bs, 16 ); /* i_character_code */
p_parser->i_data_unit_size += 2;
uint8_t i_NumberOfFont = bs_read( p_bs, 8 );
p_parser->i_data_unit_size += 1;
@@ -139,7 +138,11 @@ static void parse_data_unit_DRCS( arib_parser_t *p_parser, bs_t *p_bs,
for( int j = 0; j < i_NumberOfFont; j++ )
{
+#ifdef ARIBSUB_GEN_DRCS_DATA
+ int8_t i_fontId = bs_read( p_bs, 4 ); /* i_fontID */
+#else
bs_skip( p_bs, 4 ); /* i_fontID */
+#endif //ARIBSUB_GEN_DRCS_DATA
uint8_t i_mode = bs_read( p_bs, 4 );
p_parser->i_data_unit_size += 1;
@@ -206,18 +209,26 @@ static void parse_data_unit_DRCS( arib_parser_t *p_parser, bs_t *p_bs,
#ifdef ARIBSUB_GEN_DRCS_DATA
save_drcs_pattern( p_parser->p_instance, i_width, i_height, i_depth + 2,
- p_drcs_pattern_data->p_patternData );
+ p_drcs_pattern_data->p_patternData, i_CharacterCode );
#else
save_drcs_pattern( p_parser->p_instance, i_width, i_height, i_depth + 2,
- p_patternData );
+ p_patternData, i_CharacterCode);
free( p_patternData );
#endif //ARIBSUB_GEN_DRCS_DATA
}
else
{
+#ifdef ARIBSUB_GEN_DRCS_DATA
+ int8_t i_regionX = bs_read( p_bs, 8 ); /* i_regionX */
+#else
bs_skip( p_bs, 8 ); /* i_regionX */
+#endif //ARIBSUB_GEN_DRCS_DATA
p_parser->i_data_unit_size += 1;
+#ifdef ARIBSUB_GEN_DRCS_DATA
+ int8_t i_regionY = bs_read( p_bs, 8 ); /* i_regionY */
+#else
bs_skip( p_bs, 8 ); /* i_regionY */
+#endif //ARIBSUB_GEN_DRCS_DATA
p_parser->i_data_unit_size += 1;
uint16_t i_geometricData_length = bs_read( p_bs, 16 );
p_parser->i_data_unit_size += 2;
@@ -245,7 +256,11 @@ static void parse_data_unit_DRCS( arib_parser_t *p_parser, bs_t *p_bs,
for( int k = 0; k < i_geometricData_length ; k++ )
{
+#ifdef ARIBSUB_GEN_DRCS_DATA
+ int8_t i_geometricData = bs_read( p_bs, 8 ); /* i_geometric_data */
+#else
bs_skip( p_bs, 8 ); /* i_geometric_data */
+#endif //ARIBSUB_GEN_DRCS_DATA
p_parser->i_data_unit_size += 1;
#ifdef ARIBSUB_GEN_DRCS_DATA
@@ -344,6 +359,8 @@ static void parse_caption_management_data( arib_parser_t *p_parser, bs_t *p_bs )
p_parser->i_data_unit_size = 0;
p_parser->i_subtitle_data_size = 0;
p_parser->psz_subtitle_data = NULL;
+ p_parser->p_instance->p->i_drcs_num = 0;
+ memset(p_parser->p_instance->p->drcs_hash_table, 0, sizeof(p_parser->p_instance->p->drcs_hash_table));
if( i_data_unit_loop_length > 0 )
{
p_parser->psz_subtitle_data = (unsigned char*) calloc(

View file

@ -1,75 +0,0 @@
From 45fd7a314a2dc4b39bacbd91369128e04adc0699 Mon Sep 17 00:00:00 2001
From: Syoyo Fujita <syoyo@lighttransport.com>
Date: Thu, 28 May 2020 21:38:16 +0900
Subject: [PATCH 1/4] Fix build on MinGW cross compiling environment.
---
loader/CMakeLists.txt | 4 +++-
loader/loader.rc | 4 ++++
loader/loader_windows.c | 12 ++++++++++++
3 files changed, 19 insertions(+), 1 deletion(-)
diff --git a/loader/CMakeLists.txt b/loader/CMakeLists.txt
index 56aece671..6e7971845 100644
--- a/loader/CMakeLists.txt
+++ b/loader/CMakeLists.txt
@@ -187,7 +187,7 @@ if(WIN32)
if (USE_MASM)
enable_language(ASM_MASM)
endif ()
- if(CMAKE_ASM_MASM_COMPILER_WORKS OR JWASM_FOUND)
+ if((CMAKE_ASM_MASM_COMPILER_WORKS AND NOT CMAKE_CROSSCOMPILING) OR JWASM_FOUND)
if(MINGW)
set(CMAKE_ASM_MASM_FLAGS ${CMAKE_ASM_MASM_FLAGS} ${JWASM_FLAGS})
elseif(NOT CMAKE_CL_64 AND NOT JWASM_FOUND)
@@ -207,6 +207,8 @@ if(WIN32)
add_library(loader-unknown-chain OBJECT unknown_ext_chain.c)
set_target_properties(loader-unknown-chain PROPERTIES CMAKE_C_FLAGS_DEBUG "${MODIFIED_C_FLAGS_DEBUG}")
target_compile_options(loader-unknown-chain PUBLIC ${MSVC_LOADER_COMPILE_OPTIONS})
+
+ target_include_directories(loader-unknown-chain PRIVATE "$<TARGET_PROPERTY:Vulkan::Headers,INTERFACE_INCLUDE_DIRECTORIES>")
endif()
elseif(APPLE)
# For MacOS, use the C code and force the compiler's tail-call optimization instead of using assembly code.
diff --git a/loader/loader.rc b/loader/loader.rc
index 44193ea33..456ac70a2 100644
--- a/loader/loader.rc
+++ b/loader/loader.rc
@@ -19,7 +19,11 @@
// Author: Charles Giessen <charles@lunarg.com>
//
+#if defined(__MINGW32__)
+#include <winresrc.h>
+#else
#include "winres.h"
+#endif
// All set through CMake
#define VER_FILE_VERSION 1, 0, 1111, 2222
diff --git a/loader/loader_windows.c b/loader/loader_windows.c
index aff3b276e..e1579bf3a 100644
--- a/loader/loader_windows.c
+++ b/loader/loader_windows.c
@@ -58,6 +58,18 @@
typedef HRESULT(APIENTRY *PFN_CreateDXGIFactory1)(REFIID riid, void **ppFactory);
static PFN_CreateDXGIFactory1 fpCreateDXGIFactory1;
+#if defined(__MINGW32__)
+// MinGW header may not have some definitions(cfgmgr32.h).
+#if !defined(CM_GETIDLIST_FILTER_CLASS)
+#define CM_GETIDLIST_FILTER_CLASS (0x200)
+#endif
+
+#if !defined(CM_GETIDLIST_FILTER_PRESENT)
+#define CM_GETIDLIST_FILTER_PRESENT (0x100)
+#endif
+
+#endif // __MINGW32__
+
void windows_initialization(void) {
char dll_location[MAX_PATH];
HMODULE module_handle = NULL;
--
2.25.1

View file

@ -1,62 +0,0 @@
From 8f83fc25f149a53566e0367d185c2a10d2b5b50e Mon Sep 17 00:00:00 2001
From: BtbN <btbn@btbn.de>
Date: Mon, 7 Sep 2020 20:07:39 +0200
Subject: [PATCH 2/4] Fixes for MinGW build
Adapted from https://github.com/msys2/MINGW-packages/blob/348f1d46d9d273a2cc928deadf9d9114f7a69c2f/mingw-w64-vulkan-loader/002-proper-def-files-for-32bit.patch
---
loader/CMakeLists.txt | 2 +-
loader/vk_loader_platform.h | 4 +++-
tests/framework/layer/wrap_objects.cpp | 4 +++-
3 files changed, 7 insertions(+), 3 deletions(-)
diff --git a/loader/CMakeLists.txt b/loader/CMakeLists.txt
index 6e7971845..b5bc0a98a 100644
--- a/loader/CMakeLists.txt
+++ b/loader/CMakeLists.txt
@@ -364,11 +364,11 @@ else()
)
# cmake-format: on
endif()
+endif()
if(NOT APPLE)
target_compile_definitions(vulkan PRIVATE _XOPEN_SOURCE=500) # hush compiler warnings for readlink
endif()
-endif()
# Generate pkg-config file.
include(FindPkgConfig QUIET)
diff --git a/loader/vk_loader_platform.h b/loader/vk_loader_platform.h
index ecb8e1006..2e138aeaa 100644
--- a/loader/vk_loader_platform.h
+++ b/loader/vk_loader_platform.h
@@ -76,7 +76,9 @@
#include "vk_layer_dispatch_table.h"
#include "vk_loader_extensions.h"
-#if defined(__GNUC__) && __GNUC__ >= 4
+#if defined(_WIN32)
+#define LOADER_EXPORT __declspec(dllexport)
+#elif defined(__GNUC__) && __GNUC__ >= 4
#define LOADER_EXPORT __attribute__((visibility("default")))
#elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590)
#define LOADER_EXPORT __attribute__((visibility("default")))
diff --git a/tests/framework/layer/wrap_objects.cpp b/tests/framework/layer/wrap_objects.cpp
index 8f617a6d3..e7b1996f6 100644
--- a/tests/framework/layer/wrap_objects.cpp
+++ b/tests/framework/layer/wrap_objects.cpp
@@ -29,7 +29,9 @@
#include "loader/vk_loader_layer.h"
#if !defined(VK_LAYER_EXPORT)
-#if defined(__GNUC__) && __GNUC__ >= 4
+#if defined(_WIN32)
+#define VK_LAYER_EXPORT __declspec(dllexport)
+#elif defined(__GNUC__) && __GNUC__ >= 4
#define VK_LAYER_EXPORT __attribute__((visibility("default")))
#elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590)
#define VK_LAYER_EXPORT __attribute__((visibility("default")))
--
2.25.1

View file

@ -1,28 +0,0 @@
From 6c963fb60da75e53214579507d7717acadb08c0f Mon Sep 17 00:00:00 2001
From: BtbN <btbn@btbn.de>
Date: Mon, 7 Sep 2020 20:33:23 +0200
Subject: [PATCH 3/4] Define appropiate minimum Windows-Version
---
loader/vk_loader_platform.h | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/loader/vk_loader_platform.h b/loader/vk_loader_platform.h
index 2e138aeaa..d956e803a 100644
--- a/loader/vk_loader_platform.h
+++ b/loader/vk_loader_platform.h
@@ -30,6 +30,11 @@
#endif
#if defined(_WIN32)
+
+#define WINVER 0x0601
+#define _WIN32_WINNT 0x0601
+#define STRSAFE_NO_DEPRECATE 1
+
// WinSock2.h must be included *BEFORE* windows.h
#include <winsock2.h>
#endif // _WIN32
--
2.25.1

View file

@ -1,159 +0,0 @@
From 73d8fb89c6897648ef9e0340793cb2487695488f Mon Sep 17 00:00:00 2001
From: BtbN <btbn@btbn.de>
Date: Sun, 4 Apr 2021 23:29:53 +0200
Subject: [PATCH 4/4] Unlock building static loader on any OS
Based in parts on https://github.com/shinchiro/mpv-winbuild-cmake/blob/master/packages/vulkan-0001-cross-compile-static-linking-hacks.patch
---
CMakeLists.txt | 2 --
loader/CMakeLists.txt | 23 ++++++++++++++++++++++-
loader/loader.h | 3 +++
loader/loader_windows.c | 2 ++
loader/vk_loader_platform.h | 16 ++++++++++++++++
5 files changed, 43 insertions(+), 3 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 703bcb1ba..43a25d8aa 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -95,9 +95,7 @@ if(BUILD_TESTS)
enable_testing()
endif()
-if(APPLE)
option(BUILD_STATIC_LOADER "Build a loader that can be statically linked" OFF)
-endif()
if(WIN32)
# Optional: Allow specify the exact version used in the loader dll
diff --git a/loader/CMakeLists.txt b/loader/CMakeLists.txt
index b5bc0a98a..f74079954 100644
--- a/loader/CMakeLists.txt
+++ b/loader/CMakeLists.txt
@@ -251,6 +251,22 @@ if(WIN32)
target_compile_options(loader-opt PUBLIC ${MSVC_LOADER_COMPILE_OPTIONS})
target_include_directories(loader-opt PRIVATE "$<TARGET_PROPERTY:Vulkan::Headers,INTERFACE_INCLUDE_DIRECTORIES>")
+ if(BUILD_STATIC_LOADER)
+ add_library(vulkan
+ STATIC
+ $<TARGET_OBJECTS:loader-opt>
+ $<TARGET_OBJECTS:loader-norm>
+ $<TARGET_OBJECTS:loader-unknown-chain>
+ ${CMAKE_CURRENT_SOURCE_DIR}/vulkan-1.def
+ ${CMAKE_CURRENT_SOURCE_DIR}/loader.rc)
+ set_target_properties(vulkan
+ PROPERTIES LINK_FLAGS_DEBUG
+ "/ignore:4098"
+ OUTPUT_NAME
+ vulkan-1
+ PREFIX
+ lib)
+ else()
add_library(vulkan
SHARED
$<TARGET_OBJECTS:loader-opt>
@@ -269,6 +285,8 @@ if(WIN32)
set_target_properties(vulkan
PROPERTIES
OUTPUT_NAME vulkan-1)
+ set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS LOADER_DYNAMIC_LIB)
+ endif()
target_link_libraries(vulkan Vulkan::Headers)
@@ -291,16 +309,18 @@ else()
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-typedef-redefinition")
endif()
- if(APPLE AND BUILD_STATIC_LOADER)
+ if(BUILD_STATIC_LOADER)
add_library(vulkan STATIC ${NORMAL_LOADER_SRCS} ${OPT_LOADER_SRCS})
else()
add_library(vulkan SHARED ${NORMAL_LOADER_SRCS} ${OPT_LOADER_SRCS})
endif()
add_dependencies(vulkan loader_asm_gen_files)
+ if (NOT BUILD_STATIC_LOADER)
# set version based on LOADER_GENERATED_HEADER_VERSION used to generate the code
set_target_properties(vulkan
PROPERTIES SOVERSION "1"
VERSION ${LOADER_GENERATED_HEADER_VERSION})
+ endif()
target_link_libraries(vulkan ${CMAKE_DL_LIBS} m)
if (NOT ANDROID)
target_link_libraries(vulkan pthread)
@@ -377,6 +397,7 @@ if(PKG_CONFIG_FOUND)
foreach(LIB ${CMAKE_CXX_IMPLICIT_LINK_LIBRARIES} ${PLATFORM_LIBS})
set(PRIVATE_LIBS "${PRIVATE_LIBS} -l${LIB}")
endforeach()
+ set(PRIVATE_LIBS "${PRIVATE_LIBS} -lshlwapi -lcfgmgr32")
if(WIN32)
set(VULKAN_LIB_SUFFIX "-1")
# Set libdir path as in cmake's FindVulkan.cmake
diff --git a/loader/loader.h b/loader/loader.h
index cfebfba67..62dcaeb81 100644
--- a/loader/loader.h
+++ b/loader/loader.h
@@ -66,6 +66,9 @@ static inline void loader_init_dispatch(void *obj, const void *data) {
// Global variables used across files
extern struct loader_struct loader;
+#if defined(_WIN32) && !defined(LOADER_DYNAMIC_LIB)
+extern LOADER_PLATFORM_THREAD_ONCE_DEFINITION(once_init);
+#endif
extern loader_platform_thread_mutex loader_lock;
extern loader_platform_thread_mutex loader_json_lock;
extern loader_platform_thread_mutex loader_preload_icd_lock;
diff --git a/loader/loader_windows.c b/loader/loader_windows.c
index e1579bf3a..8a7daef04 100644
--- a/loader/loader_windows.c
+++ b/loader/loader_windows.c
@@ -98,6 +98,7 @@ void windows_initialization(void) {
#endif
}
+#if defined(LOADER_DYNAMIC_LIB)
BOOL WINAPI DllMain(HINSTANCE hinst, DWORD reason, LPVOID reserved) {
switch (reason) {
case DLL_PROCESS_ATTACH:
@@ -114,6 +115,7 @@ BOOL WINAPI DllMain(HINSTANCE hinst, DWORD reason, LPVOID reserved) {
}
return TRUE;
}
+#endif
bool windows_add_json_entry(const struct loader_instance *inst,
char **reg_data, // list of JSON files
diff --git a/loader/vk_loader_platform.h b/loader/vk_loader_platform.h
index d956e803a..fab7b44f5 100644
--- a/loader/vk_loader_platform.h
+++ b/loader/vk_loader_platform.h
@@ -456,9 +456,25 @@ typedef HANDLE loader_platform_thread;
// The once init functionality is not used when building a DLL on Windows. This is because there is no way to clean up the
// resources allocated by anything allocated by once init. This isn't a problem for static libraries, but it is for dynamic
// ones. When building a DLL, we use DllMain() instead to allow properly cleaning up resources.
+#if defined(LOADER_DYNAMIC_LIB)
#define LOADER_PLATFORM_THREAD_ONCE_DECLARATION(var)
#define LOADER_PLATFORM_THREAD_ONCE_DEFINITION(var)
#define LOADER_PLATFORM_THREAD_ONCE(ctl, func)
+#else
+#define LOADER_PLATFORM_THREAD_ONCE_DECLARATION(var) INIT_ONCE var = INIT_ONCE_STATIC_INIT;
+#define LOADER_PLATFORM_THREAD_ONCE_DEFINITION(var) INIT_ONCE var;
+#define LOADER_PLATFORM_THREAD_ONCE(ctl, func) loader_platform_thread_once_fn(ctl, func)
+static BOOL CALLBACK InitFuncWrapper(PINIT_ONCE InitOnce, PVOID Parameter, PVOID *Context) {
+ void (*func)(void) = (void (*)(void))Parameter;
+ func();
+ return TRUE;
+}
+static void loader_platform_thread_once_fn(void *ctl, void (*func)(void)) {
+ assert(func != NULL);
+ assert(ctl != NULL);
+ InitOnceExecuteOnce((PINIT_ONCE)ctl, InitFuncWrapper, (void *)func, NULL);
+}
+#endif
// Thread IDs:
typedef DWORD loader_platform_thread_id;
--
2.25.1

View file

@ -0,0 +1,16 @@
#!/bin/bash
SCRIPT_REPO="https://github.com/meganz/mingw-std-threads.git"
SCRIPT_COMMIT="6c2061b7da41d6aa1b2162ff4383ec3ece864bc6"
ffbuild_enabled() {
[[ $TARGET == win* ]] || return -1
return 0
}
ffbuild_dockerbuild() {
cd "$FFBUILD_DLDIR/$SELF"
mkdir -p "$FFBUILD_PREFIX"/include
cp *.h "$FFBUILD_PREFIX"/include
}

View file

@ -1,7 +1,7 @@
#!/bin/bash
MINGW_REPO="https://github.com/mirror/mingw-w64.git"
MINGW_COMMIT="a2eb3ea3aaa7c780c4b4ab30d71169f442788864"
SCRIPT_REPO="https://git.code.sf.net/p/mingw-w64/mingw-w64.git"
SCRIPT_COMMIT="3638d5e9a6f28354bc3e18f04ba0d97e2cc3b44c"
ffbuild_enabled() {
[[ $TARGET == win* ]] || return -1
@ -17,9 +17,12 @@ ffbuild_dockerfinal() {
to_df "COPY --from=${PREVLAYER} /opt/mingw/. /"
}
ffbuild_dockerdl() {
to_df "RUN retry-tool sh -c \"rm -rf mingw && git clone '$SCRIPT_REPO' mingw\" && cd mingw && git checkout \"$SCRIPT_COMMIT\""
}
ffbuild_dockerbuild() {
git-mini-clone "$MINGW_REPO" "$MINGW_COMMIT" mingw
cd mingw
cd "$FFBUILD_DLDIR/mingw"
cd mingw-w64-headers
@ -28,10 +31,13 @@ ffbuild_dockerbuild() {
unset LDFLAGS
unset PKG_CONFIG_LIBDIR
GCC_SYSROOT="$(${FFBUILD_CROSS_PREFIX}gcc -print-sysroot)"
local myconf=(
--prefix="/usr/$FFBUILD_TOOLCHAIN"
--prefix="$GCC_SYSROOT/usr/$FFBUILD_TOOLCHAIN"
--host="$FFBUILD_TOOLCHAIN"
--with-default-win32-winnt="0x601"
--with-default-msvcrt=ucrt
--enable-idl
)
@ -42,7 +48,7 @@ ffbuild_dockerbuild() {
cd ../mingw-w64-libraries/winpthreads
local myconf=(
--prefix="/usr/$FFBUILD_TOOLCHAIN"
--prefix="$GCC_SYSROOT/usr/$FFBUILD_TOOLCHAIN"
--host="$FFBUILD_TOOLCHAIN"
--with-pic
--disable-shared

View file

@ -1,7 +1,7 @@
#!/bin/bash
XORGMACROS_REPO="https://gitlab.freedesktop.org/xorg/util/macros.git"
XORGMACROS_COMMIT="b8766308d2f78bc572abe5198007cf7aeec9b761"
SCRIPT_REPO="https://gitlab.freedesktop.org/xorg/util/macros.git"
SCRIPT_COMMIT="cb147377e9341af05232f95814022abdecf14024"
ffbuild_enabled() {
[[ $TARGET != linux* ]] && return -1
@ -14,8 +14,7 @@ ffbuild_dockerlayer() {
}
ffbuild_dockerbuild() {
git-mini-clone "$XORGMACROS_REPO" "$XORGMACROS_COMMIT" xorg-macros
cd xorg-macros
cd "$FFBUILD_DLDIR/$SELF"
autoreconf -i
./configure --prefix="$FFBUILD_PREFIX"

View file

@ -1,17 +1,21 @@
#!/bin/bash
# https://ftp.gnu.org/gnu/libiconv/
ICONV_SRC="https://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.16.tar.gz"
SCRIPT_REPO="https://git.savannah.gnu.org/git/libiconv.git"
SCRIPT_COMMIT="6e2b31f6d66739c5abd850338ea68c6bd2012812"
ffbuild_enabled() {
return 0
}
ffbuild_dockerdl() {
to_df "RUN retry-tool sh -c \"rm -rf $SELF && git clone '$SCRIPT_REPO' $SELF\" && git -C $SELF checkout \"$SCRIPT_COMMIT\""
to_df "RUN cd $SELF && retry-tool ./autopull.sh --one-time"
}
ffbuild_dockerbuild() {
wget -O iconv.tar.gz "$ICONV_SRC"
tar xaf iconv.tar.gz
rm iconv.tar.gz
cd libiconv*
cd "$FFBUILD_DLDIR/$SELF"
(unset CC CFLAGS GMAKE && ./autogen.sh)
local myconf=(
--prefix="$FFBUILD_PREFIX"

View file

@ -1,15 +1,14 @@
#!/bin/bash
LIBXML2_REPO="https://gitlab.gnome.org/GNOME/libxml2.git"
LIBXML2_COMMIT="dea91c97debeac7c1aaf9c19f79029809e23a353"
SCRIPT_REPO="https://gitlab.gnome.org/GNOME/libxml2.git"
SCRIPT_COMMIT="884474477284474e0151280aaa275a18e3d7a036"
ffbuild_enabled() {
return 0
}
ffbuild_dockerbuild() {
git-mini-clone "$LIBXML2_REPO" "$LIBXML2_COMMIT" libxml2
cd libxml2
cd "$FFBUILD_DLDIR/$SELF"
local myconf=(
--prefix="$FFBUILD_PREFIX"

View file

@ -1,19 +1,14 @@
#!/bin/bash
ZLIB_SRC="https://zlib.net/zlib-1.2.11.tar.gz"
SCRIPT_REPO="https://github.com/madler/zlib.git"
SCRIPT_COMMIT="04f42ceca40f73e2978b50e93806c2a18c1281fc"
ffbuild_enabled() {
return 0
}
ffbuild_dockerbuild() {
mkdir zlib
cd zlib
wget "$ZLIB_SRC" -O zlib.tar.gz
tar xaf zlib.tar.gz
rm zlib.tar.gz
cd zlib*
cd "$FFBUILD_DLDIR/$SELF"
local myconf=(
--prefix="$FFBUILD_PREFIX"

View file

@ -1,38 +1,36 @@
#!/bin/bash
# http://fftw.org/download.html
FFTW3_SRC="https://fftw.org/fftw-3.3.10.tar.gz"
FFTW3_SHA512="2d34b5ccac7b08740dbdacc6ebe451d8a34cf9d9bfec85a5e776e87adf94abfd803c222412d8e10fbaa4ed46f504aa87180396af1b108666cde4314a55610b40"
SCRIPT_REPO="https://github.com/FFTW/fftw3.git"
SCRIPT_COMMIT="69f6c1a6ebd7ac5af33e7074134fb79fbc729c3d"
ffbuild_enabled() {
# Dependency of GPL-Only librubberband
[[ $VARIANT == lgpl* ]] && return -1
return 0
}
ffbuild_dockerbuild() {
mkdir fftw3
cd fftw3
check-wget fftw3.tar.gz "$FFTW3_SRC" "$FFTW3_SHA512"
tar xaf fftw3.tar.gz
rm fftw3.tar.gz
cd fftw*
cd "$FFBUILD_DLDIR/$SELF"
local myconf=(
--prefix="$FFBUILD_PREFIX"
--enable-maintainer-mode
--disable-shared
--enable-static
--disable-fortran
--disable-doc
--with-our-malloc
--enable-threads
--with-combined-threads
--with-incoming-stack-boundary=2
--enable-sse2
--enable-avx
--enable-avx2
)
if [[ $TARGET != *arm64 ]]; then
myconf+=(
--enable-sse2
--enable-avx
--enable-avx2
)
fi
if [[ $TARGET == win* || $TARGET == linux* ]]; then
myconf+=(
--host="$FFBUILD_TOOLCHAIN"
@ -42,7 +40,7 @@ ffbuild_dockerbuild() {
return -1
fi
./configure "${myconf[@]}"
./bootstrap.sh "${myconf[@]}"
make -j$(nproc)
make install
}

View file

@ -1,19 +1,16 @@
#!/bin/bash
# https://sourceforge.net/projects/freetype/files/freetype2/
FREETYPE_SRC="https://sourceforge.net/projects/freetype/files/freetype2/2.11.0/freetype-2.11.0.tar.xz/download"
SCRIPT_REPO="https://gitlab.freedesktop.org/freetype/freetype.git"
SCRIPT_COMMIT="dec2743e6a2a40cddfc8a9892895cb4f861e1eeb"
ffbuild_enabled() {
return 0
}
ffbuild_dockerbuild() {
mkdir ft
cd ft
wget -O ft.tar.gz "$FREETYPE_SRC"
tar xaf ft.tar.gz
rm ft.tar.gz
cd freetype*
cd "$FFBUILD_DLDIR/$SELF"
./autogen.sh
local myconf=(
--prefix="$FFBUILD_PREFIX"

View file

@ -1,15 +1,14 @@
#!/bin/bash
FRIBIDI_REPO="https://github.com/fribidi/fribidi.git"
FRIBIDI_COMMIT="9ca69d112678832f3b734cc8e399583bb12de02d"
SCRIPT_REPO="https://github.com/fribidi/fribidi.git"
SCRIPT_COMMIT="b54871c339dabb7434718da3fed2fa63320997e5"
ffbuild_enabled() {
return 0
}
ffbuild_dockerbuild() {
git-mini-clone "$FRIBIDI_REPO" "$FRIBIDI_COMMIT" fribidi
cd fribidi
cd "$FFBUILD_DLDIR/$SELF"
mkdir build && cd build

View file

@ -1,23 +1,23 @@
#!/bin/bash
GMP_SRC="https://ftp.gnu.org/gnu/gmp/gmp-6.2.1.tar.xz"
SCRIPT_REPO="https://github.com/BtbN/gmplib.git"
SCRIPT_COMMIT="1d7f62515fc8f5109fabace9592d863417f17c37"
ffbuild_enabled() {
return 0
}
ffbuild_dockerbuild() {
wget "$GMP_SRC" -O gmp.tar.xz
tar xaf gmp.tar.xz
rm gmp.tar.xz
cd gmp*
cd "$FFBUILD_DLDIR/$SELF"
autoreconf -i
./.bootstrap
local myconf=(
--prefix="$FFBUILD_PREFIX"
--enable-maintainer-mode
--disable-shared
--enable-static
--with-pic
)
if [[ $TARGET == win* || $TARGET == linux* ]]; then

View file

@ -1,15 +1,14 @@
#!/bin/bash
OGG_REPO="https://github.com/xiph/ogg.git"
OGG_COMMIT="3069cc2bb44160982cdb21b2b8f0660c76b17572"
SCRIPT_REPO="https://github.com/xiph/ogg.git"
SCRIPT_COMMIT="db5c7a49ce7ebda47b15b78471e78fb7f2483e22"
ffbuild_enabled() {
return 0
}
ffbuild_dockerbuild() {
git-mini-clone "$OGG_REPO" "$OGG_COMMIT" ogg
cd ogg
cd "$FFBUILD_DLDIR/$SELF"
./autogen.sh

View file

@ -1,15 +1,20 @@
#!/bin/bash
OPENSSL_REPO="https://github.com/openssl/openssl.git"
OPENSSL_COMMIT="OpenSSL_1_1_1l"
SCRIPT_REPO="https://github.com/openssl/openssl.git"
SCRIPT_COMMIT="openssl-3.0.9"
SCRIPT_TAGFILTER="openssl-3.0.*"
ffbuild_enabled() {
return 0
}
ffbuild_dockerdl() {
default_dl "$SELF"
to_df "RUN git -C \"$SELF\" submodule update --init --recursive --depth=1"
}
ffbuild_dockerbuild() {
git-mini-clone "$OPENSSL_REPO" "$OPENSSL_COMMIT" openssl
cd openssl
cd "$FFBUILD_DLDIR/$SELF"
local myconf=(
threads
@ -19,6 +24,7 @@ ffbuild_dockerbuild() {
enable-ec
enable-srp
--prefix="$FFBUILD_PREFIX"
--libdir=lib
)
if [[ $TARGET == win64 ]]; then
@ -36,15 +42,34 @@ ffbuild_dockerbuild() {
--cross-compile-prefix="$FFBUILD_CROSS_PREFIX"
linux-x86_64
)
elif [[ $TARGET == linuxarm64 ]]; then
myconf+=(
--cross-compile-prefix="$FFBUILD_CROSS_PREFIX"
linux-aarch64
)
else
echo "Unknown target"
return -1
fi
export CFLAGS="$CFLAGS -fno-strict-aliasing"
export CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
# OpenSSL build system prepends the cross prefix itself
export CC="${CC/${FFBUILD_CROSS_PREFIX}/}"
export CXX="${CXX/${FFBUILD_CROSS_PREFIX}/}"
export AR="${AR/${FFBUILD_CROSS_PREFIX}/}"
export RANLIB="${RANLIB/${FFBUILD_CROSS_PREFIX}/}"
./Configure "${myconf[@]}"
sed -i -e "/^CFLAGS=/s|=.*|=${CFLAGS}|" -e "/^LDFLAGS=/s|=[[:space:]]*$|=${LDFLAGS}|" Makefile
make -j$(nproc)
make -j$(nproc) build_sw
make install_sw
}
ffbuild_configure() {
[[ $TARGET == win* ]] && return 0
echo --enable-openssl
}

View file

@ -1,22 +1,20 @@
#!/bin/bash
XZ_SRC="https://sourceforge.net/projects/lzmautils/files/xz-5.2.5.tar.xz/download"
SCRIPT_REPO="https://github.com/xz-mirror/xz.git"
SCRIPT_COMMIT="66bdcfa85fef2911cc80f5f30fed3f9610faccb4"
ffbuild_enabled() {
return 0
}
ffbuild_dockerbuild() {
mkdir xz
cd xz
cd "$FFBUILD_DLDIR/$SELF"
wget "$XZ_SRC" -O xz.tar.xz
tar xaf xz.tar.xz
rm xz.tar.xz
cd xz*
./autogen.sh --no-po4a --no-doxygen
local myconf=(
--prefix="$FFBUILD_PREFIX"
--disable-symbol-versions
--disable-shared
--enable-static
--with-pic

View file

@ -1,19 +1,16 @@
#!/bin/bash
FONTCONFIG_SRC="https://www.freedesktop.org/software/fontconfig/release/fontconfig-2.13.94.tar.xz"
SCRIPT_REPO="https://gitlab.freedesktop.org/fontconfig/fontconfig.git"
SCRIPT_COMMIT="7e2a1b2577e8d90ea5be3f14091e809ac7742438"
ffbuild_enabled() {
return 0
}
ffbuild_dockerbuild() {
mkdir fc
cd fc
cd "$FFBUILD_DLDIR/$SELF"
wget "$FONTCONFIG_SRC" -O fc.tar.gz
tar xaf fc.tar.gz
rm fc.tar.gz
cd fontconfig*
./autogen.sh --noconf
local myconf=(
--prefix="$FFBUILD_PREFIX"
@ -24,7 +21,13 @@ ffbuild_dockerbuild() {
--enable-static
)
if [[ $TARGET == win* || $TARGET == linux* ]]; then
if [[ $TARGET == linux* ]]; then
myconf+=(
--sysconfdir=/etc
--localstatedir=/var
--host="$FFBUILD_TOOLCHAIN"
)
elif [[ $TARGET == win* ]]; then
myconf+=(
--host="$FFBUILD_TOOLCHAIN"
)

View file

@ -1,15 +1,14 @@
#!/bin/bash
HARFBUZZ_REPO="https://github.com/harfbuzz/harfbuzz.git"
HARFBUZZ_COMMIT="85deddb16ee6b00b0c921998e1d93c84002f5a42"
SCRIPT_REPO="https://github.com/harfbuzz/harfbuzz.git"
SCRIPT_COMMIT="73ee9c346f3acccbe14a4caf258b636de7c459be"
ffbuild_enabled() {
return 0
}
ffbuild_dockerbuild() {
git-mini-clone "$HARFBUZZ_REPO" "$HARFBUZZ_COMMIT" harfbuzz
cd harfbuzz
cd "$FFBUILD_DLDIR/$SELF"
local myconf=(
--prefix="$FFBUILD_PREFIX"

View file

@ -1,17 +1,14 @@
#!/bin/bash
LIBSR_REPO="https://github.com/libsndfile/libsamplerate.git"
LIBSR_COMMIT="c96f5e3de9c4488f4e6c97f59f5245f22fda22f7"
SCRIPT_REPO="https://github.com/libsndfile/libsamplerate.git"
SCRIPT_COMMIT="22bd06eb114850ebe31981eb794d150a95439fef"
ffbuild_enabled() {
# Dependency of GPL-Only librubberband
[[ $VARIANT == lgpl* ]] && return -1
return 0
}
ffbuild_dockerbuild() {
git-mini-clone "$LIBSR_REPO" "$LIBSR_COMMIT" libsr
cd libsr
cd "$FFBUILD_DLDIR/$SELF"
mkdir build
cd build

View file

@ -1,15 +1,14 @@
#!/bin/bash
LIBUDFREAD_REPO="https://code.videolan.org/videolan/libudfread.git"
LIBUDFREAD_COMMIT="b3e6936a23f8af30a0be63d88f4695bdc0ea26e1"
SCRIPT_REPO="https://code.videolan.org/videolan/libudfread.git"
SCRIPT_COMMIT="b3e6936a23f8af30a0be63d88f4695bdc0ea26e1"
ffbuild_enabled() {
return 0
}
ffbuild_dockerbuild() {
git-mini-clone "$LIBUDFREAD_REPO" "$LIBUDFREAD_COMMIT" libudfread
cd libudfread
cd "$FFBUILD_DLDIR/$SELF"
./bootstrap

View file

@ -1,15 +1,14 @@
#!/bin/bash
VORBIS_REPO="https://github.com/xiph/vorbis.git"
VORBIS_COMMIT="84c023699cdf023a32fa4ded32019f194afcdad0"
SCRIPT_REPO="https://github.com/xiph/vorbis.git"
SCRIPT_COMMIT="84c023699cdf023a32fa4ded32019f194afcdad0"
ffbuild_enabled() {
return 0
}
ffbuild_dockerbuild() {
git-mini-clone "$VORBIS_REPO" "$VORBIS_COMMIT" vorbis
cd vorbis
cd "$FFBUILD_DLDIR/$SELF"
./autogen.sh

View file

@ -1,28 +1,33 @@
#!/bin/bash
HEADERS_REPO="https://github.com/KhronosGroup/OpenCL-Headers.git"
HEADERS_COMMIT="447efd3be3169fa0ef37fa481241d7b261a02412"
SCRIPT_REPO="https://github.com/KhronosGroup/OpenCL-Headers.git"
SCRIPT_COMMIT="e049b16b5f157e2f28e7b5c301e71e1ccb3fe288"
LOADER_REPO="https://github.com/KhronosGroup/OpenCL-ICD-Loader.git"
LOADER_COMMIT="4e65bd5db0a0a87637fddc081a70d537fc2a9e70"
SCRIPT_REPO2="https://github.com/KhronosGroup/OpenCL-ICD-Loader.git"
SCRIPT_COMMIT2="229410f86a8c8c9e0f86f195409e5481a2bae067"
ffbuild_enabled() {
return 0
}
ffbuild_dockerbuild() {
mkdir opencl && cd opencl
ffbuild_dockerdl() {
default_dl opencl/headers
to_df "RUN git-mini-clone \"$SCRIPT_REPO2\" \"$SCRIPT_COMMIT2\" opencl/loader"
}
ffbuild_dockerbuild() {
cd "$FFBUILD_DLDIR"/opencl
git-mini-clone "$HEADERS_REPO" "$HEADERS_COMMIT" headers
mkdir -p "$FFBUILD_PREFIX"/include/CL
cp -r headers/CL/* "$FFBUILD_PREFIX"/include/CL/.
git-mini-clone "$LOADER_REPO" "$LOADER_COMMIT" loader
cd loader
mkdir build && cd build
cmake -DCMAKE_TOOLCHAIN_FILE="$FFBUILD_CMAKE_TOOLCHAIN" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="$FFBUILD_PREFIX" -DOPENCL_ICD_LOADER_HEADERS_DIR="$FFBUILD_PREFIX"/include -DBUILD_SHARED_LIBS=OFF -DOPENCL_ICD_LOADER_DISABLE_OPENCLON12=ON -DOPENCL_ICD_LOADER_PIC=ON -DOPENCL_ICD_LOADER_BUILD_TESTING=OFF ..
cmake -DCMAKE_TOOLCHAIN_FILE="$FFBUILD_CMAKE_TOOLCHAIN" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="$FFBUILD_PREFIX" \
-DOPENCL_ICD_LOADER_HEADERS_DIR="$FFBUILD_PREFIX"/include -DOPENCL_ICD_LOADER_BUILD_SHARED_LIBS=OFF \
-DOPENCL_ICD_LOADER_DISABLE_OPENCLON12=ON -DOPENCL_ICD_LOADER_PIC=ON \
-DOPENCL_ICD_LOADER_BUILD_TESTING=OFF -DBUILD_TESTING=OFF ..
make -j$(nproc)
make install
@ -34,12 +39,13 @@ ffbuild_dockerbuild() {
echo "Name: OpenCL" >> OpenCL.pc
echo "Description: OpenCL ICD Loader" >> OpenCL.pc
echo "Version: 9999" >> OpenCL.pc
echo "Libs: -L\${libdir} -lOpenCL" >> OpenCL.pc
echo "Cflags: -I\${includedir}" >> OpenCL.pc
if [[ $TARGET == linux* ]]; then
echo "Libs: -L\${libdir} -lOpenCL" >> OpenCL.pc
echo "Libs.private: -ldl" >> OpenCL.pc
elif [[ $TARGET == win* ]]; then
echo "Libs: -L\${libdir} -l:OpenCL.a" >> OpenCL.pc
echo "Libs.private: -lole32 -lshlwapi -lcfgmgr32" >> OpenCL.pc
fi

66
scripts.d/45-pulseaudio.sh Executable file
View file

@ -0,0 +1,66 @@
#!/bin/bash
SCRIPT_REPO="https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git"
SCRIPT_COMMIT="e96d278bfc514f290b60c9e924fabc1c772e1689"
ffbuild_enabled() {
[[ $TARGET == linux* ]] || return 1
return 0
}
ffbuild_dockerdl() {
to_df "RUN git clone --filter=blob:none \"$SCRIPT_REPO\" \"$SELF\" && git -C \"$SELF\" checkout \"$SCRIPT_COMMIT\""
}
ffbuild_dockerbuild() {
cd "$FFBUILD_DLDIR/$SELF"
# Kill build of utils and their sndfile dep
echo > src/utils/meson.build
echo > src/pulsecore/sndfile-util.c
echo > src/pulsecore/sndfile-util.h
sed -ri -e 's/(sndfile_dep = .*)\)/\1, required : false)/' meson.build
sed -ri -e 's/shared_library/library/g' src/meson.build src/pulse/meson.build
mkdir build && cd build
local myconf=(
--prefix="$FFBUILD_PREFIX"
--buildtype=release
--default-library=static
-Ddaemon=false
-Dclient=true
-Ddoxygen=false
-Dgcov=false
-Dman=false
-Dtests=false
-Dipv6=true
-Dopenssl=enabled
)
if [[ $TARGET == linux* ]]; then
myconf+=(
--cross-file=/cross.meson
)
else
echo "Unknown target"
return -1
fi
meson "${myconf[@]}" ..
ninja -j"$(nproc)"
ninja install
rm -r "$FFBUILD_PREFIX"/share
echo "Libs.private: -ldl -lrt" >> "$FFBUILD_PREFIX"/lib/pkgconfig/libpulse.pc
echo "Libs.private: -ldl -lrt" >> "$FFBUILD_PREFIX"/lib/pkgconfig/libpulse-simple.pc
}
ffbuild_configure() {
echo --enable-libpulse
}
ffbuild_unconfigure() {
echo --disable-libpulse
}

View file

@ -1,15 +1,14 @@
#!/bin/bash
VMAF_REPO="https://github.com/Netflix/vmaf.git"
VMAF_COMMIT="8f24c9ec82f9bb82d7f4eff22b290ab48f3e210f"
SCRIPT_REPO="https://github.com/Netflix/vmaf.git"
SCRIPT_COMMIT="98bdd77b296da207ab42c3113ec8f30de58db197"
ffbuild_enabled() {
return 0
}
ffbuild_dockerbuild() {
git-mini-clone "$VMAF_REPO" "$VMAF_COMMIT" vmaf
cd vmaf
cd "$FFBUILD_DLDIR/$SELF"
# Kill build of unused and broken tools
echo > libvmaf/tools/meson.build

View file

@ -1,56 +0,0 @@
#!/bin/bash
LOADER_REPO="https://github.com/KhronosGroup/Vulkan-Loader.git"
LOADER_COMMIT="830a0724aa281d7cad98eda59b850871f024bb41"
ffbuild_enabled() {
# The various graphics systems(xcb, xlib, wayland, ...) need figured out first
[[ $TARGET == linux* ]] && return -1
return 0
}
ffbuild_dockerstage() {
to_df "RUN --mount=src=${SELF},dst=/stage.sh --mount=src=patches/vulkan,dst=/patches run_stage /stage.sh"
}
ffbuild_dockerbuild() {
git clone "$LOADER_REPO" loader
git -C loader checkout "$LOADER_COMMIT"
for patch in /patches/*.patch; do
echo "Applying $patch"
git -C loader am -3 < "$patch"
done
HEADERS_REPO="$(grep -A10 'name.*:.*Vulkan-Headers' loader/scripts/known_good.json | grep url | head -n1 | cut -d'"' -f4)"
HEADERS_COMMIT="$(grep -A10 'name.*:.*Vulkan-Headers' loader/scripts/known_good.json | grep commit | head -n1 | cut -d'"' -f4)"
git-mini-clone "$HEADERS_REPO" "$HEADERS_COMMIT" headers
cd headers
mkdir build && cd build
cmake -DCMAKE_TOOLCHAIN_FILE="$FFBUILD_CMAKE_TOOLCHAIN" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="$FFBUILD_PREFIX" ..
make -j$(nproc)
make install
cd ../../loader
mkdir build && cd build
cmake -DCMAKE_TOOLCHAIN_FILE="$FFBUILD_CMAKE_TOOLCHAIN" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="$FFBUILD_PREFIX" -DBUILD_TESTS=OFF -DBUILD_STATIC_LOADER=ON ..
make -j$(nproc)
make install
ln -s libvulkan-1.a /opt/ffbuild/lib/libvulkan.a
}
ffbuild_configure() {
echo --enable-vulkan
}
ffbuild_unconfigure() {
echo --disable-vulkan
}

View file

@ -1,7 +1,7 @@
#!/bin/bash
XCBPROTO_REPO="https://gitlab.freedesktop.org/xorg/proto/xcbproto.git"
XCBPROTO_COMMIT="c9be9015959f3d3830d847db44d39c5d21ba55b6"
SCRIPT_REPO="https://gitlab.freedesktop.org/xorg/proto/xcbproto.git"
SCRIPT_COMMIT="91178913c25b19e0457cdf6d21e00e6a613823e2"
ffbuild_enabled() {
[[ $TARGET != linux* ]] && return -1
@ -9,8 +9,7 @@ ffbuild_enabled() {
}
ffbuild_dockerbuild() {
git-mini-clone "$XCBPROTO_REPO" "$XCBPROTO_COMMIT" xcbproto
cd xcbproto
cd "$FFBUILD_DLDIR/$SELF"
autoreconf -i

View file

@ -1,7 +1,7 @@
#!/bin/bash
XPROTO_REPO="https://gitlab.freedesktop.org/xorg/proto/xorgproto.git"
XPROTO_COMMIT="57acac1d4c7967f4661fb1c9f86f48f34a46c48d"
SCRIPT_REPO="https://gitlab.freedesktop.org/xorg/proto/xorgproto.git"
SCRIPT_COMMIT="766967322209f2dcb72e6a8edea0c651f586201d"
ffbuild_enabled() {
[[ $TARGET != linux* ]] && return -1
@ -9,8 +9,7 @@ ffbuild_enabled() {
}
ffbuild_dockerbuild() {
git-mini-clone "$XPROTO_REPO" "$XPROTO_COMMIT" xproto
cd xproto
cd "$FFBUILD_DLDIR/$SELF"
autoreconf -i

View file

@ -1,7 +1,7 @@
#!/bin/bash
LIBXTRANS_REPO="https://gitlab.freedesktop.org/xorg/lib/libxtrans.git"
LIBXTRANS_COMMIT="3b5df889f58a99980a35a7b4a18eb4e7d2abeac4"
SCRIPT_REPO="https://gitlab.freedesktop.org/xorg/lib/libxtrans.git"
SCRIPT_COMMIT="3b3a3bd75d86aec78f6ef893b198c3efc378bc64"
ffbuild_enabled() {
[[ $TARGET != linux* ]] && return -1
@ -9,8 +9,7 @@ ffbuild_enabled() {
}
ffbuild_dockerbuild() {
git-mini-clone "$LIBXTRANS_REPO" "$LIBXTRANS_COMMIT" libxtrans
cd libxtrans
cd "$FFBUILD_DLDIR/$SELF"
autoreconf -i

View file

@ -1,7 +1,7 @@
#!/bin/bash
LIBXAU_REPO="https://gitlab.freedesktop.org/xorg/lib/libxau.git"
LIBXAU_COMMIT="d9443b2c57b512cfb250b35707378654d86c7dea"
SCRIPT_REPO="https://gitlab.freedesktop.org/xorg/lib/libxau.git"
SCRIPT_COMMIT="df1bf4fe528a5a9eef420f78efb225e4696ac467"
ffbuild_enabled() {
[[ $TARGET != linux* ]] && return -1
@ -9,15 +9,14 @@ ffbuild_enabled() {
}
ffbuild_dockerbuild() {
git-mini-clone "$LIBXAU_REPO" "$LIBXAU_COMMIT" libxau
cd libxau
cd "$FFBUILD_DLDIR/$SELF"
autoreconf -i
local myconf=(
--prefix="$FFBUILD_PREFIX"
--disable-shared
--enable-static
--enable-shared
--disable-static
--with-pic
)
@ -30,7 +29,13 @@ ffbuild_dockerbuild() {
return -1
fi
export CFLAGS="$RAW_CFLAGS"
export LDFLAFS="$RAW_LDFLAGS"
./configure "${myconf[@]}"
make -j$(nproc)
make install
gen-implib "$FFBUILD_PREFIX"/lib/{libXau.so.6,libXau.a}
rm "$FFBUILD_PREFIX"/lib/libXau{.so*,.la}
}

View file

@ -1,7 +1,7 @@
#!/bin/bash
LIBXCB_REPO="https://gitlab.freedesktop.org/xorg/lib/libxcb.git"
LIBXCB_COMMIT="233d7b7f1f03ef18bf3955eb1f20421e745d22f0"
SCRIPT_REPO="https://gitlab.freedesktop.org/xorg/lib/libxcb.git"
SCRIPT_COMMIT="8935793f1f3751a6aa9d78955c7d6236177986de"
ffbuild_enabled() {
[[ $TARGET != linux* ]] && return -1
@ -9,15 +9,14 @@ ffbuild_enabled() {
}
ffbuild_dockerbuild() {
git-mini-clone "$LIBXCB_REPO" "$LIBXCB_COMMIT" libxcb
cd libxcb
cd "$FFBUILD_DLDIR/$SELF"
autoreconf -i
local myconf=(
--prefix="$FFBUILD_PREFIX"
--disable-shared
--enable-static
--enable-shared
--disable-static
--with-pic
--disable-devel-docs
)
@ -31,9 +30,17 @@ ffbuild_dockerbuild() {
return -1
fi
export CFLAGS="$RAW_CFLAGS"
export LDFLAFS="$RAW_LDFLAGS"
./configure "${myconf[@]}"
make -j$(nproc)
make install
for LIBNAME in "$FFBUILD_PREFIX"/lib/libxcb*.so.?; do
gen-implib "$LIBNAME" "${LIBNAME%%.*}.a"
rm "${LIBNAME%%.*}"{.so*,.la}
done
}
ffbuild_configure() {

View file

@ -1,7 +1,7 @@
#!/bin/bash
LIBX11_REPO="https://gitlab.freedesktop.org/xorg/lib/libx11.git"
LIBX11_COMMIT="2356e59ff24f8d1b25cdc4dffc5171c65dc2b86e"
SCRIPT_REPO="https://gitlab.freedesktop.org/xorg/lib/libx11.git"
SCRIPT_COMMIT="af2b6dfab1616dc85be9c9b196e4c56d00447851"
ffbuild_enabled() {
[[ $TARGET != linux* ]] && return -1
@ -9,15 +9,14 @@ ffbuild_enabled() {
}
ffbuild_dockerbuild() {
git-mini-clone "$LIBX11_REPO" "$LIBX11_COMMIT" libx11
cd libx11
cd "$FFBUILD_DLDIR/$SELF"
autoreconf -i
local myconf=(
--prefix="$FFBUILD_PREFIX"
--disable-shared
--enable-static
--enable-shared
--disable-static
--with-pic
--without-xmlto
--without-fop
@ -27,6 +26,12 @@ ffbuild_dockerbuild() {
--enable-ipv6
)
if [[ $TARGET == linuxarm64 ]]; then
myconf+=(
--disable-malloc0returnsnull
)
fi
if [[ $TARGET == linux* ]]; then
myconf+=(
--host="$FFBUILD_TOOLCHAIN"
@ -36,9 +41,16 @@ ffbuild_dockerbuild() {
return -1
fi
export CFLAGS="$RAW_CFLAGS"
export LDFLAFS="$RAW_LDFLAGS"
./configure "${myconf[@]}"
make -j$(nproc)
make install
echo "Libs.private: -ldl" >> "$FFBUILD_PREFIX"/lib/pkgconfig/x11.pc
echo "Libs: -ldl" >> "$FFBUILD_PREFIX"/lib/pkgconfig/x11.pc
gen-implib "$FFBUILD_PREFIX"/lib/{libX11-xcb.so.1,libX11-xcb.a}
gen-implib "$FFBUILD_PREFIX"/lib/{libX11.so.6,libX11.a}
rm "$FFBUILD_PREFIX"/lib/libX11{,-xcb}{.so*,.la}
}

View file

@ -1,7 +1,7 @@
#!/bin/bash
LIBXEXT_REPO="https://gitlab.freedesktop.org/xorg/lib/libxext.git"
LIBXEXT_COMMIT="47904063048fa6ef6e8e16219ddef4d14d5d9a4b"
SCRIPT_REPO="https://gitlab.freedesktop.org/xorg/lib/libxext.git"
SCRIPT_COMMIT="de2ebd62c1eb8fe16c11aceac4a6981bda124cf4"
ffbuild_enabled() {
[[ $TARGET != linux* ]] && return -1
@ -9,15 +9,14 @@ ffbuild_enabled() {
}
ffbuild_dockerbuild() {
git-mini-clone "$LIBXEXT_REPO" "$LIBXEXT_COMMIT" libxext
cd libxext
cd "$FFBUILD_DLDIR/$SELF"
autoreconf -i
local myconf=(
--prefix="$FFBUILD_PREFIX"
--disable-shared
--enable-static
--enable-shared
--disable-static
--with-pic
--without-xmlto
--without-fop
@ -25,6 +24,12 @@ ffbuild_dockerbuild() {
--without-lint
)
if [[ $TARGET == linuxarm64 ]]; then
myconf+=(
--disable-malloc0returnsnull
)
fi
if [[ $TARGET == linux* ]]; then
myconf+=(
--host="$FFBUILD_TOOLCHAIN"
@ -34,7 +39,13 @@ ffbuild_dockerbuild() {
return -1
fi
export CFLAGS="$RAW_CFLAGS -D_GNU_SOURCE"
export LDFLAFS="$RAW_LDFLAGS"
./configure "${myconf[@]}"
make -j$(nproc)
make install
gen-implib "$FFBUILD_PREFIX"/lib/{libXext.so.6,libXext.a}
rm "$FFBUILD_PREFIX"/lib/libXext{.so*,.la}
}

View file

@ -1,7 +1,7 @@
#!/bin/bash
LIBXFIXES_REPO="https://gitlab.freedesktop.org/xorg/lib/libxfixes.git"
LIBXFIXES_COMMIT="6fe3bd64dd82f704ed91478acb4c99ab5c00be16"
SCRIPT_REPO="https://gitlab.freedesktop.org/xorg/lib/libxfixes.git"
SCRIPT_COMMIT="c1cab28e27dd1c5a81394965248b57e490ccf2ca"
ffbuild_enabled() {
[[ $TARGET != linux* ]] && return -1
@ -9,15 +9,14 @@ ffbuild_enabled() {
}
ffbuild_dockerbuild() {
git-mini-clone "$LIBXFIXES_REPO" "$LIBXFIXES_COMMIT" libxfixes
cd libxfixes
cd "$FFBUILD_DLDIR/$SELF"
autoreconf -i
local myconf=(
--prefix="$FFBUILD_PREFIX"
--disable-shared
--enable-static
--enable-shared
--disable-static
--with-pic
)
@ -30,7 +29,13 @@ ffbuild_dockerbuild() {
return -1
fi
export CFLAGS="$RAW_CFLAGS"
export LDFLAFS="$RAW_LDFLAGS"
./configure "${myconf[@]}"
make -j$(nproc)
make install
gen-implib "$FFBUILD_PREFIX"/lib/{libXfixes.so.3,libXfixes.a}
rm "$FFBUILD_PREFIX"/lib/libXfixes{.so*,.la}
}

47
scripts.d/45-x11/50-libxi.sh Executable file
View file

@ -0,0 +1,47 @@
#!/bin/bash
SCRIPT_REPO="https://gitlab.freedesktop.org/xorg/lib/libxi.git"
SCRIPT_COMMIT="3a7503ec7703f10de17c622ea22b7bff736cea74"
ffbuild_enabled() {
[[ $TARGET != linux* ]] && return -1
return 0
}
ffbuild_dockerbuild() {
cd "$FFBUILD_DLDIR/$SELF"
autoreconf -i
local myconf=(
--prefix="$FFBUILD_PREFIX"
--enable-shared
--disable-static
--with-pic
)
if [[ $TARGET == linuxarm64 ]]; then
myconf+=(
--disable-malloc0returnsnull
)
fi
if [[ $TARGET == linux* ]]; then
myconf+=(
--host="$FFBUILD_TOOLCHAIN"
)
else
echo "Unknown target"
return -1
fi
export CFLAGS="$RAW_CFLAGS"
export LDFLAFS="$RAW_LDFLAGS"
./configure "${myconf[@]}"
make -j$(nproc)
make install
gen-implib "$FFBUILD_PREFIX"/lib/{libXi.so.6,libXi.a}
rm "$FFBUILD_PREFIX"/lib/libXi{.so*,.la}
}

View file

@ -0,0 +1,47 @@
#!/bin/bash
SCRIPT_REPO="https://gitlab.freedesktop.org/xorg/lib/libxinerama.git"
SCRIPT_COMMIT="51c28095951676a5896437c4c3aa40fb1972bad2"
ffbuild_enabled() {
[[ $TARGET != linux* ]] && return -1
return 0
}
ffbuild_dockerbuild() {
cd "$FFBUILD_DLDIR/$SELF"
autoreconf -i
local myconf=(
--prefix="$FFBUILD_PREFIX"
--enable-shared
--disable-static
--with-pic
)
if [[ $TARGET == linuxarm64 ]]; then
myconf+=(
--disable-malloc0returnsnull
)
fi
if [[ $TARGET == linux* ]]; then
myconf+=(
--host="$FFBUILD_TOOLCHAIN"
)
else
echo "Unknown target"
return -1
fi
export CFLAGS="$RAW_CFLAGS"
export LDFLAFS="$RAW_LDFLAGS"
./configure "${myconf[@]}"
make -j$(nproc)
make install
gen-implib "$FFBUILD_PREFIX"/lib/{libXinerama.so.1,libXinerama.a}
rm "$FFBUILD_PREFIX"/lib/libXinerama{.so*,.la}
}

View file

@ -0,0 +1,47 @@
#!/bin/bash
SCRIPT_REPO="https://gitlab.freedesktop.org/xorg/lib/libxrender.git"
SCRIPT_COMMIT="07efd80468f6b595e6432edd28b8560ca7695ba0"
ffbuild_enabled() {
[[ $TARGET != linux* ]] && return -1
return 0
}
ffbuild_dockerbuild() {
cd "$FFBUILD_DLDIR/$SELF"
autoreconf -i
local myconf=(
--prefix="$FFBUILD_PREFIX"
--enable-shared
--disable-static
--with-pic
)
if [[ $TARGET == linuxarm64 ]]; then
myconf+=(
--disable-malloc0returnsnull
)
fi
if [[ $TARGET == linux* ]]; then
myconf+=(
--host="$FFBUILD_TOOLCHAIN"
)
else
echo "Unknown target"
return -1
fi
export CFLAGS="$RAW_CFLAGS"
export LDFLAFS="$RAW_LDFLAGS"
./configure "${myconf[@]}"
make -j$(nproc)
make install
gen-implib "$FFBUILD_PREFIX"/lib/{libXrender.so.1,libXrender.a}
rm "$FFBUILD_PREFIX"/lib/libXrender{.so*,.la}
}

View file

@ -0,0 +1,47 @@
#!/bin/bash
SCRIPT_REPO="https://gitlab.freedesktop.org/xorg/lib/libxscrnsaver.git"
SCRIPT_COMMIT="9b4e000c6c4ae213a3e52345751d885543f17929"
ffbuild_enabled() {
[[ $TARGET != linux* ]] && return -1
return 0
}
ffbuild_dockerbuild() {
cd "$FFBUILD_DLDIR/$SELF"
autoreconf -i
local myconf=(
--prefix="$FFBUILD_PREFIX"
--enable-shared
--disable-static
--with-pic
)
if [[ $TARGET == linuxarm64 ]]; then
myconf+=(
--disable-malloc0returnsnull
)
fi
if [[ $TARGET == linux* ]]; then
myconf+=(
--host="$FFBUILD_TOOLCHAIN"
)
else
echo "Unknown target"
return -1
fi
export CFLAGS="$RAW_CFLAGS"
export LDFLAFS="$RAW_LDFLAGS"
./configure "${myconf[@]}"
make -j$(nproc)
make install
gen-implib "$FFBUILD_PREFIX"/lib/{libXss.so.1,libXss.a}
rm "$FFBUILD_PREFIX"/lib/libXss{.so*,.la}
}

View file

@ -0,0 +1,47 @@
#!/bin/bash
SCRIPT_REPO="https://gitlab.freedesktop.org/xorg/lib/libxxf86vm.git"
SCRIPT_COMMIT="cfda59347e3a04415340a99f925a9cd85c0531b2"
ffbuild_enabled() {
[[ $TARGET != linux* ]] && return -1
return 0
}
ffbuild_dockerbuild() {
cd "$FFBUILD_DLDIR/$SELF"
autoreconf -i
local myconf=(
--prefix="$FFBUILD_PREFIX"
--enable-shared
--disable-static
--with-pic
)
if [[ $TARGET == linuxarm64 ]]; then
myconf+=(
--disable-malloc0returnsnull
)
fi
if [[ $TARGET == linux* ]]; then
myconf+=(
--host="$FFBUILD_TOOLCHAIN"
)
else
echo "Unknown target"
return -1
fi
export CFLAGS="$RAW_CFLAGS"
export LDFLAFS="$RAW_LDFLAGS"
./configure "${myconf[@]}"
make -j$(nproc)
make install
gen-implib "$FFBUILD_PREFIX"/lib/{libXxf86vm.so.1,libXxf86vm.a}
rm "$FFBUILD_PREFIX"/lib/libXxf86vm{.so*,.la}
}

41
scripts.d/45-x11/60-libglvnd.sh Executable file
View file

@ -0,0 +1,41 @@
#!/bin/bash
SCRIPT_REPO="https://gitlab.freedesktop.org/glvnd/libglvnd.git"
SCRIPT_COMMIT="179d7278d7485ceea2d440807be9d677d32aedc4"
ffbuild_enabled() {
[[ $TARGET != linux* ]] && return -1
return 0
}
ffbuild_dockerbuild() {
cd "$FFBUILD_DLDIR/$SELF"
mkdir build && cd build
local myconf=(
--prefix="$FFBUILD_PREFIX"
--buildtype=release
--default-library=static
-Dasm=enabled
-Dx11=enabled
-Degl=true
-Dglx=enabled
-Dgles1=true
-Dgles2=true
-Dheaders=true
)
if [[ $TARGET == linux* ]]; then
myconf+=(
--cross-file=/cross.meson
)
else
echo "Unknown target"
return -1
fi
meson "${myconf[@]}" ..
ninja -j"$(nproc)"
ninja install
}

View file

@ -0,0 +1,41 @@
#!/bin/bash
SCRIPT_REPO="https://gitlab.freedesktop.org/xorg/lib/libxcursor.git"
SCRIPT_COMMIT="a353f02a7ac4504ad5edb5407278c7a03c507aef"
ffbuild_enabled() {
[[ $TARGET != linux* ]] && return -1
return 0
}
ffbuild_dockerbuild() {
cd "$FFBUILD_DLDIR/$SELF"
autoreconf -i
local myconf=(
--prefix="$FFBUILD_PREFIX"
--enable-shared
--disable-static
--with-pic
)
if [[ $TARGET == linux* ]]; then
myconf+=(
--host="$FFBUILD_TOOLCHAIN"
)
else
echo "Unknown target"
return -1
fi
export CFLAGS="$RAW_CFLAGS"
export LDFLAFS="$RAW_LDFLAGS"
./configure "${myconf[@]}"
make -j$(nproc)
make install
gen-implib "$FFBUILD_PREFIX"/lib/{libXcursor.so.1,libXcursor.a}
rm "$FFBUILD_PREFIX"/lib/libXcursor{.so*,.la}
}

View file

@ -0,0 +1,47 @@
#!/bin/bash
SCRIPT_REPO="https://gitlab.freedesktop.org/xorg/lib/libxrandr.git"
SCRIPT_COMMIT="5b96863cf2a34ee9e72ffc4ec6415bc59b6121fc"
ffbuild_enabled() {
[[ $TARGET != linux* ]] && return -1
return 0
}
ffbuild_dockerbuild() {
cd "$FFBUILD_DLDIR/$SELF"
autoreconf -i
local myconf=(
--prefix="$FFBUILD_PREFIX"
--enable-shared
--disable-static
--with-pic
)
if [[ $TARGET == linuxarm64 ]]; then
myconf+=(
--disable-malloc0returnsnull
)
fi
if [[ $TARGET == linux* ]]; then
myconf+=(
--host="$FFBUILD_TOOLCHAIN"
)
else
echo "Unknown target"
return -1
fi
export CFLAGS="$RAW_CFLAGS"
export LDFLAFS="$RAW_LDFLAGS"
./configure "${myconf[@]}"
make -j$(nproc)
make install
gen-implib "$FFBUILD_PREFIX"/lib/{libXrandr.so.2,libXrandr.a}
rm "$FFBUILD_PREFIX"/lib/libXrandr{.so*,.la}
}

View file

@ -1,7 +1,7 @@
#!/bin/bash
LIBXV_REPO="https://gitlab.freedesktop.org/xorg/lib/libxv.git"
LIBXV_COMMIT="03a6f599d060591a9a7cd8558bd2143a1c7c70d7"
SCRIPT_REPO="https://gitlab.freedesktop.org/xorg/lib/libxv.git"
SCRIPT_COMMIT="b022c9cf7004fe6f794c4c00dd519a2e4c74eca0"
ffbuild_enabled() {
[[ $TARGET != linux* ]] && return -1
@ -10,19 +10,24 @@ ffbuild_enabled() {
}
ffbuild_dockerbuild() {
git-mini-clone "$LIBXV_REPO" "$LIBXV_COMMIT" libxv
cd libxv
cd "$FFBUILD_DLDIR/$SELF"
autoreconf -i
local myconf=(
--prefix="$FFBUILD_PREFIX"
--disable-shared
--enable-static
--enable-shared
--disable-static
--with-pic
--without-lint
)
if [[ $TARGET == linuxarm64 ]]; then
myconf+=(
--disable-malloc0returnsnull
)
fi
if [[ $TARGET == linux* ]]; then
myconf+=(
--host="$FFBUILD_TOOLCHAIN"
@ -32,9 +37,15 @@ ffbuild_dockerbuild() {
return -1
fi
export CFLAGS="$RAW_CFLAGS"
export LDFLAFS="$RAW_LDFLAGS"
./configure "${myconf[@]}"
make -j$(nproc)
make install
gen-implib "$FFBUILD_PREFIX"/lib/{libXv.so.1,libXv.a}
rm "$FFBUILD_PREFIX"/lib/libXv{.so*,.la}
}
ffbuild_configure() {

View file

@ -1,5 +1,7 @@
#!/bin/bash
SCRIPT_SKIP="1"
ffbuild_enabled() {
[[ $TARGET != linux* ]] && return -1
return 0
@ -10,6 +12,15 @@ ffbuild_dockerlayer() {
to_df "COPY --from=${SELFLAYER} \$FFBUILD_PREFIX/share/aclocal/. /usr/share/aclocal"
}
ffbuild_dockerbuild() {
true
ffbuild_dockerdl() {
return 0
}
ffbuild_dockerbuild() {
rm "$FFBUILD_PREFIX"/lib/lib*.so* || true
rm "$FFBUILD_PREFIX"/lib/*.la || true
}
ffbuild_libs() {
echo -ldl
}

View file

@ -1,15 +1,14 @@
#!/bin/bash
AMF_REPO="https://github.com/GPUOpen-LibrariesAndSDKs/AMF.git"
AMF_COMMIT="5359f7dba51107da19b7650e5d8a40a0f04ea6d9"
SCRIPT_REPO="https://github.com/GPUOpen-LibrariesAndSDKs/AMF.git"
SCRIPT_COMMIT="68f2396f1a55a5b12767f5433411bb4093ea65ed"
ffbuild_enabled() {
return 0
}
ffbuild_dockerbuild() {
git-mini-clone "$AMF_REPO" "$AMF_COMMIT" amf
cd amf
cd "$FFBUILD_DLDIR/$SELF"
mkdir -p "$FFBUILD_PREFIX"/include
mv amf/public/include "$FFBUILD_PREFIX"/include/AMF

View file

@ -1,19 +1,18 @@
#!/bin/bash
AOM_REPO="https://aomedia.googlesource.com/aom"
AOM_COMMIT="feb75d0bb2df222b9e23b8012e3f193aff7e1377"
SCRIPT_REPO="https://aomedia.googlesource.com/aom"
SCRIPT_COMMIT="83ccc009eade321c8723ae0da8655fc68ce6a128"
ffbuild_enabled() {
return 0
}
ffbuild_dockerstage() {
to_df "RUN --mount=src=${SELF},dst=/stage.sh --mount=src=patches/aom,dst=/patches run_stage /stage.sh"
to_df "RUN --mount=src=${SELF},dst=/stage.sh --mount=src=/,dst=\$FFBUILD_DLDIR,from=${DL_IMAGE},rw --mount=src=patches/aom,dst=/patches run_stage /stage.sh"
}
ffbuild_dockerbuild() {
git-mini-clone "$AOM_REPO" "$AOM_COMMIT" aom
cd aom
cd "$FFBUILD_DLDIR/$SELF"
for patch in /patches/*.patch; do
echo "Applying $patch"

View file

@ -1,15 +1,14 @@
#!/bin/bash
MFX_REPO="https://github.com/lu-zero/mfx_dispatch.git"
MFX_COMMIT="7e4d221c36c630c1250b23a5dfa15657bc04c10c"
SCRIPT_REPO="https://github.com/glennrp/libpng.git"
SCRIPT_COMMIT="82414985c1085737bccd3eedb0aaa997451f5d32"
ffbuild_enabled() {
return 0
}
ffbuild_dockerbuild() {
git-mini-clone "$MFX_REPO" "$MFX_COMMIT" mfx
cd mfx
cd "$FFBUILD_DLDIR/$SELF"
autoreconf -i
@ -29,15 +28,9 @@ ffbuild_dockerbuild() {
return -1
fi
export CPPFLAGS="$CPPFLAGS -I$FFBUILD_PREFIX/include"
./configure "${myconf[@]}"
make -j$(nproc)
make install
}
ffbuild_configure() {
echo --enable-libmfx
}
ffbuild_unconfigure() {
echo --disable-libmfx
}

View file

@ -0,0 +1,55 @@
#!/bin/bash
SCRIPT_REPO="https://github.com/nkoriyama/aribb24.git"
SCRIPT_COMMIT="5e9be272f96e00f15a2f3c5f8ba7e124862aec38"
ffbuild_enabled() {
return 0
}
ffbuild_dockerstage() {
to_df "RUN --mount=src=${SELF},dst=/stage.sh --mount=src=/,dst=\$FFBUILD_DLDIR,from=${DL_IMAGE},rw --mount=src=patches/aribb24,dst=/patches run_stage /stage.sh"
}
ffbuild_dockerbuild() {
cd "$FFBUILD_DLDIR/$SELF"
for patch in /patches/*.patch; do
echo "Applying $patch"
git am < "$patch"
done
# Library switched to LGPL on master, but didn't bump version since.
# FFmpeg checks for >1.0.3 to allow LGPL builds.
sed -i 's/1.0.3/1.0.4/' configure.ac
autoreconf -i
local myconf=(
--prefix="$FFBUILD_PREFIX"
--disable-shared
--enable-static
--with-pic
)
if [[ $TARGET == win* || $TARGET == linux* ]]; then
myconf+=(
--host="$FFBUILD_TOOLCHAIN"
)
else
echo "Unknown target"
return -1
fi
./configure "${myconf[@]}"
make -j$(nproc)
make install
}
ffbuild_configure() {
echo --enable-libaribb24
}
ffbuild_unconfigure() {
echo --disable-libaribb24
}

View file

@ -1,7 +1,7 @@
#!/bin/bash
AVISYNTH_REPO="https://github.com/AviSynth/AviSynthPlus.git"
AVISYNTH_COMMIT="babdbc0d7b39d775e5a847c74c345dfae9844338"
SCRIPT_REPO="https://github.com/AviSynth/AviSynthPlus.git"
SCRIPT_COMMIT="fc5b9bc41fd47001b7da39ea777d29c0ede2a2a7"
ffbuild_enabled() {
[[ $VARIANT == lgpl* ]] && return -1
@ -9,14 +9,16 @@ ffbuild_enabled() {
}
ffbuild_dockerbuild() {
git-mini-clone "$AVISYNTH_REPO" "$AVISYNTH_COMMIT" avisynth
cd avisynth
cd "$FFBUILD_DLDIR/$SELF"
# their version check is insistant on a tag to exist, so make one
git tag -a ffbuild -m "FFbuild Version"
mkdir build && cd build
cmake -DCMAKE_TOOLCHAIN_FILE="$FFBUILD_CMAKE_TOOLCHAIN" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="$FFBUILD_PREFIX" -DHEADERS_ONLY=ON ..
make -j$(nproc)
make install
make VersionGen install
}
ffbuild_configure() {

33
scripts.d/50-chromaprint.sh Executable file
View file

@ -0,0 +1,33 @@
#!/bin/bash
SCRIPT_REPO="https://github.com/acoustid/chromaprint.git"
SCRIPT_COMMIT="aa67c95b9e486884a6d3ee8b0c91207d8c2b0551"
ffbuild_enabled() {
# pkg-config check is currently only available in master
[[ $ADDINS_STR == *4.4* ]] && return -1
[[ $ADDINS_STR == *5.0* ]] && return -1
[[ $ADDINS_STR == *5.1* ]] && return -1
return 0
}
ffbuild_dockerbuild() {
cd "$FFBUILD_DLDIR/$SELF"
mkdir build && cd build
cmake -DCMAKE_TOOLCHAIN_FILE="$FFBUILD_CMAKE_TOOLCHAIN" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="$FFBUILD_PREFIX" -DBUILD_SHARED_LIBS=OFF -DBUILD_TOOLS=OFF -DBUILD_TESTS=OFF -DFFT_LIB=fftw3 ..
make -j$(nproc)
make install
echo "Libs.private: -lfftw3 -lstdc++" >> "$FFBUILD_PREFIX"/lib/pkgconfig/libchromaprint.pc
echo "Cflags.private: -DCHROMAPRINT_NODLL" >> "$FFBUILD_PREFIX"/lib/pkgconfig/libchromaprint.pc
}
ffbuild_configure() {
echo --enable-chromaprint
}
ffbuild_unconfigure() {
echo --disable-chromaprint
}

View file

@ -1,15 +1,14 @@
#!/bin/bash
DAV1D_REPO="https://code.videolan.org/videolan/dav1d.git"
DAV1D_COMMIT="a55ff11da2430ae7057862f6565ce3b5a222afdc"
SCRIPT_REPO="https://code.videolan.org/videolan/dav1d.git"
SCRIPT_COMMIT="a7e12b628472516718d37108fde7d438b14a0372"
ffbuild_enabled() {
return 0
}
ffbuild_dockerbuild() {
git-mini-clone "$DAV1D_REPO" "$DAV1D_COMMIT" dav1d
cd dav1d
cd "$FFBUILD_DLDIR/$SELF"
mkdir build && cd build

View file

@ -1,18 +1,22 @@
#!/bin/bash
DAVS2_REPO="https://github.com/pkuvcl/davs2.git"
DAVS2_COMMIT="b06d7585620f4e90a6d19a2926bb4e59793b8942"
SCRIPT_REPO="https://github.com/pkuvcl/davs2.git"
SCRIPT_COMMIT="b41cf117452e2d73d827f02d3e30aa20f1c721ac"
ffbuild_enabled() {
[[ $VARIANT == lgpl* ]] && return -1
[[ $TARGET == win32 ]] && return -1
# davs2 aarch64 support is broken
[[ $TARGET == linuxarm64 ]] && return -1
return 0
}
ffbuild_dockerdl() {
to_df "RUN git clone \"$SCRIPT_REPO\" \"$SELF\" && git -C \"$SELF\" checkout \"$SCRIPT_COMMIT\""
}
ffbuild_dockerbuild() {
git clone "$DAVS2_REPO" davs2
cd davs2
git checkout "$DAVS2_COMMIT"
cd "$FFBUILD_DLDIR/$SELF"
cd build/linux
local myconf=(
@ -31,6 +35,10 @@ ffbuild_dockerbuild() {
return -1
fi
# Work around configure endian check failing on modern gcc/binutils.
# Assumes all supported archs are little endian.
sed -i -e 's/EGIB/bss/g' -e 's/naidnePF/bss/g' configure
./configure "${myconf[@]}"
make -j$(nproc)
make install

View file

@ -1,7 +1,7 @@
#!/bin/bash
FDK_REPO="https://github.com/mstorsjo/fdk-aac.git"
FDK_COMMIT="573e93e4d0d08127dd3b2297a0ce52221527d90a"
SCRIPT_REPO="https://github.com/mstorsjo/fdk-aac.git"
SCRIPT_COMMIT="3f864cce9736cc8e9312835465fae18428d76295"
ffbuild_enabled() {
[[ $VARIANT == nonfree* ]] || return -1
@ -9,8 +9,7 @@ ffbuild_enabled() {
}
ffbuild_dockerbuild() {
git-mini-clone "$FDK_REPO" "$FDK_COMMIT" fdk
cd fdk
cd "$FFBUILD_DLDIR/$SELF"
./autogen.sh

View file

@ -1,15 +1,27 @@
#!/bin/bash
FFNVCODEC_REPO="https://github.com/FFmpeg/nv-codec-headers.git"
FFNVCODEC_COMMIT="b641a195edbe3ac9788e681e22c2e2fad8aacddb"
SCRIPT_REPO="https://github.com/FFmpeg/nv-codec-headers.git"
SCRIPT_COMMIT="855f8263d97bbdcaeabaaaa2997e1ccad7c52dc3"
SCRIPT_REPO2="https://github.com/FFmpeg/nv-codec-headers.git"
SCRIPT_COMMIT2="dc3e4484dc83485734e503991fe5ed3bdf256fba"
SCRIPT_BRANCH2="sdk/11.1"
ffbuild_enabled() {
return 0
}
ffbuild_dockerdl() {
default_dl ffnvcodec
to_df "RUN git-mini-clone \"$SCRIPT_REPO2\" \"$SCRIPT_COMMIT2\" ffnvcodec2"
}
ffbuild_dockerbuild() {
git-mini-clone "$FFNVCODEC_REPO" "$FFNVCODEC_COMMIT" ffnvcodec
cd ffnvcodec
if [[ $ADDINS_STR == *4.4* || $ADDINS_STR == *5.0* || $ADDINS_STR == *5.1* ]]; then
cd "$FFBUILD_DLDIR"/ffnvcodec2
else
cd "$FFBUILD_DLDIR"/ffnvcodec
fi
make PREFIX="$FFBUILD_PREFIX" install
}

View file

@ -1,7 +1,7 @@
#!/bin/bash
FREI0R_REPO="https://github.com/dyne/frei0r.git"
FREI0R_COMMIT="700564265acdb94497c22d5c703dc38ed9d1b649"
SCRIPT_REPO="https://github.com/dyne/frei0r.git"
SCRIPT_COMMIT="c3f987c4cc8c1a7f6928e574f4cb272a7770ca6f"
ffbuild_enabled() {
[[ $VARIANT == lgpl* ]] && return -1
@ -10,32 +10,19 @@ ffbuild_enabled() {
}
ffbuild_dockerbuild() {
git-mini-clone "$FREI0R_REPO" "$FREI0R_COMMIT" frei0r
cd frei0r
cd "$FFBUILD_DLDIR/$SELF"
./autogen.sh
mkdir build && cd build
local myconf=(
--prefix="$FFBUILD_PREFIX"
--disable-shared
--enable-static
--with-pic
--enable-cpuflags
)
cmake -DCMAKE_TOOLCHAIN_FILE="$FFBUILD_CMAKE_TOOLCHAIN" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="$FFBUILD_PREFIX" ..
if [[ $TARGET == win* || $TARGET == linux* ]]; then
myconf+=(
--host="$FFBUILD_TOOLCHAIN"
)
else
echo "Unknown target"
return -1
fi
mkdir -p "$FFBUILD_PREFIX"/lib/pkgconfig
cp frei0r.pc "$FFBUILD_PREFIX"/lib/pkgconfig
./configure "${myconf[@]}"
make -C include -j$(nproc)
make -C include install
make install-pkgconfigDATA
mkdir -p "$FFBUILD_PREFIX"/include
cp ../include/frei0r.h "$FFBUILD_PREFIX"/include
cat frei0r.pc
}
ffbuild_configure() {

View file

@ -1,32 +0,0 @@
#!/bin/bash
GLSLANG_REPO="https://github.com/KhronosGroup/glslang.git"
GLSLANG_COMMIT="d1608ab1ef17f1488bdcbfe11f2c3c96ac482fce"
ffbuild_enabled() {
# Pointless without Vulkan
[[ $TARGET == linux* ]] && return -1
return 0
}
ffbuild_dockerbuild() {
git-mini-clone "$GLSLANG_REPO" "$GLSLANG_COMMIT" glslang
cd glslang
python3 ./update_glslang_sources.py
mkdir build && cd build
cmake -DCMAKE_TOOLCHAIN_FILE="$FFBUILD_CMAKE_TOOLCHAIN" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="$FFBUILD_PREFIX" -DBUILD_SHARED_LIBS=OFF -DBUILD_EXTERNAL=ON -DBUILD_TESTING=OFF -DENABLE_CTEST=OFF -DENABLE_HLSL=ON -DENABLE_GLSLANG_BINARIES=OFF ..
make -j$(nproc)
make install
}
ffbuild_configure() {
echo --enable-libglslang
}
ffbuild_unconfigure() {
echo --disable-libglslang
}

View file

@ -1,16 +1,18 @@
#!/bin/bash
GME_REPO="https://bitbucket.org/mpyne/game-music-emu.git"
GME_COMMIT="b3d158a30492181fd7c38ef795c8d4dcfd77eaa9"
SCRIPT_REPO="https://bitbucket.org/mpyne/game-music-emu.git"
SCRIPT_COMMIT="6cd4bdb69be304f58c9253fb08b8362f541b3b4b"
ffbuild_enabled() {
return 0
}
ffbuild_dockerdl() {
to_df "RUN git clone \"$SCRIPT_REPO\" \"$SELF\" && git -C \"$SELF\" checkout \"$SCRIPT_COMMIT\""
}
ffbuild_dockerbuild() {
git clone "$GME_REPO" gme
cd gme
git checkout "$GME_COMMIT"
cd "$FFBUILD_DLDIR/$SELF"
mkdir build && cd build

44
scripts.d/50-kvazaar.sh Executable file
View file

@ -0,0 +1,44 @@
#!/bin/bash
SCRIPT_REPO="https://github.com/ultravideo/kvazaar.git"
SCRIPT_COMMIT="aaae5b0f4926065136f287876c6bc41631bae692"
ffbuild_enabled() {
return 0
}
ffbuild_dockerbuild() {
cd "$FFBUILD_DLDIR/$SELF"
./autogen.sh
local myconf=(
--prefix="$FFBUILD_PREFIX"
--disable-shared
--enable-static
--with-pic
)
if [[ $TARGET == win* || $TARGET == linux* ]]; then
myconf+=(
--host="$FFBUILD_TOOLCHAIN"
)
else
echo "Unknown target"
return -1
fi
./configure "${myconf[@]}"
make -j$(nproc)
make install
echo "Cflags.private: -DKVZ_STATIC_LIB" >> "$FFBUILD_PREFIX"/lib/pkgconfig/kvazaar.pc
}
ffbuild_configure() {
echo --enable-libkvazaar
}
ffbuild_unconfigure() {
echo --disable-libkvazaar
}

View file

@ -1,15 +1,14 @@
#!/bin/bash
ASS_REPO="https://github.com/libass/libass.git"
ASS_COMMIT="ac2ddef8841aa2ff37ca9b83f19f15092d0cacc6"
SCRIPT_REPO="https://github.com/libass/libass.git"
SCRIPT_COMMIT="1a599b1db748dfc07df98cd37d8603edb87da2fd"
ffbuild_enabled() {
return 0
}
ffbuild_dockerbuild() {
git-mini-clone "$ASS_REPO" "$ASS_COMMIT" ass
cd ass
cd "$FFBUILD_DLDIR/$SELF"
./autogen.sh
@ -29,6 +28,8 @@ ffbuild_dockerbuild() {
return -1
fi
export CFLAGS="$CFLAGS -Dread_file=libass_internal_read_file"
./configure "${myconf[@]}"
make -j$(nproc)
make install

View file

@ -1,15 +1,14 @@
#!/bin/bash
LIBBLURAY_REPO="https://code.videolan.org/videolan/libbluray.git"
LIBBLURAY_COMMIT="060d8f055f2ed1b4752340be5d16403bad5ccdc0"
SCRIPT_REPO="https://code.videolan.org/videolan/libbluray.git"
SCRIPT_COMMIT="bb5bc108ec695889855f06df338958004ff289ef"
ffbuild_enabled() {
return 0
}
ffbuild_dockerbuild() {
git-mini-clone "$LIBBLURAY_REPO" "$LIBBLURAY_COMMIT" libbluray
cd libbluray
cd "$FFBUILD_DLDIR/$SELF"
./bootstrap

View file

@ -0,0 +1,19 @@
#!/bin/bash
SCRIPT_REPO="https://github.com/google/brotli.git"
SCRIPT_COMMIT="413b098564a90a2e6cae192d30642d33a9197a39"
ffbuild_enabled() {
return 0
}
ffbuild_dockerbuild() {
cd "$FFBUILD_DLDIR/$SELF"
mkdir build && cd build
cmake -G Ninja -DCMAKE_TOOLCHAIN_FILE="$FFBUILD_CMAKE_TOOLCHAIN" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="$FFBUILD_PREFIX" \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON -DBUILD_SHARED_LIBS=OFF ..
ninja -j$(nproc)
ninja install
}

View file

@ -0,0 +1,60 @@
#!/bin/bash
SCRIPT_REPO="https://github.com/libjxl/libjxl.git"
SCRIPT_COMMIT="c3a4f9ca89ae59c6265a2f1bf2a6d2a87a71fc16"
ffbuild_enabled() {
[[ $ADDINS_STR == *4.4* ]] && return -1
[[ $ADDINS_STR == *5.0* ]] && return -1
[[ $ADDINS_STR == *5.1* ]] && return -1
[[ $ADDINS_STR == *6.0* ]] && return -1
return 0
}
ffbuild_dockerdl() {
default_dl "$SELF"
to_df "RUN git -C \"$SELF\" submodule update --init --recursive --depth 1 --recommend-shallow third_party/highway third_party/skcms"
}
ffbuild_dockerbuild() {
cd "$FFBUILD_DLDIR/$SELF"
mkdir build && cd build
if [[ $TARGET == linux* ]]; then
# our glibc is too old(<2.25), and their detection fails for some reason
export CXXFLAGS="$CXXFLAGS -DVQSORT_GETRANDOM=0 -DVQSORT_SECURE_SEED=0"
elif [[ $TARGET == win* ]]; then
# Fix AVX2 related crash due to unaligned stack memory
export CXXFLAGS="$CXXFLAGS -Wa,-muse-unaligned-vector-move"
export CFLAGS="$CFLAGS -Wa,-muse-unaligned-vector-move"
fi
cmake -G Ninja -DCMAKE_TOOLCHAIN_FILE="$FFBUILD_CMAKE_TOOLCHAIN" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="$FFBUILD_PREFIX" -DCMAKE_POSITION_INDEPENDENT_CODE=ON \
-DBUILD_SHARED_LIBS=OFF -DJPEGXL_STATIC=OFF -DJPEGXL_ENABLE_TOOLS=OFF -DJPEGXL_ENABLE_VIEWERS=OFF -DJPEGXL_EMSCRIPTEN=OFF -DJPEGXL_ENABLE_DOXYGEN=OFF \
-DJPEGXL_ENABLE_JPEGLI=OFF -DBUILD_TESTING=OFF -DJPEGXL_ENABLE_EXAMPLES=OFF -DJPEGXL_ENABLE_MANPAGES=OFF -DJPEGXL_ENABLE_JNI=OFF -DJPEGXL_ENABLE_PLUGINS=OFF \
-DJPEGXL_ENABLE_DEVTOOLS=OFF -DJPEGXL_ENABLE_BENCHMARK=OFF -DJPEGXL_BUNDLE_LIBPNG=OFF -DJPEGXL_ENABLE_SJPEG=OFF -DJPEGXL_FORCE_SYSTEM_BROTLI=ON ..
ninja -j$(nproc)
ninja install
echo "Cflags.private: -DJXL_STATIC_DEFINE=1" >> "${FFBUILD_PREFIX}"/lib/pkgconfig/libjxl.pc
echo "Libs.private: -lstdc++" >> "${FFBUILD_PREFIX}"/lib/pkgconfig/libjxl.pc
echo "Cflags.private: -DJXL_STATIC_DEFINE=1" >> "${FFBUILD_PREFIX}"/lib/pkgconfig/libjxl_threads.pc
echo "Libs.private: -lstdc++" >> "${FFBUILD_PREFIX}"/lib/pkgconfig/libjxl_threads.pc
if [[ $TARGET == win* ]]; then
echo "Libs.private: -ladvapi32" >> "${FFBUILD_PREFIX}"/lib/pkgconfig/libjxl.pc
echo "Libs.private: -ladvapi32" >> "${FFBUILD_PREFIX}"/lib/pkgconfig/libjxl_threads.pc
fi
}
ffbuild_configure() {
echo --enable-libjxl
}
ffbuild_unconfigure() {
[[ $ADDINS_STR == *4.4* ]] && return 0
[[ $ADDINS_STR == *5.0* ]] && return 0
echo --disable-libjxl
}

View file

@ -1,18 +1,20 @@
#!/bin/bash
LAME_SRC="https://sourceforge.net/projects/lame/files/lame/3.100/lame-3.100.tar.gz/download"
SCRIPT_REPO="https://svn.code.sf.net/p/lame/svn/trunk/lame"
SCRIPT_REV="6507"
ffbuild_enabled() {
return 0
}
ffbuild_dockerdl() {
to_df "RUN retry-tool sh -c \"rm -rf lame && svn checkout '${SCRIPT_REPO}@${SCRIPT_REV}' lame\""
}
ffbuild_dockerbuild() {
mkdir lame
cd lame
wget -O lame.tar.gz "$LAME_SRC"
tar xaf lame.tar.gz
rm lame.tar.gz
cd lame*
cd "$FFBUILD_DLDIR"/lame
autoreconf -i
local myconf=(
--prefix="$FFBUILD_PREFIX"
@ -22,6 +24,7 @@ ffbuild_dockerbuild() {
--disable-gtktest
--disable-cpml
--disable-frontend
--disable-decoder
)
if [[ $TARGET == win* || $TARGET == linux* ]]; then
@ -33,6 +36,8 @@ ffbuild_dockerbuild() {
return -1
fi
export CFLAGS="$CFLAGS -DNDEBUG"
./configure "${myconf[@]}"
make -j$(nproc)
make install

Some files were not shown because too many files have changed in this diff Show more