Summary: At least or x86_64 linux, it appears that you need position-independent code is required in order to link against it. Otherwise you see errors like this: ``` /usr/bin/ld: lib_sys.rlib(CSSLayout.c.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC /usr/bin/ld: lib_sys.rlib(CSSNodeList.c.o): relocation R_X86_64_32 against `.rodata.str1.8' can not be used when making a shared object; recompile with -fPIC /usr/bin/ld: final link failed: Nonrepresentable section on output collect2: error: ld returned 1 exit status ``` If I understand it correctly, you don't strictly need PIC for static libraries, but as soon as you want to link *other* dynamically linked library into it, it is required - which makes logical sense to me. Let me know if you want to enable this by default or leave it up to the developers to enable this if needed. Closes https://github.com/facebook/css-layout/pull/263 Reviewed By: passy Differential Revision: D4237009 Pulled By: emilsjolander fbshipit-source-id: e73ea0ea22520758ec958a031d6e2ca62fdcda15
49 lines
1.2 KiB
Python
49 lines
1.2 KiB
Python
# Copyright (c) 2014-present, Facebook, Inc.
|
|
# All rights reserved.
|
|
#
|
|
# This source code is licensed under the BSD-style license found in the
|
|
# LICENSE file in the root directory of this source tree. An additional grant
|
|
# of patent rights can be found in the PATENTS file in the same directory.
|
|
|
|
include_defs('//CSSLAYOUT_DEFS')
|
|
|
|
BASE_COMPILER_FLAGS = [
|
|
'-fno-omit-frame-pointer',
|
|
'-fexceptions',
|
|
'-Wall',
|
|
'-Werror',
|
|
'-O3',
|
|
]
|
|
|
|
GMOCK_OVERRIDE_FLAGS = [
|
|
# gmock does not mark mocked methods as override, ignore the warnings in tests
|
|
'-Wno-inconsistent-missing-override',
|
|
]
|
|
|
|
COMPILER_FLAGS = BASE_COMPILER_FLAGS + ['-std=c11', '-fPIC']
|
|
TEST_COMPILER_FLAGS = BASE_COMPILER_FLAGS + GMOCK_OVERRIDE_FLAGS + ['-std=c++11']
|
|
|
|
cxx_library(
|
|
name = 'CSSLayout',
|
|
srcs = glob(['CSSLayout/*.c']),
|
|
tests=[':tests'],
|
|
exported_headers = subdir_glob([('', 'CSSLayout/*.h')]),
|
|
header_namespace = '',
|
|
force_static = True,
|
|
compiler_flags = COMPILER_FLAGS,
|
|
deps = [],
|
|
visibility = ['PUBLIC'],
|
|
)
|
|
|
|
cxx_test(
|
|
name = 'tests',
|
|
contacts = ['emilsj@fb.com'],
|
|
srcs = glob(['tests/*.cpp']),
|
|
compiler_flags = TEST_COMPILER_FLAGS,
|
|
deps = [
|
|
':CSSLayout',
|
|
GTEST_TARGET,
|
|
],
|
|
visibility = ['PUBLIC'],
|
|
)
|