Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions .github/workflows/dav1d.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ on:
- '.github/workflows/dav1d.yml'
- 'patches/dav1d/**'
- 'modules/dav1d.py'
- 'build_v2.py'
pull_request:
branches:
- main
Expand All @@ -20,7 +19,6 @@ on:
- '.github/workflows/dav1d.yml'
- 'patches/dav1d/**'
- 'modules/dav1d.py'
- 'build_v2.py'

jobs:
build:
Expand Down
1 change: 0 additions & 1 deletion .github/workflows/ffmpeg.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ on:
- '.github/workflows/ffmpeg.yml'
- 'patches/ffmpeg/**'
- 'modules/ffmpeg.py'
- 'build_v2.py'

jobs:
build:
Expand Down
14 changes: 11 additions & 3 deletions .github/workflows/llvm.yml
Original file line number Diff line number Diff line change
@@ -1,13 +1,21 @@
name: llvm
on:
workflow_dispatch:
pull_request:
branches:
- main
paths:
- '.github/matrix*.json'
- '.github/workflows/_matrix.yml'
- '.github/workflows/llvm.yml'
- 'patches/llvm/**'
- 'modules/llvm.py'

jobs:
build:
if: ${{ false }}
# if: ${{ false }}
secrets: inherit
uses: ./.github/workflows/_matrix.yml
with:
disable_commit: true
disable_ccache_on_container: false
disable_shared: true
select_platforms: "macosx, linux, win-mingw, win-msvc"
2 changes: 0 additions & 2 deletions .github/workflows/mbedtls3.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ on:
- '.github/workflows/mbedtls3.yml'
- 'patches/mbedtls3/**'
- 'modules/mbedtls3.py'
- 'build_v2.py'
pull_request:
branches:
- main
Expand All @@ -20,7 +19,6 @@ on:
- '.github/workflows/mbedtls3.yml'
- 'patches/mbedtls3/**'
- 'modules/mbedtls3.py'
- 'build_v2.py'

jobs:
build:
Expand Down
2 changes: 0 additions & 2 deletions .github/workflows/mbedtls4.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ on:
- '.github/workflows/mbedtls4.yml'
- 'patches/mbedtls4/**'
- 'modules/mbedtls4.py'
- 'build_v2.py'
pull_request:
branches:
- main
Expand All @@ -20,7 +19,6 @@ on:
- '.github/workflows/mbedtls4.yml'
- 'patches/mbedtls4/**'
- 'modules/mbedtls4.py'
- 'build_v2.py'

jobs:
build:
Expand Down
2 changes: 0 additions & 2 deletions .github/workflows/sdl2.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ on:
- '.github/workflows/sdl2.yml'
- 'patches/sdl2/**'
- 'modules/sdl2.py'
- 'build_v2.py'
pull_request:
branches:
- main
Expand All @@ -20,7 +19,6 @@ on:
- '.github/workflows/sdl2.yml'
- 'patches/sdl2/**'
- 'modules/sdl2.py'
- 'build_v2.py'

jobs:
build:
Expand Down
2 changes: 0 additions & 2 deletions .github/workflows/zlib-ng.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ on:
- '.github/workflows/zlib-ng.yml'
- 'patches/zlib-ng/**'
- 'modules/zlib-ng.py'
- 'build_v2.py'
pull_request:
branches:
- main
Expand All @@ -20,7 +19,6 @@ on:
- '.github/workflows/zlib-ng.yml'
- 'patches/zlib-ng/**'
- 'modules/zlib-ng.py'
- 'build_v2.py'

jobs:
build:
Expand Down
64 changes: 41 additions & 23 deletions build_v2.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,8 @@ class BuildCtxArgs:
target_arch: "str"
target_info: "str"

llvm_triple: "str"

target_archinfo: "str"

win32_msvc_env_native: "dict[str, str]"
Expand Down Expand Up @@ -167,6 +169,8 @@ def __init__(self,
self.target_arch: "str" = ''
self.target_info: "str" = ''

self.llvm_triple: "str" = ''

# - API Level 30: android.media.MediaCodec#CONFIGURE_FLAG_USE_BLOCK_MODEL
# - API Level 31: android.media.MediaCodec#getSupportedVendorParameters()
# - API Level 35: android.media.MediaCodec#PARAMETER_KEY_QP_OFFSET_MAP
Expand Down Expand Up @@ -233,6 +237,8 @@ def build_v2(self, module: "str"):
target_arch=self.target_arch,
target_info=self.target_info,

llvm_triple=self.llvm_triple,

target_archinfo=self.target_archinfo,

win32_msvc_env_native=self.win32_msvc_env_native,
Expand Down Expand Up @@ -287,21 +293,25 @@ def _setctx_linux(
state.nm.extend(['llvm-nm'])
state.ldflags.extend(['-fuse-ld=lld'])
state.objcopy.extend(['llvm-objcopy'])

x.ENVIRON['CC'] = 'clang'
x.ENVIRON['CXX'] = 'clang++'
x.ENVIRON['LDFLAGS'] = '-fuse-ld=lld'
else:
CROSS_TOOLCHAIN_ROOT = x.get_cross_toolchain_dir(state.target_plat)

state.target_arch = _tuple[2]
state.target_info = _tuple[3]
_target_triple = {
state.llvm_triple = {
'arm64': f'aarch64-unknown-linux-{state.target_info}',
'amd64': f'x86_64-pc-linux-{state.target_info}',
'armv7': f'arm-unknown-linux-{state.target_info}',
}[state.target_arch]
_sysroot = (Path(CROSS_TOOLCHAIN_ROOT) / _target_triple).absolute().resolve().as_posix()
_sysroot = (Path(CROSS_TOOLCHAIN_ROOT) / state.llvm_triple).absolute().resolve().as_posix()

state.cc.extend([
f'clang',
f'--target={_target_triple}',
f'--target={state.llvm_triple}',
f'--gcc-toolchain={_sysroot}/usr',
f'--sysroot={_sysroot}'
])
Expand All @@ -317,15 +327,16 @@ def _setctx_linux(
state.objcopy.extend(['llvm-objcopy'])

# pkgconf
state.pkgconf.extend([f'{CROSS_TOOLCHAIN_ROOT}/pkgconf-wrapper.{_target_triple}'])
state.pkgconf.extend([f'{CROSS_TOOLCHAIN_ROOT}/pkgconf-wrapper.{state.llvm_triple}'])
# cmake toolchain file
state.extra_cmake.extend(["-D", f"CMAKE_TOOLCHAIN_FILE='{CROSS_TOOLCHAIN_ROOT}/crossfile.cmake.{_target_triple}'"])
state.extra_cmake.extend(["-D", f"CMAKE_TOOLCHAIN_FILE='{CROSS_TOOLCHAIN_ROOT}/crossfile.cmake.{state.llvm_triple}'"])
# meson toolchain file
state.extra_meson.extend(["--cross-file", f"{CROSS_TOOLCHAIN_ROOT}/crossfile.meson.{_target_triple}"])
state.extra_meson.extend(["--cross-file", f"{CROSS_TOOLCHAIN_ROOT}/crossfile.meson.{state.llvm_triple}"])
def _setctx_apple(
state: _state, _native: "bool", _tuple: "tuple[str, ...]",
):
state.target_arch = x.NATIVE_ARCH if _native else _tuple[1]
state.llvm_triple = f'{state.target_arch}-apple-darwin'

_apple_arch = {
'arm64': 'arm64',
Expand Down Expand Up @@ -388,24 +399,24 @@ def _setctx_win32_mingw(

state.target_arch = _tuple[1]

_target_triple = {
state.llvm_triple = {
'arm64': f'aarch64-w64-mingw32',
'amd64': f'x86_64-w64-mingw32',
}[state.target_arch]

state.cc.extend([
f"{(MINGW_ROOT / 'bin' / f'{_target_triple}-clang').as_posix()}",
f"{(MINGW_ROOT / 'bin' / f'{state.llvm_triple}-clang').as_posix()}",
f"-no-canonical-prefixes",
])
if state.target_arch == 'amd64':
state.cc.extend(['-march=x86-64-v2'])
if state.target_arch == 'arm64':
state.cc.extend(['-march=armv8-a'])
state.ar.extend([f"{(MINGW_ROOT / 'bin' / f'{_target_triple}-ar').as_posix()}"])
state.nm.extend([f"{(MINGW_ROOT / 'bin' / f'{_target_triple}-nm').as_posix()}"])
state.ar.extend([f"{(MINGW_ROOT / 'bin' / f'{state.llvm_triple}-ar').as_posix()}"])
state.nm.extend([f"{(MINGW_ROOT / 'bin' / f'{state.llvm_triple}-nm').as_posix()}"])
state.ldflags.extend(['-fuse-ld=lld'])
state.objcopy.extend([f"{(MINGW_ROOT / 'bin' / f'{_target_triple}-objcopy').as_posix()}"])
state.windres.extend([f"{(MINGW_ROOT / 'bin' / f'{_target_triple}-windres').as_posix()}"])
state.objcopy.extend([f"{(MINGW_ROOT / 'bin' / f'{state.llvm_triple}-objcopy').as_posix()}"])
state.windres.extend([f"{(MINGW_ROOT / 'bin' / f'{state.llvm_triple}-windres').as_posix()}"])

# pkgconf
state.pkgconf.extend([f'{CROSS_TOOLCHAIN_ROOT}/pkgconf-wrapper.{state.target_arch}'])
Expand All @@ -422,20 +433,25 @@ def _setctx_win32_msvc(
state.win32_msvc_env_native = x.win32_msvc_dump_env(msvc_dir, msvc_devshell, x.NATIVE_ARCH)
state.win32_msvc_env_target = x.win32_msvc_dump_env(msvc_dir, msvc_devshell, state.target_arch)

_target_triple = {
state.llvm_triple = {
'arm64': f'aarch64-pc-windows-msvc',
'amd64': f'x86_64-pc-windows-msvc',
}[state.target_arch]

# cmake toolchain file
state.extra_cmake.extend([
'-G', 'Ninja',
'-D', 'CMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded',
"-D", f"CMAKE_C_COMPILER=clang-cl.exe",
"-D", f"CMAKE_CXX_COMPILER=clang-cl.exe",
"-D", f"CMAKE_C_COMPILER_TARGET={_target_triple}",
"-D", f"CMAKE_CXX_COMPILER_TARGET={_target_triple}",
'-G', 'Ninja',
'-D', 'CMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded',
"-D", f"CMAKE_C_COMPILER='clang-cl.exe'",
"-D", f"CMAKE_CXX_COMPILER='clang-cl.exe'",
"-D", f"CMAKE_C_COMPILER_TARGET={state.llvm_triple}",
"-D", f"CMAKE_CXX_COMPILER_TARGET={state.llvm_triple}",
])
if not _native:
state.extra_cmake.extend([
'-D', 'CMAKE_SYSTEM_NAME=Windows',
'-D', 'CMAKE_CROSSCOMPILING:BOOL=TRUE',
])
def _setctx_android(
state: _state, _native: "bool", _tuple: "tuple[str, ...]",
):
Expand All @@ -460,13 +476,13 @@ def _setctx_android(
'armv7': f'armv7a-linux-androideabi',
'amd64': f'x86_64-linux-android',
}[state.target_arch]
_target_triple_ver = f'{_target_triple}{state.android_api_level}'
state.llvm_triple = f'{_target_triple}{state.android_api_level}'

ANDROID_NDK_ROOT = x.get_cross_toolchain_dir(state.target_plat)
CROSS_TOOLCHAIN_ROOT = (Path(ANDROID_NDK_ROOT) / 'toolchains' / 'llvm' / 'prebuilt' / 'linux-x86_64').absolute()

state.cc.extend([
f"{(CROSS_TOOLCHAIN_ROOT / 'bin' / f'{_target_triple_ver}-clang').as_posix()}",
f"{(CROSS_TOOLCHAIN_ROOT / 'bin' / f'{state.llvm_triple}-clang').as_posix()}",
f"-no-canonical-prefixes",
])
if state.target_arch == 'amd64':
Expand Down Expand Up @@ -506,8 +522,8 @@ def _setctx_android(
"-D", f"CMAKE_ANDROID_API_MIN={state.android_api_level}",
"-D", f"CMAKE_ANDROID_ARCH_ABI={_cmake_arch_abi}",
"-D", f"CMAKE_ANDROID_NDK={ANDROID_NDK_ROOT}",
"-D", f"CMAKE_C_COMPILER_TARGET={_target_triple_ver}",
"-D", f"CMAKE_CXX_COMPILER_TARGET={_target_triple_ver}",
"-D", f"CMAKE_C_COMPILER_TARGET={state.llvm_triple}",
"-D", f"CMAKE_CXX_COMPILER_TARGET={state.llvm_triple}",
"-D", f"CMAKE_EXE_LINKER_FLAGS_INIT='{' '.join(flexible_page_ldflags)}'",
"-D", f"CMAKE_MODULE_LINKER_FLAGS_INIT='{' '.join(flexible_page_ldflags)}'",
"-D", f"CMAKE_SHARED_LINKER_FLAGS_INIT='{' '.join(flexible_page_ldflags)}'",
Expand Down Expand Up @@ -665,6 +681,8 @@ def show_help(exitcode: int = 1):


target_palt = x.NATIVE_PLAT
if target_palt == 'windows':
target_palt = 'win-msvc'
if len(argv_sep_0) > 0:
target_palt = argv_sep_0[0]

Expand Down
25 changes: 12 additions & 13 deletions modules/ffmpeg.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,6 @@ def get_build_env() -> "dict[str, str]":
env['CXXFLAGS'] = env['CFLAGS']
return env
# ----------------------------
build_env = get_build_env()
extra_args: "list[str]" = []
pkg_buld_dir = ctx.args.pkg_buld_dir
# ----------------------------
Expand Down Expand Up @@ -76,7 +75,7 @@ def _3rd_included():
for dep in _3rd_deps:
dep_path = ctx.include_3rd_dependencies(dep)
if args := dep['args']: extra_args.append(args)
x.append_pkgconf_search_path(build_env, (dep_path / 'lib' / 'pkgconfig'))
x.append_pkgconf_search_path((dep_path / 'lib' / 'pkgconfig'))
def _fetch_source():
ctx.fetch_source_from_git('refs/heads/release/8.1', 'https://git.ffmpeg.org/ffmpeg.git')
def _build_step_0():
Expand Down Expand Up @@ -135,7 +134,7 @@ def _build_step_0():
pkg_buld_dir = ctx.subproj_src_dir().as_posix()
else:
args.append('--disable-logging')
x.run_as_subprocess(env=build_env, cwd=pkg_buld_dir, args=args)
x.run_as_subprocess(env=get_build_env(), cwd=pkg_buld_dir, args=args)
def _build_step_1():
import shutil
import subprocess as sp
Expand All @@ -145,14 +144,14 @@ def _build_step_1():
if bear_exec := shutil.which('bear'): bear.append(bear_exec)

args = ['make', '-j', f'{x.detect_cpu_count()}']
x.run_as_subprocess(env=build_env, cwd=pkg_buld_dir, args=(bear + args), stdout=sp.DEVNULL)
x.run_as_subprocess(env=get_build_env(), cwd=pkg_buld_dir, args=(bear + args), stdout=sp.DEVNULL)
def _build_step_2():
import shlex

args = ['make', 'install-headers', 'install-libs']
if ctx.args.target_plat not in {'iphoneos', 'iphonesimulator'}:
args.append('install-progs')
x.run_as_subprocess(env=build_env, cwd=pkg_buld_dir, args=args)
x.run_as_subprocess(env=get_build_env(), cwd=pkg_buld_dir, args=args)

if ctx.args.target_plat == 'win-msvc':
return
Expand Down Expand Up @@ -180,7 +179,7 @@ def _build_step_2():
_ = f.write('};\n')
elif ctx.args.target_plat == 'win-mingw':
_dll_sym_arg = f"{' '.join(ctx.args.nm)} -a lib/*.a | grep ' T ' | cut -d ' ' -f 3"
_dll_sym_all = x.run_as_subprocess(env=build_env, cwd=ctx.args.pkg_inst_dir,
_dll_sym_all = x.run_as_subprocess(env=get_build_env(), cwd=ctx.args.pkg_inst_dir,
collect_stdout=True, args=_dll_sym_arg, shell=True)
_ = f.write('LIBRARY libffmpeg\n')
_ = f.write('EXPORTS\n')
Expand All @@ -197,9 +196,9 @@ def _build_step_2():


ffmpeg_pkgconf_search = (Path(ctx.args.pkg_inst_dir) / 'lib' / 'pkgconfig')
x.append_pkgconf_search_path(build_env, ffmpeg_pkgconf_search)
x.append_pkgconf_search_path(ffmpeg_pkgconf_search)
ffmpeg_self_libraries = shlex.split(
x.run_as_subprocess(env=build_env, collect_stdout=True, args=[' '.join(ctx.args.pkgconf), '--libs', 'libavdevice'])
x.run_as_subprocess(env=get_build_env(), collect_stdout=True, args=[' '.join(ctx.args.pkgconf), '--libs', 'libavdevice'])
)

ffmpeg_mergeso_libdir: list[str] = []
Expand Down Expand Up @@ -269,18 +268,18 @@ def _build_step_2():
cmdlink.extend(ffmpeg_mergeso_libstd)
for _lib in ffmpeg_mergeso_libmac:
cmdlink.extend(['-framework', _lib])
x.run_as_subprocess(env=build_env, cwd=ctx.args.pkg_inst_dir, args=cmdlink)
x.run_as_subprocess(env=get_build_env(), cwd=ctx.args.pkg_inst_dir, args=cmdlink)


dbgsym = f'{merged.as_posix()}.dbgsym'
if ctx.args.target_plat in {'linux', 'win-mingw', 'android'}:
x.run_as_subprocess(env=build_env, cwd=ctx.args.pkg_inst_dir,
x.run_as_subprocess(env=get_build_env(), cwd=ctx.args.pkg_inst_dir,
args=(ctx.args.objcopy + ['--only-keep-debug', merged.as_posix(), dbgsym]))
x.run_as_subprocess(env=build_env, cwd=ctx.args.pkg_inst_dir,
x.run_as_subprocess(env=get_build_env(), cwd=ctx.args.pkg_inst_dir,
args=(ctx.args.objcopy + ['--strip-debug', '--strip-unneeded', merged.as_posix()]))
x.run_as_subprocess(env=build_env, cwd=ctx.args.pkg_inst_dir,
x.run_as_subprocess(env=get_build_env(), cwd=ctx.args.pkg_inst_dir,
args=(ctx.args.objcopy + [f'--add-gnu-debuglink={dbgsym}', merged.as_posix()]))
x.run_as_subprocess(env=build_env, cwd=pkg_buld_dir,
x.run_as_subprocess(env=get_build_env(), cwd=pkg_buld_dir,
args=['make', 'uninstall-libs', 'uninstall-pkgconfig'])


Expand Down
Loading
Loading