Currently the SampleApp and VisualBench builds for Android don't work
for rebuilds. The code is re-built, but the apks are not. This
results from the use of a directory as 'output' and the action to
build the apk not depending on the copied libraries.
Review URL: https://codereview.chromium.org/1270643005
It turns out that gyp (kind of) has support for cross
compiling with a different host and target. We simply
need to specify CC_host and CC_target instead of CC.
Making this change allows us to compile yasm on a Linux
host for Android.
We run into problems on Mac because
the linker on a Mac host requires different command line
arguments than the linker on the Android target. In
looking through the code for gyp itself and speaking to
Ben, it doesn't appear to me that gyp supports passing
different arguments to host and target linkers.
I would imagine that we would have similar problems on
Windows.
Below is a link to a CL that would fix this issue in gyp.
It looks like it has been dropped for a long time.
Thanks to Ben for this link!
https://chromiumcodereview.appspot.com/10795044/
Also I'm adding a link to the build instructions for Chrome
(thanks again Ben). It looks like they only support
building for Android from Linux.
https://code.google.com/p/chromium/wiki/AndroidBuildInstructions
My next steps are:
1) Getting in touch with Torne or someone else with gyp to
see if people are aware of this issue or interested in
fixing it.
2) Deciding if skia should care about this issue.
3) Deciding if skia should work around this issue.
It'd be really great to hear your thoughts on (2) and (3).
My first thought is that we shouldn't care because, as
long as we always compile the production copy of skia for
Android on Linux, we will get the fast code. Is this
a valid conclusion? Is there a way to write Android apps
on Mac that accidentally use the slower code?
If we do care, there are workarounds:
For Mac, we can check in a yasm binary - it's a little
smaller than the one I am deleting in this CL :-/
For Windows, we *might* be able to use the yasm.exe binary
already in externals (we get this from DEPS because this is
how chromium uses yasm on Windows).
Are there other platforms that we care about?
Let me know what you think!
BUG=skia:4028
DOCS_PREVIEW= https://skia.org/?cl=1239333002
Review URL: https://codereview.chromium.org/1239333002
These wrappers are approxiately 56K in size and are the recommened
way to use Gradle. It also ensures that developers wanting to
build the app don't need install an additional dependency.
Review URL: https://codereview.chromium.org/1227723002
Currently SampleApp on Android cannot find resources. This sets the
resourcePath to /data/local/tmp/skia/resources/ which is the path
used in documentationo. A future change will allow this default to be
overridden.
BUG=skia:3815
Review URL: https://codereview.chromium.org/1125363004
It's looking like the previous CL did not fix the Daisy bot GMs,
even though that's still the only bit of code I can find that was
ignoring color order. Puzzled. Reverting arm_version=7 for now.
BUG=skia:1843
Review URL: https://codereview.chromium.org/1051423002
- remove unused alex
- streamline Link's config
- remove misleading Daisy config:
1) armv7=1 does nothing. We meant to type arm_version=7 here.
2) arm_neon=1 does nothing unless arm_version == 7.
3) arm_thumb=0 is the default when arm_version <= 7.
4) skia_arch_width=32 is the default when skia_arch_type=arm.
I'd just fix this to make Daisy arm_version=7 and arm_neon=1 (and
arm_thumb=1, which I'm going to separately make the default for
arm_version=7), but there are known color-order bugs with our
NEON procs that would make Daisy start pushing bad images to
Gold. Going to take baby steps here...
BUG=skia:1843
Committed: https://skia.googlesource.com/skia/+/3c2809bc612f4a265770914f860d214c9665dc4a
CQ_EXTRA_TRYBOTS=client.skia.compile:Build-Ubuntu-GCC-Arm7-Debug-CrOS_Daisy-Trybot
Review URL: https://codereview.chromium.org/1051253002
Reason for revert:
arm_thumb not defined
Original issue's description:
> tidy up chromeos_setup.sh
>
> - remove unused alex
> - streamline Link's config
> - remove misleading Daisy config:
> 1) armv7=1 does nothing. We meant to type arm_version=7 here.
> 2) arm_neon=1 does nothing unless arm_version == 7.
> 3) arm_thumb=0 is the default when arm_version <= 7.
> 4) skia_arch_width=32 is the default when skia_arch_type=arm.
>
> I'd just fix this to make Daisy arm_version=7 and arm_neon=1 (and
> arm_thumb=1, which I'm going to separately make the default for
> arm_version=7), but there are known color-order bugs with our
> NEON procs that would make Daisy start pushing bad images to
> Gold. Going to take baby steps here...
>
> BUG=skia:1843
>
> Committed: https://skia.googlesource.com/skia/+/3c2809bc612f4a265770914f860d214c9665dc4aTBR=borenet@google.com,mtklein@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:1843
Review URL: https://codereview.chromium.org/1059443002
- remove unused alex
- streamline Link's config
- remove misleading Daisy config:
1) armv7=1 does nothing. We meant to type arm_version=7 here.
2) arm_neon=1 does nothing unless arm_version == 7.
3) arm_thumb=0 is the default when arm_version <= 7.
4) skia_arch_width=32 is the default when skia_arch_type=arm.
I'd just fix this to make Daisy arm_version=7 and arm_neon=1 (and
arm_thumb=1, which I'm going to separately make the default for
arm_version=7), but there are known color-order bugs with our
NEON procs that would make Daisy start pushing bad images to
Gold. Going to take baby steps here...
BUG=skia:1843
Review URL: https://codereview.chromium.org/1051253002
When checking the skia_arch_type for "x86", instead of doing an
== compare, check if "x86" in skia_arch_type, so it will cover
both x86 and x86_64.
Except when we specifically want x86.
Set skia_arch_width based on "64" in skia_arch_type. No need to specify
in scripts.
In gyp_to_android.py, create a separate var_dict for x86_64.
BUG=skia:3419
Review URL: https://codereview.chromium.org/916113002
Properly labels several methods as static.
Use XML_GetBuffer to avoid an extra copy.
Set the memory allocators to Skia's.
Set define in 'defines' instead of cflags.
Update debug dumper.
Review URL: https://codereview.chromium.org/915443002
Rename a few files to make their function clearer.
Update other files to remove dead code or improve function.
Review URL: https://codereview.chromium.org/865943007
This should make the android self-tests start passing again.
Rebaselined with:
$ python makefile_writer_tests.py --rebaseline
BUG=skia:
Review URL: https://codereview.chromium.org/860333004
When running gyp_to_android inside a Skia tree, it uses the gyp program
in third_party/externals. Inside an Android tree, we need to use a
different location for gyp (the Android copy of Skia, in external/skia,
does not contain third_party/externals).
The bot handles this by importing gyp_to_android and running its main
function directly.
Add command line arguments so a human can directly run gyp_to_android.
Review URL: https://codereview.chromium.org/864503002
Pass command strings and offset arrays as out parameters instead of
returning new arrays from the functions.
This simplifies debugger leak investigations, as the app leaks less by
design.
Review URL: https://codereview.chromium.org/821663003
When generating the tool makefiles, which also calls
android_framework_gyp, we also need to pass the gyp directory.
TBR=borenet
NOTRY=True
NOTREECHECKS=True
BUG=skia:3233
Review URL: https://codereview.chromium.org/804473005
Previously, a function was called using dlsym in skia_launcher.
Add a static initializer that changes the setting, and include that for
the tools we automate for testing.
Also only do va_copy if we actually use it.
BUG=skia:2454
Review URL: https://codereview.chromium.org/753543003
This CL updates various files in the includes directory to ensure that (1) they do
not depend on headers in /src and (2) that they minimize their dependence on external
headers.
To ensure that we don't regress this behavior a new build target has been added to
build a single cpp file that contains all* public includes and is compiled with
only those directories in the include path.
* The exception is those includes that depend on OS specific headers
BUG=skia:2941
NOTRY=true
Review URL: https://codereview.chromium.org/721903002
Update the generator to include a line for LOCAL_PICKUP_FILES. When
generating makefiles for our tests, they will now have the following line:
LOCAL_PICKUP_FILES := \
$(LOCAL_PATH)/../resources
This allows testing infrastructure to pick up resource files used by
our tests.
Update expectations files to test LOCAL_PICKUP_FILES.
BUG=skia:2454
Review URL: https://codereview.chromium.org/704393002
This removes ADB from the Skia checkout and also does some quick
checks to make sure the version of ADB used meets a minimum threshold
Review URL: https://codereview.chromium.org/692513003
When running gyp_to_android.py, generate the makefile for gm.
For now, remove json functionality and do not depend on json. This
allows us to build and run until solving skbug.com/2448.
gm/gm_expectations.cpp:
gm/gm_expectations.h:
gm/gmmain.cpp:
Remove all json functionality when SK_BUILD_JSON_WRITER is not defined.
This flag is not defined when SK_BUILD_FOR_ANDROID is defined.
gyp/gm.gyp:
Depend on skia and cutils.
platform_tools/android/bin/gyp_to_android.py:
Generate gm/Android.mk.
platform_tools/android/gyp_gen/makefile_writer.py:
Build gm/Android.mk when building external/skia.
Depends on https://codereview.chromium.org/282053002/
BUG=skia:2447
BUG=skia:2448
R=epoger@google.com
Author: scroggo@google.com
Review URL: https://codereview.chromium.org/281303003
git-svn-id: http://skia.googlecode.com/svn/trunk@14767 2bbb7eff-a529-9590-31e7-b0007b416f81
For now, remove json functionality and do not depend on json. This
allows us to build and run until solving skbug.com/2448.
bench/DeferredSurfaceCopyBench.cpp:
Include GrRenderTarget last, so SK_SUPPORT_GPU will be set properly.
bench/ResultsWriter.h:
bench/benchmain.cpp:
Remove JSONResultsWriter when SK_BUILD_JSON_WRITER is not defined,
which is the case for the Android framework build.
gyp/bench.gyp:
Depend on skia and cutils (for android_atomic_inc etc).
gyp/common_conditions.gypi:
Define SK_BUILD_JSON_WRITER when skia_build_json_writer is set.
gyp/common_variables.gypi:
Add a flag for skia_build_json_writer, and set it only when
skia_android_framework is not set.
gyp/jsoncpp.gyp:
Do not build jsoncpp when skia_build_json_writer is not defined.
include/utils/SkJSONCPP.h:
Do not include json headers when SK_BUILD_JSON_WRITER is not defined.
platform_tools/android/bin/gyp_to_android.py:
Generate bench/Android.mk.
platform_tools/android/gyp_gen/gypd_parser.py:
Skip dest_dir when checking for include_dirs.
platform_tools/android/gyp_gen/makefile_writer.py:
Build bench/Android.mk when building external/skia.
platform_tools/android/gyp_gen/tool_makefile_writer.py:
Add a parameter for putting the binary into /data/local/tmp.
BUG=skia:2447
BUG=skia:2448
R=halcanary@google.com, reed@google.com
Author: scroggo@google.com
Review URL: https://codereview.chromium.org/282053002
git-svn-id: http://skia.googlecode.com/svn/trunk@14760 2bbb7eff-a529-9590-31e7-b0007b416f81
gyp/apptype_console.gypi:
Don't include console app dependencies when building for Android framework.
gyp/tests.gyp:
Add/remove libraries for framework build.
platform_tools/android/bin/android_framework_gyp.py:
Moved to gyp_gen.
clean_up_gypd_files moved to this script.
platform_tools/android/bin/gyp_to_android.py:
Call new function for generating tool makefile.
Set LOCAL_MODULE.
platform_tools/android/gyp_gen/gypd_parser.py:
Support relative paths.
platform_tools/android/gyp_gen/makefile_writer.py:
Factor out helper functions to be used by tool writer.
LOCAL_MODULE is set elsewhere.
platform_tools/android/gyp_gen/tool_makefile_writer.py:
Multipurpose file for writing makefiles for tools. Should be able to use
it mostly unchanged for bench, gm, etc.
platform_tools/android/gyp_gen/vars_dict_lib.py:
Make the comments follow the style guide.
Add set().
Rename __li to __ordered_set
More/update tests:
platform_tools/android/tests/android_framework_gyp_tests.py
platform_tools/android/tests/expectations/Android.mk
platform_tools/android/tests/expectations/tool/Android.mk
platform_tools/android/tests/expectations/write_local_vars_append_arm
platform_tools/android/tests/expectations/write_local_vars_append_foo
platform_tools/android/tests/expectations/write_local_vars_append_no_name
platform_tools/android/tests/expectations/write_local_vars_no_append_arm
platform_tools/android/tests/expectations/write_local_vars_no_append_foo
platform_tools/android/tests/expectations/write_local_vars_no_append_no_name
platform_tools/android/tests/gyp_to_android_tests.py
platform_tools/android/tests/makefile_writer_tests.py
platform_tools/android/tests/ordered_set_tests.py
platform_tools/android/tests/test_variables.py
BUG=skia:2447
May require an update to the bot to remove pyc files.
R=halcanary@google.com, djsollen@google.com
Author: scroggo@google.com
Review URL: https://codereview.chromium.org/235883015
git-svn-id: http://skia.googlecode.com/svn/trunk@14408 2bbb7eff-a529-9590-31e7-b0007b416f81