# 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/SkSLBuiltinTypes.cpp",
  "$_src/sksl/SkSLBuiltinTypes.h",
  "$_src/sksl/SkSLCFGGenerator.cpp",
  "$_src/sksl/SkSLCFGGenerator.h",
  "$_src/sksl/SkSLCompiler.cpp",
  "$_src/sksl/SkSLCompiler.h",
  "$_src/sksl/SkSLConstantFolder.cpp",
  "$_src/sksl/SkSLConstantFolder.h",
  "$_src/sksl/SkSLContext.cpp",
  "$_src/sksl/SkSLContext.h",
  "$_src/sksl/SkSLDefines.h",
  "$_src/sksl/SkSLDefinitionMap.cpp",
  "$_src/sksl/SkSLDefinitionMap.h",
  "$_src/sksl/SkSLDehydrator.cpp",
  "$_src/sksl/SkSLDehydrator.h",
  "$_src/sksl/SkSLErrorReporter.h",
  "$_src/sksl/SkSLExternalFunction.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/SkSLMangler.cpp",
  "$_src/sksl/SkSLMemoryLayout.h",
  "$_src/sksl/SkSLMemoryPool.h",
  "$_src/sksl/SkSLOperators.cpp",
  "$_src/sksl/SkSLOperators.h",
  "$_src/sksl/SkSLOutputStream.cpp",
  "$_src/sksl/SkSLOutputStream.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/SkSLVMGenerator.cpp",
  "$_src/sksl/SkSLVMGenerator.h",
  "$_src/sksl/dsl/DSL.h",
  "$_src/sksl/dsl/DSLBlock.cpp",
  "$_src/sksl/dsl/DSLBlock.h",
  "$_src/sksl/dsl/DSLCore.cpp",
  "$_src/sksl/dsl/DSLCore.h",
  "$_src/sksl/dsl/DSLExpression.cpp",
  "$_src/sksl/dsl/DSLExpression.h",
  "$_src/sksl/dsl/DSLFunction.cpp",
  "$_src/sksl/dsl/DSLFunction.h",
  "$_src/sksl/dsl/DSLModifiers.h",
  "$_src/sksl/dsl/DSLStatement.cpp",
  "$_src/sksl/dsl/DSLStatement.h",
  "$_src/sksl/dsl/DSLType.cpp",
  "$_src/sksl/dsl/DSLType.h",
  "$_src/sksl/dsl/DSLVar.cpp",
  "$_src/sksl/dsl/DSLVar.h",
  "$_src/sksl/dsl/priv/DSLFPs.cpp",
  "$_src/sksl/dsl/priv/DSLFPs.h",
  "$_src/sksl/dsl/priv/DSLWriter.cpp",
  "$_src/sksl/dsl/priv/DSLWriter.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/SkSLExternalFunctionReference.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/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/SkSLStructDefinition.h",
  "$_src/sksl/ir/SkSLSwitchCase.h",
  "$_src/sksl/ir/SkSLSwitchStatement.cpp",
  "$_src/sksl/ir/SkSLSwitchStatement.h",
  "$_src/sksl/ir/SkSLSwizzle.cpp",
  "$_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.cpp",
  "$_src/sksl/ir/SkSLVariable.h",
  "$_src/sksl/ir/SkSLVariableReference.cpp",
  "$_src/sksl/ir/SkSLVariableReference.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/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/GrMagnifierEffect.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",
]
