1# Copyright 2015 Google Inc. 2# 3# Use of this source code is governed by a BSD-style license that can be 4# found in the LICENSE file. 5 6# This GYP file stores the dependencies necessary to build Skia on the Android 7# platform. The OS doesn't provide many stable libraries as part of the 8# distribution so we have to build a few of them ourselves. 9# 10# NOTE: We tried adding the gyp file to the android/ directory at the root of 11# the Skia repo, but that resulted in the generated makefiles being created 12# outside of the out directory. We may be able to move the bulk of this gyp 13# to the /android directory and put a simple shim here, but that has yet to be 14# tested. 15 16{ 17 'variables': { 18 'skia_warnings_as_errors': 0, 19 }, 20 'targets': [ 21 { 22 'target_name': 'native_app_glue', 23 'type': 'static_library', 24 'direct_dependent_settings': { 25 'include_dirs': [ 26 '../third_party/native_app_glue', 27 ], 28 }, 29 'sources': [ 30 '../third_party/native_app_glue/android_native_app_glue.c', 31 '../third_party/native_app_glue/android_native_app_glue.h', 32 ], 33 'cflags': [ 34 '-w', 35 ], 36 }, 37 { 38 'target_name': 'cpu_features', 39 'type': 'static_library', 40 'direct_dependent_settings': { 41 'include_dirs': [ 42 '../third_party/cpufeatures', 43 ], 44 }, 45 'sources': [ 46 '../third_party/cpufeatures/cpu-features.c', 47 '../third_party/cpufeatures/cpu-features.h', 48 ], 49 'cflags': [ 50 '-w', 51 ], 52 }, 53 { 54 'target_name': 'ashmem', 55 'type': 'static_library', 56 'sources': [ 57 '../third_party/ashmem/cutils/ashmem.h', 58 '../third_party/ashmem/cutils/ashmem-dev.c' 59 ], 60 'direct_dependent_settings': { 61 'include_dirs': [ 62 '../third_party/ashmem', 63 ] 64 }, 65 }, 66 { 67 # This target is a dependency for all console-type Skia applications which 68 # will run on Android. Since Android requires us to load native code in 69 # shared libraries, we need a common entry point to wrap around main(). 70 # Here we also change the type of all would-be executables to be shared 71 # libraries. The alternative would be to introduce a condition in every 72 # executable target which changes to a shared library if the target OS is 73 # Android. This is nicer because the switch is in one place. 74 'target_name': 'Android_EntryPoint', 75 'type': 'static_library', 76 'direct_dependent_settings': { 77 'target_conditions': [ 78 # '_type' is an 'automatic variable' which is defined for any 79 # target which defines a key-value pair with 'type' as the key (so, 80 # all of them). Conditionals inside 'target_conditions' are evaluated 81 # *after* all other definitions and conditionals are evaluated, so 82 # we're guaranteed that '_type' will be defined when we get here. 83 # For more info, see: 84 # - http://code.google.com/p/gyp/wiki/InputFormatReference#Variables 85 # - http://codereview.appspot.com/6353065/ 86 ['_type == "executable"', { 87 'type': 'shared_library', 88 }], 89 ], 90 }, 91 }, 92 { 93 # This target is a dependency for Skia Sample application which runs on 94 # Android. Since Android requires us to load native code in shared 95 # libraries, we need a common entry point to wrap around main(). Here 96 # we also change the type of all would-be executables to be shared 97 # libraries. The alternative would be to introduce a condition in every 98 # executable target which changes to a shared library if the target OS is 99 # Android. This is nicer because the switch is in one place. 100 'target_name': 'Android_SampleApp', 101 'type': 'static_library', 102 'direct_dependent_settings': { 103 'target_conditions': [ 104 # '_type' is an 'automatic variable' which is defined for any 105 # target which defines a key-value pair with 'type' as the key (so, 106 # all of them). Conditionals inside 'target_conditions' are evaluated 107 # *after* all other definitions and conditionals are evaluated, so 108 # we're guaranteed that '_type' will be defined when we get here. 109 # For more info, see: 110 # - http://code.google.com/p/gyp/wiki/InputFormatReference#Variables 111 # - http://codereview.appspot.com/6353065/ 112 ['_type == "executable"', { 113 'type': 'shared_library', 114 }], 115 ], 116 'sources': [ 117 '../apps/sample_app/src/main/jni/com_skia_SkiaSampleRenderer.cpp', 118 ], 119 }, 120 }, 121 { 122 # This target is a dependency for VisualBench application which runs on 123 # Android. Since Android requires us to load native code in shared 124 # libraries, we need a common entry point to wrap around main(). Here 125 # we also change the type of all would-be executables to be shared 126 # libraries. The alternative would be to introduce a condition in every 127 # executable target which changes to a shared library if the target OS is 128 # Android. This is nicer because the switch is in one place. 129 'target_name': 'Android_VisualBench', 130 'type': 'static_library', 131 'direct_dependent_settings': { 132 'target_conditions': [ 133 # '_type' is an 'automatic variable' which is defined for any 134 # target which defines a key-value pair with 'type' as the key (so, 135 # all of them). Conditionals inside 'target_conditions' are evaluated 136 # *after* all other definitions and conditionals are evaluated, so 137 # we're guaranteed that '_type' will be defined when we get here. 138 # For more info, see: 139 # - http://code.google.com/p/gyp/wiki/InputFormatReference#Variables 140 # - http://codereview.appspot.com/6353065/ 141 ['_type == "executable"', { 142 'type': 'shared_library', 143 }], 144 ], 145 'include_dirs': [ 146 '../../../tools/timer/', 147 '../../../tools/VisualBench/', 148 ], 149 'sources': [ 150 '../apps/visualbench/src/main/jni/SkOSWindow_AndroidNative.cpp', 151 '../apps/visualbench/src/main/jni/main.cpp', 152 ], 153 }, 154 }, 155 { 156 # This target is a dependency for VisualBench application which runs on 157 # Android. Since Android requires us to load native code in shared 158 # libraries, we need a common entry point to wrap around main(). Here 159 # we also change the type of all would-be executables to be shared 160 # libraries. The alternative would be to introduce a condition in every 161 # executable target which changes to a shared library if the target OS is 162 # Android. This is nicer because the switch is in one place. 163 'target_name': 'Android_VisualBenchSDL', 164 'type': 'static_library', 165 'direct_dependent_settings': { 166 'target_conditions': [ 167 # '_type' is an 'automatic variable' which is defined for any 168 # target which defines a key-value pair with 'type' as the key (so, 169 # all of them). Conditionals inside 'target_conditions' are evaluated 170 # *after* all other definitions and conditionals are evaluated, so 171 # we're guaranteed that '_type' will be defined when we get here. 172 # For more info, see: 173 # - http://code.google.com/p/gyp/wiki/InputFormatReference#Variables 174 # - http://codereview.appspot.com/6353065/ 175 ['_type == "executable"', { 176 'type': 'shared_library', 177 }], 178 ], 179 }, 180 }, 181 ] 182} 183