1cb93a386Sopenharmony_ci# Dockerfile for building Skia in release mode, using 3rd party libs from DEPS, with SwiftShader.
2cb93a386Sopenharmony_ciFROM gcr.io/skia-public/skia-build-tools:latest
3cb93a386Sopenharmony_ci
4cb93a386Sopenharmony_ciRUN cd /tmp \
5cb93a386Sopenharmony_ci  && git clone https://swiftshader.googlesource.com/SwiftShader swiftshader
6cb93a386Sopenharmony_ci
7cb93a386Sopenharmony_ci# Checkout Skia.
8cb93a386Sopenharmony_ciRUN mkdir -p /tmp/skia \
9cb93a386Sopenharmony_ci  && cd /tmp/skia \
10cb93a386Sopenharmony_ci  && fetch skia
11cb93a386Sopenharmony_ci
12cb93a386Sopenharmony_ci# Set fake identity for git rebase. See thread in
13cb93a386Sopenharmony_ci# https://skia-review.googlesource.com/c/buildbot/+/286537/5/docker/Dockerfile#46
14cb93a386Sopenharmony_ciRUN cd /tmp/skia/skia \
15cb93a386Sopenharmony_ci    && git config user.email "skia@skia.org" \
16cb93a386Sopenharmony_ci    && git config user.name "Skia"
17cb93a386Sopenharmony_ci
18cb93a386Sopenharmony_ci# HASH must be specified.
19cb93a386Sopenharmony_ciARG HASH
20cb93a386Sopenharmony_ciRUN if [ -z "${HASH}" ] ; then echo "HASH must be specified as a --build-arg"; exit 1; fi
21cb93a386Sopenharmony_ci
22cb93a386Sopenharmony_ciRUN cd /tmp/skia/skia \
23cb93a386Sopenharmony_ci  && git fetch \
24cb93a386Sopenharmony_ci  && git reset --hard ${HASH}
25cb93a386Sopenharmony_ci
26cb93a386Sopenharmony_ci# If patch ref is specified then update the ref to patch in a CL.
27cb93a386Sopenharmony_ciARG PATCH_REF
28cb93a386Sopenharmony_ciRUN if [ ! -z "${PATCH_REF}" ] ; then cd /tmp/skia/skia \
29cb93a386Sopenharmony_ci    && git fetch https://skia.googlesource.com/skia ${PATCH_REF} \
30cb93a386Sopenharmony_ci    && git checkout FETCH_HEAD \
31cb93a386Sopenharmony_ci    && git rebase ${HASH}; fi
32cb93a386Sopenharmony_ci
33cb93a386Sopenharmony_ciRUN cd /tmp/skia/skia \
34cb93a386Sopenharmony_ci  && gclient sync \
35cb93a386Sopenharmony_ci  && ./bin/fetch-gn
36cb93a386Sopenharmony_ci
37cb93a386Sopenharmony_ci# Write args.gn.
38cb93a386Sopenharmony_ciRUN mkdir -p /tmp/skia/skia/out/Static
39cb93a386Sopenharmony_ciRUN echo '  \n\
40cb93a386Sopenharmony_cicc = "clang"  \n\
41cb93a386Sopenharmony_cicxx = "clang++"  \n\
42cb93a386Sopenharmony_ciskia_use_egl = true  \n\
43cb93a386Sopenharmony_ciis_debug = false  \n\
44cb93a386Sopenharmony_ciskia_use_system_freetype2 = false  \n\
45cb93a386Sopenharmony_ciextra_cflags = [  \n\
46cb93a386Sopenharmony_ci  "-I/tmp/swiftshader/include",  \n\
47cb93a386Sopenharmony_ci  "-DGR_EGL_TRY_GLES3_THEN_GLES2",  \n\
48cb93a386Sopenharmony_ci  "-g0",  \n\
49cb93a386Sopenharmony_ci]  \n\
50cb93a386Sopenharmony_ciextra_ldflags = [  \n\
51cb93a386Sopenharmony_ci  "-L/usr/local/lib",  \n\
52cb93a386Sopenharmony_ci  "-Wl,-rpath",  \n\
53cb93a386Sopenharmony_ci  "-Wl,/usr/local/lib"  \n\
54cb93a386Sopenharmony_ci] ' > /tmp/skia/skia/out/Static/args.gn
55cb93a386Sopenharmony_ci
56cb93a386Sopenharmony_ci# Build Skia.
57cb93a386Sopenharmony_ciRUN cd /tmp/skia/skia \
58cb93a386Sopenharmony_ci  && ./bin/gn gen out/Static \
59cb93a386Sopenharmony_ci  && git rev-parse HEAD > VERSION \
60cb93a386Sopenharmony_ci  && /tmp/depot_tools/ninja -C out/Static \
61cb93a386Sopenharmony_ci  && chown -R skia:skia .
62