# Copyright 2015 Google Inc. # # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. # This GYP file stores the dependencies necessary to build Skia on the Android # platform. The OS doesn't provide many stable libraries as part of the # distribution so we have to build a few of them ourselves. # { 'variables': { 'conditions': [ [ 'skia_arch_type == "arm" and arm_version != 7', { 'android_arch%': "armeabi", 'android_variant%': "arm", }], [ 'skia_arch_type == "arm" and arm_version == 7', { 'android_arch%': "armeabi-v7a", 'android_variant%': "arm", }], [ 'skia_arch_type == "arm64"', { 'android_arch%': "arm64-v8a", 'android_variant%': "arm64", }], [ 'skia_arch_type == "x86"', { 'android_arch%': "x86", 'android_variant%': "x86", }], [ 'skia_arch_type == "x86_64"', { 'android_arch%': "x86_64", 'android_variant%': "x86_64", }], [ 'skia_arch_type == "mips32"', { 'android_arch%': "mips", 'android_variant%': "mips", }], [ 'skia_arch_type == "mips64"', { 'android_arch%': "mips64", 'android_variant%': "mips64", }], [ 'android_buildtype == "Release"', { 'android_apk_suffix': "release.apk", }, { 'android_apk_suffix': "debug.apk", }], ], }, 'includes' : [ 'canvasproof.gypi', 'vulkanviewer.gypi', ], 'targets': [ { 'target_name': 'CopySampleAppDeps', 'type': 'none', 'dependencies': [ 'skia_lib.gyp:skia_lib', 'SampleApp.gyp:SampleApp', ], 'copies': [ # Copy all shared libraries into the Android app's libs folder. Note # that this copy requires us to build SkiaAndroidApp after those # libraries, so that they exist by the time it occurs. If there are no # libraries to copy, this will cause an error in Make, but the app will # still build. { 'destination': '<(android_base)/apps/sample_app/src/main/libs/<(android_arch)', 'conditions': [ [ 'skia_shared_lib', { 'files': [ '<(SHARED_LIB_DIR)/libSampleApp.so', '<(SHARED_LIB_DIR)/libskia_android.so', ]}, { 'files': [ '<(SHARED_LIB_DIR)/libSampleApp.so', ]} ], ], }, ], }, { 'target_name': 'SampleApp_APK', 'type': 'none', 'dependencies': [ 'CopySampleAppDeps', ], 'actions': [ { 'action_name': 'SampleApp_apk', 'inputs': [ '<(android_base)/apps/sample_app/src/main/AndroidManifest.xml', '<(android_base)/apps/sample_app/src/main/jni/com_skia_SkiaSampleRenderer.h', '<(android_base)/apps/sample_app/src/main/jni/com_skia_SkiaSampleRenderer.cpp', '<(android_base)/apps/sample_app/src/main/java/com/skia/SkiaSampleActivity.java', '<(android_base)/apps/sample_app/src/main/java/com/skia/SkiaSampleRenderer.java', '<(android_base)/apps/sample_app/src/main/java/com/skia/SkiaSampleView.java', '<(android_base)/apps/sample_app/src/main/libs/<(android_arch)/libSampleApp.so', ], 'conditions': [ [ 'skia_shared_lib', { 'inputs': [ '<(android_base)/apps/sample_app/src/main/libs/<(android_arch)/libskia_android.so', ], }], ], 'outputs': [ '<(android_base)/apps/sample_app/build/outputs/apk/sample_app-<(android_variant)-<(android_apk_suffix)', ], 'action': [ '<(android_base)/apps/gradlew', ':sample_app:assemble<(android_variant)<(android_buildtype)', '-p<(android_base)/apps/sample_app', '-PsuppressNativeBuild', ], }, ], }, { 'target_name': 'CopyVisualBenchDeps', 'type': 'none', 'dependencies': [ 'skia_lib.gyp:skia_lib', 'visualbench.gyp:visualbench', ], 'copies': [ # Copy all shared libraries into the Android app's libs folder. Note # that this copy requires us to build SkiaAndroidApp after those # libraries, so that they exist by the time it occurs. If there are no # libraries to copy, this will cause an error in Make, but the app will # still build. { 'destination': '<(android_base)/apps/visualbench/src/main/libs/<(android_arch)', 'conditions': [ [ 'skia_shared_lib', { 'files': [ '<(SHARED_LIB_DIR)/libskia_android.so', '<(SHARED_LIB_DIR)/libvisualbench.so', ]}, { 'files': [ '<(SHARED_LIB_DIR)/libvisualbench.so', ]} ], ], }, ], }, { 'target_name': 'VisualBench_APK', 'type': 'none', 'dependencies': [ 'CopyVisualBenchDeps', ], 'actions': [ { 'action_name': 'SkiaVisualBench_apk', 'inputs': [ '<(android_base)/apps/visualbench/src/main/AndroidManifest.xml', '<(android_base)/apps/visualbench/src/main/java/com/skia/VisualBenchActivity.java', '<(android_base)/apps/visualbench/src/main/libs/<(android_arch)/libvisualbench.so', ], 'conditions': [ [ 'skia_shared_lib', { 'inputs': [ '<(android_base)/apps/visualbench/src/main/libs/<(android_arch)/libskia_android.so', ], }], ], 'outputs': [ '<(android_base)/apps/visualbench/build/outputs/apk/visualbench-<(android_variant)-<(android_apk_suffix)', ], 'action': [ '<(android_base)/apps/gradlew', ':visualbench:assemble<(android_variant)<(android_buildtype)', '-p<(android_base)/apps/visualbench', '-PsuppressNativeBuild', ], }, ], }, { 'target_name': 'VisualBenchTest_APK', 'type': 'none', 'dependencies': [ 'VisualBench_APK', ], 'actions': [ { 'action_name': 'SkiaVisualBench_apk', 'inputs': [ '<(android_base)/apps/visualbench/src/main/AndroidManifest.xml', '<(android_base)/apps/visualbench/src/main/java/com/skia/VisualBenchActivity.java', '<(android_base)/apps/visualbench/src/main/java/com/skia/VisualBenchTestActivity.java', '<(android_base)/apps/visualbench/src/main/libs/<(android_arch)/libvisualbench.so', ], 'conditions': [ [ 'skia_shared_lib', { 'inputs': [ '<(android_base)/apps/visualbench/src/main/libs/<(android_arch)/libskia_android.so', ], }], ], 'outputs': [ '<(android_base)/apps/visualbench/build/outputs/apk/visualbench-<(android_variant)-debug-androidTest-unaligned.apk', ], 'action': [ '<(android_base)/apps/gradlew', ':visualbench:assemble<(android_variant)DebugAndroidTest', '-p<(android_base)/apps/visualbench', '-PsuppressNativeBuild', ], }, ], }, # TODO all of this duplicated code can be removed when SDL becomes the default # Currently, to use this you have to override skia_use_sdl { 'target_name': 'CopyVisualBenchSDLDeps', 'type': 'none', 'dependencies': [ 'skia_lib.gyp:skia_lib', 'visualbench.gyp:visualbench', ], 'copies': [ # Copy all shared libraries into the Android app's libs folder. Note # that this copy requires us to build SkiaAndroidApp after those # libraries, so that they exist by the time it occurs. If there are no # libraries to copy, this will cause an error in Make, but the app will # still build. { 'destination': '<(android_base)/apps/visualbenchsdl/src/main/libs/<(android_arch)', 'conditions': [ [ 'skia_shared_lib', { 'files': [ '<(SHARED_LIB_DIR)/libskia_android.so', '<(SHARED_LIB_DIR)/libvisualbench.so', ]}, { 'files': [ '<(SHARED_LIB_DIR)/libvisualbench.so', ]} ], ], }, ], }, { 'target_name': 'VisualBenchSDL_APK', 'type': 'none', 'dependencies': [ 'CopyVisualBenchSDLDeps', ], 'actions': [ { 'action_name': 'SkiaVisualBenchSDL_apk', 'inputs': [ '<(android_base)/apps/visualbenchsdl/src/main/AndroidManifest.xml', '<(android_base)/apps/visualbenchsdl/src/main/java/org/libsdl/app/SDLActivity.java', '<(android_base)/apps/visualbenchsdl/src/main/java/com/skia/VisualBenchActivity.java', '<(android_base)/apps/visualbenchsdl/src/main/libs/<(android_arch)/libvisualbench.so', ], 'conditions': [ [ 'skia_shared_lib', { 'inputs': [ '<(android_base)/apps/visualbenchsdl/src/main/libs/<(android_arch)/libskia_android.so', ], }], ], 'outputs': [ '<(android_base)/apps/visualbenchsdl/build/outputs/apk/visualbench-<(android_variant)-<(android_apk_suffix)', ], 'action': [ '<(android_base)/apps/gradlew', ':visualbenchsdl:assemble<(android_variant)<(android_buildtype)', '-p<(android_base)/apps/visualbenchsdl', '-PsuppressNativeBuild', ], }, ], }, ], }