Transitive dependencies in soong for CC

Skip to first unread message

Wesolowski, Krzysztof

Aug 29, 2020, 2:04:22 PM8/29/20
to Android Building

When I build big CMake based project handling numerous static libraries its composed from is quite easy - both include directories and linking is transitive (using PUBLIC keyword)

In soong I end up with binaries listing all dependencies from dependency tree, and on top of that I need to export header files from each static library with export_static_lib_headers so at list intermediate static libraries can avoid listing its own trees.

Am I missing something or is the model of "many small static libs" not supported by design?


Krzysztof Wesolowski

Evan Fisher

Feb 2, 2023, 1:42:16 PM2/2/23
to Android Building
I am running into the same issue. Is there a way around this?

Example libfoo that depends on libbar in its implementation (only includes libbar in "", not "foo.h"):
cc_library_shared {
   name: "libfoo",
   srcs: "",
   shared_libs: ["libbar"],
   export_include_dirs: ["."]

Then, if I want to make a binary that uses libfoo, I've found that I must do:
cc_binary {
   name: "mytest",
   srcs: "",
   shared_libs: ["libfoo", "libbar"]

I would expect there is a way to only list "libfoo" and have my executable linked to libbar due to the transitive dependency.

Is there a directive I'm missing to enable this? In CMake, there is PUBLIC vs PRIVATE linkage. I'm wondering if there is an analog in soong.

Thank you,

Reply all
Reply to author
0 new messages