| # Copyright 2020 The Chromium OS Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| import("//common-mk/pkg_config.gni") |
| |
| # The majority of this code is a fork of upstream repo's in AOSP. |
| # We are selectively pulling in the pieces of those libs and building |
| # them into a shared library to use in our system, and to make those |
| # symbols visible from the lib, we use //common-mk:visibility_default. |
| # The linter suggests we should explicitly export the symbols we need, |
| # but in this case we are achieving that by only pulling in the files we |
| # need, and additionally, upstream will not want to accept us annotating |
| # all of their code for our fairly specific purpose of build architecture. |
| # So we disable the linter in this case. |
| |
| # gnlint: disable=GnLintVisibilityFlags |
| |
| arect_src = "../aosp/frameworks/native/libs/arect" |
| libbase_src = "../aosp/system/libbase" |
| libcutils_src = "../aosp/system/core/libcutils" |
| libfmq_src = "../aosp/system/libfmq" |
| libhidl_src = "../aosp/system/libhidl" |
| liblog_src = "../aosp/system/logging/liblog" |
| libutils_src = "../aosp/system/core/libutils" |
| native_src = "../aosp/frameworks/native" |
| nativewindow_src = "${native_src}/libs/nativewindow" |
| |
| group("all") { |
| deps = [ |
| ":libnnapi-support", |
| ":libnnapi-support_pc", |
| ] |
| if (use.test) { |
| deps += [ |
| ":libbase_testrunner", |
| ":libcutils_testrunner", |
| ":libfmq_testrunner", |
| ":libhidl_testrunner", |
| ":libhwbuf_testrunner", |
| ":liblog_testrunner", |
| ":libutils_testrunner", |
| ] |
| } |
| } |
| |
| config("target_defaults") { |
| cflags = [ |
| "-Wall", |
| "-Werror", |
| "-Wextra", |
| ] |
| cflags_cc = [ "-std=c++17" ] |
| include_dirs = [ |
| "includes", |
| "${libbase_src}/include", |
| "${libcutils_src}/include", |
| "${liblog_src}/include", |
| "${libutils_src}/include", |
| "${libfmq_src}/base", |
| ] |
| defines = [ |
| "__ANDROID_API__=30", # Android R |
| ] |
| } |
| |
| shared_library("libnnapi-support") { |
| configs += [ ":target_defaults" ] |
| deps = [ |
| ":libbase", |
| ":libcutils", |
| ":libfmq", |
| ":libhidl", |
| ":libhwbuf", |
| ":liblog", |
| ":libnative", |
| ":libutils", |
| ":neuralnetworks", |
| ] |
| } |
| |
| generate_pkg_config("libnnapi-support_pc") { |
| deps = [ ":libnnapi-support" ] |
| output_name = "libnnapi-support" |
| description = "Support libraries for Neural Networks API" |
| version = "0.1" |
| libs = [ "-lnnapi-support" ] |
| } |
| |
| static_library("libbase") { |
| sources = [ |
| "${libbase_src}/chrono_utils.cpp", |
| "${libbase_src}/errors_unix.cpp", |
| "${libbase_src}/file.cpp", |
| "${libbase_src}/liblog_symbols.cpp", |
| "${libbase_src}/logging.cpp", |
| "${libbase_src}/mapped_file.cpp", |
| "${libbase_src}/parsebool.cpp", |
| "${libbase_src}/process.cpp", |
| "${libbase_src}/properties.cpp", |
| "${libbase_src}/stringprintf.cpp", |
| "${libbase_src}/strings.cpp", |
| "${libbase_src}/test_utils.cpp", |
| "${libbase_src}/threads.cpp", |
| ] |
| configs += [ |
| "//common-mk:pic", |
| "//common-mk:visibility_default", |
| ":target_defaults", |
| ] |
| } |
| |
| if (use.test) { |
| executable("libbase_testrunner") { |
| sources = [ |
| "${libbase_src}/chrono_utils_test.cpp", |
| "${libbase_src}/endian_test.cpp", |
| "${libbase_src}/errors_test.cpp", |
| "${libbase_src}/logging_test.cpp", |
| "${libbase_src}/macros_test.cpp", |
| "${libbase_src}/mapped_file_test.cpp", |
| "${libbase_src}/no_destructor_test.cpp", |
| "${libbase_src}/parsebool_test.cpp", |
| "${libbase_src}/parsedouble_test.cpp", |
| "${libbase_src}/parseint_test.cpp", |
| "${libbase_src}/process_test.cpp", |
| "${libbase_src}/properties_test.cpp", |
| "${libbase_src}/scopeguard_test.cpp", |
| "${libbase_src}/stringprintf_test.cpp", |
| "${libbase_src}/strings_test.cpp", |
| "libbase/tests/properties_test.cpp", |
| ] |
| configs += [ |
| "//common-mk:test", |
| ":target_defaults", |
| ] |
| include_dirs = [ |
| "${libbase_src}/include", |
| "${liblog_src}/include", |
| ] |
| cflags_cc = [ |
| # For logging_test.cc |
| "-Wno-unreachable-code", |
| ] |
| deps = [ |
| ":libbase", |
| ":liblog", |
| "//common-mk/testrunner:testrunner", |
| ] |
| } |
| } |
| |
| static_library("libcutils") { |
| sources = [ |
| "${libcutils_src}/config_utils.cpp", |
| "${libcutils_src}/hashmap.cpp", |
| "${libcutils_src}/load_file.cpp", |
| "${libcutils_src}/native_handle.cpp", |
| "${libcutils_src}/threads.cpp", |
| "${libcutils_src}/trace-host.cpp", |
| "libcutils/ashmem_chromeos.cpp", |
| ] |
| configs += [ |
| "//common-mk:pic", |
| "//common-mk:visibility_default", |
| ":target_defaults", |
| ] |
| include_dirs = [ "${libcutils_src}/include" ] |
| libs = [ "rt" ] |
| deps = [ ":liblog" ] |
| } |
| |
| if (use.test) { |
| executable("libcutils_testrunner") { |
| sources = [ |
| "${libcutils_src}/ashmem_test.cpp", |
| "${libcutils_src}/native_handle_test.cpp", |
| ] |
| configs += [ |
| "//common-mk:test", |
| ":target_defaults", |
| ] |
| include_dirs = [ "${libcutils_src}/include" ] |
| deps = [ |
| ":libcutils", |
| "//common-mk/testrunner:testrunner", |
| ] |
| } |
| } |
| |
| static_library("libfmq") { |
| sources = [ |
| "${libfmq_src}/EventFlag.cpp", |
| "${libfmq_src}/FmqInternal.cpp", |
| ] |
| configs += [ |
| "//common-mk:pic", |
| "//common-mk:visibility_default", |
| ":target_defaults", |
| ] |
| include_dirs = [ "${libfmq_src}/include" ] |
| deps = [ |
| ":libcutils", |
| ":libutils", |
| ] |
| } |
| |
| if (use.test) { |
| executable("libfmq_testrunner") { |
| sources = [ "libfmq/tests/fmq_unit_tests.cpp" ] |
| configs += [ |
| "//common-mk:test", |
| ":target_defaults", |
| ] |
| include_dirs = [ |
| "${libfmq_src}/include", |
| "${libhidl_src}/base/include", |
| ] |
| deps = [ |
| ":libfmq", |
| ":libhidl", |
| "//common-mk/testrunner:testrunner", |
| ] |
| } |
| } |
| |
| static_library("libhidl") { |
| sources = [ |
| "${libhidl_src}/base/HidlInternal.cpp", |
| "${libhidl_src}/base/HidlSupport.cpp", |
| "${libhidl_src}/base/Status.cpp", |
| "${libhidl_src}/libhidlmemory/mapping.cpp", |
| "${libhidl_src}/transport/HidlTransportUtils.cpp", |
| "${libhidl_src}/transport/allocator/1.0/default/AshmemAllocator.cpp", |
| "${libhidl_src}/transport/memory/1.0/default/AshmemMapper.cpp", |
| "${libhidl_src}/transport/memory/1.0/default/AshmemMemory.cpp", |
| "libhidl/adapter/HidlAdapterUtil.cpp", |
| "libhidl/allocator/IAllocator.cpp", |
| "libhidl/allocator/ashmem_allocator.cpp", |
| "libhidl/base/IBase.cpp", |
| "libhidl/memory/IMapper.cpp", |
| "libhidl/memory/IMemory.cpp", |
| "libhidl/memory/ashmem_mapper.cpp", |
| ] |
| configs += [ |
| "//common-mk:pic", |
| "//common-mk:visibility_default", |
| ":target_defaults", |
| ] |
| include_dirs = [ |
| "${libbase_src}/include", |
| "${libhidl_src}/adapter/include", |
| "${libhidl_src}/base/include", |
| "${libhidl_src}/libhidlmemory/include", |
| "${libhidl_src}/transport/allocator/1.0/default", |
| "${libhidl_src}/transport/memory/1.0/default", |
| "${libhidl_src}/transport/include", |
| "libhidl", |
| ] |
| deps = [ |
| ":libbase", |
| ":libutils", |
| ] |
| } |
| |
| if (use.test) { |
| executable("libhidl_testrunner") { |
| sources = [ |
| "libhidl/tests/ashmem_allocator_test.cpp", |
| "libhidl/tests/ashmem_mapper_test.cpp", |
| "libhidl/tests/hidl_support_test.cpp", |
| ] |
| configs += [ |
| "//common-mk:test", |
| ":target_defaults", |
| ] |
| include_dirs = [ |
| "${libhidl_src}/include", |
| "${libhidl_src}/base/include", |
| ] |
| deps = [ |
| ":libcutils", |
| ":libhidl", |
| ":liblog", |
| "//common-mk/testrunner:testrunner", |
| ] |
| } |
| } |
| |
| static_library("libhwbuf") { |
| sources = [ "hardware_buffer/AHardwareBuffer.cpp" ] |
| configs += [ |
| "//common-mk:pic", |
| "//common-mk:visibility_default", |
| ":target_defaults", |
| ] |
| include_dirs = [ |
| "${arect_src}/include", |
| "${nativewindow_src}/include", |
| ] |
| deps = [] |
| } |
| |
| if (use.test) { |
| executable("libhwbuf_testrunner") { |
| sources = [ "hardware_buffer/AHardwareBufferTest.cpp" ] |
| configs += [ |
| "//common-mk:test", |
| ":target_defaults", |
| ] |
| include_dirs = [ |
| "${arect_src}/include", |
| "${nativewindow_src}/include", |
| ] |
| deps = [ |
| ":libhwbuf", |
| "//common-mk/testrunner:testrunner", |
| ] |
| } |
| } |
| |
| static_library("liblog") { |
| sources = [ |
| "${liblog_src}/log_event_list.cpp", |
| "${liblog_src}/log_event_write.cpp", |
| "${liblog_src}/log_time.cpp", |
| "${liblog_src}/logger_write.cpp", |
| "${liblog_src}/logprint.cpp", |
| "${liblog_src}/properties.cpp", |
| ] |
| configs += [ |
| "//common-mk:pic", |
| "//common-mk:visibility_default", |
| ":target_defaults", |
| ] |
| include_dirs = [ "${liblog_src}/include" ] |
| deps = [ ":libbase" ] |
| } |
| |
| if (use.test) { |
| executable("liblog_testrunner") { |
| sources = [ |
| "${liblog_src}/tests/liblog_default_tag.cpp", |
| "${liblog_src}/tests/log_time_test.cpp", |
| ] |
| configs += [ |
| "//common-mk:test", |
| ":target_defaults", |
| ] |
| include_dirs = [ "${liblog_src}/include" ] |
| deps = [ |
| ":libbase", |
| ":liblog", |
| "//common-mk/testrunner:testrunner", |
| ] |
| } |
| } |
| |
| static_library("libnative") { |
| sources = [ "native/shared_memory.cpp" ] |
| configs += [ |
| "//common-mk:pic", |
| "//common-mk:visibility_default", |
| ":target_defaults", |
| ] |
| include_dirs = [ "${native_src}/include" ] |
| deps = [ ":libcutils" ] |
| } |
| |
| static_library("libutils") { |
| sources = [ |
| "${libutils_src}/Errors.cpp", |
| "${libutils_src}/JenkinsHash.cpp", |
| "${libutils_src}/NativeHandle.cpp", |
| "${libutils_src}/RefBase.cpp", |
| "${libutils_src}/SharedBuffer.cpp", |
| "${libutils_src}/StrongPointer.cpp", |
| "${libutils_src}/SystemClock.cpp", |
| "${libutils_src}/Timers.cpp", |
| "${libutils_src}/VectorImpl.cpp", |
| "${libutils_src}/misc.cpp", |
| ] |
| configs += [ |
| "//common-mk:pic", |
| "//common-mk:visibility_default", |
| ":target_defaults", |
| ] |
| include_dirs = [ |
| "${libbase_src}/include", |
| "${libcutils_src}/include", |
| "${libutils_src}/include", |
| ] |
| deps = [ ":liblog" ] |
| } |
| |
| if (use.test) { |
| executable("libutils_testrunner") { |
| sources = [ |
| "${libutils_src}/Mutex_test.cpp", |
| "${libutils_src}/RefBase_test.cpp", |
| "${libutils_src}/SharedBuffer_test.cpp", |
| "${libutils_src}/StrongPointer_test.cpp", |
| "${libutils_src}/SystemClock_test.cpp", |
| "${libutils_src}/Vector_test.cpp", |
| ] |
| configs += [ |
| "//common-mk:test", |
| ":target_defaults", |
| ] |
| include_dirs = [ "${libutils_src}/include" ] |
| deps = [ |
| ":libutils", |
| "//common-mk/testrunner:testrunner", |
| ] |
| } |
| } |
| |
| static_library("neuralnetworks") { |
| sources = [ |
| "neuralnetworks/1.0/ADevice.cpp", |
| "neuralnetworks/1.0/AExecutionCallback.cpp", |
| "neuralnetworks/1.0/APreparedModel.cpp", |
| "neuralnetworks/1.0/APreparedModelCallback.cpp", |
| "neuralnetworks/1.0/Device.cpp", |
| "neuralnetworks/1.0/ExecutionCallback.cpp", |
| "neuralnetworks/1.0/PreparedModel.cpp", |
| "neuralnetworks/1.0/PreparedModelCallback.cpp", |
| "neuralnetworks/1.1/ADevice.cpp", |
| "neuralnetworks/1.1/Device.cpp", |
| "neuralnetworks/1.2/ABurstCallback.cpp", |
| "neuralnetworks/1.2/ABurstContext.cpp", |
| "neuralnetworks/1.2/ADevice.cpp", |
| "neuralnetworks/1.2/AExecutionCallback.cpp", |
| "neuralnetworks/1.2/APreparedModel.cpp", |
| "neuralnetworks/1.2/APreparedModelCallback.cpp", |
| "neuralnetworks/1.2/BurstCallback.cpp", |
| "neuralnetworks/1.2/BurstContext.cpp", |
| "neuralnetworks/1.2/Device.cpp", |
| "neuralnetworks/1.2/ExecutionCallback.cpp", |
| "neuralnetworks/1.2/PreparedModel.cpp", |
| "neuralnetworks/1.2/PreparedModelCallback.cpp", |
| "neuralnetworks/1.2/types.cpp", |
| "neuralnetworks/1.3/ABuffer.cpp", |
| "neuralnetworks/1.3/ADevice.cpp", |
| "neuralnetworks/1.3/AExecutionCallback.cpp", |
| "neuralnetworks/1.3/AFencedExecutionCallback.cpp", |
| "neuralnetworks/1.3/APreparedModel.cpp", |
| "neuralnetworks/1.3/APreparedModelCallback.cpp", |
| "neuralnetworks/1.3/Buffer.cpp", |
| "neuralnetworks/1.3/Device.cpp", |
| "neuralnetworks/1.3/ExecutionCallback.cpp", |
| "neuralnetworks/1.3/FencedExecutionCallback.cpp", |
| "neuralnetworks/1.3/PreparedModel.cpp", |
| "neuralnetworks/1.3/PreparedModelCallback.cpp", |
| "neuralnetworks/1.3/types.cpp", |
| ] |
| configs += [ |
| "//common-mk:pic", |
| "//common-mk:visibility_default", |
| ":target_defaults", |
| ] |
| cflags_cc = [ |
| # All of the HIDL generated interfaces are missing override directives. |
| "-Wno-inconsistent-missing-override", |
| ] |
| include_dirs = [ |
| "${libhidl_src}/base/include", |
| "${libhidl_src}/adapter/include", |
| "${libhidl_src}/transport/include", |
| ] |
| deps = [ |
| ":libcutils", |
| ":libhidl", |
| ":liblog", |
| ] |
| } |