# Copyright 2024 The Dawn & Tint Authors
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# 1. Redistributions of source code must retain the above copyright notice, this
#    list of conditions and the following disclaimer.
#
# 2. Redistributions in binary form must reproduce the above copyright notice,
#    this list of conditions and the following disclaimer in the documentation
#    and/or other materials provided with the distribution.
#
# 3. Neither the name of the copyright holder nor the names of its
#    contributors may be used to endorse or promote products derived from
#    this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

import("//generator/dawn_generator.gni")

dawn_json_generator("kotlin_gen") {
  target = "kotlin"
  outputs = [
    "java/android/dawn/AdapterInfo.kt",
    "java/android/dawn/AdapterProperties.kt",
    "java/android/dawn/AdapterType.kt",
    "java/android/dawn/AddressMode.kt",
    "java/android/dawn/BackendType.kt",
    "java/android/dawn/BindGroupDescriptor.kt",
    "java/android/dawn/BindGroupEntry.kt",
    "java/android/dawn/BindGroupLayoutDescriptor.kt",
    "java/android/dawn/BindGroupLayoutEntry.kt",
    "java/android/dawn/BlendComponent.kt",
    "java/android/dawn/BlendFactor.kt",
    "java/android/dawn/BlendOperation.kt",
    "java/android/dawn/BlendState.kt",
    "java/android/dawn/BufferBindingLayout.kt",
    "java/android/dawn/BufferBindingType.kt",
    "java/android/dawn/BufferDescriptor.kt",
    "java/android/dawn/BufferMapAsyncStatus.kt",
    "java/android/dawn/BufferMapCallbackInfo.kt",
    "java/android/dawn/BufferMapState.kt",
    "java/android/dawn/BufferUsage.kt",
    "java/android/dawn/CallbackMode.kt",
    "java/android/dawn/Color.kt",
    "java/android/dawn/ColorTargetState.kt",
    "java/android/dawn/ColorWriteMask.kt",
    "java/android/dawn/CommandBufferDescriptor.kt",
    "java/android/dawn/CommandEncoderDescriptor.kt",
    "java/android/dawn/CompareFunction.kt",
    "java/android/dawn/CompilationInfo.kt",
    "java/android/dawn/CompilationInfoCallbackInfo.kt",
    "java/android/dawn/CompilationInfoRequestStatus.kt",
    "java/android/dawn/CompilationMessage.kt",
    "java/android/dawn/CompilationMessageType.kt",
    "java/android/dawn/CompositeAlphaMode.kt",
    "java/android/dawn/ComputePassDescriptor.kt",
    "java/android/dawn/ComputePassTimestampWrites.kt",
    "java/android/dawn/ComputePipelineDescriptor.kt",
    "java/android/dawn/ConstantEntry.kt",
    "java/android/dawn/Constants.kt",
    "java/android/dawn/CreateComputePipelineAsyncCallbackInfo.kt",
    "java/android/dawn/CreatePipelineAsyncStatus.kt",
    "java/android/dawn/CreateRenderPipelineAsyncCallbackInfo.kt",
    "java/android/dawn/CullMode.kt",
    "java/android/dawn/DepthStencilState.kt",
    "java/android/dawn/DeviceDescriptor.kt",
    "java/android/dawn/DeviceLostCallbackInfo.kt",
    "java/android/dawn/DeviceLostReason.kt",
    "java/android/dawn/ErrorFilter.kt",
    "java/android/dawn/ErrorType.kt",
    "java/android/dawn/Extent3D.kt",
    "java/android/dawn/FeatureName.kt",
    "java/android/dawn/FilterMode.kt",
    "java/android/dawn/FragmentState.kt",
    "java/android/dawn/FrontFace.kt",
    "java/android/dawn/Future.kt",
    "java/android/dawn/FutureWaitInfo.kt",
    "java/android/dawn/ImageCopyBuffer.kt",
    "java/android/dawn/ImageCopyTexture.kt",
    "java/android/dawn/IndexFormat.kt",
    "java/android/dawn/InstanceDescriptor.kt",
    "java/android/dawn/InstanceFeatures.kt",
    "java/android/dawn/Limits.kt",
    "java/android/dawn/LoadOp.kt",
    "java/android/dawn/MapMode.kt",
    "java/android/dawn/MipmapFilterMode.kt",
    "java/android/dawn/MultisampleState.kt",
    "java/android/dawn/Origin3D.kt",
    "java/android/dawn/PipelineLayoutDescriptor.kt",
    "java/android/dawn/PopErrorScopeCallbackInfo.kt",
    "java/android/dawn/PopErrorScopeStatus.kt",
    "java/android/dawn/PowerPreference.kt",
    "java/android/dawn/PresentMode.kt",
    "java/android/dawn/PrimitiveDepthClipControl.kt",
    "java/android/dawn/PrimitiveState.kt",
    "java/android/dawn/PrimitiveTopology.kt",
    "java/android/dawn/ProgrammableStageDescriptor.kt",
    "java/android/dawn/QuerySetDescriptor.kt",
    "java/android/dawn/QueryType.kt",
    "java/android/dawn/QueueDescriptor.kt",
    "java/android/dawn/QueueWorkDoneCallbackInfo.kt",
    "java/android/dawn/QueueWorkDoneStatus.kt",
    "java/android/dawn/RenderBundleDescriptor.kt",
    "java/android/dawn/RenderBundleEncoderDescriptor.kt",
    "java/android/dawn/RenderPassColorAttachment.kt",
    "java/android/dawn/RenderPassDepthStencilAttachment.kt",
    "java/android/dawn/RenderPassDescriptor.kt",
    "java/android/dawn/RenderPassDescriptorMaxDrawCount.kt",
    "java/android/dawn/RenderPassTimestampWrites.kt",
    "java/android/dawn/RenderPipelineDescriptor.kt",
    "java/android/dawn/RequestAdapterCallbackInfo.kt",
    "java/android/dawn/RequestAdapterOptions.kt",
    "java/android/dawn/RequestAdapterStatus.kt",
    "java/android/dawn/RequestDeviceCallbackInfo.kt",
    "java/android/dawn/RequestDeviceStatus.kt",
    "java/android/dawn/RequiredLimits.kt",
    "java/android/dawn/SType.kt",
    "java/android/dawn/SamplerBindingLayout.kt",
    "java/android/dawn/SamplerBindingType.kt",
    "java/android/dawn/SamplerDescriptor.kt",
    "java/android/dawn/ShaderModuleDescriptor.kt",
    "java/android/dawn/ShaderModuleSPIRVDescriptor.kt",
    "java/android/dawn/ShaderModuleWGSLDescriptor.kt",
    "java/android/dawn/ShaderStage.kt",
    "java/android/dawn/Status.kt",
    "java/android/dawn/StencilFaceState.kt",
    "java/android/dawn/StencilOperation.kt",
    "java/android/dawn/StorageTextureAccess.kt",
    "java/android/dawn/StorageTextureBindingLayout.kt",
    "java/android/dawn/StoreOp.kt",
    "java/android/dawn/SupportedLimits.kt",
    "java/android/dawn/SurfaceCapabilities.kt",
    "java/android/dawn/SurfaceConfiguration.kt",
    "java/android/dawn/SurfaceDescriptor.kt",
    "java/android/dawn/SurfaceDescriptorFromAndroidNativeWindow.kt",
    "java/android/dawn/SurfaceDescriptorFromCanvasHTMLSelector.kt",
    "java/android/dawn/SurfaceGetCurrentTextureStatus.kt",
    "java/android/dawn/SurfaceTexture.kt",
    "java/android/dawn/SwapChainDescriptor.kt",
    "java/android/dawn/TextureAspect.kt",
    "java/android/dawn/TextureBindingLayout.kt",
    "java/android/dawn/TextureBindingViewDimensionDescriptor.kt",
    "java/android/dawn/TextureDataLayout.kt",
    "java/android/dawn/TextureDescriptor.kt",
    "java/android/dawn/TextureDimension.kt",
    "java/android/dawn/TextureFormat.kt",
    "java/android/dawn/TextureSampleType.kt",
    "java/android/dawn/TextureUsage.kt",
    "java/android/dawn/TextureViewDescriptor.kt",
    "java/android/dawn/TextureViewDimension.kt",
    "java/android/dawn/UncapturedErrorCallbackInfo.kt",
    "java/android/dawn/VertexAttribute.kt",
    "java/android/dawn/VertexBufferLayout.kt",
    "java/android/dawn/VertexFormat.kt",
    "java/android/dawn/VertexState.kt",
    "java/android/dawn/VertexStepMode.kt",
    "java/android/dawn/WGSLFeatureName.kt",
    "java/android/dawn/WaitStatus.kt",
  ]
}

group("android") {
  deps = [ ":kotlin_gen" ]
}
