# Copyright 2016 Google Inc.
#
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# Things are easiest for everyone if these source paths are absolute.
_src = get_path_info("../src", "abspath")
_include = get_path_info("../include", "abspath")

skia_sksl_sources = [
  "$_include/private/SkSLSampleUsage.h",
  "$_src/sksl/SkSLASTFile.h",
  "$_src/sksl/SkSLASTNode.cpp",
  "$_src/sksl/SkSLASTNode.h",
  "$_src/sksl/SkSLAnalysis.cpp",
  "$_src/sksl/SkSLAnalysis.h",
  "$_src/sksl/SkSLByteCode.cpp",
  "$_src/sksl/SkSLByteCode.h",
  "$_src/sksl/SkSLByteCodeGenerator.cpp",
  "$_src/sksl/SkSLByteCodeGenerator.h",
  "$_src/sksl/SkSLCFGGenerator.cpp",
  "$_src/sksl/SkSLCFGGenerator.h",
  "$_src/sksl/SkSLCompiler.cpp",
  "$_src/sksl/SkSLCompiler.h",
  "$_src/sksl/SkSLContext.h",
  "$_src/sksl/SkSLDefines.h",
  "$_src/sksl/SkSLDehydrator.cpp",
  "$_src/sksl/SkSLDehydrator.h",
  "$_src/sksl/SkSLErrorReporter.h",
  "$_src/sksl/SkSLExternalValue.h",
  "$_src/sksl/SkSLFileOutputStream.h",
  "$_src/sksl/SkSLIRGenerator.cpp",
  "$_src/sksl/SkSLIRGenerator.h",
  "$_src/sksl/SkSLInliner.cpp",
  "$_src/sksl/SkSLInliner.h",
  "$_src/sksl/SkSLLexer.cpp",
  "$_src/sksl/SkSLLexer.h",
  "$_src/sksl/SkSLMemoryLayout.h",
  "$_src/sksl/SkSLMemoryPool.h",
  "$_src/sksl/SkSLParser.cpp",
  "$_src/sksl/SkSLParser.h",
  "$_src/sksl/SkSLPool.cpp",
  "$_src/sksl/SkSLPool.h",
  "$_src/sksl/SkSLPosition.h",
  "$_src/sksl/SkSLRehydrator.cpp",
  "$_src/sksl/SkSLRehydrator.h",
  "$_src/sksl/SkSLSampleUsage.cpp",
  "$_src/sksl/SkSLSectionAndParameterHelper.cpp",
  "$_src/sksl/SkSLSectionAndParameterHelper.h",
  "$_src/sksl/SkSLString.cpp",
  "$_src/sksl/SkSLString.h",
  "$_src/sksl/SkSLStringStream.h",
  "$_src/sksl/SkSLUtil.cpp",
  "$_src/sksl/SkSLUtil.h",
  "$_src/sksl/ir/SkSLBinaryExpression.h",
  "$_src/sksl/ir/SkSLBlock.h",
  "$_src/sksl/ir/SkSLBoolLiteral.h",
  "$_src/sksl/ir/SkSLBreakStatement.h",
  "$_src/sksl/ir/SkSLConstructor.cpp",
  "$_src/sksl/ir/SkSLConstructor.h",
  "$_src/sksl/ir/SkSLContinueStatement.h",
  "$_src/sksl/ir/SkSLDiscardStatement.h",
  "$_src/sksl/ir/SkSLDoStatement.h",
  "$_src/sksl/ir/SkSLEnum.h",
  "$_src/sksl/ir/SkSLExpression.h",
  "$_src/sksl/ir/SkSLExpressionStatement.h",
  "$_src/sksl/ir/SkSLExtension.h",
  "$_src/sksl/ir/SkSLExternalFunctionCall.h",
  "$_src/sksl/ir/SkSLExternalValueReference.h",
  "$_src/sksl/ir/SkSLField.h",
  "$_src/sksl/ir/SkSLFieldAccess.h",
  "$_src/sksl/ir/SkSLFloatLiteral.h",
  "$_src/sksl/ir/SkSLForStatement.h",
  "$_src/sksl/ir/SkSLFunctionCall.h",
  "$_src/sksl/ir/SkSLFunctionDeclaration.h",
  "$_src/sksl/ir/SkSLFunctionDefinition.h",
  "$_src/sksl/ir/SkSLFunctionPrototype.h",
  "$_src/sksl/ir/SkSLFunctionReference.h",
  "$_src/sksl/ir/SkSLIRNode.h",
  "$_src/sksl/ir/SkSLIfStatement.h",
  "$_src/sksl/ir/SkSLIndexExpression.h",
  "$_src/sksl/ir/SkSLInlineMarker.h",
  "$_src/sksl/ir/SkSLIntLiteral.h",
  "$_src/sksl/ir/SkSLInterfaceBlock.h",
  "$_src/sksl/ir/SkSLLayout.h",
  "$_src/sksl/ir/SkSLModifiers.h",
  "$_src/sksl/ir/SkSLModifiersDeclaration.h",
  "$_src/sksl/ir/SkSLNop.h",
  "$_src/sksl/ir/SkSLNullLiteral.h",
  "$_src/sksl/ir/SkSLPostfixExpression.h",
  "$_src/sksl/ir/SkSLPrefixExpression.cpp",
  "$_src/sksl/ir/SkSLPrefixExpression.h",
  "$_src/sksl/ir/SkSLProgram.h",
  "$_src/sksl/ir/SkSLProgramElement.h",
  "$_src/sksl/ir/SkSLReturnStatement.h",
  "$_src/sksl/ir/SkSLSection.h",
  "$_src/sksl/ir/SkSLSetting.cpp",
  "$_src/sksl/ir/SkSLSetting.h",
  "$_src/sksl/ir/SkSLStatement.h",
  "$_src/sksl/ir/SkSLSwitchCase.h",
  "$_src/sksl/ir/SkSLSwitchStatement.h",
  "$_src/sksl/ir/SkSLSwizzle.h",
  "$_src/sksl/ir/SkSLSymbol.h",
  "$_src/sksl/ir/SkSLSymbolAlias.h",
  "$_src/sksl/ir/SkSLSymbolTable.cpp",
  "$_src/sksl/ir/SkSLSymbolTable.h",
  "$_src/sksl/ir/SkSLTernaryExpression.h",
  "$_src/sksl/ir/SkSLType.cpp",
  "$_src/sksl/ir/SkSLType.h",
  "$_src/sksl/ir/SkSLTypeReference.h",
  "$_src/sksl/ir/SkSLUnresolvedFunction.h",
  "$_src/sksl/ir/SkSLVarDeclarations.h",
  "$_src/sksl/ir/SkSLVariable.h",
  "$_src/sksl/ir/SkSLVariableReference.cpp",
  "$_src/sksl/ir/SkSLVariableReference.h",
  "$_src/sksl/ir/SkSLWhileStatement.h",
]

skia_sksl_gpu_sources = [
  "$_src/sksl/SkSLCPPCodeGenerator.cpp",
  "$_src/sksl/SkSLCPPCodeGenerator.h",
  "$_src/sksl/SkSLCPPUniformCTypes.cpp",
  "$_src/sksl/SkSLCPPUniformCTypes.h",
  "$_src/sksl/SkSLCodeGenerator.h",
  "$_src/sksl/SkSLGLSLCodeGenerator.cpp",
  "$_src/sksl/SkSLGLSLCodeGenerator.h",
  "$_src/sksl/SkSLHCodeGenerator.cpp",
  "$_src/sksl/SkSLHCodeGenerator.h",
  "$_src/sksl/SkSLMetalCodeGenerator.cpp",
  "$_src/sksl/SkSLMetalCodeGenerator.h",
  "$_src/sksl/SkSLOutputStream.cpp",
  "$_src/sksl/SkSLOutputStream.h",
  "$_src/sksl/SkSLPipelineStageCodeGenerator.cpp",
  "$_src/sksl/SkSLPipelineStageCodeGenerator.h",
  "$_src/sksl/SkSLSPIRVCodeGenerator.cpp",
  "$_src/sksl/SkSLSPIRVCodeGenerator.h",
  "$_src/sksl/SkSLSPIRVtoHLSL.cpp",
  "$_src/sksl/SkSLSPIRVtoHLSL.h",
]

skia_gpu_processor_sources = [
  "$_src/gpu/effects/GrAARectEffect.fp",
  "$_src/gpu/effects/GrAlphaThresholdFragmentProcessor.fp",
  "$_src/gpu/effects/GrArithmeticProcessor.fp",
  "$_src/gpu/effects/GrBlurredEdgeFragmentProcessor.fp",
  "$_src/gpu/effects/GrCircleBlurFragmentProcessor.fp",
  "$_src/gpu/effects/GrCircleEffect.fp",
  "$_src/gpu/effects/GrClampFragmentProcessor.fp",
  "$_src/gpu/effects/GrColorMatrixFragmentProcessor.fp",
  "$_src/gpu/effects/GrComposeLerpEffect.fp",
  "$_src/gpu/effects/GrConfigConversionEffect.fp",
  "$_src/gpu/effects/GrConstColorProcessor.fp",
  "$_src/gpu/effects/GrDeviceSpaceEffect.fp",
  "$_src/gpu/effects/GrDitherEffect.fp",
  "$_src/gpu/effects/GrEllipseEffect.fp",
  "$_src/gpu/effects/GrHSLToRGBFilterEffect.fp",
  "$_src/gpu/effects/GrHighContrastFilterEffect.fp",
  "$_src/gpu/effects/GrLumaColorFilterEffect.fp",
  "$_src/gpu/effects/GrMagnifierEffect.fp",
  "$_src/gpu/effects/GrMixerEffect.fp",
  "$_src/gpu/effects/GrOverrideInputFragmentProcessor.fp",
  "$_src/gpu/effects/GrRGBToHSLFilterEffect.fp",
  "$_src/gpu/effects/GrRRectBlurEffect.fp",
  "$_src/gpu/effects/GrRectBlurEffect.fp",
  "$_src/gpu/gradients/GrClampedGradientEffect.fp",
  "$_src/gpu/gradients/GrDualIntervalGradientColorizer.fp",
  "$_src/gpu/gradients/GrLinearGradientLayout.fp",
  "$_src/gpu/gradients/GrRadialGradientLayout.fp",
  "$_src/gpu/gradients/GrSingleIntervalGradientColorizer.fp",
  "$_src/gpu/gradients/GrSweepGradientLayout.fp",
  "$_src/gpu/gradients/GrTiledGradientEffect.fp",
  "$_src/gpu/gradients/GrTwoPointConicalGradientLayout.fp",
  "$_src/gpu/gradients/GrUnrolledBinaryGradientColorizer.fp",
]
