Summary: Pull Request resolved: https://github.com/facebook/yoga/pull/994 After building yoga aar, we found several issues: 1. More dynamic so files. This is bad as lower-end Android devices cannot load that many sos. 2. Size increase. 3. (Minor) The libs are stored in asset folder rather than "libs/". We apply the following optimizations: 1. Remove dependency on memalign16 (this is brought in by a pure header dependency jni-hack); 2. Enable native relinker to remove unused symbols in the so files. 3. Link yogacore statically to reduce size churn. Reviewed By: SidharthGuglani Differential Revision: D20808623 fbshipit-source-id: 6c6bbd4f71b6bf6ad272ec05dd56696ddb14a8e0
84 lines
2.2 KiB
Python
84 lines
2.2 KiB
Python
# Copyright (c) Facebook, Inc. and its affiliates.
|
|
#
|
|
# This source code is licensed under the MIT license found in the
|
|
# LICENSE file in the root directory of this source tree.
|
|
load("//tools/build_defs/oss:yoga_defs.bzl", "BASE_COMPILER_FLAGS", "GTEST_TARGET", "LIBRARY_COMPILER_FLAGS", "YOGA_ROOTS", "subdir_glob", "yoga_cxx_library", "yoga_cxx_test", "yoga_dep", "yoga_prebuilt_cxx_library")
|
|
|
|
GMOCK_OVERRIDE_FLAGS = [
|
|
# gmock does not mark mocked methods as override, ignore the warnings in tests
|
|
"-Wno-inconsistent-missing-override",
|
|
]
|
|
|
|
TEST_COMPILER_FLAGS = BASE_COMPILER_FLAGS + GMOCK_OVERRIDE_FLAGS + [
|
|
"-DDEBUG",
|
|
"-DYG_ENABLE_EVENTS",
|
|
]
|
|
|
|
yoga_prebuilt_cxx_library(
|
|
name = "ndklog",
|
|
exported_platform_linker_flags = [
|
|
(
|
|
"^android.*",
|
|
["-llog"],
|
|
),
|
|
],
|
|
header_only = True,
|
|
visibility = YOGA_ROOTS,
|
|
)
|
|
|
|
yoga_cxx_library(
|
|
name = "yoga",
|
|
srcs = glob(["yoga/**/*.cpp"]),
|
|
compiler_flags = LIBRARY_COMPILER_FLAGS,
|
|
public_include_directories = ["."],
|
|
raw_headers = glob(["yoga/**/*.h"]),
|
|
soname = "libyogacore.$(ext)",
|
|
tests = [":YogaTests"],
|
|
visibility = ["PUBLIC"],
|
|
deps = [
|
|
":ndklog",
|
|
],
|
|
)
|
|
|
|
yoga_cxx_library(
|
|
name = "yoga-static",
|
|
srcs = glob(["yoga/**/*.cpp"]),
|
|
compiler_flags = LIBRARY_COMPILER_FLAGS,
|
|
preferred_linkage = "static",
|
|
public_include_directories = ["."],
|
|
raw_headers = glob(["yoga/**/*.h"]),
|
|
tests = [":YogaTests"],
|
|
visibility = ["PUBLIC"],
|
|
deps = [
|
|
":ndklog",
|
|
],
|
|
)
|
|
|
|
yoga_cxx_library(
|
|
name = "yogaForDebug",
|
|
srcs = glob(["yoga/**/*.cpp"]),
|
|
compiler_flags = TEST_COMPILER_FLAGS,
|
|
public_include_directories = ["."],
|
|
raw_headers = glob(["yoga/**/*.h"]),
|
|
soname = "libyogacore.$(ext)",
|
|
tests = [":YogaTests"],
|
|
visibility = ["PUBLIC"],
|
|
deps = [
|
|
":yoga",
|
|
],
|
|
)
|
|
|
|
yoga_cxx_test(
|
|
name = "YogaTests",
|
|
srcs = glob(["tests/*.cpp"]),
|
|
headers = subdir_glob([("", "yoga/**/*.h")]),
|
|
compiler_flags = TEST_COMPILER_FLAGS,
|
|
contacts = ["emilsj@fb.com"],
|
|
visibility = ["PUBLIC"],
|
|
deps = [
|
|
":yogaForDebug",
|
|
yoga_dep("testutil:testutil"),
|
|
GTEST_TARGET,
|
|
],
|
|
)
|