aboutsummaryrefslogtreecommitdiffhomepage
path: root/gyp/shaderc.gyp
blob: 32026850afa1803b10a9235ffe67083a1b2e0617 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
# Copyright 2016 Google Inc.
#
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# Builds shaderc for the Vulkan backend
{
  'variables': {
    'variables': { # This is the dreaded nested variables dict so that we can
                   # have dependent variables
      'shaderc_build_configuration': '<(CONFIGURATION_NAME)',
      'conditions': [
        [ 'skia_os == "win"', {
          'shaderc_lib_name' : 'shaderc_combined.lib',
        }, {
          'shaderc_lib_name' : 'libshaderc_combined.a',
        }],
        [ 'skia_os == "win"', {
          'conditions': [
            [ 'MSVS_VERSION == "2013"', {
              'shaderc_project_type' : 'MSVS2013',
            }],
            [ 'MSVS_VERSION == "2015"', {
              'shaderc_project_type' : 'MSVS2015',
            }],
          ],
        }, {
          'shaderc_project_type' : 'ninja',
        }],
      ],
      'shaderc_out_path': '<(PRODUCT_DIR)/shaderc_out_<(skia_arch_type)',
    },
    # Export out of nested variables.
    'shaderc_build_configuration': '<(shaderc_build_configuration)',
    'shaderc_project_type': '<(shaderc_project_type)',
    'shaderc_out_path': '<(shaderc_out_path)',
    'shaderc_lib_name': '<(shaderc_lib_name)',
    'android_toolchain%': '',
    
    # On Windows the library winds up inside a 'Debug' or 'Release' dir, not so
    # with ninja project build.
    'conditions': [
      [ 'skia_os == "win"', {
        'shaderc_lib_full_path': '<(shaderc_out_path)/libshaderc/<(shaderc_build_configuration)/<(shaderc_lib_name)',
      }, {
        'shaderc_lib_full_path': '<(shaderc_out_path)/libshaderc/<(shaderc_lib_name)',
      }],
    ]
  },  
  'targets': [  
    {
      # Call out to a python script to build shaderc_combined and then copy it
      # to out/<Configuration>
      'target_name': 'shaderc_combined',
      'type': 'none',
      'actions': [
        {
          'action_name': 'compile_shaderc',
          'inputs': [
            '<!@(python find.py ../third_party/externals/shaderc2 "*")',
            '../tools/build_shaderc.py',
          ],
          'outputs': [
             '<(shaderc_lib_full_path)',
          ],
          'action': ['python', '../tools/build_shaderc.py', '-s', '../third_party/externals/shaderc2', '-o', '<(shaderc_out_path)', '-a', '<(skia_arch_type)', '-t', '<(shaderc_build_configuration)', '-p', '<(shaderc_project_type)', '-c', '<(android_toolchain)'],
        },
      ],     
      'copies': [
        {
          'destination': '<(PRODUCT_DIR)',
          'files': ['<(shaderc_lib_full_path)'],
        },
      ],
      'all_dependent_settings': {
        'link_settings': {
          'libraries': [
            '<(shaderc_lib_name)',
          ],
        },
      },
    },
  ],
}