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
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
def make(): print("[fetch & build]: boost") base_dir = base.get_script_dir() + "/../../core/Common/3dParty/boost" old_cur = os.getcwd() os.chdir(base_dir) # download #url = "https://downloads.sourceforge.net/project/boost/boost/1.58.0/boost_1_58_0.7z" #if not base.is_file("boost_1_58_0.7z"): # base.download("https://downloads.sourceforge.net/project/boost/boost/1.58.0/boost_1_58_0.7z", "boost_1_58_0.7z") #if not base.is_dir("boost_1_58_0"): # base.extract("boost_1_58_0.7z", "./") base.common_check_version("boost", "5", clean) if not base.is_dir("boost_1_72_0"): base.cmd("git", [ "clone", "--recursive", "--depth=1", "https://github.com/boostorg/boost.git", "boost_1_72_0", "-b" "boost-1.72.0" ]) os.chdir("boost_1_72_0") # build if ("windows" == base.host_platform()): win_toolset = "msvc-14.0" if (-1 != config.option("platform").find("win_64") ) and not base.is_dir("../build/win_64"): base.cmd("bootstrap.bat") base.cmd("b2.exe", ["headers"]) base.cmd("b2.exe", ["--clean"]) base.cmd("b2.exe", [ "--prefix=./../build/win_64", "link=static", "--with-filesystem", "--with-system", "--with-date_time", "--with-regex", "--toolset=" + win_toolset, "address-model=64", "install" ]) if (-1 != config.option("platform").find("win_32") ) and not base.is_dir("../build/win_32"): base.cmd("bootstrap.bat") base.cmd("b2.exe", ["headers"]) base.cmd("b2.exe", ["--clean"]) base.cmd("b2.exe", [ "--prefix=./../build/win_32", "link=static", "--with-filesystem", "--with-system", "--with-date_time", "--with-regex", "--toolset=" + win_toolset, "address-model=32", "install" ]) correct_install_includes_win(base_dir, "win_64") correct_install_includes_win(base_dir, "win_32") if (-1 != config.option("platform").find("linux") ) and not base.is_dir("../build/linux_64"): base.cmd("./bootstrap.sh", ["--with-libraries=filesystem,system,date_time,regex"]) base.cmd("./b2", ["headers"]) base.cmd("./b2", ["--clean"]) base.cmd("./b2", [ "--prefix=./../build/linux_64", "link=static", "cxxflags=-fPIC", "install" ]) # TODO: support x86 if (-1 != config.option("platform").find("mac") ) and not base.is_dir("../build/mac_64"): clang_correct() base.cmd("./bootstrap.sh", ["--with-libraries=filesystem,system,date_time,regex"]) base.cmd("./b2", ["headers"]) base.cmd("./b2", ["--clean"]) base.cmd("./b2", ["--prefix=./../build/mac_64", "link=static", "install"]) if (-1 != config.option("platform").find("ios") ) and not base.is_dir("../build/ios"): clang_correct() os.chdir("../") base.bash("./boost_ios") if (-1 != config.option("platform").find("android")): platforms = config.option("platform").split() for platform in platforms: if not platform in config.platforms: continue if (0 != platform.find("android")): continue if (base.is_dir("../build/" + platform)): continue boost_android.make(platform[8:]) os.chdir(old_cur) return
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
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
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