mirror of
https://github.com/ONLYOFFICE/build_tools.git
synced 2026-02-10 20:45:38 +08:00
Add mac, ios, android build
This commit is contained in:
@ -4,9 +4,32 @@ import base
|
||||
import os
|
||||
import config
|
||||
|
||||
def make():
|
||||
print("[fetch & build]: webp")
|
||||
ARCHES = {"win_64" : "x64",
|
||||
"win_32" : "x86",
|
||||
"linux_64" : "x86_64-linux-gnu",
|
||||
"linux_arm64" : "aarch64-linux-gnu",
|
||||
"mac_64" : "x86_64-apple-darwin",
|
||||
"mac_arm64" : "arm-apple-darwin",
|
||||
"android_arm64_v8a" : "aarch64-linux-android",
|
||||
"android_armv7" : "armv7a-linux-androideabi",
|
||||
"android_x86" : "i686-linux-android",
|
||||
"android_x86_64" : "x86_64-linux-android",
|
||||
"ios" : "arm-apple-darwin",
|
||||
"ios_simulator" : "x86_64-apple-darwin"}
|
||||
|
||||
def get_xcode_sdk(platform):
|
||||
xcode_sdk = "iphoneos"
|
||||
if "simulator" in platform:
|
||||
xcode_sdk = "iphonesimulator"
|
||||
return xcode_sdk
|
||||
|
||||
def get_ios_min_version(platform):
|
||||
res = " -miphoneos-version-min=11.0"
|
||||
if "simulator" in platform:
|
||||
res = " -mios-simulator-version-min=11.0"
|
||||
return res
|
||||
|
||||
def fetch_repo():
|
||||
base_dir = base.get_script_dir() + "/../../core/Common/3dParty/webp"
|
||||
old_dir = os.getcwd()
|
||||
os.chdir(base_dir)
|
||||
@ -17,66 +40,126 @@ def make():
|
||||
base.delete_dir_with_access_error("libwebp")
|
||||
|
||||
if not base.is_dir("libwebp"):
|
||||
base.cmd("git", ["clone", "v1.6.0", "https://chromium.googlesource.com/webm/libwebp"])
|
||||
|
||||
base_dir = base_dir + "/libwebp"
|
||||
os.chdir(base_dir)
|
||||
|
||||
build_type = "release"
|
||||
target_file = "/libwebp"
|
||||
if (-1 != config.option("config").lower().find("debug")):
|
||||
build_type = "debug"
|
||||
target_file = "/libwebp-debug"
|
||||
|
||||
# WINDOWS
|
||||
if "windows" == base.host_platform():
|
||||
platform = "win_64"
|
||||
arch = "x64"
|
||||
build_type = build_type + "-static"
|
||||
make_bat = []
|
||||
|
||||
if config.check_option("platform", "win_32"):
|
||||
platform = "win_32"
|
||||
arch = "x86"
|
||||
if config.check_option("platform", "win_arm64"):
|
||||
platform = "win_arm64"
|
||||
base.cmd("git", ["clone", "--branch","v1.6.0", "https://chromium.googlesource.com/webm/libwebp"])
|
||||
os.chdir(base_dir + "/libwebp")
|
||||
return old_dir
|
||||
|
||||
def create_build_dir(platform, build_type) -> str:
|
||||
if "win" in platform:
|
||||
target_file = "libwebp"
|
||||
if build_type == "debug":
|
||||
target_file += "-debug"
|
||||
target_file += ".lib"
|
||||
build_dir = "./../build/" + platform + "/"
|
||||
if not base.is_dir(build_dir):
|
||||
base.create_dir(build_dir)
|
||||
elif base.is_file(build_dir + build_type + "/" + arch + "/lib" + target_file + ".lib"):
|
||||
return
|
||||
|
||||
make_bat.append("call \"" + config.option("vs-path") + "/vcvarsall.bat\" " + arch)
|
||||
make_bat.append("call nmake /f Makefile.vc CFG=" + build_type + " OBJDIR=" + build_dir)
|
||||
base.run_as_bat(make_bat, True)
|
||||
|
||||
# LINUX
|
||||
elif "linux" == base.host_platform():
|
||||
platform = "linux_64"
|
||||
arch = "x86_64-linux-gnu"
|
||||
target_file = "libwebp.a"
|
||||
return build_dir
|
||||
elif base.is_file(build_dir + build_type + "/" + ARCHES[platform] + "/lib/" + target_file):
|
||||
return ""
|
||||
else:
|
||||
build_dir = "./../build/" + platform + "/" + build_type
|
||||
if not base.is_dir(build_dir):
|
||||
base.create_dir(build_dir)
|
||||
return build_dir
|
||||
if base.is_file(build_dir + "/src/.libs/libwebp.a"):
|
||||
return ""
|
||||
|
||||
def get_args(platform, build_type):
|
||||
if "win" in platform:
|
||||
args = []
|
||||
args.append("call \"" + config.option("vs-path") + "/vcvarsall.bat\" " + ARCHES[platform])
|
||||
args.append("call nmake /f Makefile.vc CFG=" + build_type + "-static" + " OBJDIR=" + build_dir)
|
||||
return args
|
||||
elif "linux" in platform or "android" in platform:
|
||||
cflags = "-O3 -DNDEBUG"
|
||||
if build_type == "debug":
|
||||
cflags = "-O0 -g"
|
||||
|
||||
if config.check_option("platform", "linux_arm64"):
|
||||
platform = "linux_arm64"
|
||||
arch = "aarch64-linux-gnu"
|
||||
if config.option("sysroot") != "":
|
||||
cflags += " --sysroot=" + config.option("sysroot")
|
||||
|
||||
build_dir = "./../build/" + platform + "/" + build_type
|
||||
if not base.is_dir(build_dir):
|
||||
base.create_dir(build_dir)
|
||||
if base.is_file(build_dir + "/src/.libs/" + target_file):
|
||||
return
|
||||
cross_arm64 = ""
|
||||
if platform == "linux_arm64":
|
||||
cross_cimpile_arm64 = config.option("arm64-toolchain-bin")
|
||||
if "" == cross_cimpile_arm64:
|
||||
cross_cimpile_arm64 = "/usr/bin"
|
||||
cross_arm64 = "--cross-compile-prefix=" + cross_cimpile_arm64 + "/" + base.get_prefix_cross_compiler_arm64()
|
||||
|
||||
return ["--host=" + ARCHES[platform], "--enable-static", "--disable-shared",
|
||||
"--disable-libwebpdecoder", "--disable-libwebpdemux",
|
||||
"--disable-libwebpmux", "--disable-libwebpextras",
|
||||
cross_arm64, "CFLAGS=" + cflags, "LDFLAGS=-static"]
|
||||
elif "mac" in platform:
|
||||
arch = ARCHES[platform]
|
||||
short_arch = arch[:arch.find("-")]
|
||||
if short_arch == "arm":
|
||||
short_arch += "64"
|
||||
|
||||
cflags = "-O3 -DNDEBUG -arch " + short_arch + " -fPIC"
|
||||
if build_type == "debug":
|
||||
cflags = "-O0 -g -arch " + short_arch + " -fPIC"
|
||||
|
||||
return ["--host=" + arch, "--enable-static", "--disable-shared",
|
||||
"--disable-libwebpdecoder", "--disable-libwebpdemux",
|
||||
"--disable-libwebpmux", "--disable-libwebpextras",
|
||||
"CFLAGS=" + cflags, "LDFLAGS=-arch " + short_arch]
|
||||
elif "ios" in platform:
|
||||
arch = ARCHES[platform]
|
||||
short_arch = arch[:arch.find("-")]
|
||||
if short_arch == "arm":
|
||||
short_arch += "64"
|
||||
|
||||
xcode_sdk = get_xcode_sdk(platform)
|
||||
version_min = get_ios_min_version(platform)
|
||||
cflags = "-O3 -DNDEBUG -arch " + short_arch + " -isysroot " + xcode_sdk + version_min + " -fPIC"
|
||||
if build_type == "debug":
|
||||
cflags = "-O0 -g -arch " + short_arch + " -isysroot " + xcode_sdk + version_min + " -fPIC"
|
||||
|
||||
return ["--host=" + arch, "--enable-static", "--disable-shared",
|
||||
"--disable-libwebpdecoder", "--disable-libwebpdemux",
|
||||
"--disable-libwebpmux", "--disable-libwebpextras",
|
||||
"CFLAGS=" + cflags, "LDFLAGS=-arch " + short_arch + " -isysroot " + xcode_sdk]
|
||||
|
||||
def make():
|
||||
print("[fetch & build]: webp")
|
||||
|
||||
old_dir = fetch_repo()
|
||||
build_type = "release"
|
||||
if -1 != config.option("config").lower().find("debug"):
|
||||
build_type = "debug"
|
||||
platform = config.option("platform")
|
||||
args = get_args(platform, build_type)
|
||||
build_dir = create_build_dir(platform, build_type)
|
||||
|
||||
if build_dir == "":
|
||||
return
|
||||
|
||||
# WINDOWS
|
||||
if "windows" == base.host_platform():
|
||||
base.run_as_bat(args, True)
|
||||
|
||||
# LINUX, ANDROID
|
||||
elif -1 != platform.find("linux") or -1 != platform.find("android"):
|
||||
base.cmd("./autogen.sh")
|
||||
os.chdir(build_dir)
|
||||
base.cmd("./../../../libwebp/configure", ["--host=" + arch, "--enable-static", "--disable-shared", "--disable-libwebpdecoder",
|
||||
"--disable-libwebpdemux", "--disable-libwebpmux", "--disable-libwebpextras",
|
||||
"CFLAGS=" + cflags, "LDFLAGS=-static"])
|
||||
|
||||
if config.option("sysroot") != "":
|
||||
args += ["CROSS_COMPILE=" + config.get_custom_sysroot_bin() + "/"]
|
||||
|
||||
base.cmd("./../../../libwebp/configure", args)
|
||||
|
||||
if config.option("sysroot") != "":
|
||||
base.setup_custom_sysroot_env()
|
||||
base.cmd("make", ["-j$(nproc)"])
|
||||
if config.option("sysroot") != "":
|
||||
base.restore_sysroot_env()
|
||||
|
||||
#MAC, IOS
|
||||
elif -1 != cplatform.find("mac") or -1 != platform.find("ios"):
|
||||
base.cmd("./autogen.sh")
|
||||
os.chdir(build_dir)
|
||||
base.cmd("./../../../libwebp/configure", args)
|
||||
base.cmd("make", ["-j$(sysctl -n hw.ncpu)"])
|
||||
|
||||
os.chdir(old_dir)
|
||||
return
|
||||
Reference in New Issue
Block a user