1 # We follow the stable channel on https://omahaproxy.appspot.com/
2 # https://chromium.googlesource.com/v8/v8/+/refs/heads/10.3-lkgr
5 PORTVERSION= 10.3.174.14
7 MASTER_SITES= LOCAL/sunpoet/v8/${PORTVERSION:R:R}:local
8 DISTFILES= build-${BUILD_REV}.tar.gz:local \
9 buildtools-${BUILDTOOLS_REV}.tar.gz:local \
10 clang-${CLANG_REV}.tar.gz:local \
11 common-${COMMON_REV}.tar.gz:local \
12 googletest-${GOOGLETEST_REV}.tar.gz:local \
13 icu-${ICU_REV}.tar.gz:local \
14 zlib-${ZLIB_REV}.tar.gz:local
15 DIST_SUBDIR= v8/${PORTVERSION:R:R}
16 EXTRACT_ONLY= ${DISTNAME}.tar.gz
18 MAINTAINER= sunpoet@FreeBSD.org
19 COMMENT= Open source JavaScript engine by Google
22 LICENSE_FILE= ${WRKSRC}/LICENSE
24 ONLY_FOR_ARCHS= aarch64 amd64 i386
26 BUILD_DEPENDS= binutils>=0:devel/binutils \
28 ${PYTHON_PKGNAMEPREFIX}Jinja2>=0:devel/py-Jinja2@${PY_FLAVOR}
29 LIB_DEPENDS= libicudata.so:devel/icu
31 USES= compiler:c++17-lang cpe gnome ninja pkgconfig python:3.5+,build tar:xz
34 BINARY_ALIAS= python3=${PYTHON_CMD}
35 MAKE_ARGS= -C out/Release
38 SUB_FILES= v8.pc v8_libbase.pc v8_libplatform.pc
44 CONFLICTS_INSTALL= v8-beta
46 BUILD_REV= 1c34f36484f43be915b48b090527d87356c72ce8
47 BUILDTOOLS_REV= 7208eddba161d85108097c3c5975264c04e3cad8
48 CLANG_REV= 9da95105864734ee87f47e0de638a09eb088338b
49 COMMON_REV= d115b033c4e53666b535cbd1985ffe60badad082
50 GOOGLETEST_REV= af29db7ec28d6df1c7f0f745186884091e602e07
51 ICU_REV= 585942f33d939a11f4600bd5042649b7ca189008
52 ZLIB_REV= 9979c19f11314156490b53da91df08c934a3c0d4
54 # Run "gn args --list out/Release" for all variables.
55 # Some parts don't have use_system_* flag, and can be turned on/off by using
56 # replace_gn_files.py script, some parts just turned on/off for target host
57 # OS "target_os == is_bsd", like libusb, libpci.
58 GN_ARGS+= clang_use_chrome_plugins=false \
59 extra_cxxflags="${CXXFLAGS}" \
60 extra_ldflags="${LDFLAGS}" \
62 is_component_build=true \
64 treat_warnings_as_errors=false \
67 use_custom_libcxx=false \
68 v8_use_external_startup_data=false
70 OPTIONS_DEFINE= EXAMPLES
73 @${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
74 @${TAR} -xf ${DISTDIR}/${DIST_SUBDIR}/build-${BUILD_REV}.tar.gz -C ${WRKSRC}/build
75 @${TAR} -xf ${DISTDIR}/${DIST_SUBDIR}/buildtools-${BUILDTOOLS_REV}.tar.gz -C ${WRKSRC}/buildtools
76 @${TAR} -xf ${DISTDIR}/${DIST_SUBDIR}/clang-${CLANG_REV}.tar.gz -C ${WRKSRC}/tools/clang
77 @${TAR} -xf ${DISTDIR}/${DIST_SUBDIR}/common-${COMMON_REV}.tar.gz -C ${WRKSRC}/base/trace_event/common
78 @${TAR} -xf ${DISTDIR}/${DIST_SUBDIR}/googletest-${GOOGLETEST_REV}.tar.gz -C ${WRKSRC}/third_party/googletest/src
79 @${TAR} -xf ${DISTDIR}/${DIST_SUBDIR}/icu-${ICU_REV}.tar.gz -C ${WRKSRC}/third_party/icu
80 @${TAR} -xf ${DISTDIR}/${DIST_SUBDIR}/zlib-${ZLIB_REV}.tar.gz -C ${WRKSRC}/third_party/zlib
83 @${REINPLACE_CMD} -i '' 's|%%LOCALBASE%%|${LOCALBASE}|' ${WRKSRC}/build/toolchain/gcc_toolchain.gni ${WRKSRC}/buildtools/third_party/libc++/BUILD.gn
84 # https://github.com/klzgrad/naiveproxy/blob/master/src/build/config/gclient_args.gni
85 @${ECHO_CMD} 'checkout_google_benchmark = false' > ${WRKSRC}/build/config/gclient_args.gni
87 # Use ICU from ports and create needed directory
89 @cd ${WRKSRC} && ${SETENV} ${CONFIGURE_ENV} ${PYTHON_CMD} ./build/linux/unbundle/replace_gn_files.py --system-libraries icu # || ${FALSE}
90 @${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
91 @${MKDIR} ${WRKSRC}/out/Release/gen/include
92 @${CP} -R ${LOCALBASE}/include/unicode ${WRKSRC}/out/Release/gen/include/unicode
95 @cd ${WRKSRC} && ${SETENV} ${CONFIGURE_ENV} gn gen out/Release --args='${GN_ARGS}'
98 ${MKDIR} ${STAGEDIR}${PREFIX}/include/cppgc ${STAGEDIR}${PREFIX}/include/libplatform
99 ${INSTALL_PROGRAM} ${WRKSRC}/out/Release/d8 ${STAGEDIR}${PREFIX}/bin/d8
100 ${INSTALL_PROGRAM} ${WRKSRC}/out/Release/mkgrokdump ${STAGEDIR}${PREFIX}/bin/mkgrokdump
101 ${INSTALL_PROGRAM} ${WRKSRC}/out/Release/mksnapshot ${STAGEDIR}${PREFIX}/bin/mksnapshot
102 ${INSTALL_PROGRAM} ${WRKSRC}/out/Release/v8_shell ${STAGEDIR}${PREFIX}/bin/v8_shell
103 ${INSTALL_LIB} ${WRKSRC}/out/Release/libchrome_zlib.so ${STAGEDIR}${PREFIX}/lib/libchrome_zlib.so
104 ${INSTALL_LIB} ${WRKSRC}/out/Release/libcppgc.so ${STAGEDIR}${PREFIX}/lib/libcppgc.so
105 ${INSTALL_LIB} ${WRKSRC}/out/Release/libv8.so ${STAGEDIR}${PREFIX}/lib/libv8.so
106 ${INSTALL_LIB} ${WRKSRC}/out/Release/libv8_libbase.so ${STAGEDIR}${PREFIX}/lib/libv8_libbase.so
107 ${INSTALL_LIB} ${WRKSRC}/out/Release/libv8_libplatform.so ${STAGEDIR}${PREFIX}/lib/libv8_libplatform.so
108 ${INSTALL_DATA} ${WRKSRC}/include/*.h ${STAGEDIR}${PREFIX}/include/
109 cd ${WRKSRC}/include/cppgc && ${COPYTREE_SHARE} . ${STAGEDIR}${PREFIX}/include/cppgc '-name *\.h'
110 ${INSTALL_DATA} ${WRKSRC}/include/libplatform/*.h ${STAGEDIR}${PREFIX}/include/libplatform/
111 ${INSTALL_DATA} ${WRKDIR}/v8*.pc ${STAGEDIR}${PREFIX}/libdata/pkgconfig/
113 do-install-EXAMPLES-on:
114 ${MKDIR} ${STAGEDIR}${EXAMPLESDIR}
115 ${INSTALL_PROGRAM} ${WRKSRC}/out/Release/v8_simple_* ${STAGEDIR}${EXAMPLESDIR}
117 .include <bsd.port.mk>