skia2/gyp/shaderc.gyp

84 lines
2.7 KiB
Python

# 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': '../out/<(CONFIGURATION_NAME)/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)',
# 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)'],
},
],
'copies': [
{
'destination': '../out/<(CONFIGURATION_NAME)',
'files': ['<(shaderc_lib_full_path)'],
},
],
'all_dependent_settings': {
'link_settings': {
'libraries': [
'<(shaderc_lib_name)',
],
},
},
},
],
}