Update lang/v8 to version 10.3.174.14
[dports.git] / lang / v8 / Makefile
1 # We follow the stable channel on https://omahaproxy.appspot.com/
2 # https://chromium.googlesource.com/v8/v8/+/refs/heads/10.3-lkgr
3
4 PORTNAME=       v8
5 PORTVERSION=    10.3.174.14
6 CATEGORIES=     lang
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
17
18 MAINTAINER=     sunpoet@FreeBSD.org
19 COMMENT=        Open source JavaScript engine by Google
20
21 LICENSE=        BSD3CLAUSE
22 LICENSE_FILE=   ${WRKSRC}/LICENSE
23
24 ONLY_FOR_ARCHS= aarch64 amd64 i386
25
26 BUILD_DEPENDS=  binutils>=0:devel/binutils \
27                 gn:devel/gn \
28                 ${PYTHON_PKGNAMEPREFIX}Jinja2>=0:devel/py-Jinja2@${PY_FLAVOR}
29 LIB_DEPENDS=    libicudata.so:devel/icu
30
31 USES=           compiler:c++17-lang cpe gnome ninja pkgconfig python:3.5+,build tar:xz
32 USE_GNOME=      glib20
33
34 BINARY_ALIAS=   python3=${PYTHON_CMD}
35 MAKE_ARGS=      -C out/Release
36 USE_LDCONFIG=   yes
37
38 SUB_FILES=      v8.pc v8_libbase.pc v8_libplatform.pc
39
40 USE_GITHUB=     yes
41
42 CPE_VENDOR=     google
43
44 CONFLICTS_INSTALL=      v8-beta
45
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
53
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}" \
61                 is_clang=true \
62                 is_component_build=true \
63                 is_debug=false \
64                 treat_warnings_as_errors=false \
65                 use_aura=true \
66                 use_lld=true \
67                 use_custom_libcxx=false \
68                 v8_use_external_startup_data=false
69
70 OPTIONS_DEFINE= EXAMPLES
71
72 post-extract:
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
81
82 post-patch:
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
86
87 # Use ICU from ports and create needed directory
88 pre-configure:
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
93
94 do-configure:
95         @cd ${WRKSRC} && ${SETENV} ${CONFIGURE_ENV} gn gen out/Release --args='${GN_ARGS}'
96
97 do-install:
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/
112
113 do-install-EXAMPLES-on:
114         ${MKDIR} ${STAGEDIR}${EXAMPLESDIR}
115         ${INSTALL_PROGRAM} ${WRKSRC}/out/Release/v8_simple_* ${STAGEDIR}${EXAMPLESDIR}
116
117 .include <bsd.port.mk>