diff --git a/scripts/base.py b/scripts/base.py index fa341cb..120e2e2 100644 --- a/scripts/base.py +++ b/scripts/base.py @@ -214,6 +214,20 @@ def delete_dir(path): def copy_lib(src, dst, name): if (config.check_option("config", "bundle_dylibs")) and is_dir(src + "/" + name + ".framework"): copy_dir(src + "/" + name + ".framework", dst + "/" + name + ".framework") + + if (config.check_option("config", "bundle_xcframeworks")) and is_dir(src + "/simulator/" + name + ".framework"): + create_dir(dst + "/simulator") + copy_dir(src + "/simulator/" + name + ".framework", dst + "/simulator/" + name + ".framework") + + cmd("xcodebuild", ["-create-xcframework", + "-framework", dst + "/" + name + ".framework", + "-framework", dst + "/simulator/" + name + ".framework", + "-output", dst + "/" + name + ".xcframework"]) + + delete_dir(dst + "/" + name + ".framework") + delete_dir(dst + "/simulator/" + name + ".framework") + delete_dir(dst + "/simulator") + return lib_ext = ".so" diff --git a/scripts/build.py b/scripts/build.py index 3c0904d..a473eab 100644 --- a/scripts/build.py +++ b/scripts/build.py @@ -5,7 +5,7 @@ import base import os import multiprocessing -def make_pro_file(makefiles_dir, pro_file): +def make_pro_file(makefiles_dir, pro_file, qmake_config_addon=""): platforms = config.option("platform").split() for platform in platforms: if not platform in config.platforms: @@ -47,6 +47,8 @@ def make_pro_file(makefiles_dir, pro_file): # qmake CONFIG+=... config_param = base.qt_config(platform) + if ("" != qmake_config_addon): + config_param += (" " + qmake_config_addon) # qmake ADDON qmake_addon = [] @@ -98,6 +100,9 @@ def make_pro_file(makefiles_dir, pro_file): # make build.pro def make(): make_pro_file("makefiles", "build.pro") + if config.check_option("platform", "ios") and config.check_option("config", "bundle_xcframeworks"): + make_pro_file("makefiles", "build.pro", "xcframework_platform_ios_simulator") + if config.check_option("module", "builder") and base.is_windows() and "onlyoffice" == config.branding(): # check replace new_replace_path = base.correctPathForBuilder(os.getcwd() + "/../core/DesktopEditor/doctrenderer/docbuilder.com/src/docbuilder.h") diff --git a/scripts/core_common/modules/boost.py b/scripts/core_common/modules/boost.py index 8ab465b..2d93963 100644 --- a/scripts/core_common/modules/boost.py +++ b/scripts/core_common/modules/boost.py @@ -105,6 +105,10 @@ def make(): os.chdir("../") base.bash("./boost_ios") + if (-1 != config.option("platform").find("ios")) and not base.is_dir("../build/ios_xcframework"): + boost_qt.make(os.getcwd(), ["filesystem", "system", "date_time", "regex"], "ios_xcframework/ios_simulator", "xcframework_platform_ios_simulator") + boost_qt.make(os.getcwd(), ["filesystem", "system", "date_time", "regex"], "ios_xcframework/ios") + if (-1 != config.option("platform").find("android")) and not base.is_dir("../build/android"): boost_qt.make(os.getcwd(), ["filesystem", "system", "date_time", "regex"]) diff --git a/scripts/core_common/modules/boost_qt.py b/scripts/core_common/modules/boost_qt.py index 5da7426..35191ad 100644 --- a/scripts/core_common/modules/boost_qt.py +++ b/scripts/core_common/modules/boost_qt.py @@ -7,7 +7,7 @@ import base import os import build -def make(src_dir, modules, build_platform="android"): +def make(src_dir, modules, build_platform="android", qmake_addon=""): old_cur = os.getcwd() print("boost-headers...") @@ -43,7 +43,7 @@ def make(src_dir, modules, build_platform="android"): pro_file_content.append("DESTDIR = $$BOOST_SOURCES/../build/" + build_platform + "/lib/$$CORE_BUILDS_PLATFORM_PREFIX") base.save_as_script(module_dir + "/" + module + ".pro", pro_file_content) os.chdir(module_dir) - build.make_pro_file("./", module + ".pro") + build.make_pro_file("./", module + ".pro", qmake_addon) os.chdir(old_cur) return diff --git a/scripts/deploy_mobile.py b/scripts/deploy_mobile.py index c189ce8..3ae6e8a 100644 --- a/scripts/deploy_mobile.py +++ b/scripts/deploy_mobile.py @@ -58,17 +58,6 @@ def make(): else: base.copy_lib(core_build_dir + "/lib/" + platform_postfix, root_dir, "x2t") - if ("ios" == platform) and config.check_option("config", "bundle_dylibs") and config.check_option("config", "simulator"): - exclude_arch(root_dir, ["kernel", "kernel_network", "UnicodeConverter", "graphics", "PdfFile", - "DjVuFile", "XpsFile", "HtmlFile2", "HtmlRenderer", "doctrenderer", - "Fb2File", "EpubFile", "x2t"]) - - if ("ios" == platform): - if (config.check_option("config", "bundle_dylibs")): - base.convert_ios_framework_to_xcframework_folder(root_dir, - ["kernel", "kernel_network", "UnicodeConverter", "graphics", "PdfFile", "DjVuFile", "XpsFile", - "HtmlFile2", "HtmlRenderer", "doctrenderer", "Fb2File", "EpubFile", "DocxRenderer", "x2t"]) - # icu if (0 == platform.find("win")): base.copy_file(core_dir + "/Common/3dParty/icu/" + platform + "/build/icudt58.dll", root_dir + "/icudt58.dll")