mirror of
https://github.com/Tencent/flare.git
synced 2026-10-19 23:00:56 +08:00
e2697cbd2b
* Stripped thirdparty/ prefix when including external headers. * Introduced dedicated folder for different building systems.; * Using canonical path for include protobuf's headers. * Using canonical path for googletest.
148 lines
4.8 KiB
Plaintext
148 lines
4.8 KiB
Plaintext
def get_env(s):
|
|
import os
|
|
return os.environ[s] if s in os.environ else None
|
|
|
|
|
|
def get_build_dir():
|
|
return 'build%d_%s' % (build_target.bits,
|
|
'debug' if build_target.is_debug() else 'release')
|
|
|
|
|
|
global_config(
|
|
duplicated_source_action='error',
|
|
test_timeout=600, # In seconds
|
|
glob_error_severity='error',
|
|
legacy_public_targets=load_value('build/blade/legacy_public_targets.conf'),
|
|
)
|
|
|
|
cc_test_config(
|
|
# `initial-exec` TLS does not work quite well on ppc64le if dynamic linking
|
|
# is used.
|
|
dynamic_link=not build_target.is_debug() and build_target.arch != 'ppc64le',
|
|
# Doesn't work quite right on AArch64. (It does work on ppc64le, though.)
|
|
#
|
|
# Stacktrace suggests that it's related to global initialization order
|
|
# fiasco.
|
|
heap_check='strict' if build_target.arch != 'aarch64' else '',
|
|
gperftools_libs='thirdparty/gperftools:tcmalloc',
|
|
gtest_libs=['thirdparty/googletest:gtest', '#pthread'],
|
|
gtest_main_libs=['thirdparty/googletest:gtest_main'],
|
|
pprof_path='thirdparty/gperftools/bin/pprof',
|
|
)
|
|
|
|
cc_config(
|
|
cppflags=[
|
|
'-gdwarf-2',
|
|
'-mcx16' if build_target.arch == 'x86_64' else '',
|
|
],
|
|
cflags='-std=gnu11',
|
|
cxxflags=[
|
|
'-std=gnu++2a',
|
|
|
|
# This option must be applied here. Options applied in `warnings` are
|
|
# not applied to generated source files (e.g., those generated by
|
|
# `protoc`.). In practice, `-Wpsabi` produces some diagnostics when
|
|
# compiling `.pb.cc` on ppc64le, this option suppress those diagnostics.
|
|
'-Wno-psabi' if build_target.arch == 'ppc64le' else '',
|
|
],
|
|
|
|
# NOTE: Please keep all warnings in order in one same group.
|
|
warnings=[
|
|
'-Werror',
|
|
'-Wall',
|
|
'-Wextra',
|
|
|
|
# other useful warnings
|
|
'-Warray-bounds',
|
|
'-Wchar-subscripts',
|
|
'-Wcomment',
|
|
'-Wendif-labels',
|
|
'-Wformat=1',
|
|
# '-Wframe-larger-than=69632', # A 64k buffer and other small vars
|
|
'-Wmissing-include-dirs',
|
|
'-Wmultichar',
|
|
'-Wparentheses',
|
|
'-Wpointer-arith',
|
|
'-Wreturn-type',
|
|
'-Wsequence-point',
|
|
'-Wswitch',
|
|
'-Wunused-function',
|
|
'-Wunused-label',
|
|
'-Wunused-result',
|
|
'-Wunused-value',
|
|
'-Wwrite-strings',
|
|
|
|
# Suppress all warnings which we can't handle or are misreported.
|
|
# Even if some them are sure useful, too many warnings also overwhelm
|
|
# the true problems.
|
|
'-Wno-format-truncation',
|
|
'-Wno-float-equal',
|
|
# '-Wno-incompatible-pointer-types',
|
|
|
|
# Causes too many 'note's when it is disabled due to the size of the code
|
|
'-Wno-misleading-indentation',
|
|
'-Wno-missing-field-initializers',
|
|
'-Wno-sign-compare',
|
|
'-Wno-strict-aliasing',
|
|
'-Wno-unused-but-set-variable',
|
|
'-Wno-unused-local-typedefs',
|
|
'-Wno-unused-parameter',
|
|
],
|
|
# C++ only warning flags
|
|
cxx_warnings=[
|
|
'-Wnon-virtual-dtor',
|
|
'-Woverloaded-virtual',
|
|
|
|
# Suppress all warnings which we can't handle or are misreported.
|
|
'-Wno-deprecated',
|
|
'-Wno-invalid-offsetof',
|
|
],
|
|
extra_incs=[
|
|
# for all thirdparty packages
|
|
'thirdparty/',
|
|
'%s/thirdparty/' % get_build_dir(),
|
|
],
|
|
linkflags=[
|
|
# We need this in some platforms for `link_all_symbols=True` to work.
|
|
'-Wl,--no-as-needed',
|
|
'-lpthread',
|
|
],
|
|
benchmark_libs=['//thirdparty/benchmark:benchmark'],
|
|
benchmark_main_libs=['//thirdparty/benchmark:benchmark_main'],
|
|
allowed_undeclared_hdrs=load_value('build/blade/allowed_undeclared_hdrs.conf'),
|
|
# header_inclusion_dependencies = True,
|
|
hdr_dep_missing_severity='error',
|
|
)
|
|
|
|
cc_binary_config(run_lib_paths=['//thirdparty/jdk/lib'],)
|
|
|
|
cc_library_config(
|
|
generate_dynamic=True,
|
|
arflags=['rcsDT'],
|
|
prebuilt_libpath_pattern='lib${bits}',
|
|
hdrs_missing_severity='error',
|
|
hdrs_missing_suppress=load_value('build/blade/hdrs_missing_suppress.conf'),
|
|
)
|
|
|
|
proto_library_config(
|
|
protoc='thirdparty/protobuf/bin/%s/protoc-3.4.1' % build_target.arch,
|
|
protobuf_libs=['//thirdparty/protobuf:protobuf'],
|
|
protobuf_path='thirdparty',
|
|
protobuf_incs='thirdparty/protobuf-3.4.1/src',
|
|
protoc_direct_dependencies=True,
|
|
well_known_protos=[
|
|
'google/protobuf/any.proto',
|
|
'google/protobuf/api.proto',
|
|
'google/protobuf/compiler/plugin.proto',
|
|
'google/protobuf/descriptor.proto',
|
|
'google/protobuf/duration.proto',
|
|
'google/protobuf/empty.proto',
|
|
'google/protobuf/field_mask.proto',
|
|
'google/protobuf/source_context.proto',
|
|
'google/protobuf/struct.proto',
|
|
'google/protobuf/timestamp.proto',
|
|
'google/protobuf/type.proto',
|
|
'google/protobuf/wrappers.proto',
|
|
],
|
|
)
|