# 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/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" ]
}
