package(default_visibility = ["//visibility:public"])

filegroup(
    name = "files",
    srcs = ["."],
)

java_import(
    name = "appcompat_v7_import",
    jars = ["extras/android/support/v7/appcompat/libs/android-support-v7-appcompat.jar"]
)

android_library(
    name = "appcompat_v7",
    custom_package = "android.support.v7.appcompat",
    manifest = "extras/android/support/v7/appcompat/AndroidManifest.xml",
    resource_files = glob(["extras/android/support/v7/appcompat/res/**"]),
    deps = [":appcompat_v7_import"]
)

java_import(
    name = "appcompat_v4",
    jars = ["extras/android/support/v4/android-support-v4.jar"]
)

android_sdk(
    name = "sdk",
    proguard = "tools/proguard/bin/proguard.sh",
    aapt = ":aapt_binary",
    dx = ":dx_binary",
    main_dex_list_creator = ":main_dex_list_creator",
    adb = "platform-tools/adb",
    framework_aidl = "platforms/android-%api_level%/framework.aidl",
    aidl = ":aidl_binary",
    android_jar = "platforms/android-%api_level%/android.jar",
    shrinked_android_jar = "platforms/android-%api_level%/android.jar",
    annotations_jar = "tools/support/annotations.jar",
    main_dex_classes = "build-tools/%build_tools_version%/mainDexClasses.rules",
    apkbuilder = ":apkbuilder_binary",
    zipalign = ":zipalign_binary",
    android_jack = ":empty",
    jack = ":fail",
    jill = ":fail",
    resource_extractor = ":fail"
)

filegroup(
    name = "build_tools_libs",
    srcs = glob(["build-tools/%build_tools_version%/lib/**"])
)

[genrule(
     name = tool + "_runner",
     outs = [tool + "_runner.sh"],
     srcs = [],
     cmd  = "\n".join(["cat > $@ << 'EOF'",
         "#!/bin/bash -e",
         "BINARY=$${0##*-out/host/bin/}",
         "DIRNAME=$$(dirname $$BINARY)",
         "SDK=$${0}.runfiles/$${DIRNAME}",
         "exec $${SDK}/build-tools/%build_tools_version%/" + tool + " $$*",
         "EOF\n"]),
) for tool in ["aapt", "aidl", "zipalign"]]

[sh_binary(
    name = tool + "_binary",
    srcs = [tool + "_runner.sh"],
    data = [
        ":build_tools_libs",
        "build-tools/%build_tools_version%/" + tool
    ],
) for tool in ["aapt", "aidl", "zipalign"]]

sh_binary(
    name = "fail",
    srcs = ["fail.sh"])

genrule(
    name = "generate_fail_sh",
    srcs = [],
    outs = ["fail.sh"],
    cmd = "echo -e '#!/bin/bash\\nexit 1' >> $@; chmod +x $@",
)


genrule(
    name = "main_dex_list_creator_source",
    srcs = [],
    outs = ["main_dex_list_creator.sh"],
    cmd = "\n".join(["cat > $@ <<'EOF'",
          "#!/bin/bash",
          "",
          "MAIN_DEX_LIST=$$1",
          "STRIPPED_JAR=$$2",
          "JAR=$$3",
          "" +
          "DIRNAME=$$(dirname $$0)",
          "JAVA_BINARY=TBD/main_dex_list_creator_java",  # Proper runfiles path comes here
          "$$JAVA_BINARY $$STRIPPED_JAR $$JAR > $$MAIN_DEX_LIST",
          "exit $$?",
          "",
          "EOF\n"]),
)

sh_binary(
    name = "main_dex_list_creator",
    srcs = ["main_dex_list_creator.sh"],
    data = [":main_dex_list_creator_java"],
)

java_binary(
    name = "main_dex_list_creator_java",
    main_class = "com.android.multidex.ClassReferenceListBuilder",
    runtime_deps = [":dx_jar_import"],
)

java_binary(
    name = "dx_binary",
    main_class = "com.android.dx.command.Main",
    runtime_deps = [":dx_jar_import"],
)

filegroup(
    name = "dx_jar",
    srcs = ["build-tools/%build_tools_version%/lib/dx.jar"],
)

java_import(
    name = "dx_jar_import",
    jars = [":dx_jar"],
)

genrule(
    name = "apkbuilder_source",
    srcs = [],
    outs = ["apkbuilder_binary.sh"],
    cmd = "\n".join(["cat > $@ << 'EOF'",
        "#!/bin/bash -e",
        "BINARY=$${0##*-out/host/bin/}",
        "DIRNAME=$$(dirname $$BINARY)",
        "APKBUILDER=$${0}.runfiles/$${DIRNAME}/apkbuilder",
        "if [[ \"$$KEYSTORE\" != \"\" ]]; then",
        "  mkdir -p /tmp/keystore/.android",
        "  cp $$KEYSTORE /tmp/keystore/.android/debug.keystore",
        "  export ANDROID_SDK_HOME=/tmp/keystore",
        "fi",
        "exec $$APKBUILDER $$*",
        "EOF"]),
)

sh_binary(
    name = "apkbuilder_binary",
    srcs = ["apkbuilder_binary.sh"],
    data = [":apkbuilder"],
)

java_binary(
    name = "apkbuilder",
    runtime_deps = [":sdklib"],
    main_class = "com.android.sdklib.build.ApkBuilderMain")

java_import(
    name = "sdklib",
    jars = ["tools/lib/sdklib.jar", "tools/lib/common.jar", "tools/lib/guava-17.0.jar"])
