mpd/win32/build.py
2023-12-22 18:15:25 +01:00

65 lines
1.5 KiB
Python
Executable File

#!/usr/bin/env -S python3 -u
import os, os.path
import sys, subprocess
import shutil
configure_args = sys.argv[1:]
x64 = True
while len(configure_args) > 0:
arg = configure_args[0]
if arg == '--64':
x64 = True
elif arg == '--32':
x64 = False
else:
break
configure_args.pop(0)
if x64:
host_arch = 'x86_64-w64-mingw32'
else:
host_arch = 'i686-w64-mingw32'
# the path to the MPD sources
mpd_path = os.path.abspath(os.path.join(os.path.dirname(sys.argv[0]) or '.', '..'))
sys.path[0] = os.path.join(mpd_path, 'python')
# output directories
from build.dirs import lib_path, tarball_path, src_path
from build.toolchain import MingwToolchain
arch_path = os.path.join(lib_path, host_arch)
build_path = os.path.join(arch_path, 'build')
root_path = os.path.join(arch_path, 'root')
# a list of third-party libraries to be used by MPD on Android
from build.libs import *
thirdparty_libs = [
zlib,
libmodplug,
libopenmpt,
wildmidi,
gme,
ffmpeg,
libnfs,
libsamplerate,
]
# build the third-party libraries
toolchain = MingwToolchain(mpd_path,
'/usr', host_arch, x64,
tarball_path, src_path, build_path, root_path)
for x in thirdparty_libs:
if not x.is_installed(toolchain):
x.build(toolchain)
# configure and build MPD
from build.meson import configure as run_meson
run_meson(toolchain, mpd_path, '.', configure_args)
subprocess.check_call(['/usr/bin/ninja'], env=toolchain.env)