diff --git a/lang/v8/Makefile b/lang/v8/Makefile index 892e6b68562f..2ed087ce843a 100644 --- a/lang/v8/Makefile +++ b/lang/v8/Makefile @@ -1,108 +1,117 @@ # We follow the stable channel on https://omahaproxy.appspot.com/ -# https://chromium.googlesource.com/v8/v8/+/refs/heads/9.9-lkgr +# https://chromium.googlesource.com/v8/v8/+/refs/heads/10.1-lkgr PORTNAME= v8 -PORTVERSION= 10.0.139.15 +PORTVERSION= 10.1.124.11 CATEGORIES= lang MASTER_SITES= LOCAL/sunpoet/v8/${PORTVERSION:R:R} DISTFILES= build-${BUILD_REV}.tar.gz \ buildtools-${BUILDTOOLS_REV}.tar.gz \ clang-${CLANG_REV}.tar.gz \ common-${COMMON_REV}.tar.gz \ googletest-${GOOGLETEST_REV}.tar.gz \ icu-${ICU_REV}.tar.gz \ zlib-${ZLIB_REV}.tar.gz DIST_SUBDIR= v8/${PORTVERSION:R:R} EXTRACT_ONLY= ${DISTNAME}.tar.gz MAINTAINER= sunpoet@FreeBSD.org COMMENT= Open source JavaScript engine by Google LICENSE= BSD3CLAUSE LICENSE_FILE= ${WRKSRC}/LICENSE ONLY_FOR_ARCHS= aarch64 amd64 i386 BUILD_DEPENDS= binutils>=0:devel/binutils \ gn:devel/gn \ ${PYTHON_PKGNAMEPREFIX}Jinja2>=0:devel/py-Jinja2@${PY_FLAVOR} LIB_DEPENDS= libicudata.so:devel/icu USES= compiler:c++17-lang cpe gnome ninja pkgconfig python:3.5+,build tar:xz USE_GNOME= glib20 BINARY_ALIAS= python3=${PYTHON_CMD} MAKE_ARGS= -C out/Release USE_LDCONFIG= yes SUB_FILES= v8.pc v8_libbase.pc v8_libplatform.pc USE_GITHUB= yes CPE_VENDOR= google CONFLICTS_INSTALL= v8-beta -BUILD_REV= 62a6377648eb82cff75e3a12f689400694fbbb63 -BUILDTOOLS_REV= 169eef5b952dea9b285bf1a0a7aff7518a3ed907 -CLANG_REV= 62e2cd966f93a27aab0953ce7c2d83ffd6bdfdcc +BUILD_REV= 3d9590754d5d23e62d15472c5baf6777ca59df20 +BUILDTOOLS_REV= 113dd1badbcbffea108a8c95ac7c89c22bfd25f3 +CLANG_REV= b60d34c100e5a8f4b01d838527f000faab673da3 COMMON_REV= d115b033c4e53666b535cbd1985ffe60badad082 -GOOGLETEST_REV= ea55f1f52c489535f0d3b583c81529762c9cb5ea -ICU_REV= b867f209e4b56b0a8c01aaaba3882ad41e438c4f -ZLIB_REV= 9538f4194f6e5eff1bd59f2396ed9d05b1a8d801 +GOOGLETEST_REV= ae5e06dd35c6137d335331b0815cf1f60fd7e3c5 +ICU_REV= 8a5b728e4f43b0eabdb9ea450f956d67cfb22719 +ZLIB_REV= b0676a1f52484bf53a1a49d0e48ff8abc430fafe # Run "gn args --list out/Release" for all variables. # Some parts don't have use_system_* flag, and can be turned on/off by using # replace_gn_files.py script, some parts just turned on/off for target host # OS "target_os == is_bsd", like libusb, libpci. GN_ARGS+= clang_use_chrome_plugins=false \ extra_cxxflags="${CXXFLAGS}" \ extra_ldflags="${LDFLAGS}" \ is_clang=true \ + is_component_build=true \ + is_debug=false \ treat_warnings_as_errors=false \ use_aura=true \ use_lld=true \ use_custom_libcxx=false \ v8_use_external_startup_data=false +OPTIONS_DEFINE= EXAMPLES + post-extract: @${MKDIR} ${WRKSRC}/base/trace_event/common ${WRKSRC}/build ${WRKSRC}/buildtools ${WRKSRC}/third_party/googletest/src ${WRKSRC}/third_party/icu ${WRKSRC}/third_party/zlib ${WRKSRC}/tools/clang @${TAR} -xf ${DISTDIR}/${DIST_SUBDIR}/build-${BUILD_REV}.tar.gz -C ${WRKSRC}/build @${TAR} -xf ${DISTDIR}/${DIST_SUBDIR}/buildtools-${BUILDTOOLS_REV}.tar.gz -C ${WRKSRC}/buildtools @${TAR} -xf ${DISTDIR}/${DIST_SUBDIR}/clang-${CLANG_REV}.tar.gz -C ${WRKSRC}/tools/clang @${TAR} -xf ${DISTDIR}/${DIST_SUBDIR}/common-${COMMON_REV}.tar.gz -C ${WRKSRC}/base/trace_event/common @${TAR} -xf ${DISTDIR}/${DIST_SUBDIR}/googletest-${GOOGLETEST_REV}.tar.gz -C ${WRKSRC}/third_party/googletest/src @${TAR} -xf ${DISTDIR}/${DIST_SUBDIR}/icu-${ICU_REV}.tar.gz -C ${WRKSRC}/third_party/icu @${TAR} -xf ${DISTDIR}/${DIST_SUBDIR}/zlib-${ZLIB_REV}.tar.gz -C ${WRKSRC}/third_party/zlib post-patch: @${REINPLACE_CMD} -i '' 's|%%LOCALBASE%%|${LOCALBASE}|' ${WRKSRC}/build/toolchain/gcc_toolchain.gni ${WRKSRC}/buildtools/third_party/libc++/BUILD.gn # https://github.com/klzgrad/naiveproxy/blob/master/src/build/config/gclient_args.gni @${ECHO_CMD} 'checkout_google_benchmark = false' > ${WRKSRC}/build/config/gclient_args.gni # Use ICU from ports and create needed directory pre-configure: @cd ${WRKSRC} && ${SETENV} ${CONFIGURE_ENV} ${PYTHON_CMD} ./build/linux/unbundle/replace_gn_files.py --system-libraries icu # || ${FALSE} @${MKDIR} ${WRKSRC}/out/Release/gen/shim_headers/icui18n_shim/third_party/icu/source/i18n/unicode ${WRKSRC}/out/Release/gen/shim_headers/icuuc_shim/third_party/icu/source/common/unicode @${MKDIR} ${WRKSRC}/out/Release/gen/include @${CP} -R ${LOCALBASE}/include/unicode ${WRKSRC}/out/Release/gen/include/unicode do-configure: @cd ${WRKSRC} && ${SETENV} ${CONFIGURE_ENV} gn gen out/Release --args='${GN_ARGS}' do-install: ${MKDIR} ${STAGEDIR}${PREFIX}/include/cppgc ${STAGEDIR}${PREFIX}/include/libplatform ${INSTALL_PROGRAM} ${WRKSRC}/out/Release/d8 ${STAGEDIR}${PREFIX}/bin/d8 ${INSTALL_PROGRAM} ${WRKSRC}/out/Release/mkgrokdump ${STAGEDIR}${PREFIX}/bin/mkgrokdump ${INSTALL_PROGRAM} ${WRKSRC}/out/Release/mksnapshot ${STAGEDIR}${PREFIX}/bin/mksnapshot + ${INSTALL_PROGRAM} ${WRKSRC}/out/Release/v8_shell ${STAGEDIR}${PREFIX}/bin/v8_shell ${INSTALL_LIB} ${WRKSRC}/out/Release/libchrome_zlib.so ${STAGEDIR}${PREFIX}/lib/libchrome_zlib.so ${INSTALL_LIB} ${WRKSRC}/out/Release/libcppgc.so ${STAGEDIR}${PREFIX}/lib/libcppgc.so ${INSTALL_LIB} ${WRKSRC}/out/Release/libv8.so ${STAGEDIR}${PREFIX}/lib/libv8.so ${INSTALL_LIB} ${WRKSRC}/out/Release/libv8_libbase.so ${STAGEDIR}${PREFIX}/lib/libv8_libbase.so ${INSTALL_LIB} ${WRKSRC}/out/Release/libv8_libplatform.so ${STAGEDIR}${PREFIX}/lib/libv8_libplatform.so ${INSTALL_DATA} ${WRKSRC}/include/*.h ${STAGEDIR}${PREFIX}/include/ cd ${WRKSRC}/include/cppgc && ${COPYTREE_SHARE} . ${STAGEDIR}${PREFIX}/include/cppgc '-name *\.h' ${INSTALL_DATA} ${WRKSRC}/include/libplatform/*.h ${STAGEDIR}${PREFIX}/include/libplatform/ ${INSTALL_DATA} ${WRKDIR}/v8*.pc ${STAGEDIR}${PREFIX}/libdata/pkgconfig/ +do-install-EXAMPLES-on: + ${MKDIR} ${STAGEDIR}${EXAMPLESDIR} + ${INSTALL_PROGRAM} ${WRKSRC}/out/Release/v8_simple_* ${STAGEDIR}${EXAMPLESDIR} + .include diff --git a/lang/v8/distinfo b/lang/v8/distinfo index ae8446f43e88..cb4c847997a2 100644 --- a/lang/v8/distinfo +++ b/lang/v8/distinfo @@ -1,17 +1,17 @@ -TIMESTAMP = 1650228682 -SHA256 (v8/10.0/build-62a6377648eb82cff75e3a12f689400694fbbb63.tar.gz) = a40bd84480727c8679658f8603c27ba2745c3e3d81feadd2a63face077aec958 -SIZE (v8/10.0/build-62a6377648eb82cff75e3a12f689400694fbbb63.tar.gz) = 1406814 -SHA256 (v8/10.0/buildtools-169eef5b952dea9b285bf1a0a7aff7518a3ed907.tar.gz) = 4bcd975013578a719ef010e090a605e0fc167812b1257e7c97a468a23402edcd -SIZE (v8/10.0/buildtools-169eef5b952dea9b285bf1a0a7aff7518a3ed907.tar.gz) = 86888 -SHA256 (v8/10.0/clang-62e2cd966f93a27aab0953ce7c2d83ffd6bdfdcc.tar.gz) = 73f0ccf32390764b1c463f05d75b340174fefddd0b5f8a920bacc4952673be0a -SIZE (v8/10.0/clang-62e2cd966f93a27aab0953ce7c2d83ffd6bdfdcc.tar.gz) = 300831 -SHA256 (v8/10.0/common-d115b033c4e53666b535cbd1985ffe60badad082.tar.gz) = 568c091ad5ce5291f4bae7e86a25622aa7d6dcfe4efb0b20d0771557a0c57eea -SIZE (v8/10.0/common-d115b033c4e53666b535cbd1985ffe60badad082.tar.gz) = 10496 -SHA256 (v8/10.0/googletest-ea55f1f52c489535f0d3b583c81529762c9cb5ea.tar.gz) = 0f89aad1ce740025f9175b7c188f3e00be982fe3671b02c937dba47e60a0a088 -SIZE (v8/10.0/googletest-ea55f1f52c489535f0d3b583c81529762c9cb5ea.tar.gz) = 834690 -SHA256 (v8/10.0/icu-b867f209e4b56b0a8c01aaaba3882ad41e438c4f.tar.gz) = e07eb4ce9dbdc85774a7bcbc1fe4c5c8f96429fb51be037b51fa46463d992420 -SIZE (v8/10.0/icu-b867f209e4b56b0a8c01aaaba3882ad41e438c4f.tar.gz) = 52380232 -SHA256 (v8/10.0/zlib-9538f4194f6e5eff1bd59f2396ed9d05b1a8d801.tar.gz) = 49ccb41bd1ce2cd94de8d51029ab4bece040ab3385f542a0068ede86ff2c4b84 -SIZE (v8/10.0/zlib-9538f4194f6e5eff1bd59f2396ed9d05b1a8d801.tar.gz) = 318008 -SHA256 (v8/10.0/v8-v8-10.0.139.15_GH0.tar.gz) = 1090da1faa9cdcbf6a054452d21b8f6a5188601f809fcdd5c14376ecae6bfdc2 -SIZE (v8/10.0/v8-v8-10.0.139.15_GH0.tar.gz) = 27586906 +TIMESTAMP = 1652122563 +SHA256 (v8/10.1/build-3d9590754d5d23e62d15472c5baf6777ca59df20.tar.gz) = 02fa820708804f25489f6f9ce8b2d8d9fbc8be28a71707d94bd8c25619087373 +SIZE (v8/10.1/build-3d9590754d5d23e62d15472c5baf6777ca59df20.tar.gz) = 1412762 +SHA256 (v8/10.1/buildtools-113dd1badbcbffea108a8c95ac7c89c22bfd25f3.tar.gz) = b2b5584e6c355f85aeba32f040e77f5d6780fea6ab8bb794eaddae25f0066077 +SIZE (v8/10.1/buildtools-113dd1badbcbffea108a8c95ac7c89c22bfd25f3.tar.gz) = 87013 +SHA256 (v8/10.1/clang-b60d34c100e5a8f4b01d838527f000faab673da3.tar.gz) = a75b61def87693b6942477d81c52db2c0a7451309fdfac6e0e500304f55d10a4 +SIZE (v8/10.1/clang-b60d34c100e5a8f4b01d838527f000faab673da3.tar.gz) = 300514 +SHA256 (v8/10.1/common-d115b033c4e53666b535cbd1985ffe60badad082.tar.gz) = 14d235ff3cc1c035090ef4fe26a9f46c0147474e6eb47ab6cbe85abcb47b84f7 +SIZE (v8/10.1/common-d115b033c4e53666b535cbd1985ffe60badad082.tar.gz) = 10495 +SHA256 (v8/10.1/googletest-ae5e06dd35c6137d335331b0815cf1f60fd7e3c5.tar.gz) = de43e6a5b60920910d0176fd422127eeb1568c585498c9809bfe4892bf232c03 +SIZE (v8/10.1/googletest-ae5e06dd35c6137d335331b0815cf1f60fd7e3c5.tar.gz) = 834526 +SHA256 (v8/10.1/icu-8a5b728e4f43b0eabdb9ea450f956d67cfb22719.tar.gz) = 1390ec1bb71a5d84941f8868c421651690cb6de99ada5626a534b49df9b9244d +SIZE (v8/10.1/icu-8a5b728e4f43b0eabdb9ea450f956d67cfb22719.tar.gz) = 52450740 +SHA256 (v8/10.1/zlib-b0676a1f52484bf53a1a49d0e48ff8abc430fafe.tar.gz) = 79d59e69e2a4c53548b45c9e5c7f601b19af3759d3b00a0792e8789ef51adf3f +SIZE (v8/10.1/zlib-b0676a1f52484bf53a1a49d0e48ff8abc430fafe.tar.gz) = 319424 +SHA256 (v8/10.1/v8-v8-10.1.124.11_GH0.tar.gz) = 9e01c009032d5c28f31ce40b14cc8cc664eb443bd86f2babf41ee38de7a317bb +SIZE (v8/10.1/v8-v8-10.1.124.11_GH0.tar.gz) = 27724853 diff --git a/lang/v8/files/patch-BUILD.gn b/lang/v8/files/patch-BUILD.gn index 8ec8de722036..14f0db784cd8 100644 --- a/lang/v8/files/patch-BUILD.gn +++ b/lang/v8/files/patch-BUILD.gn @@ -1,32 +1,32 @@ ---- BUILD.gn.orig 2022-01-23 11:58:51 UTC +--- BUILD.gn.orig 2022-03-17 10:34:15 UTC +++ BUILD.gn -@@ -5094,7 +5094,7 @@ v8_component("v8_libbase") { +@@ -5229,7 +5229,7 @@ v8_component("v8_libbase") { } } - if (is_linux || is_chromeos) { + if ((is_linux || is_chromeos) && !is_bsd) { sources += [ "src/base/debug/stack_trace_posix.cc", "src/base/platform/platform-linux.cc", -@@ -5111,6 +5111,12 @@ v8_component("v8_libbase") { +@@ -5246,6 +5246,12 @@ v8_component("v8_libbase") { ] libs = [ "dl" ] + } else if (is_bsd) { + sources += [ + "src/base/debug/stack_trace_posix.cc", + "src/base/platform/platform-freebsd.cc", + ] + libs = [ "rt", "execinfo" ] } else if (is_android) { if (current_toolchain == host_toolchain) { libs = [ -@@ -5611,6 +5617,7 @@ if (v8_monolithic) { +@@ -5769,6 +5775,7 @@ if (v8_monolithic) { ":v8_libplatform", "//build/win:default_exe_manifest", ] + libs = ["execinfo"] configs = [ ":internal_config" ] } diff --git a/lang/v8/files/patch-build_config_BUILD.gn b/lang/v8/files/patch-build_config_BUILD.gn index 3bf0166e6eea..6cae03c76623 100644 --- a/lang/v8/files/patch-build_config_BUILD.gn +++ b/lang/v8/files/patch-build_config_BUILD.gn @@ -1,30 +1,30 @@ ---- build/config/BUILD.gn.orig 2022-01-23 11:59:03 UTC +--- build/config/BUILD.gn.orig 2022-04-04 20:12:26 UTC +++ build/config/BUILD.gn -@@ -125,7 +125,7 @@ config("debug") { +@@ -121,7 +121,7 @@ config("debug") { # builds, and we have to tell it to turn it off. defines += [ "_HAS_ITERATOR_DEBUGGING=0" ] } - } else if ((is_linux || is_chromeos) && current_cpu == "x64" && + } else if ((is_linux || is_chromeos || is_bsd) && current_cpu == "x64" && enable_iterator_debugging) { # Enable libstdc++ debugging facilities to help catch problems early, see # http://crbug.com/65151 . -@@ -224,9 +224,7 @@ config("default_libs") { +@@ -220,9 +220,7 @@ config("default_libs") { ] } else if (is_linux || is_chromeos) { libs = [ - "dl", "pthread", - "rt", ] } } -@@ -305,7 +303,7 @@ config("executable_config") { +@@ -304,7 +302,7 @@ config("executable_config") { "//build/config/ios:ios_dynamic_flags", "//build/config/ios:ios_executable_flags", ] - } else if (is_linux || is_chromeos || is_android || current_os == "aix") { + } else if (is_linux || is_bsd || is_chromeos || is_android || current_os == "aix") { configs += [ "//build/config/gcc:executable_config" ] if (is_chromecast) { configs += [ "//build/config/chromecast:executable_config" ] diff --git a/lang/v8/files/patch-build_config_compiler_BUILD.gn b/lang/v8/files/patch-build_config_compiler_BUILD.gn index d13361651345..29e53e72c188 100644 --- a/lang/v8/files/patch-build_config_compiler_BUILD.gn +++ b/lang/v8/files/patch-build_config_compiler_BUILD.gn @@ -1,101 +1,101 @@ ---- build/config/compiler/BUILD.gn.orig 2022-01-23 11:59:03 UTC +--- build/config/compiler/BUILD.gn.orig 2022-04-04 20:12:27 UTC +++ build/config/compiler/BUILD.gn @@ -140,7 +140,7 @@ declare_args() { # # TODO(crbug.com/1131993): Enabling this when 'is_android' is true breaks # content_shell_test_apk on both ARM and x86. - init_stack_vars = !is_android + init_stack_vars = !is_android && !is_bsd # This argument is to control whether enabling text section splitting in the # final binary. When enabled, the separated text sections with prefix @@ -357,7 +357,7 @@ config("compiler") { } # Linker warnings. - if (fatal_linker_warnings && !is_apple && current_os != "aix" && + if (fatal_linker_warnings && !is_apple && !is_bsd && current_os != "aix" && current_os != "zos") { ldflags += [ "-Wl,--fatal-warnings" ] } @@ -534,7 +534,7 @@ config("compiler") { ldflags += [ "-Wl,-z,keep-text-section-prefix" ] } - if (is_clang && !is_nacl && current_os != "zos") { + if (is_clang && !is_nacl && !is_bsd && current_os != "zos") { cflags += [ "-fcrash-diagnostics-dir=" + clang_diagnostic_dir ] # TODO(hans): Remove this once Clang generates better optimized debug info -@@ -917,7 +917,7 @@ config("compiler_cpu_abi") { +@@ -929,7 +929,7 @@ config("compiler_cpu_abi") { cflags += [ "-mtune=$arm_tune" ] } } else if (current_cpu == "arm64") { - if (is_clang && !is_android && !is_nacl && !is_fuchsia) { + if (is_clang && !is_android && !is_nacl && !is_fuchsia && !is_bsd) { cflags += [ "--target=aarch64-linux-gnu" ] ldflags += [ "--target=aarch64-linux-gnu" ] } -@@ -1238,7 +1238,7 @@ config("compiler_deterministic") { +@@ -1250,7 +1250,7 @@ config("compiler_deterministic") { # different build directory like "out/feature_a" and "out/feature_b" if # we build same files with same compile flag. # Other paths are already given in relative, no need to normalize them. - if (is_nacl) { + if (is_nacl || is_bsd) { # TODO(https://crbug.com/1231236): Use -ffile-compilation-dir= here. cflags += [ "-Xclang", -@@ -1251,7 +1251,7 @@ config("compiler_deterministic") { +@@ -1263,7 +1263,7 @@ config("compiler_deterministic") { # and -fcoverage-compilation-dir=. cflags += [ "-ffile-compilation-dir=." ] } - if (!is_win) { + if (!is_win && !is_bsd) { # We don't use clang -cc1as on Windows (yet? https://crbug.com/762167) asmflags = [ "-Wa,-fdebug-compilation-dir,." ] } -@@ -1502,7 +1502,7 @@ config("default_warnings") { +@@ -1517,7 +1517,7 @@ config("default_warnings") { "-Wno-unneeded-internal-declaration", ] - if (!is_nacl || is_nacl_saigo) { + if ((!is_nacl || is_nacl_saigo) && !is_bsd) { if (is_win) { # TODO(thakis): https://crbug.com/617318 # Currently goma can not handle case sensitiveness for windows well. -@@ -1791,7 +1791,7 @@ config("thin_archive") { +@@ -1853,7 +1853,7 @@ config("thin_archive") { # archives. # TODO(crbug.com/1221615): Enable on is_apple if use_lld once that no longer # confuses lldb. - if ((is_posix && !is_nacl && !is_apple) || is_fuchsia) { + if ((is_posix && !is_nacl && !is_apple && !is_bsd) || is_fuchsia) { arflags = [ "-T" ] } else if (is_win && use_lld) { arflags = [ "/llvmlibthin" ] -@@ -2289,7 +2289,7 @@ config("symbols") { +@@ -2354,7 +2354,7 @@ config("symbols") { # flag, so we can use use -g1 for pnacl and nacl-clang compiles. # gcc nacl is is_nacl && !is_clang, pnacl and nacl-clang are && is_clang. if ((!is_nacl || is_clang) && current_os != "zos") { - cflags += [ "-g2" ] + cflags += [ "-g0" ] } if (!is_nacl && is_clang && !is_tsan && !is_asan && -@@ -2329,7 +2329,7 @@ config("symbols") { +@@ -2394,7 +2394,7 @@ config("symbols") { # sections" there. Maybe just a bug in nacl_switch_32.S. _enable_gdb_index = symbol_level == 2 && !is_apple && !is_nacl && current_cpu != "x86" && - current_os != "zos" && (use_gold || use_lld) && + current_os != "zos" && (use_gold || use_lld) && !is_bsd && # Disable on non-fission 32-bit Android because it pushes # libcomponents_unittests over the 4gb size limit. !(is_android && !use_debug_fission && current_cpu != "x64" && -@@ -2347,7 +2347,7 @@ config("symbols") { +@@ -2412,7 +2412,7 @@ config("symbols") { } if (is_clang && (!is_nacl || is_nacl_saigo) && current_os != "zos") { - if (is_apple) { + if (is_apple || is_bsd) { # TODO(https://crbug.com/1050118): Investigate missing debug info on mac. # Make sure we don't use constructor homing on mac. cflags += [ diff --git a/lang/v8/files/patch-build_config_compiler_compiler.gni b/lang/v8/files/patch-build_config_compiler_compiler.gni index 716914e2fb67..2d5c39500e57 100644 --- a/lang/v8/files/patch-build_config_compiler_compiler.gni +++ b/lang/v8/files/patch-build_config_compiler_compiler.gni @@ -1,11 +1,11 @@ ---- build/config/compiler/compiler.gni.orig 2022-01-23 11:59:03 UTC +--- build/config/compiler/compiler.gni.orig 2022-04-04 20:12:27 UTC +++ build/config/compiler/compiler.gni -@@ -224,7 +224,7 @@ declare_args() { +@@ -225,7 +225,7 @@ declare_args() { declare_args() { # Whether to use the gold linker from binutils instead of lld or bfd. - use_gold = !use_lld && !(is_chromecast && is_linux && + use_gold = !use_lld && !is_bsd && !(is_chromecast && is_linux && (current_cpu == "arm" || current_cpu == "mipsel")) && (((is_linux || is_chromeos_lacros) && (current_cpu == "x64" || current_cpu == "x86" || diff --git a/lang/v8/files/patch-build_config_linux_BUILD.gn b/lang/v8/files/patch-build_config_linux_BUILD.gn index 9b9bb1d634f9..c258aa9e3d38 100644 --- a/lang/v8/files/patch-build_config_linux_BUILD.gn +++ b/lang/v8/files/patch-build_config_linux_BUILD.gn @@ -1,11 +1,11 @@ ---- build/config/linux/BUILD.gn.orig 2021-10-13 07:49:03 UTC +--- build/config/linux/BUILD.gn.orig 2022-04-04 20:12:27 UTC +++ build/config/linux/BUILD.gn -@@ -39,7 +39,7 @@ config("runtime_library") { +@@ -42,7 +42,7 @@ config("runtime_library") { if ((!(is_chromeos_ash || is_chromeos_lacros) || default_toolchain != "//build/toolchain/cros:target") && - (!use_custom_libcxx || current_cpu == "mipsel")) { + (!use_custom_libcxx || current_cpu == "mipsel") && !is_bsd) { libs = [ "atomic" ] } } diff --git a/lang/v8/files/patch-build_config_rust.gni b/lang/v8/files/patch-build_config_rust.gni index 522727d59a1a..d61569e43549 100644 --- a/lang/v8/files/patch-build_config_rust.gni +++ b/lang/v8/files/patch-build_config_rust.gni @@ -1,11 +1,14 @@ ---- build/config/rust.gni.orig 2022-01-23 11:59:03 UTC +--- build/config/rust.gni.orig 2022-04-04 20:12:27 UTC +++ build/config/rust.gni -@@ -66,7 +66,7 @@ toolchain_has_official_rust = +@@ -84,9 +84,9 @@ android_toolchain_supports_platform = (!is_nacl && (is_android && (current_cpu == "arm" || current_cpu == "arm64" || current_cpu == "x64" || current_cpu == "x86"))) || - (is_linux && current_cpu == "x64") + (current_os == "linux" && current_cpu == "x64") + chromium_toolchain_supports_platform = +- !is_nacl && is_linux && current_cpu == "x64" ++ !is_nacl && current_os == "linux" && current_cpu == "x64" toolchain_has_rust = - enable_rust && (toolchain_has_official_rust || rust_sysroot_absolute != "") + enable_rust && diff --git a/lang/v8/files/patch-build_linux_chrome.map b/lang/v8/files/patch-build_linux_chrome.map index f540509b3054..b2fb711f743d 100644 --- a/lang/v8/files/patch-build_linux_chrome.map +++ b/lang/v8/files/patch-build_linux_chrome.map @@ -1,29 +1,29 @@ ---- build/linux/chrome.map.orig 2021-05-01 21:15:31 UTC +--- build/linux/chrome.map.orig 2022-04-04 20:12:27 UTC +++ build/linux/chrome.map @@ -1,4 +1,7 @@ { +local: + *; + global: __bss_start; __data_start; @@ -20,6 +23,10 @@ global: # Program entry point. _start; + # FreeBSD specific variables. + __progname; + environ; + # Memory allocation symbols. We want chrome and any libraries to # share the same heap, so it is correct to export these symbols. - calloc; -@@ -83,7 +90,4 @@ global: + aligned_alloc; +@@ -84,7 +91,4 @@ global: localtime_r; v8dbg_*; - -local: - *; }; diff --git a/lang/v8/files/patch-build_toolchain_gcc__toolchain.gni b/lang/v8/files/patch-build_toolchain_gcc__toolchain.gni index efab25893949..ccd1d7c366f7 100644 --- a/lang/v8/files/patch-build_toolchain_gcc__toolchain.gni +++ b/lang/v8/files/patch-build_toolchain_gcc__toolchain.gni @@ -1,45 +1,45 @@ ---- build/toolchain/gcc_toolchain.gni.orig 2022-01-23 11:59:03 UTC +--- build/toolchain/gcc_toolchain.gni.orig 2022-04-04 20:12:27 UTC +++ build/toolchain/gcc_toolchain.gni -@@ -49,6 +49,11 @@ if (enable_resource_allowlist_generation) { +@@ -53,6 +53,11 @@ if (enable_resource_allowlist_generation) { "enable_resource_allowlist_generation=true does not work for target_os=$target_os") } +declare_args() { + extra_cxxflags = "" + extra_ldflags = "" +} + # This template defines a toolchain for something that works like gcc # (including clang). # -@@ -738,13 +743,23 @@ template("gcc_toolchain") { +@@ -780,13 +785,23 @@ template("gcc_toolchain") { # use_gold too. template("clang_toolchain") { gcc_toolchain(target_name) { - prefix = rebase_path("$clang_base_path/bin", root_build_dir) - cc = "${prefix}/clang" - cxx = "${prefix}/clang++" - ld = cxx - readelf = "${prefix}/llvm-readelf" - ar = "${prefix}/llvm-ar" - nm = "${prefix}/llvm-nm" + if (is_bsd) { + prefix = "%%LOCALBASE%%/bin" + cc = "cc" + cxx = "c++" + ld = cxx + readelf = "${prefix}/readelf" + ar = "${prefix}/ar" + nm = "${prefix}/nm" + } else { + prefix = rebase_path("$clang_base_path/bin", root_build_dir) + cc = "$prefix/clang" + cxx = "$prefix/clang++" + ld = cxx + readelf = "${prefix}/readelf" + ar = "${prefix}/llvm-ar" + nm = "${prefix}/llvm-nm" + } forward_variables_from(invoker, [ diff --git a/lang/v8/files/patch-buildtools_third__party_libc++_BUILD.gn b/lang/v8/files/patch-buildtools_third__party_libc++_BUILD.gn index da2a4bc2e17a..890594e0d571 100644 --- a/lang/v8/files/patch-buildtools_third__party_libc++_BUILD.gn +++ b/lang/v8/files/patch-buildtools_third__party_libc++_BUILD.gn @@ -1,10 +1,11 @@ ---- buildtools/third_party/libc++/BUILD.gn.orig 2021-09-19 10:01:13 UTC +--- buildtools/third_party/libc++/BUILD.gn.orig 2022-04-04 20:12:27 UTC +++ buildtools/third_party/libc++/BUILD.gn -@@ -23,6 +23,7 @@ config("config") { - cflags += [ - "-fPIC", - "-std=c++17", -+ "-I%%LOCALBASE%%/include", +@@ -23,7 +23,7 @@ config("config") { + "-std:c++20", ] + } else { +- cflags += [ "-fPIC" ] ++ cflags += [ "-fPIC", "-I%%LOCALBASE%%/include" ] + cflags_cc = [ "-std=c++20" ] } - } + diff --git a/lang/v8/files/patch-include_v8config.h b/lang/v8/files/patch-include_v8config.h index b302d21db2c1..f8c1fa27b800 100644 --- a/lang/v8/files/patch-include_v8config.h +++ b/lang/v8/files/patch-include_v8config.h @@ -1,21 +1,21 @@ ---- include/v8config.h.orig 2022-01-23 11:58:51 UTC +--- include/v8config.h.orig 2022-03-17 10:34:15 UTC +++ include/v8config.h -@@ -342,7 +342,18 @@ path. Add it with -I to the command line +@@ -344,7 +344,18 @@ path. Add it with -I to the command line # define V8_HAS_CPP_ATTRIBUTE_NO_UNIQUE_ADDRESS \ (V8_HAS_CPP_ATTRIBUTE(no_unique_address)) +// Work around Clang bug present in 9.0.1, at least. +// +// Clang stores alignment as a 32-bit unsigned integer, but V8 only uses +// V8_ASSUME_ALIGNED() for a 4GB (2^32) alignment +// (kPtrComprIsolateRootAlignment). As such, the alignment overflows and +// becomes zero, triggering an internal Clang assertion that alignment must not +// be zero. +#if 0 # define V8_HAS_BUILTIN_ASSUME_ALIGNED (__has_builtin(__builtin_assume_aligned)) +#else +# define V8_HAS_BUILTIN_ASSUME_ALIGNED 0 +#endif # define V8_HAS_BUILTIN_BSWAP16 (__has_builtin(__builtin_bswap16)) # define V8_HAS_BUILTIN_BSWAP32 (__has_builtin(__builtin_bswap32)) # define V8_HAS_BUILTIN_BSWAP64 (__has_builtin(__builtin_bswap64)) diff --git a/lang/v8/files/patch-src_api_api.cc b/lang/v8/files/patch-src_api_api.cc index a853a756e0af..fee9a1131c3e 100644 --- a/lang/v8/files/patch-src_api_api.cc +++ b/lang/v8/files/patch-src_api_api.cc @@ -1,11 +1,11 @@ ---- src/api/api.cc.orig 2022-01-23 11:58:51 UTC +--- src/api/api.cc.orig 2022-03-17 10:34:15 UTC +++ src/api/api.cc -@@ -6126,7 +6126,7 @@ bool v8::V8::Initialize(const int build_config) { +@@ -6044,7 +6044,7 @@ bool v8::V8::Initialize(const int build_config) { return true; } --#if V8_OS_LINUX || V8_OS_MACOSX -+#if V8_OS_LINUX || V8_OS_MACOSX || V8_OS_OPENBSD || V8_OS_FREEBSD +-#if V8_OS_LINUX || V8_OS_DARWIN ++#if V8_OS_LINUX || V8_OS_DARWIN || V8_OS_OPENBSD || V8_OS_FREEBSD bool TryHandleWebAssemblyTrapPosix(int sig_code, siginfo_t* info, void* context) { #if V8_ENABLE_WEBASSEMBLY && V8_TRAP_HANDLER_SUPPORTED diff --git a/lang/v8/files/patch-src_base_cpu.cc b/lang/v8/files/patch-src_base_cpu.cc index 21d3d4fb596d..e622d5bea128 100644 --- a/lang/v8/files/patch-src_base_cpu.cc +++ b/lang/v8/files/patch-src_base_cpu.cc @@ -1,18 +1,18 @@ ---- src/base/cpu.cc.orig 2021-11-15 18:52:12 UTC +--- src/base/cpu.cc.orig 2022-03-17 10:34:15 UTC +++ src/base/cpu.cc -@@ -575,6 +575,7 @@ CPU::CPU() +@@ -581,6 +581,7 @@ CPU::CPU() #if V8_OS_LINUX +#if V8_OS_LINUX CPUInfo cpu_info; // Extract implementor from the "CPU implementer" field. -@@ -608,6 +609,7 @@ CPU::CPU() +@@ -614,6 +615,7 @@ CPU::CPU() } delete[] part; } +#endif // Extract architecture from the "CPU Architecture" field. // The list is well-known, unlike the the output of diff --git a/lang/v8/files/patch-src_base_platform_platform-posix.cc b/lang/v8/files/patch-src_base_platform_platform-posix.cc index effa5c032da2..dec5f31e32fc 100644 --- a/lang/v8/files/patch-src_base_platform_platform-posix.cc +++ b/lang/v8/files/patch-src_base_platform_platform-posix.cc @@ -1,24 +1,24 @@ ---- src/base/platform/platform-posix.cc.orig 2022-01-23 11:58:51 UTC +--- src/base/platform/platform-posix.cc.orig 2022-03-17 10:34:15 UTC +++ src/base/platform/platform-posix.cc -@@ -547,7 +547,7 @@ bool OS::FreeAddressSpaceReservation(AddressSpaceReser +@@ -612,7 +612,7 @@ void OS::DestroySharedMemoryHandle(PlatformSharedMemor // static bool OS::HasLazyCommits() { --#if V8_OS_AIX || V8_OS_LINUX || V8_OS_MACOSX -+#if V8_OS_AIX || V8_OS_LINUX || V8_OS_MACOSX || V8_OS_FREEBSD +-#if V8_OS_AIX || V8_OS_LINUX || V8_OS_DARWIN ++#if V8_OS_AIX || V8_OS_LINUX || V8_OS_DARWIN || V8_OS_FREEBSD return true; #else // TODO(bbudge) Return true for all POSIX platforms. -@@ -686,6 +686,12 @@ int OS::GetCurrentThreadId() { +@@ -751,6 +751,12 @@ int OS::GetCurrentThreadId() { return static_cast(syscall(__NR_gettid)); #elif V8_OS_ANDROID return static_cast(gettid()); +#elif V8_OS_DRAGONFLYBSD || defined(__DragonFly__) + return static_cast(lwp_gettid()); +#elif V8_OS_FREEBSD + return static_cast(pthread_getthreadid_np()); +#elif V8_OS_NETBSD + return static_cast(_lwp_self()); #elif V8_OS_AIX return static_cast(thread_self()); #elif V8_OS_FUCHSIA diff --git a/lang/v8/pkg-plist b/lang/v8/pkg-plist index 79585dd8a9f1..fb46563c4a8e 100644 --- a/lang/v8/pkg-plist +++ b/lang/v8/pkg-plist @@ -1,113 +1,123 @@ bin/d8 bin/mkgrokdump bin/mksnapshot +bin/v8_shell include/cppgc/allocation.h include/cppgc/common.h include/cppgc/cross-thread-persistent.h include/cppgc/custom-space.h include/cppgc/default-platform.h include/cppgc/ephemeron-pair.h include/cppgc/explicit-management.h include/cppgc/garbage-collected.h include/cppgc/heap-consistency.h include/cppgc/heap-state.h include/cppgc/heap-statistics.h include/cppgc/heap.h include/cppgc/internal/api-constants.h include/cppgc/internal/atomic-entry-flag.h include/cppgc/internal/caged-heap-local-data.h include/cppgc/internal/compiler-specific.h include/cppgc/internal/finalizer-trait.h include/cppgc/internal/gc-info.h include/cppgc/internal/logging.h include/cppgc/internal/name-trait.h include/cppgc/internal/persistent-node.h include/cppgc/internal/pointer-policies.h -include/cppgc/internal/prefinalizer-handler.h include/cppgc/internal/write-barrier.h include/cppgc/liveness-broker.h include/cppgc/macros.h include/cppgc/member.h include/cppgc/name-provider.h include/cppgc/object-size-trait.h include/cppgc/persistent.h include/cppgc/platform.h include/cppgc/prefinalizer.h include/cppgc/process-heap-statistics.h include/cppgc/sentinel-pointer.h include/cppgc/source-location.h include/cppgc/testing.h include/cppgc/trace-trait.h include/cppgc/type-traits.h include/cppgc/visitor.h include/libplatform/libplatform-export.h include/libplatform/libplatform.h include/libplatform/v8-tracing.h include/v8-array-buffer.h include/v8-callbacks.h include/v8-container.h include/v8-context.h include/v8-cppgc.h include/v8-data.h include/v8-date.h include/v8-debug.h include/v8-embedder-heap.h include/v8-embedder-state-scope.h include/v8-exception.h include/v8-extension.h include/v8-external.h include/v8-fast-api-calls.h include/v8-forward.h include/v8-function-callback.h include/v8-function.h include/v8-initialization.h include/v8-inspector-protocol.h include/v8-inspector.h include/v8-internal.h include/v8-isolate.h include/v8-json.h include/v8-local-handle.h include/v8-locker.h include/v8-maybe.h include/v8-memory-span.h include/v8-message.h include/v8-metrics.h include/v8-microtask-queue.h include/v8-microtask.h include/v8-object.h include/v8-persistent-handle.h include/v8-platform.h include/v8-primitive-object.h include/v8-primitive.h include/v8-profiler.h include/v8-promise.h include/v8-proxy.h include/v8-regexp.h include/v8-script.h include/v8-snapshot.h include/v8-statistics.h include/v8-template.h include/v8-traced-handle.h include/v8-typed-array.h include/v8-unwinder-state.h include/v8-unwinder.h include/v8-util.h include/v8-value-serializer-version.h include/v8-value-serializer.h include/v8-value.h include/v8-version-string.h include/v8-version.h include/v8-wasm-trap-handler-posix.h include/v8-wasm-trap-handler-win.h include/v8-wasm.h include/v8-weak-callback-info.h include/v8.h include/v8config.h lib/libchrome_zlib.so lib/libcppgc.so lib/libv8.so lib/libv8_libbase.so lib/libv8_libplatform.so libdata/pkgconfig/v8.pc libdata/pkgconfig/v8_libbase.pc libdata/pkgconfig/v8_libplatform.pc +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/v8_simple_inspector_fuzzer +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/v8_simple_json_fuzzer +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/v8_simple_multi_return_fuzzer +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/v8_simple_parser_fuzzer +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/v8_simple_regexp_builtins_fuzzer +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/v8_simple_regexp_fuzzer +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/v8_simple_wasm_async_fuzzer +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/v8_simple_wasm_code_fuzzer +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/v8_simple_wasm_compile_fuzzer +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/v8_simple_wasm_fuzzer