| # Copyright 2016 The Cobalt Authors. All Rights Reserved. |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| |
| # Platform specific compiler flags for Linux on Starboard. Included from |
| # gyp_configuration.gypi. |
| # |
| { |
| 'variables': { |
| 'compiler_flags_host': [ |
| '-O2', |
| ], |
| 'linker_flags': [ |
| ], |
| 'compiler_flags_debug': [ |
| '-frtti', |
| '-O0', |
| ], |
| 'compiler_flags_devel': [ |
| '-frtti', |
| '-O2', |
| ], |
| 'compiler_flags_qa': [ |
| '-fno-rtti', |
| '-gline-tables-only', |
| ], |
| 'compiler_flags_qa_size': [ |
| '-Os', |
| # Compile symbols in separate sections |
| '-ffunction-sections', |
| '-fdata-sections', |
| ], |
| 'compiler_flags_qa_speed': [ |
| '-O2', |
| # Compile symbols in separate sections |
| '-ffunction-sections', |
| '-fdata-sections', |
| ], |
| 'compiler_flags_gold': [ |
| '-fno-rtti', |
| '-gline-tables-only', |
| ], |
| 'compiler_flags_gold_size': [ |
| '-Os', |
| # Compile symbols in separate sections |
| '-ffunction-sections', |
| '-fdata-sections', |
| ], |
| 'compiler_flags_gold_speed': [ |
| '-O2', |
| # Compile symbols in separate sections |
| '-ffunction-sections', |
| '-fdata-sections', |
| ], |
| 'conditions': [ |
| ['clang==1', { |
| 'linker_flags': [ |
| '-fuse-ld=lld', |
| ], |
| 'common_clang_flags': [ |
| '-Werror', |
| '-fcolor-diagnostics', |
| # Default visibility to hidden, to enable dead stripping. |
| '-fvisibility=hidden', |
| # Warn for implicit type conversions that may change a value. |
| '-Wconversion', |
| '-Wno-c++11-compat', |
| # This complains about 'override', which we use heavily. |
| '-Wno-c++11-extensions', |
| # Warns on switches on enums that cover all enum values but |
| # also contain a default: branch. Chrome is full of that. |
| '-Wno-covered-switch-default', |
| # protobuf uses hash_map. |
| '-Wno-deprecated', |
| '-fno-exceptions', |
| # Don't warn about the "struct foo f = {0};" initialization pattern. |
| '-Wno-missing-field-initializers', |
| # Do not warn for implicit sign conversions. |
| '-Wno-sign-conversion', |
| '-fno-strict-aliasing', # See http://crbug.com/32204 |
| '-Wno-unnamed-type-template-args', |
| # Triggered by the COMPILE_ASSERT macro. |
| '-Wno-unused-local-typedef', |
| # Do not warn if a function or variable cannot be implicitly |
| # instantiated. |
| '-Wno-undefined-var-template', |
| # Do not warn about an implicit exception spec mismatch. |
| '-Wno-implicit-exception-spec-mismatch', |
| # It's OK not to use some input parameters. |
| '-Wno-unused-parameter', |
| ], |
| }], |
| ['cobalt_fastbuild==0', { |
| 'compiler_flags_debug': [ |
| '-g', |
| ], |
| 'compiler_flags_devel': [ |
| '-g', |
| ], |
| 'compiler_flags_qa': [ |
| '-gline-tables-only', |
| ], |
| 'compiler_flags_gold': [ |
| '-gline-tables-only', |
| ], |
| }], |
| ], |
| 'defines_debug': [ |
| # Enable debug mode for the C++ standard library. |
| # https://gcc.gnu.org/onlinedocs/libstdc%2B%2B/manual/debug_mode_using.html |
| # https://libcxx.llvm.org/docs/DesignDocs/DebugMode.html |
| '_GLIBCXX_DEBUG', |
| '_LIBCPP_DEBUG=1', |
| ], |
| 'defines_devel': [ |
| # Enable debug mode for the C++ standard library. |
| # https://gcc.gnu.org/onlinedocs/libstdc%2B%2B/manual/debug_mode_using.html |
| # https://libcxx.llvm.org/docs/DesignDocs/DebugMode.html |
| '_GLIBCXX_DEBUG', |
| '_LIBCPP_DEBUG=0', |
| ], |
| }, |
| |
| 'target_defaults': { |
| 'defines': [ |
| # By default, <EGL/eglplatform.h> pulls in some X11 headers that have some |
| # nasty macros (|Status|, for example) that conflict with Chromium base. |
| 'MESA_EGL_NO_X11_HEADERS' |
| ], |
| 'cflags_c': [ |
| # Limit to C99. This allows Linux to be a canary build for any |
| # C11 features that are not supported on some platforms' compilers. |
| '-std=c99', |
| ], |
| 'cflags_cc': [ |
| '-std=gnu++11', |
| ], |
| 'ldflags': [ |
| '-Wl,-rpath=$ORIGIN/lib', |
| # Cleanup unused sections |
| '-Wl,-gc-sections', |
| ], |
| 'target_conditions': [ |
| ['sb_pedantic_warnings==1', { |
| 'cflags': [ |
| '-Wall', |
| '-Wextra', |
| '-Wunreachable-code', |
| '<@(common_clang_flags)', |
| ], |
| },{ |
| 'cflags': [ |
| '<@(common_clang_flags)', |
| # 'this' pointer cannot be NULL...pointer may be assumed |
| # to always convert to true. |
| '-Wno-undefined-bool-conversion', |
| # Skia doesn't use overrides. |
| '-Wno-inconsistent-missing-override', |
| # Do not warn for implicit type conversions that may change a value. |
| '-Wno-conversion', |
| # shifting a negative signed value is undefined |
| '-Wno-shift-negative-value', |
| # Width of bit-field exceeds width of its type- value will be truncated |
| '-Wno-bitfield-width', |
| '-Wno-undefined-var-template', |
| ], |
| }], |
| ['use_source_code_coverage==1', { |
| 'cflags': [ |
| # Enable Source Based Code Coverage instrumentation. |
| # See https://clang.llvm.org/docs/SourceBasedCodeCoverage.html |
| '-fprofile-instr-generate', |
| '-fcoverage-mapping', |
| ], |
| 'ldflags': [ |
| # Enable Source Based Code Coverage instrumentation. |
| # See https://clang.llvm.org/docs/SourceBasedCodeCoverage.html |
| '-fprofile-instr-generate', |
| '-fcoverage-mapping', |
| ], |
| 'defines': [ |
| 'USE_SOURCE_CODE_COVERAGE', |
| ], |
| }], |
| ['use_asan==1', { |
| 'cflags': [ |
| '-fsanitize=address', |
| '-fno-omit-frame-pointer', |
| ], |
| 'ldflags': [ |
| '-fsanitize=address', |
| # Force linking of the helpers in sanitizer_options.cc |
| '-Wl,-u_sanitizer_options_link_helper', |
| ], |
| 'defines': [ |
| 'ADDRESS_SANITIZER', |
| ], |
| 'conditions': [ |
| ['asan_symbolizer_path!=""', { |
| 'defines': [ |
| 'ASAN_SYMBOLIZER_PATH="<@(asan_symbolizer_path)"', |
| ], |
| }], |
| ], |
| }], |
| ['use_tsan==1', { |
| 'cflags': [ |
| '-fsanitize=thread', |
| '-fno-omit-frame-pointer', |
| ], |
| 'ldflags': [ |
| '-fsanitize=thread', |
| ], |
| 'defines': [ |
| 'THREAD_SANITIZER', |
| ], |
| }], |
| ], |
| }, # end of target_defaults |
| } |