/*
 * Copyright (C) 2022 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package {
    // See: http://go/android-license-faq
    default_applicable_licenses: ["Android-Apache-2.0"],
}

prebuilt_defaults {
    name: "emu_camera_config_defaults",
    relative_install_path: "config",
    soc_specific: true,
    installable: false,
}

prebuilt_etc {
    name: "emu_camera_back.json",
    src: "emu_camera_back.json",
    defaults: ["emu_camera_config_defaults"],
}

prebuilt_etc {
    name: "emu_camera_depth.json",
    src: "emu_camera_depth.json",
    defaults: ["emu_camera_config_defaults"],
}

prebuilt_etc {
    name: "emu_camera_front.json",
    src: "emu_camera_front.json",
    defaults: ["emu_camera_config_defaults"],
}

prebuilt_etc {
    name: "emu_camera_external.json",
    src: "emu_camera_external.json",
    defaults: ["emu_camera_config_defaults"],
}
