Exemple #1
0
def clang_correct():
    base.replaceInFile(
        "./tools/build/src/tools/darwin.jam",
        "flags darwin.compile.c++ OPTIONS $(condition) : -fcoalesce-templates ;",
        "#flags darwin.compile.c++ OPTIONS $(condition) : -fcoalesce-templates ;"
    )
    base.replaceInFile(
        "./tools/build/src/tools/darwin.py",
        "toolset.flags ('darwin.compile.c++', 'OPTIONS', None, ['-fcoalesce-templates'])",
        "#toolset.flags ('darwin.compile.c++', 'OPTIONS', None, ['-fcoalesce-templates'])"
    )
    return
Exemple #2
0
def make():
  is_no_brandind_build = base.is_file("config")
  make_pro_file("makefiles", "build.pro")
  if config.check_option("module", "builder") and base.is_windows() and is_no_brandind_build:
    # check replace
    replace_path_lib = ""
    replace_path_lib_file = os.getcwd() + "/../core/DesktopEditor/doctrenderer/docbuilder.com/docbuilder.h"
    if (config.branding() != ""):
      replace_path_lib = "../../../build/" + config.branding() + "/lib/"
    # replace
    if (replace_path_lib != ""):
      base.replaceInFile(replace_path_lib_file, "../../../build/lib/", replace_path_lib)
    base.bash("../core/DesktopEditor/doctrenderer/docbuilder.com/build")
    # restore
    if (replace_path_lib != ""):
      base.replaceInFile(replace_path_lib_file, replace_path_lib, "../../../build/lib/")
  return
Exemple #3
0
def change_icu_defs(current_dir, arch):
    icudef_file = current_dir + "/icudefs.mk"
    icudef_file_old = current_dir + "/icudefs.mk.back"

    param = "-arch x86_64"
    if arch == "arm64":
        param = "-arch arm64 -isysroot " + base.find_mac_sdk()

    base.copy_file(icudef_file, icudef_file_old)

    base.replaceInFile(icudef_file, "CFLAGS = ", "CFLAGS = " + param + " ")
    base.replaceInFile(icudef_file, "CXXFLAGS = ", "CXXFLAGS = " + param + " ")
    base.replaceInFile(icudef_file, "RPATHLDFLAGS =", "RPATHLDFLAGS2 =")
    base.replaceInFile(icudef_file, "LDFLAGS = ", "LDFLAGS = " + param + " ")
    base.replaceInFile(icudef_file, "RPATHLDFLAGS2 =", "RPATHLDFLAGS =")

    return
Exemple #4
0
def make():
    if ("windows" == base.host_platform()
            or "ios" == config.option("platform")):
        return

    print("[fetch & build]: openssl")

    base_dir = base.get_script_dir() + "/../../core/Common/3dParty/openssl"
    old_cur = os.getcwd()
    os.chdir(base_dir)

    base.common_check_version("openssl", "1", clean)

    if not base.is_dir("openssl"):
        base.cmd("git", [
            "clone", "--depth=1", "--branch", "OpenSSL_1_1_1f",
            "https://github.com/openssl/openssl.git"
        ])

    os.chdir(base_dir + "/openssl")
    if not base.is_file("Makefile"):
        base.cmd("./config", ["no-shared", "no-asm"])

    if base.is_file("./libssl.a") and base.is_file("./libcrypto.a"):
        os.chdir(old_cur)
        return

    if ("linux" == base.host_platform()):
        base.replaceInFile("./Makefile", "CFLAGS=-Wall -O3",
                           "CFLAGS=-Wall -O3 -fvisibility=hidden")
        base.replaceInFile("./Makefile", "CXXFLAGS=-Wall -O3",
                           "CXXFLAGS=-Wall -O3 -fvisibility=hidden")

    base.cmd("make", ["build_libs"])

    os.chdir(old_cur)
    return
Exemple #5
0
def get_hunspell(last_stable_commit):
    repo_path = "https://github.com/hunspell/hunspell.git"
    base.cmd("git", ["clone", repo_path])
    os.chdir("hunspell")
    base.cmd("git", ["checkout", last_stable_commit])
    base.replaceInFile(
        "./src/hunspell/filemgr.hxx", "FileMgr& operator=(const FileMgr&);",
        "FileMgr& operator=(const FileMgr&);\n" +
        "#ifdef HUNSPELL_WASM_MODULE\nstring_buffer_stream memin;\n#endif"
    )  #custon filemgr support watch filemgr_wrapper_new.cxx
    base.replaceInFile(
        "./src/hunspell/filemgr.hxx", "#include <fstream>",
        "#include <fstream>\n#ifdef HUNSPELL_WASM_MODULE\n#include \"string_buffer_stream.h\"\n#endif\n"
    )
    base.replaceInFile("./src/hunspell/csutil.cxx", "void free_utf_tbl() {",
                       "void free_utf_tbl() { \n return;\n")
    # bug fix, we need to keep this utf table
    # free_utf_tbl doesnt delete anything so we can destroy huspell object
    os.chdir("../")
Exemple #6
0
def make():
  if not is_main_platform():
    make_xp()
    return

  if ("ios" == config.option("platform")):
    return

  print("[fetch & build]: v8")

  base_dir = base.get_script_dir() + "/../../core/Common/3dParty/v8"
  old_cur = os.getcwd()
  os.chdir(base_dir)

  if ("windows" == base.host_platform()):
    base.set_env("DEPOT_TOOLS_WIN_TOOLCHAIN", "0")
    base.set_env("GYP_MSVS_VERSION", "2015")

  base.common_check_version("v8", "1", clean)

  if not base.is_dir("v8/out.gn"):
    clean()

  if not base.is_dir("depot_tools"):
    base.cmd("git", ["clone", "https://chromium.googlesource.com/chromium/tools/depot_tools.git"])
    if ("windows" == base.host_platform()):
      # hack for 32 bit system!!!
      base.replaceInFile("depot_tools/cipd.ps1", "windows-386", "windows-amd64")

  os.environ["PATH"] = base_dir + "/depot_tools" + os.pathsep + os.environ["PATH"]

  if "ppc64" in platform.machine():
    os.environ["VPYTHON_BYPASS"] = "******"

  if not base.is_dir("v8/out.gn"):
    base.cmd("gclient")

  # --------------------------------------------------------------------------
  # fetch
  if not base.is_dir("v8"):
    base.cmd("./depot_tools/fetch", ["v8"], True)
    os.chdir(base_dir + "/v8")
    base.cmd("git", ["checkout", "-b", "6.0", "branch-heads/6.0"], True)
    os.chdir(base_dir)

  # --------------------------------------------------------------------------
  # correct
  if not base.is_dir("v8/out.gn"):
    base.cmd("gclient", ["sync"], True)

    if ("linux" == base.host_platform()):
      if base.is_dir("v8/third_party/binutils/Linux_x64/Release"):
        base.delete_dir("v8/third_party/binutils/Linux_x64/Release")
      if base.is_dir("v8/third_party/binutils/Linux_ppc64/Release"):
        base.delete_dir("v8/third_party/binutils/Linux_ppc64/Release")
      if base.is_dir("v8/third_party/binutils/Linux_ia32/Release"):
        base.delete_dir("v8/third_party/binutils/Linux_ia32/Release")

      base.cmd("gclient", ["sync", "--no-history"])

      if base.is_dir("v8/third_party/binutils/Linux_x64/Release/bin"):
        for file in os.listdir("v8/third_party/binutils/Linux_x64/Release/bin"):
          name = file.split("/")[-1]
          if ("ld.gold" != name):
            base.cmd("mv", ["v8/third_party/binutils/Linux_x64/Release/bin/" + name, "v8/third_party/binutils/Linux_x64/Release/bin/old_" + name])
            base.cmd("ln", ["-s", "/usr/bin/" + name, "v8/third_party/binutils/Linux_x64/Release/bin/" + name])

      if base.is_dir("v8/third_party/binutils/Linux_ppc64/Release/bin"):
        for file in os.listdir("v8/third_party/binutils/Linux_ppc64/Release/bin"):
          name = file.split("/")[-1]
          if ("ld.gold" != name):
            base.cmd("mv", ["v8/third_party/binutils/Linux_ppc64/Release/bin/" + name, "v8/third_party/binutils/Linux_ppc64/Release/bin/old_" + name])
            base.cmd("ln", ["-s", "/usr/bin/" + name, "v8/third_party/binutils/Linux_ppc64/Release/bin/" + name])

      if base.is_dir("v8/third_party/binutils/Linux_ia32/Release/bin"):
        for file in os.listdir("v8/third_party/binutils/Linux_ia32/Release/bin"):
          name = file.split("/")[-1]
          if ("ld.gold" != name):
            base.cmd("mv", ["v8/third_party/binutils/Linux_ia32/Release/bin/" + name, "v8/third_party/binutils/Linux_ia32/Release/bin/old_" + name])
            base.cmd("ln", ["-s", "/usr/bin/" + name, "v8/third_party/binutils/Linux_ia32/Release/bin/" + name])

    if ("windows" == base.host_platform()):
      base.replaceInFile("v8/build/config/win/BUILD.gn", ":static_crt", ":dynamic_crt")
    if ("mac" == base.host_platform()):
      base.replaceInFile("v8/build/config/mac/mac_sdk.gni", "if (mac_sdk_version != mac_sdk_min_build_override", "if (false && mac_sdk_version != mac_sdk_min_build_override")  

  if "ppc64" in platform.machine():
    # Google's gn and ninja binaries won't work, they're x86 only by Google fiat.
    # Remove them and use the system binaries...
    try:
      os.remove(base_dir + "/depot_tools/gn")
    except:
      pass
    try:
      os.remove(base_dir + "/depot_tools/ninja")
    except:
      pass

  # --------------------------------------------------------------------------
  # build
  os.chdir("v8")

  if "ppc64le" in platform.machine():
    base_args64 = "target_cpu=\\\"ppc64\\\" v8_target_cpu=\\\"ppc64\\\" v8_static_library=true is_component_build=false v8_use_snapshot=false"
  else:
    base_args64 = "target_cpu=\\\"x64\\\" v8_target_cpu=\\\"x64\\\" v8_static_library=true is_component_build=false v8_use_snapshot=false"
  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 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.cmd("ninja", ["-C", "out.gn/linux_32"])

  if config.check_option("platform", "mac_64"):
    base.cmd2("gn", ["gen", "out.gn/mac_64", "--args=\"is_debug=false " + base_args64 + "\""])
    base.cmd("ninja", ["-C", "out.gn/mac_64"])

  if config.check_option("platform", "win_64"):
    if (-1 != config.option("config").lower().find("debug")):
      base.cmd2("gn", ["gen", "out.gn/win_64/debug", "--args=\"is_debug=true " + base_args64 + " is_clang=false\""])
      base.cmd("ninja", ["-C", "out.gn/win_64/debug"])      

    base.cmd2("gn", ["gen", "out.gn/win_64/release", "--args=\"is_debug=false " + base_args64 + " is_clang=false\""])
    base.cmd("ninja", ["-C", "out.gn/win_64/release"])

  if config.check_option("platform", "win_32"):
    if (-1 != config.option("config").lower().find("debug")):
      base.cmd2("gn", ["gen", "out.gn/win_32/debug", "--args=\"is_debug=true " + base_args32 + " is_clang=false\""])
      base.cmd("ninja", ["-C", "out.gn/win_32/debug"])    

    base.cmd2("gn", ["gen", "out.gn/win_32/release", "--args=\"is_debug=false " + base_args32 + " is_clang=false\""])
    base.cmd("ninja", ["-C", "out.gn/win_32/release"])

  os.chdir(old_cur)

  make_xp()

  return
Exemple #7
0
def make():
  print("[fetch & build]: v8")

  base_dir = base.get_script_dir() + "/../../core/Common/3dParty/v8"
  old_cur = os.getcwd()
  os.chdir(base_dir)

  if ("windows" == base.host_platform()):
    base.set_env("DEPOT_TOOLS_WIN_TOOLCHAIN", "0")
    base.set_env("GYP_MSVS_VERSION", "2015")

  if not base.is_dir("depot_tools"):
    base.cmd("git", ["clone", "https://chromium.googlesource.com/chromium/tools/depot_tools.git"])
  else:
    os.chdir(base_dir + "/depot_tools")
    base.cmd("git", ["reset", "--hard"])
    os.chdir(base_dir)

  os.environ["PATH"] = base_dir + "/depot_tools" + os.pathsep + os.environ["PATH"]

  if not base.is_dir("v8/out.gn"):
    base.delete_file("./.gclient")
    base.delete_file("./.gclient_entries")
    base.delete_dir("./.cipd")
    base.cmd("gclient")

  # --------------------------------------------------------------------------
  # fetch
  if not base.is_dir("v8"):
    base.cmd("./depot_tools/fetch", ["v8"], True)
    os.chdir(base_dir + "/v8")
    base.cmd("git", ["checkout", "-b", "6.0", "branch-heads/6.0"], True)
    os.chdir(base_dir)

  # --------------------------------------------------------------------------
  # correct
  if not base.is_dir("v8/out.gn"):
    base.cmd("gclient", ["sync"], True)

    if ("linux" == base.host_platform()):
      if base.is_dir("v8/third_party/binutils/Linux_x64/Release"):
        base.delete_dir("v8/third_party/binutils/Linux_x64/Release")
      if base.is_dir("v8/third_party/binutils/Linux_ia32/Release"):
        base.delete_dir("v8/third_party/binutils/Linux_ia32/Release")

      base.cmd("gclient", ["sync", "--no-history"])

      if base.is_dir("v8/third_party/binutils/Linux_x64/Release/bin"):
        for file in os.listdir("v8/third_party/binutils/Linux_x64/Release/bin"):
          name = file.split("/")[-1]
          if ("ld.gold" != name):
            base.cmd("mv", ["v8/third_party/binutils/Linux_x64/Release/bin/" + name, "v8/third_party/binutils/Linux_x64/Release/bin/old_" + name])
            base.cmd("ln", ["-s", "/usr/bin/" + name, "v8/third_party/binutils/Linux_x64/Release/bin/" + name])

      if base.is_dir("v8/third_party/binutils/Linux_ia32/Release/bin"):
        for file in os.listdir("v8/third_party/binutils/Linux_ia32/Release/bin"):
          name = file.split("/")[-1]
          if ("ld.gold" != name):
            base.cmd("mv", ["v8/third_party/binutils/Linux_ia32/Release/bin/" + name, "v8/third_party/binutils/Linux_ia32/Release/bin/old_" + name])
            base.cmd("ln", ["-s", "/usr/bin/" + name, "v8/third_party/binutils/Linux_ia32/Release/bin/" + name])

    if ("windows" == base.host_platform()):
      base.replaceInFile("v8/build/config/win/BUILD.gn", ":static_crt", ":dynamic_crt")
    if ("mac" == base.host_platform()):
      base.replaceInFile("v8/build/config/mac/mac_sdk.gni", "if (mac_sdk_version != mac_sdk_min_build_override", "if (false && mac_sdk_version != mac_sdk_min_build_override")  

  # --------------------------------------------------------------------------
  # build
  os.chdir("v8")

  base_args64 = "target_cpu=\\\"x64\\\" v8_target_cpu=\\\"x64\\\" v8_static_library=true is_component_build=false v8_use_snapshot=false"
  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.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.cmd("ninja", ["-C", "out.gn/linux_32"])

  if config.check_option("platform", "mac_64"):
    base.cmd2("gn", ["gen", "out.gn/mac_64", "--args=\"is_debug=false " + base_args64 + "\""])
    base.cmd("ninja", ["-C", "out.gn/mac_64"])

  if config.check_option("platform", "win_64"):
    if (-1 != config.option("config").lower().find("debug")):
      base.cmd2("gn", ["gen", "out.gn/win_64/debug", "--args=\"is_debug=true " + base_args64 + " is_clang=false\""])
      base.cmd("ninja", ["-C", "out.gn/win_64/debug"])      

    base.cmd2("gn", ["gen", "out.gn/win_64/release", "--args=\"is_debug=false " + base_args64 + " is_clang=false\""])
    base.cmd("ninja", ["-C", "out.gn/win_64/release"])

  if config.check_option("platform", "win_32"):
    if (-1 != config.option("config").lower().find("debug")):
      base.cmd2("gn", ["gen", "out.gn/win_32/debug", "--args=\"is_debug=true " + base_args32 + " is_clang=false\""])
      base.cmd("ninja", ["-C", "out.gn/win_32/debug"])    

    base.cmd2("gn", ["gen", "out.gn/win_32/release", "--args=\"is_debug=false " + base_args32 + " is_clang=false\""])
    base.cmd("ninja", ["-C", "out.gn/win_32/release"])

  os.chdir(old_cur)

  if config.check_option("platform", "win_64_xp") or config.check_option("platform", "win_32_xp"):
    make_xp()

  return
Exemple #8
0
for item in sources:
    arguments += (item + " ")

# command
windows_bat = []
if (base.host_platform() == "windows"):
    windows_bat.append("call emsdk/emsdk_env.bat")
    windows_bat.append("call emcc " + arguments)
else:
    windows_bat.append("#!/bin/bash")
    windows_bat.append("source ./emsdk/emsdk_env.sh")
    windows_bat.append("emcc " + arguments)
base.run_as_bat(windows_bat)

# finalize
base.replaceInFile("./spell.js", "__ATPOSTRUN__=[];",
                   "__ATPOSTRUN__=[function(){self.onEngineInit();}];")
base.replaceInFile("./spell.js", "function getBinaryPromise(){",
                   "function getBinaryPromise2(){")

spell_js_content = base.readFile("./spell.js")
engine_base_js_content = base.readFile("./wasm/js/spell.js")
engine_js_content = base.readFile(
    "./../../license/header.license") + "\n" + engine_base_js_content.replace(
        "//module", spell_js_content)

# write new version
base.writeFile("./deploy/spell/spell.js", engine_js_content)
base.copy_file("spell.wasm", "./deploy/spell/spell.wasm")

# ie asm version
arguments = arguments.replace("WASM=1", "WASM=0")
Exemple #9
0
def make():
    if ("android" == base.host_platform()
            or "ios" == config.option("platform")):
        return

    print("[fetch & build]: openssl")

    base_dir = base.get_script_dir() + "/../../core/Common/3dParty/openssl"
    old_cur = os.getcwd()
    os.chdir(base_dir)

    base.common_check_version("openssl", "3", clean)

    if not base.is_dir("openssl"):
        base.cmd("git", [
            "clone", "--depth=1", "--branch", "OpenSSL_1_1_1f",
            "https://github.com/openssl/openssl.git"
        ])

    os.chdir(base_dir + "/openssl")

    old_cur_dir = base_dir.replace(" ", "\\ ")
    if ("windows" == base.host_platform()):
        old_cur_dir = base_dir.replace(" ", "\\ ")
        if (-1 != config.option("platform").find("win_64")
            ) and not base.is_dir("../build/win_64"):
            base.create_dir("./../build/win_64")
            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 --openssldir=" +
                             old_cur_dir + "\\build\\win_64 no-shared no-asm")
            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")
            ) and not base.is_dir("../build/win_32"):
            base.create_dir("./../build/win_32")
            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 --openssldir=" +
                             old_cur_dir + "\\build\\win_32 no-shared no-asm")
            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)
        # 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"):
        base.cmd("./config", [
            "no-shared", "no-asm",
            "--prefix=" + old_cur_dir + "/build/linux_64",
            "--openssldir=" + old_cur_dir + "/build/linux_64"
        ])
        base.replaceInFile("./Makefile", "CFLAGS=-Wall -O3",
                           "CFLAGS=-Wall -O3 -fvisibility=hidden")
        base.replaceInFile("./Makefile", "CXXFLAGS=-Wall -O3",
                           "CXXFLAGS=-Wall -O3 -fvisibility=hidden")
        base.cmd("make")
        base.cmd("make", ["install"])
        # TODO: support x86

    if (-1 != config.option("platform").find("mac")
        ) and not base.is_dir("../build/mac_64"):
        base.cmd("./Configure", [
            "no-shared", "no-asm", "darwin64-x86_64-cc",
            "--prefix=" + old_cur_dir + "/build/mac_64", "--openssldir=" +
            old_cur_dir + "/build/mac_64", "-mmacosx-version-min=10.11"
        ])
        base.cmd("make", ["build_libs", "install"])

    if (-1 != config.option("platform").find("mac")
        ) and not base.is_dir("../build/mac_arm64"):
        os.chdir(base_dir)
        base.cmd("git", [
            "clone", "--depth=1", "--branch", "OpenSSL_1_1_1f",
            "https://github.com/openssl/openssl.git", "openssl2"
        ])
        os.chdir(base_dir + "/openssl2")
        replace1 = "\"darwin64-x86_64-cc\" => {"
        replace2 = "\"darwin64-arm64-cc\" => {\n\
        inherit_from     => [ \"darwin-common\", asm(\"aarch64_asm\") ],\n\
        CFLAGS           => add(\"-Wall\"),\n\
        cflags           => add(\"-arch arm64 -isysroot " + base.find_mac_sdk(
        ) + "\"),\n\
        lib_cppflags     => add(\"-DL_ENDIAN\"),\n\
        bn_ops           => \"SIXTY_FOUR_BIT_LONG\",\n\
        perlasm_scheme   => \"macosx\",\n\
    },\n\
    \"darwin64-x86_64-cc\" => {"

        base.replaceInFile(base_dir + "/openssl2/Configurations/10-main.conf",
                           replace1, replace2)
        base.cmd("./Configure", [
            "no-shared", "no-asm", "darwin64-arm64-cc",
            "--prefix=" + old_cur_dir + "/build/mac_arm64",
            "--openssldir=" + old_cur_dir + "/build/mac_arm64"
        ])
        base.cmd("make", ["build_libs", "install"])

    os.chdir(old_cur)
    return
Exemple #10
0
# patch for qmake...
# remove after full undestanding...

base_directory = os.getcwd()
gzip_directory = base_directory + "/freetype-2.10.4/src/gzip"
base.create_dir(gzip_directory + "/src")

for file in glob.glob(gzip_directory + "/*"):
    file_name = os.path.basename(file)
    if not base.is_file(file):
        continue
    if (file_name.find("ft") != 0):
        base.copy_file(file, gzip_directory + "/src/" + file_name)
        base.delete_file(file)

base.replaceInFile(gzip_directory + "/ftgzip.c", "<zlib.h>", "\"zlib.h\"")
base.replaceInFile(gzip_directory + "/ftgzip.c", "#include \"zutil.c\"",
                   "//#include \"zutil.c\"")
base.replaceInFile(gzip_directory + "/ftgzip.c", "#include \"inftrees.c\"",
                   "//#include \"inftrees.c\"")
base.replaceInFile(gzip_directory + "/ftgzip.c", "#include \"infutil.c\"",
                   "//#include \"infutil.c\"")
base.replaceInFile(gzip_directory + "/ftgzip.c", "#include \"infcodes.c\"",
                   "//#include \"infcodes.c\"")
base.replaceInFile(gzip_directory + "/ftgzip.c", "#include \"infblock.c\"",
                   "//#include \"infblock.c\"")
base.replaceInFile(gzip_directory + "/ftgzip.c", "#include \"inflate.c\"",
                   "//#include \"inflate.c\"")
base.replaceInFile(gzip_directory + "/ftgzip.c", "#include \"adler32.c\"",
                   "//#include \"adler32.c\"")
Exemple #11
0
def make_xp():
    if not is_xp_platform():
        return

    print("[fetch & build]: v8_xp")
    old_env = dict(os.environ)

    base_dir = base.get_script_dir() + "/../../core/Common/3dParty/v8/v8_xp"
    old_cur = os.getcwd()
    os.chdir(base_dir)

    if ("windows" == base.host_platform()):
        base.set_env("DEPOT_TOOLS_WIN_TOOLCHAIN", "0")
        base.set_env("GYP_MSVS_VERSION", "2015")

    base.common_check_version("v8", "1", clean)

    if not base.is_dir("win_64") and not base.is_dir("win_32"):
        clean()

    if not base.is_dir("depot_tools"):
        base.cmd(
            "git",
            ["clone", "http://120.92.49.206:3232/chromiumsrc/depot_tools.git"])
        if ("windows" == base.host_platform()):
            # hack for 32 bit system!!!
            if base.is_file("depot_tools/cipd.ps1"):
                base.replaceInFile("depot_tools/cipd.ps1", "windows-386",
                                   "windows-amd64")

    os.environ["PATH"] = os.pathsep.join([
        base_dir + "/depot_tools",
        base_dir + "/depot_tools/win_tools-2_7_13_chromium7_bin/python/bin",
        config.option("vs-path") + "/../Common7/IDE", os.environ["PATH"]
    ])

    # --------------------------------------------------------------------------
    # fetch
    if not base.is_dir("v8"):
        base.cmd("./depot_tools/fetch", ["v8"], True)
        base.cmd("./depot_tools/gclient", ["sync", "-r", "4.10.253"], True)
        base.delete_dir_with_access_error("v8/buildtools/win")
        base.cmd("git", ["config", "--system", "core.longpaths", "true"])
        base.cmd("gclient", ["sync", "--force"], True)

    # save common py script
    base.save_as_script("v8/build/common_xp.py", [
        "import os",
        "def replaceInFile(path, text, textReplace):",
        "  filedata = '';",
        "  with open(path, 'r') as file:",
        "    filedata = file.read()",
        "  filedata = filedata.replace(text, textReplace)",
        "  os.remove(path)",
        "  with open(path, 'w') as file:",
        "    file.write(filedata)",
        "  return",
        "",
        "projects = ['v8/tools/gyp/v8_base_0.vcxproj', 'v8/tools/gyp/v8_base_1.vcxproj', 'v8/tools/gyp/v8_base_2.vcxproj', 'v8/tools/gyp/v8_base_3.vcxproj',",
        "'v8/tools/gyp/v8_libbase.vcxproj', 'v8/tools/gyp/v8_libplatform.vcxproj', 'v8/tools/gyp/v8_nosnapshot.vcxproj', 'v8/tools/gyp/mksnapshot.vcxproj',",
        "'v8/third_party/icu/icui18n.vcxproj', 'v8/third_party/icu/icuuc.vcxproj']",
        "",
        "for file in projects:",
        "  replaceInFile(file, '<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>', '<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>')",
        "  replaceInFile(file, '<RuntimeLibrary>MultiThreaded</RuntimeLibrary>', '<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>')",
    ])

    if config.check_option("platform", "win_64_xp"):
        if not base.is_dir("win_64/release"):
            base.run_as_bat([
                "call python v8/build/gyp_v8 -Dtarget_arch=x64",
                "call python v8/build/common_xp.py",
                "call devenv v8/tools/gyp/v8.sln /Rebuild Release"
            ])
            base.create_dir("win_64/release")
            base.copy_files("v8/build/Release/lib/*", "win_64/release/")
            base.copy_file("v8/build/Release/icudt.dll",
                           "win_64/release/icudt.dll")

        if (-1 != config.option("config").lower().find("debug")
            ) and not base.is_dir("win_64/debug"):
            base.run_as_bat([
                "call python v8/build/gyp_v8 -Dtarget_arch=x64",
                "call python v8/build/common_xp.py",
                "call devenv v8/tools/gyp/v8.sln /Rebuild Debug"
            ])
            base.create_dir("win_64/debug")
            base.copy_files("v8/build/Debug/lib/*", "win_64/debug/")
            base.copy_file("v8/build/Debug/icudt.dll",
                           "win_64/debug/icudt.dll")

    if config.check_option("platform", "win_32_xp"):
        if not base.is_dir("win_32/release"):
            base.run_as_bat([
                "call python v8/build/gyp_v8",
                "call python v8/build/common_xp.py",
                "call devenv v8/tools/gyp/v8.sln /Rebuild Release"
            ])
            base.create_dir("win_32/release")
            base.copy_files("v8/build/Release/lib/*", "win_32/release/")
            base.copy_file("v8/build/Release/icudt.dll",
                           "win_32/release/icudt.dll")

        if (-1 != config.option("config").lower().find("debug")
            ) and not base.is_dir("win_32/debug"):
            base.run_as_bat([
                "call python v8/build/gyp_v8",
                "call python v8/build/common_xp.py",
                "call devenv v8/tools/gyp/v8.sln /Rebuild Debug"
            ])
            base.create_dir("win_32/debug")
            base.copy_files("v8/build/Debug/lib/*", "win_32/debug/")
            base.copy_file("v8/build/Debug/icudt.dll",
                           "win_32/debug/icudt.dll")

    os.chdir(old_cur)
    os.environ.clear()
    os.environ.update(old_env)
    return
Exemple #12
0
def make():
    if ("android" == base.host_platform()
            or "ios" == config.option("platform")):
        return

    print("[fetch & build]: openssl")

    base_dir = base.get_script_dir() + "/../../core/Common/3dParty/openssl"
    old_cur = os.getcwd()
    os.chdir(base_dir)

    base.common_check_version("openssl", "1", clean)

    if not base.is_dir("openssl"):
        base.cmd("git", [
            "clone", "--depth=1", "--branch", "OpenSSL_1_1_1f",
            "https://github.com/openssl/openssl.git"
        ])

    os.chdir(base_dir + "/openssl")

    old_cur_dir = base_dir.replace(" ", "\\ ")
    if ("windows" == base.host_platform()):
        old_cur_dir = base_dir.replace(" ", "\\ ")
        if (-1 != config.option("platform").find("win_64")
            ) and not base.is_dir("../build/win_64"):
            base.create_dir("./../build/win_64")
            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 --openssldir=" +
                             old_cur_dir + "\\build\\win_64 no-shared no-asm")
            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")
            ) and not base.is_dir("../build/win_32"):
            base.create_dir("./../build/win_32")
            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 --openssldir=" +
                             old_cur_dir + "\\build\\win_32 no-shared no-asm")
            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)
        # 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"):
        base.cmd("./config", [
            "no-shared", "no-asm",
            "--prefix=" + old_cur_dir + "/build/linux_64",
            "--openssldir=" + old_cur_dir + "/build/linux_64"
        ])
        base.replaceInFile("./Makefile", "CFLAGS=-Wall -O3",
                           "CFLAGS=-Wall -O3 -fvisibility=hidden")
        base.replaceInFile("./Makefile", "CXXFLAGS=-Wall -O3",
                           "CXXFLAGS=-Wall -O3 -fvisibility=hidden")
        base.cmd("make")
        base.cmd("make", ["install"])
        # TODO: support x86

    if (-1 != config.option("platform").find("mac")
        ) and not base.is_dir("../build/mac_64"):
        base.cmd("./config", [
            "no-shared", "no-asm", "--prefix=" + old_cur_dir + "/build/mac_64",
            "--openssldir=" + old_cur_dir + "/build/mac_64"
        ])
        base.cmd("make", ["build_libs", "install"])

    os.chdir(old_cur)
    return
Exemple #13
0
def make(build_js = True):

  old_cur_dir = os.getcwd()
  #fetch libhunspell
  print("[fetch & build]: hunspell")
  base_dir = base.get_script_dir() + "/../../core/Common/3dParty/hunspell"
  os.chdir(base_dir)
  if not base.is_dir("hunspell"):
      last_stable_commit = "8a2fdfe5a6bb1cbafc04b0c8486abcefd17ad903"
      repo_path = "https://github.com/hunspell/hunspell.git"
      base.cmd("git", ["clone", repo_path])
      os.chdir("hunspell")
      base.cmd("git", ["checkout", last_stable_commit])
      base.replaceInFile("./src/hunspell/filemgr.hxx", "FileMgr& operator=(const FileMgr&);", "FileMgr& operator=(const FileMgr&); \n" 
          +" #ifdef HUNSPELL_WASM_MODULE \n char* memory;size_t index;size_t size; \n #endif") #custon filemgr support watch filemgr_wrapper_new.cxx
      os.chdir("../")

  if not build_js:
    os.chdir(old_cur_dir)
    return
  base.configure_common_apps()

  # remove previous version
  if base.is_dir("./deploy"):
    base.delete_dir("./deploy")
  base.create_dir("./deploy")
  base.create_dir("./deploy/spell")

  # fetch emsdk
  command_prefix = "" if ("windows" == base.host_platform()) else "./"
  if not base.is_dir("emsdk"):
    base.cmd("git", ["clone", "https://github.com/emscripten-core/emsdk.git"])
    os.chdir("emsdk")
    base.cmd(command_prefix + "emsdk", ["install", "latest"])
    base.cmd(command_prefix + "emsdk", ["activate", "latest"])
    os.chdir("../")

  # compile
  compiler_flags = ["-o spell.js",
                    "-O3",
                    "-fno-exceptions",
                    "-fno-rtti",
                    "-s WASM=1",
                    "-s ALLOW_MEMORY_GROWTH=1",
                    "-s FILESYSTEM=0",
                    "-s ENVIRONMENT='web,worker'"]

  exported_functions = ["_malloc",
                        "_free",
                        "_Spellchecker_Malloc",
                        "_Spellchecker_Free",
                        "_Spellchecker_Create",
                        "_Spellchecker_Destroy",
                        "_Spellchecker_AddDictionary",
                        "_Spellchecker_RemoveDicrionary",
                        "_Spellchecker_Load",
                        "_Spellchecker_Spell",
                        "_Spellchecker_Suggest",
                        "_Spellchecker_RemoveEngine",
                        "_Spellchecker_TotalAllocatedMemory"]

  version_hunspell = 17
  libhunspell_src_path = "./hunspell/src/hunspell"

  input_sources = ["affentry.cxx",
                  "affixmgr.cxx",
                  "csutil.cxx",
                  "dictmgr.cxx",
                  "hashmgr.cxx",
                  "hunspell.cxx",
                  "hunzip.cxx",
                  "phonet.cxx",
                  "replist.cxx",
                  "suggestmgr.cxx"]

  sources = []
  for item in input_sources:
    if base.is_file(libhunspell_src_path + "/" + item):
      sources.append(libhunspell_src_path + "/" + item)

  if (13 == version_hunspell):
    sources.append("./wasm/src/filemgr_wrapper.cxx")
  else:
    sources.append("./wasm/src/filemgr_wrapper_new.cxx")

  sources.append("./wasm/src/base.cpp")

  compiler_flags.append("-I" + libhunspell_src_path)
  compiler_flags.append("-DWIN32 -DNDEBUG -DHUNSPELL_STATIC -DBUILDING_LIBHUNSPELL -DHUNSPELL_WASM_MODULE")

  # arguments
  arguments = ""
  for item in compiler_flags:
    arguments += (item + " ")

  arguments += "-s EXPORTED_FUNCTIONS=\"["
  for item in exported_functions:
    arguments += ("'" + item + "',")
  arguments = arguments[:-1]
  arguments += "]\" "

  for item in sources:
    arguments += (item + " ")


  # command
  windows_bat = []
  if (base.host_platform() == "windows"):
    windows_bat.append("call emsdk/emsdk_env.bat")
    windows_bat.append("call emcc " + arguments)  
  else:
    windows_bat.append("#!/bin/bash")
    windows_bat.append("source ./emsdk/emsdk_env.sh")
    windows_bat.append("emcc " + arguments)  
  base.run_as_bat(windows_bat)

  # finalize
  base.replaceInFile("./spell.js", "__ATPOSTRUN__=[];", "__ATPOSTRUN__=[function(){self.onEngineInit();}];")
  base.replaceInFile("./spell.js", "function getBinaryPromise(){", "function getBinaryPromise2(){")

  spell_js_content = base.readFile("./spell.js")
  engine_base_js_content = base.readFile("./wasm/js/spell.js")
  engine_js_content = engine_base_js_content.replace("//module", spell_js_content)

  # write new version
  base.writeFile("./deploy/spell/spell.js", engine_js_content)
  base.copy_file("spell.wasm", "./deploy/spell/spell.wasm")

  # ie asm version
  arguments = arguments.replace("WASM=1", "WASM=0")

  # command
  windows_bat = []
  if (base.host_platform() == "windows"):
    windows_bat.append("call emsdk/emsdk_env.bat")
    windows_bat.append("call emcc " + arguments)  
  else:
    windows_bat.append("#!/bin/bash")
    windows_bat.append("source ./emsdk/emsdk_env.sh")
    windows_bat.append("emcc " + arguments)  
  base.run_as_bat(windows_bat)

  # finalize
  base.replaceInFile("./spell.js", "__ATPOSTRUN__=[];", "__ATPOSTRUN__=[function(){self.onEngineInit();}];")
  base.replaceInFile("./spell.js", "function getBinaryPromise(){", "function getBinaryPromise2(){")

  spell_js_content = base.readFile("./spell.js")
  engine_base_js_content = base.readFile("./wasm/js/spell.js")
  engine_base_js_polyfill = base.readFile("./wasm/js/polyfill.js")
  engine_js_content = engine_base_js_polyfill + "\n\n" + engine_base_js_content.replace("//module", spell_js_content)

  # write new version
  base.writeFile("./deploy/spell/spell_ie.js", engine_js_content)
  base.copy_file("spell.js.mem", "./deploy/spell/spell.js.mem")

  base.copy_file("./wasm/js/code.js", "./deploy/spell.js")
  base.copy_file("./wasm/js/index.html", "./deploy/index.html")

  base.delete_file("spell.js")
  base.delete_file("spell.js.mem")
  os.chdir(old_cur_dir)
def make():
    if not base.is_dir(current_dir):
        base.create_dir(current_dir)

    if base.is_dir(current_dir + "/build"):
        return

    current_dir_old = os.getcwd()

    print("[fetch & build]: icu_android")
    os.chdir(current_dir)

    if not base.is_dir("icu"):
        base.cmd("svn", [
            "export", "https://github.com/unicode-org/icu/tags/release-" +
            icu_major + "-" + icu_minor + "/icu4c", "./icu",
            "--non-interactive", "--trust-server-cert"
        ])
        if ("linux" == base.host_platform()):
            base.replaceInFile(current_dir + "/icu/source/i18n/digitlst.cpp",
                               "xlocale", "locale")
        #if ("mac" == base.host_platform()):
        #  base.replaceInFile(current_dir + "/icu/source/tools/pkgdata/pkgdata.cpp", "cmd, \"%s %s -o %s%s %s %s%s %s %s\",", "cmd, \"%s %s -o %s%s %s %s %s %s %s\",")

    if not base.is_dir(current_dir + "/icu/cross_build"):
        base.create_dir(current_dir + "/icu/cross_build")
        os.chdir(current_dir + "/icu/cross_build")
        base.cmd("../source/runConfigureICU", [
            "Linux" if "linux" == base.host_platform() else "MacOSX",
            "--prefix=" + current_dir + "/icu/cross_build",
            "CFLAGS=-Os CXXFLAGS=--std=c++11"
        ])
        base.cmd("make", ["-j4"])
        base.cmd("make", ["install"], True)

    os.chdir(current_dir)

    build_arch("arm64", "21")
    build_arch("arm", "16")
    build_arch("x86_64", "21")
    build_arch("x86", "16")

    os.chdir(current_dir)

    base.create_dir(current_dir + "/build")
    base.copy_dir(current_dir + "/build_tmp/arm64/include",
                  current_dir + "/build/include")

    if icu_is_shared:
        base.create_dir(current_dir + "/build/arm64_v8a")
        base.copy_file(
            current_dir + "/build_tmp/arm64/lib/libicudata.so." + icu_major +
            "." + icu_minor, current_dir + "/build/arm64_v8a/libicudata.so")
        base.copy_file(
            current_dir + "/build_tmp/arm64/lib/libicuuc.so." + icu_major +
            "." + icu_minor, current_dir + "/build/arm64_v8a/libicuuc.so")

        base.create_dir(current_dir + "/build/armv7")
        base.copy_file(
            current_dir + "/build_tmp/arm/lib/libicudata.so." + icu_major +
            "." + icu_minor, current_dir + "/build/armv7/libicudata.so")
        base.copy_file(
            current_dir + "/build_tmp/arm/lib/libicuuc.so." + icu_major + "." +
            icu_minor, current_dir + "/build/armv7/libicuuc.so")

        base.create_dir(current_dir + "/build/x86_64")
        base.copy_file(
            current_dir + "/build_tmp/x86_64/lib/libicudata.so." + icu_major +
            "." + icu_minor, current_dir + "/build/x86_64/libicudata.so")
        base.copy_file(
            current_dir + "/build_tmp/x86_64/lib/libicuuc.so." + icu_major +
            "." + icu_minor, current_dir + "/build/x86_64/libicuuc.so")

        base.create_dir(current_dir + "/build/x86")
        base.copy_file(
            current_dir + "/build_tmp/x86/lib/libicudata.so." + icu_major +
            "." + icu_minor, current_dir + "/build/x86/libicudata.so")
        base.copy_file(
            current_dir + "/build_tmp/x86/lib/libicuuc.so." + icu_major + "." +
            icu_minor, current_dir + "/build/x86/libicuuc.so")

        # patch elf information
        os.chdir(current_dir + "/build")
        base.cmd("git", ["clone", "https://github.com/NixOS/patchelf.git"])
        os.chdir("./patchelf")
        base.cmd("./bootstrap.sh")
        base.cmd("./configure",
                 ["--prefix=" + current_dir + "/build/patchelf/usr"])
        base.cmd("make")
        base.cmd("make", ["install"])

        base.cmd(
            "./usr/bin/patchelf",
            ["--set-soname", "libicudata.so", "./../arm64_v8a/libicudata.so"])
        base.cmd("./usr/bin/patchelf",
                 ["--set-soname", "libicuuc.so", "./../arm64_v8a/libicuuc.so"])
        base.cmd("./usr/bin/patchelf", [
            "--replace-needed", "libicudata.so." + icu_major, "libicudata.so",
            "./../arm64_v8a/libicuuc.so"
        ])

        base.cmd("./usr/bin/patchelf",
                 ["--set-soname", "libicudata.so", "./../armv7/libicudata.so"])
        base.cmd("./usr/bin/patchelf",
                 ["--set-soname", "libicuuc.so", "./../armv7/libicuuc.so"])
        base.cmd("./usr/bin/patchelf", [
            "--replace-needed", "libicudata.so." + icu_major, "libicudata.so",
            "./../armv7/libicuuc.so"
        ])

        base.cmd(
            "./usr/bin/patchelf",
            ["--set-soname", "libicudata.so", "./../x86_64/libicudata.so"])
        base.cmd("./usr/bin/patchelf",
                 ["--set-soname", "libicuuc.so", "./../x86_64/libicuuc.so"])
        base.cmd("./usr/bin/patchelf", [
            "--replace-needed", "libicudata.so." + icu_major, "libicudata.so",
            "./../x86_64/libicuuc.so"
        ])

        base.cmd("./usr/bin/patchelf",
                 ["--set-soname", "libicudata.so", "./../x86/libicudata.so"])
        base.cmd("./usr/bin/patchelf",
                 ["--set-soname", "libicuuc.so", "./../x86/libicuuc.so"])
        base.cmd("./usr/bin/patchelf", [
            "--replace-needed", "libicudata.so." + icu_major, "libicudata.so",
            "./../x86/libicuuc.so"
        ])

        base.delete_dir(current_dir + "/build/patchelf")

    if not icu_is_shared:
        base.create_dir(current_dir + "/build/arm64_v8a")
        base.copy_file(current_dir + "/build_tmp/arm64/lib/libicudata.a",
                       current_dir + "/build/arm64_v8a/libicudata.a")
        base.copy_file(current_dir + "/build_tmp/arm64/lib/libicuuc.a",
                       current_dir + "/build/arm64_v8a/libicuuc.a")
        base.copy_file(current_dir + "/icu/arm64/data/out/icudt58l.dat",
                       current_dir + "/build/arm64_v8a/icudt58l.dat")

        base.create_dir(current_dir + "/build/armv7")
        base.copy_file(current_dir + "/build_tmp/arm/lib/libicudata.a",
                       current_dir + "/build/armv7/libicudata.a")
        base.copy_file(current_dir + "/build_tmp/arm/lib/libicuuc.a",
                       current_dir + "/build/armv7/libicuuc.a")
        base.copy_file(current_dir + "/icu/arm/data/out/icudt58l.dat",
                       current_dir + "/build/armv7/icudt58l.dat")

        base.create_dir(current_dir + "/build/x86_64")
        base.copy_file(current_dir + "/build_tmp/x86_64/lib/libicudata.a",
                       current_dir + "/build/x86_64/libicudata.a")
        base.copy_file(current_dir + "/build_tmp/x86_64/lib/libicuuc.a",
                       current_dir + "/build/x86_64/libicuuc.a")
        base.copy_file(current_dir + "/icu/x86_64/data/out/icudt58l.dat",
                       current_dir + "/build/x86_64/icudt58l.dat")

        base.create_dir(current_dir + "/build/x86")
        base.copy_file(current_dir + "/build_tmp/x86/lib/libicudata.a",
                       current_dir + "/build/x86/libicudata.a")
        base.copy_file(current_dir + "/build_tmp/x86/lib/libicuuc.a",
                       current_dir + "/build/x86/libicuuc.a")
        base.copy_file(current_dir + "/icu/x86/data/out/icudt58l.dat",
                       current_dir + "/build/x86/icudt58l.dat")

    os.chdir(current_dir_old)
    return
Exemple #15
0
#!/usr/bin/env python

import sys
sys.path.append('../../../../build_tools/scripts')
import config
import base
import os
import build

base_directory = os.getcwd()

if not base.is_dir("gumbo-parser"):
  base.cmd("git", ["clone", "https://github.com/google/gumbo-parser.git"])
  base.cmd_in_dir("gumbo-parser", "git", ["checkout", "aa91b27b02c0c80c482e24348a457ed7c3c088e0"])

if not base.is_dir("katana-parser"):
  base.cmd("git", ["clone", "https://github.com/hackers-painters/katana-parser.git"])
  base.cmd_in_dir("katana-parser", "git", ["checkout", "499118d32c387a893fdc9dda2cb95eee524bdb9b"])

  # fix katana
  base.replaceInFile(base_directory + "/katana-parser/src/tokenizer.c", "static inline bool katana_is_html_space(char c);", "static inline bool2 katana_is_html_space(char c);")
  base.replaceInFile(base_directory + "/katana-parser/src/tokenizer.c", "inline bool katana_is_html_space(char c)", "static inline bool katana_is_html_space(char c)")
  base.replaceInFile(base_directory + "/katana-parser/src/tokenizer.c", "static inline bool2 katana_is_html_space(char c);", "static inline bool katana_is_html_space(char c);")
  base.replaceInFile(base_directory + "/katana-parser/src/parser.c", "katanaget_text(parser->scanner)", "/*katanaget_text(parser->scanner)*/\"error\"")

Exemple #16
0
def make():
  print("[fetch & build]: icu")

  base_dir = base.get_script_dir() + "/../../core/Common/3dParty/icu"
  old_cur = os.getcwd()
  os.chdir(base_dir)

  icu_major = "58"
  icu_minor = "2"

  if not base.is_dir("icu"):
    base.cmd("svn", ["export", "https://github.com/unicode-org/icu/tags/release-" + icu_major + "-" + icu_minor + "/icu4c", "./icu"])

  if ("windows" == base.host_platform()):
    need_platforms = []
    if (-1 != config.option("platform").find("win_64")):
      need_platforms.append("win_64")
    if (-1 != config.option("platform").find("win_32")):
      need_platforms.append("win_32")
    for platform in need_platforms:
      if not config.check_option("platform", platform) and not config.check_option("platform", platform + "_xp"):
        continue
      if not base.is_dir(platform + "/build"):
        base.create_dir(platform)
        base.vcvarsall_start("x64" if ("win_64" == platform) else "x86")
        base.cmd("MSBuild.exe", ["icu/source/allinone/allinone.sln", "/p:Configuration=Release", "/p:PlatformToolset=v140", "/p:Platform=" + ("X64" if ("win_64" == platform) else "Win32")])
        base.vcvarsall_end()
        bin_dir = "icu/bin64/" if ("win_64" == platform) else "icu/bin/"
        lib_dir = "icu/lib64/" if ("win_64" == platform) else "icu/lib/"
        base.create_dir(platform + "/build")
        base.copy_file(bin_dir + "icudt" + icu_major + ".dll", platform + "/build/")
        base.copy_file(bin_dir + "icuuc" + icu_major + ".dll", platform + "/build/")
        base.copy_file(lib_dir + "icudt.lib", platform + "/build/")
        base.copy_file(lib_dir + "icuuc.lib", platform + "/build/")

  platform = ""
  if ("linux" == base.host_platform()):
    platform = "linux_64"
    if not base.is_dir(platform + "/build"):
      base.replaceInFile("./icu/source/i18n/digitlst.cpp", "xlocale", "locale")      

  if ("mac" == base.host_platform()):
    platform = "mac_64"
    if not base.is_dir(platform + "/build"):
      base.replaceInFile("./icu/source/tools/pkgdata/pkgdata.cpp", "cmd, \"%s %s -o %s%s %s %s%s %s %s\",", "cmd, \"%s %s -o %s%s %s %s %s %s %s\",")

  if (-1 != config.option("platform").find("ios")):
    if not base.is_dir("build"):
      base.bash("./icu_ios")
  elif ("" != platform) and not base.is_dir(platform + "/build"):
    base.create_dir(platform)
    os.chdir("icu/source")
    base.cmd("./runConfigureICU", ["Linux" if "linux" == base.host_platform() else "MacOSX"])
    old_dest_dir = base.get_env("DESTDIR")
    base.set_env("DESTDIR", base_dir + "/" + platform)
    base.cmd("make", ["install"])
    base.set_env("DESTDIR", old_dest_dir)
    os.chdir("../..")
    base.create_dir(platform + "/build")
    if ("linux_64" == platform):
      base.copy_file("icu/source/lib/libicudata.so." + icu_major + "." + icu_minor, platform + "/build/libicudata.so." + icu_major)
      base.copy_file("icu/source/lib/libicuuc.so." + icu_major + "." + icu_minor, platform + "/build/libicuuc.so." + icu_major)
    elif ("mac_64" == platform):
      base.copy_file("icu/source/lib/libicudata." + icu_major + "." + icu_minor + ".dylib", platform + "/build/libicudata." + icu_major + ".dylib")
      base.copy_file("icu/source/lib/libicuuc." + icu_major + "." + icu_minor + ".dylib", platform + "/build/libicuuc." + icu_major + ".dylib")
      
  os.chdir(old_cur)
  return
def make():
  base_dir = base.get_script_dir() + "/../out"
  git_dir = base.get_script_dir() + "/../.."
  core_dir = git_dir + "/core"
  branding = config.branding()

  platforms = config.option("platform").split()
  for native_platform in platforms:
    if not native_platform in config.platforms:
      continue

    root_dir = base_dir + ("/" + native_platform + "/" + branding + ("/DocumentBuilder" if base.is_windows() else "/documentbuilder"))
    if (base.is_dir(root_dir)):
      base.delete_dir(root_dir)
    base.create_dir(root_dir)

    qt_dir = base.qt_setup(native_platform)

    # check platform on xp
    isWindowsXP = False if (-1 == native_platform.find("_xp")) else True
    platform = native_platform[0:-3] if isWindowsXP else native_platform

    core_build_dir = core_dir + "/build"
    if ("" != config.option("branding")):
      core_build_dir += ("/" + config.option("branding"))

    platform_postfix = platform + base.qt_dst_postfix()

    # x2t
    base.copy_lib(core_build_dir + "/lib/" + platform_postfix, root_dir, "kernel")
    base.copy_lib(core_build_dir + "/lib/" + platform_postfix, root_dir, "UnicodeConverter")
    base.copy_lib(core_build_dir + "/lib/" + platform_postfix, root_dir, "graphics")
    base.copy_lib(core_build_dir + "/lib/" + platform_postfix, root_dir, "PdfWriter")
    base.copy_lib(core_build_dir + "/lib/" + platform_postfix, root_dir, "PdfReader")
    base.copy_lib(core_build_dir + "/lib/" + platform_postfix, root_dir, "DjVuFile")
    base.copy_lib(core_build_dir + "/lib/" + platform_postfix, root_dir, "XpsFile")
    base.copy_lib(core_build_dir + "/lib/" + platform_postfix, root_dir, "HtmlFile2")
    base.copy_lib(core_build_dir + "/lib/" + platform_postfix, root_dir, "HtmlRenderer")
    base.copy_lib(core_build_dir + "/lib/" + platform_postfix, root_dir, "Fb2File")
    base.copy_lib(core_build_dir + "/lib/" + platform_postfix, root_dir, "EpubFile")

    if ("ios" == platform):
      base.copy_lib(core_build_dir + "/lib/" + platform_postfix, root_dir, "x2t")
    else:
      base.copy_exe(core_build_dir + "/bin/" + platform_postfix, root_dir, "x2t")

    # icu
    if (0 == platform.find("win")):
      base.copy_file(core_dir + "/Common/3dParty/icu/" + platform + "/build/icudt58.dll", root_dir + "/icudt58.dll")
      base.copy_file(core_dir + "/Common/3dParty/icu/" + platform + "/build/icuuc58.dll", root_dir + "/icuuc58.dll")

    if (0 == platform.find("linux")):
      base.copy_file(core_dir + "/Common/3dParty/icu/" + platform + "/build/libicudata.so.58", root_dir + "/libicudata.so.58")
      base.copy_file(core_dir + "/Common/3dParty/icu/" + platform + "/build/libicuuc.so.58", root_dir + "/libicuuc.so.58")

    if (0 == platform.find("mac")):
      base.copy_file(core_dir + "/Common/3dParty/icu/" + platform + "/build/libicudata.58.dylib", root_dir + "/libicudata.58.dylib")
      base.copy_file(core_dir + "/Common/3dParty/icu/" + platform + "/build/libicuuc.58.dylib", root_dir + "/libicuuc.58.dylib")

    # doctrenderer
    if isWindowsXP:
      base.copy_lib(core_build_dir + "/lib/" + platform_postfix + "/xp", root_dir, "doctrenderer")
      base.copy_file(core_build_dir + "/lib/" + platform_postfix + "/xp/doctrenderer.lib", root_dir + "/doctrenderer.lib")
      base.copy_files(core_dir + "/Common/3dParty/v8/v8_xp/" + platform + "/release/icudt*.dll", root_dir + "/")
    else:
      base.copy_lib(core_build_dir + "/lib/" + platform_postfix, root_dir, "doctrenderer")
      if (0 == platform.find("win")):
        base.copy_file(core_build_dir + "/lib/" + platform_postfix + "/doctrenderer.lib", root_dir + "/doctrenderer.lib")
        base.copy_files(core_dir + "/Common/3dParty/v8/v8/out.gn/" + platform + "/release/icudt*.dat", root_dir + "/")
      elif (-1 == config.option("config").find("use_javascript_core")):
        base.copy_file(core_dir + "/Common/3dParty/v8/v8/out.gn/" + platform + "/icudtl.dat", root_dir + "/icudtl.dat")

    # app
    base.copy_exe(core_build_dir + "/bin/" + platform_postfix, root_dir, "docbuilder")
    base.generate_doctrenderer_config(root_dir + "/DoctRenderer.config", "./", "builder")
    base.copy_dir(git_dir + "/DocumentBuilder/empty", root_dir + "/empty")
    base.copy_dir(git_dir + "/DocumentBuilder/samples", root_dir + "/samples")

    # js
    base.copy_dir(base_dir + "/js/" + branding + "/builder/sdkjs", root_dir + "/sdkjs")
    base.create_dir(root_dir + "/sdkjs/vendor")
    base.copy_dir(base_dir + "/js/" + branding + "/builder/web-apps/vendor/jquery", root_dir + "/sdkjs/vendor/jquery")
    base.copy_dir(base_dir + "/js/" + branding + "/builder/web-apps/vendor/xregexp", root_dir + "/sdkjs/vendor/xregexp")

    # include
    base.create_dir(root_dir + "/include")
    base.copy_file(core_dir + "/DesktopEditor/doctrenderer/common_deploy.h", root_dir + "/include/common.h")
    base.copy_file(core_dir + "/DesktopEditor/doctrenderer/docbuilder.h", root_dir + "/include/docbuilder.h")
    base.replaceInFile(root_dir + "/include/docbuilder.h", "Q_DECL_EXPORT", "BUILDING_DOCBUILDER")
    
    if ("win_64" == platform):
      base.copy_file(core_dir + "/DesktopEditor/doctrenderer/docbuilder.com/x64/Release/docbuilder.com.dll", root_dir + "/docbuilder.com.dll")
    elif ("win_32" == platform):
      base.copy_file(core_dir + "/DesktopEditor/doctrenderer/docbuilder.com/Win32/Release/docbuilder.com.dll", root_dir + "/docbuilder.com.dll")

    # correct ios frameworks
    if ("ios" == platform):
      base.generate_plist(root_dir)

    if (0 == platform.find("mac")):
      base.mac_correct_rpath_x2t(root_dir)

  return
Exemple #18
0
def make():
    if not is_main_platform():
        make_xp()
        return

    base_dir = base.get_script_dir() + "/../../core/Common/3dParty/v8"
    if ("ios" == config.option("platform")):
        return

    if (-1 != config.option("platform").find("android")):
        base.cmd_in_dir(base_dir + "/android", "python", ["./make.py"])
        if (-1 == config.option("platform").find("linux")) and (
                -1 == config.option("platform").find("mac")) and (
                    -1 == config.option("platform").find("win")):
            return

    print("[fetch & build]: v8")
    old_env = dict(os.environ)

    old_cur = os.getcwd()
    os.chdir(base_dir)

    if ("windows" == base.host_platform()):
        base.set_env("DEPOT_TOOLS_WIN_TOOLCHAIN", "0")
        base.set_env("GYP_MSVS_VERSION", "2015")

    base.common_check_version("v8", "1", clean)

    if not base.is_dir("v8/out.gn"):
        clean()

    if not base.is_dir("depot_tools"):
        base.cmd(
            "git",
            ["clone", "http://120.92.49.206:3232/chromiumsrc/depot_tools.git"])
        if ("windows" == base.host_platform()):
            # hack for 32 bit system!!!
            if base.is_file("depot_tools/cipd.ps1"):
                base.replaceInFile("depot_tools/cipd.ps1", "windows-386",
                                   "windows-amd64")
        if base.is_file("depot_tools/fetch_configs/v8.py"):
            base.replaceInFile("depot_tools/fetch_configs/v8.py",
                               "https://chromium.googlesource.com/v8/v8.git",
                               "https://gitee.com/mirrors/V8.git")

    os.environ[
        "PATH"] = base_dir + "/depot_tools" + os.pathsep + os.environ["PATH"]

    if not base.is_dir("v8/out.gn"):
        base.cmd("gclient")

    # --------------------------------------------------------------------------
    # fetch
    if not base.is_dir("v8"):
        base.cmd("./depot_tools/fetch", ["v8"], True)
        os.chdir(base_dir + "/v8")
        base.cmd("git", ["checkout", "-b", "6.0", "branch-heads/6.0"], True)
        os.chdir(base_dir)

    # --------------------------------------------------------------------------
    # correct
    if not base.is_dir("v8/out.gn"):

        # windows hack (delete later) ----------------------
        if ("windows" == base.host_platform()):
            base.delete_dir_with_access_error("v8/buildtools/win")
            base.cmd("git", ["config", "--system", "core.longpaths", "true"])
            base.cmd("gclient", ["sync", "--force"], True)
        else:
            base.cmd("gclient", ["sync"], True)

        # normal version !!!
        #base.cmd("gclient", ["sync"], True)
        # --------------------------------------------------

        if ("linux" == base.host_platform()):
            if base.is_dir("v8/third_party/binutils/Linux_x64/Release"):
                base.delete_dir("v8/third_party/binutils/Linux_x64/Release")
            if base.is_dir("v8/third_party/binutils/Linux_ia32/Release"):
                base.delete_dir("v8/third_party/binutils/Linux_ia32/Release")

            base.cmd("gclient", ["sync", "--no-history"])

            if base.is_dir("v8/third_party/binutils/Linux_x64/Release/bin"):
                for file in os.listdir(
                        "v8/third_party/binutils/Linux_x64/Release/bin"):
                    name = file.split("/")[-1]
                    if ("ld.gold" != name):
                        base.cmd("mv", [
                            "v8/third_party/binutils/Linux_x64/Release/bin/" +
                            name,
                            "v8/third_party/binutils/Linux_x64/Release/bin/old_"
                            + name
                        ])
                        base.cmd("ln", [
                            "-s", "/usr/bin/" + name,
                            "v8/third_party/binutils/Linux_x64/Release/bin/" +
                            name
                        ])

            if base.is_dir("v8/third_party/binutils/Linux_ia32/Release/bin"):
                for file in os.listdir(
                        "v8/third_party/binutils/Linux_ia32/Release/bin"):
                    name = file.split("/")[-1]
                    if ("ld.gold" != name):
                        base.cmd("mv", [
                            "v8/third_party/binutils/Linux_ia32/Release/bin/" +
                            name,
                            "v8/third_party/binutils/Linux_ia32/Release/bin/old_"
                            + name
                        ])
                        base.cmd("ln", [
                            "-s", "/usr/bin/" + name,
                            "v8/third_party/binutils/Linux_ia32/Release/bin/" +
                            name
                        ])

        if ("windows" == base.host_platform()):
            base.replaceInFile("v8/build/config/win/BUILD.gn", ":static_crt",
                               ":dynamic_crt")
        if ("mac" == base.host_platform()):
            base.replaceInFile(
                "v8/build/config/mac/mac_sdk.gni",
                "if (mac_sdk_version != mac_sdk_min_build_override",
                "if (false && mac_sdk_version != mac_sdk_min_build_override")
            base.replaceInFile("v8/build/mac/find_sdk.py",
                               "^MacOSX(10\\.\\d+)\\.sdk$",
                               "^MacOSX(1\\d\\.\\d+)\\.sdk$")

    # --------------------------------------------------------------------------
    # build
    os.chdir("v8")

    base_args64 = "target_cpu=\\\"x64\\\" v8_target_cpu=\\\"x64\\\" v8_static_library=true is_component_build=false v8_use_snapshot=false"
    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=" + 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=" + 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"):
        base.cmd2("gn", [
            "gen", "out.gn/mac_64",
            "--args=\"is_debug=false " + base_args64 + "\""
        ])
        base.cmd("ninja", ["-C", "out.gn/mac_64"])

    if config.check_option("platform", "win_64"):
        if (-1 != config.option("config").lower().find("debug")):
            base.cmd2("gn", [
                "gen", "out.gn/win_64/debug",
                "--args=\"is_debug=true " + base_args64 + " is_clang=false\""
            ])
            base.cmd("ninja", ["-C", "out.gn/win_64/debug"])

        base.cmd2("gn", [
            "gen", "out.gn/win_64/release",
            "--args=\"is_debug=false " + base_args64 + " is_clang=false\""
        ])
        base.cmd("ninja", ["-C", "out.gn/win_64/release"])

    if config.check_option("platform", "win_32"):
        if (-1 != config.option("config").lower().find("debug")):
            base.cmd2("gn", [
                "gen", "out.gn/win_32/debug",
                "--args=\"is_debug=true " + base_args32 + " is_clang=false\""
            ])
            base.cmd("ninja", ["-C", "out.gn/win_32/debug"])

        base.cmd2("gn", [
            "gen", "out.gn/win_32/release",
            "--args=\"is_debug=false " + base_args32 + " is_clang=false\""
        ])
        base.cmd("ninja", ["-C", "out.gn/win_32/release"])

    os.chdir(old_cur)
    os.environ.clear()
    os.environ.update(old_env)

    make_xp()
    return
Exemple #19
0
for item in exported_functions:
  arguments += ("'" + item + "',")
arguments = arguments[:-1]
arguments += "]\" "

for item in sources:
  arguments += (item + " ")

# command
windows_bat = []
windows_bat.append("call emsdk/emsdk_env.bat")
windows_bat.append("call emcc " + arguments)
base.run_as_bat(windows_bat)

# finalize
base.replaceInFile("./fonts.js", "__ATPOSTRUN__=[];", "__ATPOSTRUN__=[function(){window[\"AscFonts\"].onLoadModule();}];")
base.replaceInFile("./fonts.js", "function getBinaryPromise(){", "function getBinaryPromise2(){")

fonts_js_content = base.readFile("fonts.js")
engine_base_js_content = base.readFile("../engine_base.js")
engine_js_content = engine_base_js_content.replace("//module", fonts_js_content)

# remove previous version
if base.is_file("../engine.js"):
  base.delete_file("../engine.js")
if base.is_file("../fonts.wasm"):
  base.delete_file("../fonts.wasm")

# write new version
base.writeFile("../engine.js", engine_js_content)
base.copy_file("fonts.wasm", "../fonts.wasm")