package {
    default_applicable_licenses: ["external_oj-libjdwp_license"],
}

// Added automatically by a large-scale-change that took the approach of
// 'apply every license found to every target'. While this makes sure we respect
// every license restriction, it may not be entirely correct.
//
// e.g. GPL in an MIT project might only apply to the contrib/ directory.
//
// Please consider splitting the single license below into multiple licenses,
// taking care not to lose any license_kind information, and overriding the
// default license using the 'licenses: [...]' property on targets as needed.
//
// For unused files, consider creating a 'fileGroup' with "//visibility:private"
// to attach the license to, and including a comment whether the files may be
// used in the current project.
// See: http://go/android-license-faq
license {
    name: "external_oj-libjdwp_license",
    visibility: [":__subpackages__"],
    license_kinds: [
        "SPDX-license-identifier-Apache-2.0",
        "SPDX-license-identifier-GPL",
        "SPDX-license-identifier-GPL-2.0",
        "SPDX-license-identifier-GPL-with-classpath-exception",
        "SPDX-license-identifier-LGPL",
    ],
    license_text: [
        "LICENSE",
    ],
}

java_binary_host {
    name: "jdwpgen",
    srcs: ["make/src/classes/build/tools/jdwpgen/*.java"],
    wrapper: "etc/jdwpgen.sh",
    manifest: "etc/manifest.txt",
    java_version: "1.8",
}

genrule {
    name: "jdwp_generated_headers",
    tools: ["jdwpgen"],
    cmd: "$(location jdwpgen) $(in) -include $(out)",
    srcs: ["make/data/jdwp/jdwp.spec"],
    out: ["JDWPCommands.h"],
}

cc_defaults {
    name: "upstream-jdwp-defaults",
    host_supported: true,
    device_supported: true,
    cflags: [
        // Every supported android platform is little-endian.
        "-D_LITTLE_ENDIAN",
        "-Wall",
        "-Werror",
        "-Wno-unused-parameter",
    ],
    notice: "LICENSE",
    target: {
        darwin: {
            enabled: false,
        },
    },
}

cc_library_headers {
    name: "javavm_headers",
    export_include_dirs: [
        "src/share/javavm/export",
        "src/solaris/javavm/export",
    ],
    host_supported: true,
    device_supported: true,

    apex_available: [
        "com.android.art",
        "com.android.art.debug",
    ],
    min_sdk_version: "S",
}

cc_library_headers {
    name: "libnpt_headers",
    export_include_dirs: [
        "src/share/npt",
        "src/solaris/npt",
    ],
    defaults: ["upstream-jdwp-defaults"],

    apex_available: [
        "com.android.art",
        "com.android.art.debug",
    ],
    min_sdk_version: "S",
}

cc_library {
    name: "libnpt",
    srcs: [
        "src/share/npt/*.c",
        "src/solaris/npt/*.c",
    ],
    header_libs: [
        "javavm_headers",
        "libnpt_headers",
    ],
    defaults: ["upstream-jdwp-defaults"],
    apex_available: [
        "com.android.art",
        "com.android.art.debug",
    ],
    min_sdk_version: "S",
}

cc_library_headers {
    name: "libjdwp_headers",
    export_include_dirs: [
        "src/share/back",
        "src/share/back/export",
        "src/solaris/back",
    ],
    generated_headers: ["jdwp_generated_headers"],
    export_generated_headers: ["jdwp_generated_headers"],
    defaults: ["upstream-jdwp-defaults"],

    apex_available: [
        "com.android.art",
        "com.android.art.debug",
    ],
    min_sdk_version: "S",
}

cc_library {
    name: "libjdwp",
    srcs: [
        "src/share/back/*.c",
        "src/solaris/back/*.c",
    ],
    cflags: [
        "-DLINUX",
        "-DJDWP_LOGGING",
        "-Wno-switch",
        "-Wno-logical-op-parentheses",
        "-Wno-logical-not-parentheses",
        "-Wno-sometimes-uninitialized",
        "-Wno-self-assign",
        "-Wno-unused-variable",
        "-Wno-unused-function",
    ],
    header_libs: [
        "javavm_headers",
        "libjdwp_headers",
        "libnpt_headers",
    ],
    required: [
        "libnpt",
        "libdt_socket",
    ],
    defaults: ["upstream-jdwp-defaults"],
    apex_available: [
        "com.android.art",
        "com.android.art.debug",
    ],
    min_sdk_version: "S",
}

cc_library {
    name: "libdt_socket",
    srcs: [
        "src/share/transport/socket/*.c",
        "src/solaris/transport/socket/*.c",
    ],
    local_include_dirs: [
        "src/share/transport/socket",
        "src/solaris/transport/socket",
    ],
    header_libs: [
        "javavm_headers",
        "libjdwp_headers",
        "libnpt_headers",
    ],
    required: ["libnpt"],
    defaults: ["upstream-jdwp-defaults"],
    apex_available: [
        "com.android.art",
        "com.android.art.debug",
    ],
    min_sdk_version: "S",
}

genrule {
    name: "jdwp_generated_java",
    tools: ["jdwpgen"],
    cmd: "$(location jdwpgen) $(in) -jdi $(out)",
    srcs: ["make/data/jdwp/jdwp.spec"],
    out: ["JDWP.java"],
}

python_binary_host {
  name: "jdi_prop_gen",
  srcs: ["etc/jdigen.py"],
  main: "etc/jdigen.py",
}

genrule {
  name: "jdi_generated_properties",
  tools: ["jdi_prop_gen"],
  cmd: "$(location jdi_prop_gen) $(in) $(out)",
  out: ["jdi.java"],
  srcs: ["src/share/classes/com/sun/tools/jdi/resources/jdi.properties"],
}

// The classes needed to support JDI and debug remote processes.
java_library_host {
  name: "jdi-support",
  srcs: [
    // The JDI interface definition.
    "src/share/classes/com/sun/jdi/**/*.java",
    // The JDI interface implementation
    "src/share/classes/com/sun/tools/jdi/**/*.java",
    // The JDWP.java file that contains all the constants.
    ":jdwp_generated_java",
    // The properties class which holds information about the various connectors.
    ":jdi_generated_properties",
  ],
  exclude_srcs: [
    // We don't support process attachment and lack some of the classes to even compile this file.
    "src/share/classes/com/sun/tools/jdi/ProcessAttachingConnector.java",
  ],
  services: ["etc/com.sun.jdi.connect.Connector"],
  java_version: "1.8",
  javacflags: ["-g"],
  notice: "LICENSE",
}