/*
 * Copyright (c) 2023 The LeafOS 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.
 */

filegroup {
    name: "ThemePickerLeaf_srcs",
    srcs: [
        "src/**/*.java",
        "src/**/*.kt",
    ],
}

filegroup {
    name: "ThemePickerLeaf_Manifest",
    srcs: [
        "AndroidManifest.xml",
    ],
}

genrule {
    name: "ThemePickerLeaf_res",
    tools: ["soong_zip"],
    srcs: [
        "res/**/*",
    ],
    out: ["ThemePickerLeaf_res.zip"],
    cmd: "INPUTS=($(in)) && "
        + "RES_DIR=$$(dirname $$(dirname $${INPUTS[0]})) && "
        + "$(location soong_zip) -o $(out) -C $$RES_DIR -D $$RES_DIR"
}

genrule {
    name: "ThemePickerLeaf_res_overrides",
    tools: ["soong_zip"],
    srcs: [
        "res_override/**/*",
    ],
    out: ["ThemePickerLeaf_res_overrides.zip"],
    cmd: "INPUTS=($(in)) && "
        + "RES_DIR=$$(dirname $$(dirname $${INPUTS[0]})) && "
        + "$(location soong_zip) -o $(out) -C $$RES_DIR -D $$RES_DIR"
}

android_library {
    name: "ThemePickerLeaf-core",
    defaults: ["ThemePicker_defaults"],
}

android_app {
    name: "ThemePickerLeaf",

    manifest: ":ThemePickerLeaf_Manifest",
    additional_manifests: [
        ":ThemePicker_Manifest",
        ":WallpaperPicker2_Manifest",
    ],

    srcs: [
        ":WallpaperPicker2_srcs",
        ":ThemePicker_srcs",
        ":ThemePickerLeaf_srcs",
    ],
    static_libs: [
        "ThemePickerLeaf-core",
    ],

    resource_zips: [
        ":WallpaperPicker2_res",
        ":ThemePicker_res",
        ":ThemePicker_res_overrides",
        ":ThemePickerLeaf_res",
        ":ThemePickerLeaf_res_overrides",
    ],

    optimize: {
        enabled: false,
    },
    kotlincflags: ["-Xjvm-default=enable"],
    use_embedded_native_libs: true,

    certificate: "platform",
    privileged: true,
    system_ext_specific: true,
    platform_apis: true,

    required: [
        "privapp_whitelist_com.android.wallpaper.xml",
        "default_permissions_com.android.wallpaper.xml",
    ],
    overrides: [
        "ThemePicker",
        "WallpaperCropper",
        "WallpaperPicker",
        "WallpaperPicker2",
    ],
}

prebuilt_etc_xml {
    name: "privapp_whitelist_com.android.wallpaper.xml",
    src: "privapp_whitelist_com.android.wallpaper.xml",
    system_ext_specific: true,
    filename_from_src: true,
    sub_dir: "permissions",
}

prebuilt_etc_xml {
    name: "default_permissions_com.android.wallpaper.xml",
    src: "default_permissions_com.android.wallpaper.xml",
    system_ext_specific: true,
    filename_from_src: true,
    sub_dir: "default-permissions",
}
