tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

finalize-flags.configure (2444B)


      1 # -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
      2 # vim: set filetype=python:
      3 # This Source Code Form is subject to the terms of the Mozilla Public
      4 # License, v. 2.0. If a copy of the MPL was not distributed with this
      5 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
      6 
      7 
      8 @depends(
      9     "LDFLAGS",
     10     linker_flags,
     11     linker_ldflags,
     12     pack_relative_relocs_flags,
     13     android_flags,
     14     thumb_option,
     15 )
     16 @imports(_from="mozshellutil", _import="split")
     17 def os_ldflags(
     18     env_ldflags,
     19     linker_flags,
     20     linker_ldflags,
     21     pack_relative_relocs_flags,
     22     android_flags,
     23     thumb_option,
     24 ):
     25     flags = []
     26     if android_flags:
     27         flags.extend(android_flags.ldflags)
     28     if thumb_option:
     29         flags.extend(thumb_option)
     30     if env_ldflags:
     31         flags.extend(split(env_ldflags[0]))
     32     flags.extend(linker_flags.ldflags)
     33     if linker_ldflags:
     34         flags.extend(linker_ldflags)
     35     if pack_relative_relocs_flags:
     36         flags.extend(pack_relative_relocs_flags)
     37     return flags
     38 
     39 
     40 set_config("OS_LDFLAGS", os_ldflags)
     41 
     42 
     43 set_config("MOZ_OPTIMIZE_FLAGS", moz_optimize_flags, when=~js_build)
     44 
     45 
     46 @depends(
     47     linker_optimize_flags,
     48     "MOZ_OPTIMIZE_FLAGS",
     49     lto,
     50     c_compiler,
     51 )
     52 @imports(_from="mozshellutil", _import="split")
     53 def moz_optimize_ldflags(linker_optimize_flags, env_optimize_flags, lto, c_compiler):
     54     flags = []
     55     if linker_optimize_flags:
     56         flags += linker_optimize_flags.ldflags
     57 
     58     if env_optimize_flags:
     59         flags += split(env_optimize_flags[0])
     60 
     61     # When using llvm-based LTO, non numeric optimization levels are
     62     # not supported by the linker, so force the linker to use -O2 (
     63     # which doesn't influence the level compilation units are actually
     64     # compiled at).
     65     if lto and lto.enabled and c_compiler.type == "clang":
     66         flags = ["-O2" if flag in ("-Oz", "-Os") else flag for flag in flags]
     67     return flags
     68 
     69 
     70 set_config("MOZ_OPTIMIZE_LDFLAGS", moz_optimize_ldflags)
     71 
     72 
     73 @depends(
     74     try_compile(
     75         includes=["stdio.h"],
     76         body='puts("demat");',
     77         flags=moz_optimize_flags,
     78         language="C",
     79         check_msg="for valid C compiler optimization flags",
     80     ),
     81     moz_optimize_flags,
     82     when=moz_optimize,
     83 )
     84 @imports(_from="mozshellutil", _import="quote")
     85 def check_optimization_flags(check_result, moz_optimize_flags):
     86     if not check_result:
     87         die(f"Invalid C compiler optimization flags: {quote(*moz_optimize_flags)}")