1*4882a593Smuzhiyun# gn-native contains the GN binary used to configure Chromium.
2*4882a593Smuzhiyun# It is not released separately, and each Chromium release is only expected to
3*4882a593Smuzhiyun# work with the GN version provided with it.
4*4882a593Smuzhiyun
5*4882a593Smuzhiyunrequire chromium.inc
6*4882a593Smuzhiyun
7*4882a593Smuzhiyuninherit native
8*4882a593Smuzhiyun
9*4882a593SmuzhiyunS = "${WORKDIR}/chromium-${PV}"
10*4882a593Smuzhiyun
11*4882a593Smuzhiyun# bootstrap.py --no_clean hardcodes the build location to out_bootstrap.
12*4882a593Smuzhiyun# Omitting --no_clean causes the script to create a temporary directory with a
13*4882a593Smuzhiyun# random name outside the build directory, so we choose the lesser of the two
14*4882a593Smuzhiyun# evils.
15*4882a593SmuzhiyunB = "${S}/out_bootstrap"
16*4882a593Smuzhiyun
17*4882a593SmuzhiyunSRC_URI += " \
18*4882a593Smuzhiyun        file://0001-Pass-no-static-libstdc-to-gen.py.patch \
19*4882a593Smuzhiyun"
20*4882a593Smuzhiyun
21*4882a593Smuzhiyun# The build system expects the linker to be invoked via the compiler. If we use
22*4882a593Smuzhiyun# the default value for BUILD_LD, it will fail because it does not recognize
23*4882a593Smuzhiyun# some of the arguments passed to it.
24*4882a593SmuzhiyunBUILD_LD = "${CXX}"
25*4882a593Smuzhiyun
26*4882a593Smuzhiyun# Use LLVM's ar rather than binutils'. Depending on the optimizations enabled
27*4882a593Smuzhiyun# in the build ar(1) may not be enough.
28*4882a593SmuzhiyunBUILD_AR = "llvm-ar"
29*4882a593Smuzhiyun
30*4882a593SmuzhiyunDEPENDS = "clang-native ninja-native"
31*4882a593SmuzhiyunDEPENDS:append:runtime-llvm = " compiler-rt-native libcxx-native"
32*4882a593Smuzhiyun# Use libcxx headers for native parts
33*4882a593SmuzhiyunCXXFLAGS:append:runtime-llvm = " -isysroot=${STAGING_DIR_NATIVE} -stdlib=libc++"
34*4882a593Smuzhiyun# Use libgcc for native parts
35*4882a593SmuzhiyunLDFLAGS:append:runtime-llvm = " -rtlib=libgcc -unwindlib=libgcc -stdlib=libc++ -lc++abi -rpath ${STAGING_LIBDIR_NATIVE}"
36*4882a593Smuzhiyun
37*4882a593Smuzhiyundo_configure[noexec] = "1"
38*4882a593Smuzhiyun
39*4882a593Smuzhiyundo_compile() {
40*4882a593Smuzhiyun	python3 ${S}/tools/gn/bootstrap/bootstrap.py --skip-generate-buildfiles
41*4882a593Smuzhiyun}
42*4882a593Smuzhiyun
43*4882a593Smuzhiyundo_install() {
44*4882a593Smuzhiyun	install -d ${D}${bindir}
45*4882a593Smuzhiyun	install -m 0755 ${S}/out/Release/gn ${D}${bindir}/gn
46*4882a593Smuzhiyun}
47*4882a593Smuzhiyun
48*4882a593SmuzhiyunINSANE_SKIP:${PN} += "already-stripped"
49