diff --git a/configure.py b/configure.py index 83a5ac8..6332144 100755 --- a/configure.py +++ b/configure.py @@ -24,6 +24,7 @@ parser.add_option("--branding", action="store", type="string", dest="branding", parser.add_option("--branding-name", action="store", type="string", dest="branding-name", default="", help="branding name") parser.add_option("--branding-url", action="store", type="string", dest="branding-url", default="", help="branding url") parser.add_option("--sdkjs-addon", action="append", type="string", dest="sdkjs-addons", default=[], help="sdkjs addons") +parser.add_option("--sdkjs-addon-desktop", action="append", type="string", dest="sdkjs-addons-desktop", default=[], help="sdkjs addons desktop") parser.add_option("--server-addon", action="append", type="string", dest="server-addons", default=[], help="server addons") parser.add_option("--web-apps-addon", action="append", type="string", dest="web-apps-addons", default=[], help="web-apps addons") parser.add_option("--sdkjs-plugin", action="append", type="string", dest="sdkjs-plugin", default=["default"], help="sdkjs addons for all products") diff --git a/scripts/base.py b/scripts/base.py index 9a5d6e2..655c06c 100644 --- a/scripts/base.py +++ b/scripts/base.py @@ -629,6 +629,16 @@ def sdkjs_addons_param(): params.append("--addon=" + config.sdkjs_addons[name]) return params +def sdkjs_addons_desktop_param(): + if ("" == config.option("sdkjs-addons-desktop")): + return [] + params = [] + addons_list = config.option("sdkjs-addons-desktop").rsplit(", ") + for name in addons_list: + if name in config.sdkjs_addons_desktop: + params.append("--addon=" + config.sdkjs_addons_desktop[name]) + return params + def server_addons_param(): if ("" == config.option("server-addons")): return [] @@ -845,6 +855,8 @@ def copy_sdkjs_plugin(src_dir, dst_dir, name, is_name_as_guid=False, is_desktop_ create_dir(dst_dir_path) copy_dir_content(src_dir_path, dst_dir_path, "", ".git") return + if not is_file(src_dir_path + "/config.json"): + return config_content = readFile(src_dir_path + "/config.json") index_start = config_content.find("\"asc.{") index_start += 5 diff --git a/scripts/build_js.py b/scripts/build_js.py index 172ae4c..e9fbb22 100644 --- a/scripts/build_js.py +++ b/scripts/build_js.py @@ -26,7 +26,6 @@ def make(): base.copy_dir(base_dir + "/../sdkjs/deploy/sdkjs", out_dir + "/builder/sdkjs") # desktop - build_sdk_desktop(base_dir + "/../sdkjs/build") if config.check_option("module", "desktop"): build_sdk_desktop(base_dir + "/../sdkjs/build") base.create_dir(out_dir + "/desktop") @@ -62,7 +61,7 @@ def build_interface(directory): def build_sdk_desktop(directory): #_run_npm_cli(directory) _run_npm(directory) - _run_grunt(directory, ["--level=ADVANCED", "--desktop=true"] + base.sdkjs_addons_param()) + _run_grunt(directory, ["--level=ADVANCED", "--desktop=true"] + base.sdkjs_addons_param() + base.sdkjs_addons_desktop_param()) return def build_sdk_builder(directory): diff --git a/scripts/config.py b/scripts/config.py index 1a1d84b..929de6a 100644 --- a/scripts/config.py +++ b/scripts/config.py @@ -77,6 +77,10 @@ def parse(): sdkjs_addons["content-controls"] = "sdkjs-content-controls" sdkjs_addons["pivot-tables"] = "sdkjs-pivot-tables" + global sdkjs_addons_desktop + sdkjs_addons_desktop = {} + sdkjs_addons_desktop["disable-features"] = "sdkjs-disable-features" + global server_addons server_addons = {} server_addons["license"] = "server-license" diff --git a/scripts/core_common/modules/openssl.py b/scripts/core_common/modules/openssl.py index 2615629..a38e038 100644 --- a/scripts/core_common/modules/openssl.py +++ b/scripts/core_common/modules/openssl.py @@ -48,6 +48,28 @@ def make(): qmake_bat.append("call nmake build_libs install") base.run_as_bat(qmake_bat, True) os.chdir(old_cur) + # xp ---------------------------------------------------------------------------------------------------- + os.chdir(base_dir + "/openssl") + base.replaceInFile(base_dir + "/openssl/crypto/rand/rand_win.c", "define USE_BCRYPTGENRANDOM", "define USE_BCRYPTGENRANDOM_FIX") + old_cur_dir = base_dir.replace(" ", "\\ ") + if (-1 != config.option("platform").find("win_64_xp")) and not base.is_dir("../build/win_64_xp"): + base.create_dir("./../build/win_64_xp") + qmake_bat = [] + qmake_bat.append("call \"" + config.option("vs-path") + "/vcvarsall.bat\" x64") + qmake_bat.append("perl Configure VC-WIN64A --prefix=" + old_cur_dir + "\\build\\win_64_xp --openssldir=" + old_cur_dir + "\\build\\win_64_xp no-shared no-asm no-async") + qmake_bat.append("call nmake clean") + qmake_bat.append("call nmake build_libs install") + base.run_as_bat(qmake_bat, True) + if (-1 != config.option("platform").find("win_32_xp")) and not base.is_dir("../build/win_32_xp"): + base.create_dir("./../build/win_32_xp") + qmake_bat = [] + qmake_bat.append("call \"" + config.option("vs-path") + "/vcvarsall.bat\" x86") + qmake_bat.append("perl Configure VC-WIN32 --prefix=" + old_cur_dir + "\\build\\win_32_xp --openssldir=" + old_cur_dir + "\\build\\win_32_xp no-shared no-asm no-async") + qmake_bat.append("call nmake clean") + qmake_bat.append("call nmake build_libs install") + base.run_as_bat(qmake_bat, True) + os.chdir(old_cur) + # ------------------------------------------------------------------------------------------------------- return if (-1 != config.option("platform").find("linux")) and not base.is_dir("../build/linux_64"): diff --git a/scripts/core_common/modules/v8.py b/scripts/core_common/modules/v8.py index f039b84..0bc050b 100644 --- a/scripts/core_common/modules/v8.py +++ b/scripts/core_common/modules/v8.py @@ -5,6 +5,7 @@ sys.path.append('../..') import config import base import os +import subprocess def clean(): if base.is_dir("depot_tools"): @@ -35,6 +36,27 @@ def is_xp_platform(): return True return False +def is_use_clang(): + get_gcc_version = "gcc -dumpfullversion -dumpversion" + popen = subprocess.Popen(get_gcc_version, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True) + gcc_version = 4 + try: + stdout, stderr = popen.communicate() + popen.wait() + gcc_version_str = stdout.strip().decode("utf-8") + gcc_version_major = gcc_version_str.split(".")[0] + gcc_version = int(gcc_version_major) + finally: + popen.stdout.close() + popen.stderr.close() + + is_clang = "false" + if (gcc_version >= 6): + is_clang = "true" + + print("gcc major version: " + str(gcc_version) + ", use clang:" + is_clang) + return is_clang + def make(): if not is_main_platform(): make_xp() @@ -118,11 +140,11 @@ def make(): base_args32 = "target_cpu=\\\"x86\\\" v8_target_cpu=\\\"x86\\\" v8_static_library=true is_component_build=false v8_use_snapshot=false" if config.check_option("platform", "linux_64"): - base.cmd2("gn", ["gen", "out.gn/linux_64", "--args=\"is_debug=false " + base_args64 + " is_clang=false use_sysroot=false\""]) + base.cmd2("gn", ["gen", "out.gn/linux_64", "--args=\"is_debug=false " + base_args64 + " is_clang=" + is_use_clang() + " use_sysroot=false treat_warnings_as_errors=false\""]) base.cmd("ninja", ["-C", "out.gn/linux_64"]) if config.check_option("platform", "linux_32"): - base.cmd2("gn", ["gen", "out.gn/linux_32", "--args=\"is_debug=false " + base_args32 + " is_clang=false use_sysroot=false\""]) + base.cmd2("gn", ["gen", "out.gn/linux_32", "--args=\"is_debug=false " + base_args32 + " is_clang=" + is_use_clang() + " use_sysroot=false treat_warnings_as_errors=false\""]) base.cmd("ninja", ["-C", "out.gn/linux_32"]) if config.check_option("platform", "mac_64"): diff --git a/scripts/deploy_desktop.py b/scripts/deploy_desktop.py index 05f0baf..38e0a2a 100644 --- a/scripts/deploy_desktop.py +++ b/scripts/deploy_desktop.py @@ -105,7 +105,7 @@ def make(): # libraries base.copy_lib(core_build_dir + "/lib/" + platform_postfix, root_dir, "hunspell") - base.copy_lib(core_build_dir + "/lib/" + platform_postfix, root_dir, "ooxmlsignature") + base.copy_lib(core_build_dir + "/lib/" + platform_postfix + ("/xp" if isWindowsXP else ""), root_dir, "ooxmlsignature") base.copy_lib(core_build_dir + "/lib/" + platform_postfix + ("/xp" if isWindowsXP else ""), root_dir, "ascdocumentscore") if (0 != platform.find("mac")): base.copy_lib(core_build_dir + "/lib/" + platform_postfix + ("/xp" if isWindowsXP else ""), root_dir, "qtascdocumentscore")