Home | History | Annotate | Download | only in jacoco
      1 //
      2 // Copyright (C) 2016 The Android Open Source Project
      3 //
      4 // Licensed under the Apache License, Version 2.0 (the "License");
      5 // you may not use this file except in compliance with the License.
      6 // You may obtain a copy of the License at
      7 //
      8 //      http://www.apache.org/licenses/LICENSE-2.0
      9 //
     10 // Unless required by applicable law or agreed to in writing, software
     11 // distributed under the License is distributed on an "AS IS" BASIS,
     12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13 // See the License for the specific language governing permissions and
     14 // limitations under the License.
     15 //
     16 
     17 // Build jacoco-agent from sources for the platform
     18 //
     19 // Note: this is only intended to be used for the platform development. This is *not* intended
     20 // to be used in the SDK where apps can use the official jacoco release.
     21 java_library {
     22     name: "jacocoagent",
     23 
     24     srcs: [
     25         "org.jacoco.core/src/**/*.java",
     26         "org.jacoco.agent/src/**/*.java",
     27         "org.jacoco.agent.rt/src/**/*.java",
     28     ],
     29 
     30     // Some Jacoco source files depend on classes that do not exist in Android.
     31     // While these classes are not executed at runtime (because we use offline
     32     // instrumentation), they will cause issues when compiling them with ART
     33     // during dex pre-opting. Therefore, it would prevent from applying code
     34     // coverage on classes in the bootclasspath (frameworks, services, ...) or
     35     // system apps.
     36     // Note: we still may need to update the source code to cut dependencies in
     37     // mandatory jacoco classes.
     38     exclude_srcs: [
     39         "org.jacoco.core/src/org/jacoco/core/runtime/ModifiedSystemClassRuntime.java",
     40         "org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/PreMain.java",
     41         "org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/CoverageTransformer.java",
     42         "org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/JmxRegistration.java",
     43     ],
     44 
     45     // In order to include Jacoco in core libraries, we cannot depend on
     46     // anything in the bootclasspath (or we would create dependency cycle).
     47     // Therefore we compile against the SDK android.jar which gives the same
     48     // APIs Jacoco depends on.
     49     sdk_version: "9",
     50 
     51     // TODO(b/69671801): there's no bytecode on the device, so these shouldn't
     52     // be necessary.
     53     static_libs: [
     54         "asm-6.0",
     55         "asm-commons-6.0",
     56         "asm-tree-6.0",
     57     ],
     58 }
     59 
     60 // Build jacoco-cli from sources for the platform
     61 
     62 // TODO(jeffrygaston) it'd be nice to keep the build process and/or list of source files in sync with
     63 // what is defined in the pom.xml files, although it's probably much more trouble than it's worth
     64 java_library_host {
     65     name: "jacoco-cli",
     66 
     67     manifest: "org.jacoco.cli/src/MANIFEST.MF",
     68 
     69     srcs: [
     70         "org.jacoco.core/src/**/*.java",
     71         "org.jacoco.report/src/**/*.java",
     72         "org.jacoco.cli/src/**/*.java",
     73     ],
     74 
     75     java_resource_dirs: [
     76         "org.jacoco.core/src",
     77         "org.jacoco.report/src",
     78     ],
     79 
     80     static_libs: [
     81         "asm-6.0",
     82         "asm-commons-6.0",
     83         "asm-tree-6.0",
     84         "args4j-2.0.28",
     85     ],
     86 }
     87