Home | History | Annotate | Download | only in gyp
      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 {
     11   'variables': {
     12     'conditions': [
     13       [ 'skia_arch_type == "arm" and arm_version != 7', {
     14         'android_arch%': "armeabi",
     15         'android_variant%': "arm",
     16       }],
     17       [ 'skia_arch_type == "arm" and arm_version == 7', {
     18         'android_arch%': "armeabi-v7a",
     19         'android_variant%': "arm",
     20       }],
     21       [ 'skia_arch_type == "arm64"', {
     22         'android_arch%': "arm64-v8a",
     23         'android_variant%': "arm64",
     24       }],
     25       [ 'skia_arch_type == "x86"', {
     26         'android_arch%': "x86",
     27         'android_variant%': "x86",
     28       }],
     29       [ 'skia_arch_type == "x86_64"', {
     30         'android_arch%': "x86_64",
     31         'android_variant%': "x86_64",
     32       }],
     33       [ 'skia_arch_type == "mips32"', {
     34         'android_arch%': "mips",
     35         'android_variant%': "mips",
     36       }],
     37       [ 'skia_arch_type == "mips64"', {
     38         'android_arch%': "mips64",
     39         'android_variant%': "mips64",
     40       }],
     41       [ 'android_buildtype == "Release"', {
     42         'android_apk_suffix': "release.apk",
     43       }, {
     44         'android_apk_suffix': "debug.apk",
     45       }],
     46     ],
     47   },
     48   'includes' : [ 'canvasproof.gypi', ],
     49   'targets': [
     50     {
     51       'target_name': 'CopySampleAppDeps',
     52       'type': 'none',
     53       'dependencies': [
     54         'skia_lib.gyp:skia_lib',
     55         'SampleApp.gyp:SampleApp',
     56       ],
     57       'copies': [
     58         # Copy all shared libraries into the Android app's libs folder.  Note
     59         # that this copy requires us to build SkiaAndroidApp after those
     60         # libraries, so that they exist by the time it occurs.  If there are no
     61         # libraries to copy, this will cause an error in Make, but the app will
     62         # still build.
     63         {
     64           'destination': '<(android_base)/apps/sample_app/src/main/libs/<(android_arch)',
     65           'conditions': [
     66             [ 'skia_shared_lib', {
     67               'files': [
     68                 '<(SHARED_LIB_DIR)/libSampleApp.so',
     69                 '<(SHARED_LIB_DIR)/libskia_android.so',
     70               ]}, {
     71               'files': [
     72                 '<(SHARED_LIB_DIR)/libSampleApp.so',
     73              ]}
     74            ],
     75           ],
     76         },
     77       ],
     78     },
     79     {
     80       'target_name': 'SampleApp_APK',
     81       'type': 'none',
     82       'dependencies': [
     83         'CopySampleAppDeps',
     84       ],
     85       'actions': [
     86         {
     87           'action_name': 'SampleApp_apk',
     88           'inputs': [
     89             '<(android_base)/apps/sample_app/src/main/AndroidManifest.xml',
     90             '<(android_base)/apps/sample_app/src/main/jni/com_skia_SkiaSampleRenderer.h',
     91             '<(android_base)/apps/sample_app/src/main/jni/com_skia_SkiaSampleRenderer.cpp',
     92             '<(android_base)/apps/sample_app/src/main/java/com/skia/SkiaSampleActivity.java',
     93             '<(android_base)/apps/sample_app/src/main/java/com/skia/SkiaSampleRenderer.java',
     94             '<(android_base)/apps/sample_app/src/main/java/com/skia/SkiaSampleView.java',
     95             '<(android_base)/apps/sample_app/src/main/libs/<(android_arch)/libSampleApp.so',
     96           ],
     97           'conditions': [
     98             [ 'skia_shared_lib', {
     99               'inputs': [
    100                 '<(android_base)/apps/sample_app/src/main/libs/<(android_arch)/libskia_android.so',
    101               ],
    102             }],
    103           ],
    104           'outputs': [
    105             '<(android_base)/apps/sample_app/build/outputs/apk/sample_app-<(android_variant)-<(android_apk_suffix)',
    106           ],
    107           'action': [
    108             '<(android_base)/apps/gradlew',
    109             ':sample_app:assemble<(android_variant)<(android_buildtype)',
    110             '-p<(android_base)/apps/sample_app',
    111             '-PsuppressNativeBuild',
    112           ],
    113         },
    114       ],
    115     },
    116     {
    117       'target_name': 'CopyVisualBenchDeps',
    118       'type': 'none',
    119       'dependencies': [
    120         'skia_lib.gyp:skia_lib',
    121         'visualbench.gyp:visualbench',
    122       ],
    123 
    124       'copies': [
    125         # Copy all shared libraries into the Android app's libs folder.  Note
    126         # that this copy requires us to build SkiaAndroidApp after those
    127         # libraries, so that they exist by the time it occurs.  If there are no
    128         # libraries to copy, this will cause an error in Make, but the app will
    129         # still build.
    130         {
    131           'destination': '<(android_base)/apps/visualbench/src/main/libs/<(android_arch)',
    132           'conditions': [
    133             [ 'skia_shared_lib', {
    134               'files': [
    135                 '<(SHARED_LIB_DIR)/libskia_android.so',
    136                 '<(SHARED_LIB_DIR)/libvisualbench.so',
    137               ]}, {
    138               'files': [
    139                 '<(SHARED_LIB_DIR)/libvisualbench.so',
    140              ]}
    141            ],
    142           ],
    143         },
    144       ],
    145     },
    146     {
    147       'target_name': 'VisualBench_APK',
    148       'type': 'none',
    149       'dependencies': [
    150         'CopyVisualBenchDeps',
    151       ],
    152       'actions': [
    153         {
    154           'action_name': 'SkiaVisualBench_apk',
    155           'inputs': [
    156             '<(android_base)/apps/visualbench/src/main/AndroidManifest.xml',
    157             '<(android_base)/apps/visualbench/src/main/java/com/skia/VisualBenchActivity.java',
    158             '<(android_base)/apps/visualbench/src/main/libs/<(android_arch)/libvisualbench.so',
    159           ],
    160           'conditions': [
    161             [ 'skia_shared_lib', {
    162               'inputs': [
    163                 '<(android_base)/apps/visualbench/src/main/libs/<(android_arch)/libskia_android.so',
    164               ],
    165             }],
    166           ],
    167           'outputs': [
    168             '<(android_base)/apps/visualbench/build/outputs/apk/visualbench-<(android_variant)-<(android_apk_suffix)',
    169           ],
    170           'action': [
    171             '<(android_base)/apps/gradlew',
    172             ':visualbench:assemble<(android_variant)<(android_buildtype)',
    173             '-p<(android_base)/apps/visualbench',
    174             '-PsuppressNativeBuild',
    175           ],
    176         },
    177       ],
    178     },
    179     {
    180       'target_name': 'VisualBenchTest_APK',
    181       'type': 'none',
    182       'dependencies': [
    183         'VisualBench_APK',
    184       ],
    185       'actions': [
    186         {
    187           'action_name': 'SkiaVisualBench_apk',
    188           'inputs': [
    189             '<(android_base)/apps/visualbench/src/main/AndroidManifest.xml',
    190             '<(android_base)/apps/visualbench/src/main/java/com/skia/VisualBenchActivity.java',
    191             '<(android_base)/apps/visualbench/src/main/java/com/skia/VisualBenchTestActivity.java',
    192             '<(android_base)/apps/visualbench/src/main/libs/<(android_arch)/libvisualbench.so',
    193           ],
    194           'conditions': [
    195             [ 'skia_shared_lib', {
    196               'inputs': [
    197                 '<(android_base)/apps/visualbench/src/main/libs/<(android_arch)/libskia_android.so',
    198               ],
    199             }],
    200           ],
    201           'outputs': [
    202             '<(android_base)/apps/visualbench/build/outputs/apk/visualbench-<(android_variant)-debug-androidTest-unaligned.apk',
    203           ],
    204           'action': [
    205             '<(android_base)/apps/gradlew',
    206             ':visualbench:assemble<(android_variant)DebugAndroidTest',
    207             '-p<(android_base)/apps/visualbench',
    208             '-PsuppressNativeBuild',
    209           ],
    210         },
    211       ],
    212     },
    213     # TODO all of this duplicated code can be removed when SDL becomes the default
    214     # Currently, to use this you have to override skia_use_sdl
    215     {
    216       'target_name': 'CopyVisualBenchSDLDeps',
    217       'type': 'none',
    218       'dependencies': [
    219         'skia_lib.gyp:skia_lib',
    220         'visualbench.gyp:visualbench',
    221       ],
    222 
    223       'copies': [
    224         # Copy all shared libraries into the Android app's libs folder.  Note
    225         # that this copy requires us to build SkiaAndroidApp after those
    226         # libraries, so that they exist by the time it occurs.  If there are no
    227         # libraries to copy, this will cause an error in Make, but the app will
    228         # still build.
    229         {
    230           'destination': '<(android_base)/apps/visualbenchsdl/src/main/libs/<(android_arch)',
    231           'conditions': [
    232             [ 'skia_shared_lib', {
    233               'files': [
    234                 '<(SHARED_LIB_DIR)/libskia_android.so',
    235                 '<(SHARED_LIB_DIR)/libvisualbench.so',
    236               ]}, {
    237               'files': [
    238                 '<(SHARED_LIB_DIR)/libvisualbench.so',
    239              ]}
    240            ],
    241           ],
    242         },
    243       ],
    244     },
    245     {
    246       'target_name': 'VisualBenchSDL_APK',
    247       'type': 'none',
    248       'dependencies': [
    249         'CopyVisualBenchSDLDeps',
    250       ],
    251       'actions': [
    252         {
    253           'action_name': 'SkiaVisualBenchSDL_apk',
    254           'inputs': [
    255             '<(android_base)/apps/visualbenchsdl/src/main/AndroidManifest.xml',
    256             '<(android_base)/apps/visualbenchsdl/src/main/java/org/libsdl/app/SDLActivity.java',
    257             '<(android_base)/apps/visualbenchsdl/src/main/java/com/skia/VisualBenchActivity.java',
    258             '<(android_base)/apps/visualbenchsdl/src/main/libs/<(android_arch)/libvisualbench.so',
    259           ],
    260           'conditions': [
    261             [ 'skia_shared_lib', {
    262               'inputs': [
    263                 '<(android_base)/apps/visualbenchsdl/src/main/libs/<(android_arch)/libskia_android.so',
    264               ],
    265             }],
    266           ],
    267           'outputs': [
    268             '<(android_base)/apps/visualbenchsdl/build/outputs/apk/visualbench-<(android_variant)-<(android_apk_suffix)',
    269           ],
    270           'action': [
    271             '<(android_base)/apps/gradlew',
    272             ':visualbenchsdl:assemble<(android_variant)<(android_buildtype)',
    273             '-p<(android_base)/apps/visualbenchsdl',
    274             '-PsuppressNativeBuild',
    275           ],
    276         },
    277       ],
    278     },
    279   ],
    280 }
    281