// Copyright (C) 2018 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.

filegroup {
    name: "iorap-aidl",
    srcs: [
        // note: using **/* doesn't work, so list each file one by one:
        // see also b/70046217

        // note: list only 'interface' aidl files, otherwise
        // aidl generates an error "Refusing to generate code with unstructured parcelables."
        "binder/com/google/android/startop/iorap/IIorap.aidl",
        "binder/com/google/android/startop/iorap/ITaskListener.aidl",
    ],
    path: "binder",
}

cc_defaults {
    name: "iorap-default-flags",

    cflags: [
        "-Wall",
        "-Werror",
        "-Wextra",
        "-Wno-missing-field-initializers",
        "-Wno-unused-parameter",
        "-Wno-unused-variable",
    ],

    local_include_dirs: [
        "include",
        "src",
    ],
    // TODO: shouldn't need this but there's a soong/cmake generator bug.
    export_include_dirs: [
        "include",
        "src",
    ],

    /*
    TODO: Header refactoring cleanup:

    Option 1): Move src/$component/file_name.h to src/$component/include/$component/file_name.h
    Option 2): Symlink src/$component/include/$component to src/$component

    Set export_include_dirs to '$component/include' for that component.

    Also delete the 'include' directory unless we have code other non-iorap
    targets are allowed to reference.
    */

    clang: true,
    static_libs: ["libc++fs"],
    shared_libs: ["libbase"],

    // build all ioraps for host.
    host_supported: true,
    target: {
        darwin: {
            enabled: false,
        }
    },
}

cc_defaults {
    name: "iorap-default-dependencies",

    static_libs: [
        "libiorap-binder",
        "libplatformprotos",  // android framework C++ protos.
    ],
    shared_libs: [
        "libbinder",
        "libutils",
        "libcutils", // tracing.

        "libfruit",  // dependency injection.
        // TODO: remove these annoying dependencies by hiding them in the main library code.

        // dependency for libplatformprotos
        // "libprotobuf-cpp-lite",

        // libplatformprotos has an indirect dependency on full, causing compilation/linking
        // errors if we use lite
        "libprotobuf-cpp-full",

        // phenotype flags support
        "server_configurable_flags",
    ],

    // srcs: [":libprotobuf-internal-protos"],
    // commented out because it causes compilation errors
    // TODO: can we use the lite library somehow?

    header_libs: ["librxcpp"],
}

cc_library_static {
    name: "libiorap-binder",
    defaults: ["iorap-default-flags"],

    srcs: [
        ":iorap-aidl",
        "src/binder/iiorap_impl.cc",
        "src/binder/package_change_observer.cc",
        "src/binder/package_manager_remote.cc",
        "src/binder/package_version_map.cc",
    ],
    shared_libs: [
        "libbinder",
        "libutils",
        "libcutils", // tracing.
    ],
    aidl: {
        local_include_dirs: ["binder"],
        include_dirs: ["frameworks/native/aidl/binder"],
        export_aidl_headers: true,
    },

    static_libs: [
       "libplatformprotos",  // android framework C++ protos.
    ],
}

cc_defaults {
    name: "libiorap-manager-default-dependencies",
    static_libs: [
        "libiorap-binder",
        "libiorap-perfetto",
        "libiorap-prefetcher",
        "libiorap-db",
        "libiorap-maintenance",
    ],
    defaults: [
        "libiorap-perfetto-default-dependencies",
        "libiorap-prefetcher-default-dependencies",
        "libiorap-db-default-dependencies",
    ],
    // Users of 'libiorap-manager' also need to include these defaults to avoid
    // linking errors.
}

cc_library_static {
    name: "libiorap-manager",
    defaults: [
        "iorap-default-flags",
        "iorap-default-dependencies",
        "libiorap-manager-default-dependencies",
    ],

    srcs: [
        "src/manager/**/*.cc",
    ],
}

cc_binary {
    name: "iorapd",
    defaults: [
        "iorap-default-flags",
        "iorap-default-dependencies",
        "libiorap-manager-default-dependencies",
    ],
    srcs: [
        "src/iorapd/main.cc",
    ],
    static_libs: [
        "libiorap-manager",
    ],
    init_rc: [
        "iorapd.rc",
    ],
    // iorapd fork+execs into iorap.prefetcherd and iorap.cmd.compiler
    // maintenance used by tests
    required: [
        "iorap.cmd.compiler",
        "iorap.prefetcherd",
        "iorap.cmd.maintenance",
    ],
}

cc_library_static {
    name: "libiorap-inode2filename",
    defaults: [
        "iorap-default-flags",
        "iorap-default-dependencies",
    ],

    srcs: [
        "src/inode2filename/**/*.cc",
    ],
}

cc_binary {
  name: "iorap.inode2filename",
  defaults: [
      "iorap-default-flags",
      "iorap-default-dependencies",
  ],
  srcs: [
      "src/inode2filename/**/*.cc",
  ],
  // Easier debugging. TODO: make a separate debug config.
  // XX: Using -O0 seems to completely hide some errors.
  cflags: ["-O2", "-UNDEBUG", "-DIORAP_INODE2FILENAME_MAIN=1"],
  sanitize: {
    undefined: true,
    all_undefined: true,
    // Pretty print when ubsan detects a problem.
    // Otherwise it just calls abort().

/*
    diag: {
      undefined: true,
    },
    */ // don't use the diag when you want it to crash.
  },
}

cc_test {
    name: "iorapd-tests",
    test_suites: ["device-tests"],
    gtest: false,  // we use gtest *and* gmock.
    defaults: [
        "iorap-default-flags",
        "iorap-default-dependencies",
        "libiorap-compiler-default-dependencies",
    ],
    srcs: [
        "tests/src/binder/*.cc",
        "tests/src/inode2filename/*.cc",
        "tests/src/log/*.cc",
        "tests/src/tmp/*.cc",
    ],
    data: [
        "tests/src/compiler/testdata/*",
    ],
    cflags: ["-O2", "-UNDEBUG"],

    // TODO:  we should probably have per-component tests.
    static_libs: ["libgmock_main", "libgmock", "libgtest", "libiorap-inode2filename"],

}


cc_test_host {
    name: "iorapd-host-tests",
    gtest: false,  // we use gtest *and* gmock.
    target: {
        darwin: {
            enabled: false,
        }
    },
    defaults: [
        "iorap-default-flags",
        "iorap-default-dependencies",
        "libiorap-compiler-default-dependencies",
        "libiorap-maintenance-default-dependencies",
    ],
    srcs: [
        "tests/src/compiler/*.cc",
        "tests/src/db/*.cc",
        "tests/src/maintenance/*.cc",
    ],
    data: [
        "tests/src/compiler/testdata/*",
        "tests/src/maintenance/testdata/*",
    ],
    cflags: ["-O2", "-UNDEBUG"],

    // TODO:  we should probably have per-component tests.
    static_libs: [
    "libgmock_main",
    "libgmock",
    "libgtest",
    "libiorap-compiler",
    "libiorap-maintenance",
    ],
}

filegroup {
  name: "libiorap-perfetto-protos",
  srcs: [
  ],
}

// Static libraries cannot export their dependencies,
// the current convention is to use an extra 'defaults' rule for statics
// to bring in all the dependencies.
cc_defaults {
    name: "libiorap-perfetto-default-dependencies",

    // Some of the libperfetto header typedefs leak out into iorap.
    // Avoids compilation #include errors.
    // TODO: clean this up, the headers should not leak out (maybe all we need is a PerfettoConsumer
    // forward declaration?).
    include_dirs: ["external/perfetto/include"],
    // Various perfetto protos are used directly by iorap.
    //
    // Furthermore, we need this regardless to avoid linking errors when linking
    // libiorap-perfetto.a into the main cc_binary rule.
    static_libs: [
        "perfetto_trace_protos",
    ],

    shared_libs: [
        // Not part of true dependencies: Users of 'libiorap-perfetto' do not link against
        // libperfetto.
        // We only put this to avoid linking errors when building iorapd.
        // TODO: can we split iorapd into libiorapd-main that doesn't link against libperfetto?
        // only the last cc_binary should need the full transitive closure of the dependency graph.
        "libperfetto",
    ]
}

cc_library_static {
    name: "libiorap-perfetto",
    defaults: [
        "iorap-default-flags",
        "iorap-default-dependencies",
        "libiorap-perfetto-default-dependencies",
    ],

    srcs: [
        "src/perfetto/**/*.cc",
    ],
}

cc_binary {
  name: "iorap.cmd.perfetto",
  defaults: [
      "iorap-default-flags",
      "iorap-default-dependencies",
  ],
  shared_libs: ["libperfetto"],
  include_dirs: ["external/perfetto/include"],
  srcs: [
      "src/perfetto/**/*.cc",
  ],
  // Easier debugging. TODO: make a separate debug config.
  // XX: Using -O0 seems to completely hide some errors.
  cflags: ["-O2", "-UNDEBUG", "-DIORAP_PERFETTO_MAIN=1"],
  sanitize: {
    undefined: true,
    all_undefined: true,
    // Pretty print when ubsan detects a problem.
    // Otherwise it just calls abort().

/*
    diag: {
      undefined: true,
    },
    */ // don't use the diag when you want it to crash.
  },

  static_libs: [
    "perfetto_trace_protos",
  ],
}

// Static libraries cannot export their dependencies,
// the current convention is to use an extra 'defaults' rule for statics
// to bring in all the dependencies.
cc_defaults {
    name: "libiorap-compiler-default-dependencies",

    defaults: [
        // use the perfetto namespace
        "libiorap-perfetto-default-dependencies",
        // use the inode2filename namespace
        "libiorap-serialize-default-dependencies",  // uses but does not re-export serialize.
    ],

    // Some of the libperfetto header typedefs leak out into iorap.
    // Avoids compilation #include errors.
    // TODO: clean this up, the headers should not leak out (maybe all we need is a PerfettoConsumer
    // forward declaration?).
    include_dirs: [],
    // Various perfetto protos are used directly by iorap.
    //
    // Furthermore, we need this regardless to avoid linking errors when linking
    // libiorap-compiler.a into the main cc_binary rule.
    static_libs: [
        "libiorap-perfetto",
        // "perfetto_trace_protos",
        "libiorap-inode2filename",
        "libiorap-serialize",
    ],

    shared_libs: [
        // Not part of true dependencies: Users of 'libiorap-compiler' do not link against
        // libperfetto.
        // We only put this to avoid linking errors when building iorapd.
        // TODO: can we split iorapd into libiorapd-main that doesn't link against libperfetto?
        // only the last cc_binary should need the full transitive closure of the dependency graph.
    ]
}

cc_library_static {
    name: "libiorap-compiler",
    defaults: [
        "iorap-default-flags",
        "iorap-default-dependencies",
        "libiorap-compiler-default-dependencies",
    ],

    srcs: [
        "src/compiler/**/*.cc",
    ],
}

cc_binary {
  name: "iorap.cmd.compiler",
  defaults: [
      "iorap-default-flags",
      "iorap-default-dependencies",
      "libiorap-compiler-default-dependencies",
  ],
  shared_libs: [],
  include_dirs: [],
  srcs: [
      "src/compiler/**/*.cc",
  ],
  // Easier debugging. TODO: make a separate debug config.
  // XX: Using -O0 seems to completely hide some errors.
  cflags: ["-O2", "-UNDEBUG", "-DIORAP_COMPILER_MAIN=1"],
  sanitize: {
    undefined: true,
    all_undefined: true,
    // Pretty print when ubsan detects a problem.
    // Otherwise it just calls abort().

/*
    diag: {
      undefined: true,
    },
    */ // don't use the diag when you want it to crash.
  },

  static_libs: [
  ],
  required: [
      "iorap.inode2filename",
  ],
}

// Static libraries cannot export their dependencies,
// the current convention is to use an extra 'defaults' rule for statics
// to bring in all the dependencies.
cc_defaults {
    name: "libiorap-serialize-default-dependencies",

    defaults: [
    ],

    include_dirs: [],
    static_libs: [
    ],
    shared_libs: [
    ],
    // Above intentionally left empty.
    srcs: [
        "src/serialize/**/*.proto",
    ],
}

cc_library_static {
    name: "libiorap-serialize",
    defaults: [
        "iorap-default-flags",
        "iorap-default-dependencies",
        "libiorap-serialize-default-dependencies",
    ],

    srcs: [
        "src/serialize/**/*.cc",
    ],
}


// Static libraries cannot export their dependencies,
// the current convention is to use an extra 'defaults' rule for statics
// to bring in all the dependencies.
cc_defaults {
    name: "libiorap-prefetcher-default-dependencies",

    defaults: [
    ],

    include_dirs: [],
    static_libs: [
        "libiorap-serialize",
    ],
    shared_libs: [
        "libminijail",
    ],

    // disable mac builds because libminijail doesn't work there
    target: {
        darwin: {
            enabled: false,
        },
    },
}

cc_library_static {
    name: "libiorap-prefetcher",
    defaults: [
        "iorap-default-flags",
        "iorap-default-dependencies",
        "libiorap-prefetcher-default-dependencies",
        "libiorap-serialize-default-dependencies",
    ],

    srcs: [
        "src/prefetcher/**/*.cc",
    ],
}

cc_binary {
  name: "iorap.prefetcherd",
  defaults: [
      "iorap-default-flags",
      "iorap-default-dependencies",
      "libiorap-prefetcher-default-dependencies",
      "libiorap-serialize-default-dependencies",
  ],
  shared_libs: [],
  include_dirs: [],
  srcs: [
      "src/prefetcher/**/*.cc",
  ],
  // Easier debugging. TODO: make a separate debug config.
  // XX: Using -O0 seems to completely hide some errors.
  cflags: ["-O2", "-UNDEBUG", "-DIORAP_PREFETCHER_MAIN=1"],
  sanitize: {
    undefined: true,
    all_undefined: true,
    // Pretty print when ubsan detects a problem.
    // Otherwise it just calls abort().

/*
    diag: {
      undefined: true,
    },
    */ // don't use the diag when you want it to crash.
  },

  static_libs: [
  ],
}

cc_binary {
  name: "iorap.cmd.prefetcher.client",
  defaults: [
      "iorap-default-flags",
      "iorap-default-dependencies",
      "libiorap-prefetcher-default-dependencies",
      "libiorap-serialize-default-dependencies",
  ],
  shared_libs: [],
  include_dirs: [],
  srcs: [
      "src/prefetcher/**/*.cc",
  ],
  // Easier debugging. TODO: make a separate debug config.
  // XX: Using -O0 seems to completely hide some errors.
  cflags: ["-O2", "-UNDEBUG", "-DIORAP_PREFETCHER_MAIN_CLIENT=1"],
  sanitize: {
    undefined: true,
    all_undefined: true,
    // Pretty print when ubsan detects a problem.
    // Otherwise it just calls abort().

/*
    diag: {
      undefined: true,
    },
    */ // don't use the diag when you want it to crash.
  },

  static_libs: [
  ],
}

prebuilt_etc {
  name: "iorap.prefetcherd.policy",
  sub_dir: "seccomp_policy",
  arch: {
    arm: {
      src: "seccomp_policy/prefetcherd.arm.policy"
    },
    arm64: {
      src: "seccomp_policy/prefetcherd.arm64.policy"
    },
    x86: {
      src: "seccomp_policy/prefetcherd.x86.policy"
    },
    x86_64: {
      src: "seccomp_policy/prefetcherd.x86_64.policy"
    },
  },
  required: [
      "crash_dump.policy",
  ],
}

// Static libraries cannot export their dependencies,
// the current convention is to use an extra 'defaults' rule for statics
// to bring in all the dependencies.
cc_defaults {
    name: "libiorap-db-default-dependencies",

    defaults: [
    ],

    include_dirs: [],
    static_libs: [
    ],
    shared_libs: [
        "libsqlite",
    ],
}

cc_library_static {
    name: "libiorap-db",
    defaults: [
        "iorap-default-flags",
        "iorap-default-dependencies",
        "libiorap-db-default-dependencies",
    ],

    srcs: [
        "src/db/**/*.cc",
    ],
}

cc_binary {
  name: "iorap.cmd.db",
  defaults: [
      "iorap-default-flags",
      "iorap-default-dependencies",
      "libiorap-db-default-dependencies",
  ],
  shared_libs: [],
  include_dirs: [],
  srcs: [
      "src/db/**/*.cc",
  ],
  // Easier debugging. TODO: make a separate debug config.
  // XX: Using -O0 seems to completely hide some errors.
  cflags: ["-O2", "-UNDEBUG", "-DIORAP_DB_MAIN=1"],
  sanitize: {
    undefined: true,
    all_undefined: true,
    // Pretty print when ubsan detects a problem.
    // Otherwise it just calls abort().

/*
    diag: {
      undefined: true,
    },
    */ // don't use the diag when you want it to crash.
  },

  static_libs: [
  ],
}

cc_defaults {
    name: "libiorap-maintenance-default-dependencies",

    defaults: [
        "libiorap-compiler-default-dependencies",
        "libiorap-db-default-dependencies",
        "libiorap-prefetcher-default-dependencies",
    ],

    include_dirs: [],

    static_libs: [
        "libiorap-binder",
        "libiorap-compiler",
        "libiorap-db",
        "libiorap-prefetcher",
    ],

    shared_libs: []
}

cc_library_static {
    name: "libiorap-maintenance",
    defaults: [
        "iorap-default-flags",
        "iorap-default-dependencies",
        "libiorap-maintenance-default-dependencies",
    ],

    srcs: [
        "src/maintenance/*.cc",
    ],
}

cc_binary {
  name: "iorap.cmd.maintenance",
  defaults: [
      "iorap-default-flags",
      "iorap-default-dependencies",
      "libiorap-maintenance-default-dependencies",
  ],
  shared_libs: [],
  include_dirs: [],
  srcs: [
      "src/maintenance/*.cc",
  ],
  cflags: ["-O2", "-UNDEBUG", "-DIORAP_MAINTENANCE_MAIN=1"],
  sanitize: {
    undefined: true,
    all_undefined: true,

    diag: {
      undefined: true,
    },
  },

  static_libs: [],
}
