Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 10 Apr 2021 13:30:00 GMT
From:      Alex Richardson <arichardson@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
Subject:   git: 4eaec3eb5f9e - stable/13 - tools/build/make.py: Avoid calling brew --prefix on macOS unnecessarily
Message-ID:  <202104101330.13ADU0dQ002164@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch stable/13 has been updated by arichardson:

URL: https://cgit.FreeBSD.org/src/commit/?id=4eaec3eb5f9e67eb20be00c20ff28537c3a51285

commit 4eaec3eb5f9e67eb20be00c20ff28537c3a51285
Author:     Alex Richardson <arichardson@FreeBSD.org>
AuthorDate: 2021-03-05 10:21:12 +0000
Commit:     Alex Richardson <arichardson@FreeBSD.org>
CommitDate: 2021-04-10 12:56:08 +0000

    tools/build/make.py: Avoid calling brew --prefix on macOS unnecessarily
    
    If all the require variables (XCC/XCXX/XCPP/XLD) are already set in the
    environment, we don't have to infer a default value for the cross toolchain
    path. This avoids an additional `brew --prefix` call when building with
    cheribuild (since it already sets all these variables).
    
    (cherry picked from commit 2b181156c893843266c2825098360db2364dbd23)
---
 tools/build/make.py | 28 +++++++++++++++-------------
 1 file changed, 15 insertions(+), 13 deletions(-)

diff --git a/tools/build/make.py b/tools/build/make.py
index c34147f6ac21..0cf831a3c966 100755
--- a/tools/build/make.py
+++ b/tools/build/make.py
@@ -119,6 +119,15 @@ def check_required_make_env_var(varname, binary_name, bindir):
     if parsed_args.debug:
         run([guess, "--version"])
 
+def check_xtool_make_env_var(varname, binary_name):
+    # Avoid calling brew --prefix on macOS if all variables are already set:
+    if os.getenv(varname):
+        return
+    global parsed_args
+    if parsed_args.cross_bindir is None:
+        parsed_args.cross_bindir = default_cross_toolchain()
+    return check_required_make_env_var(varname, binary_name,
+                                       parsed_args.cross_bindir)
 
 def default_cross_toolchain():
     # default to homebrew-installed clang on MacOS if available
@@ -170,8 +179,6 @@ if __name__ == "__main__":
     except ImportError:
         pass
     parsed_args, bmake_args = parser.parse_known_args()
-    if parsed_args.cross_bindir is None:
-        parsed_args.cross_bindir = default_cross_toolchain()
 
     MAKEOBJDIRPREFIX = os.getenv("MAKEOBJDIRPREFIX")
     if not MAKEOBJDIRPREFIX:
@@ -209,16 +216,11 @@ if __name__ == "__main__":
 
         # On non-FreeBSD we need to explicitly pass XCC/XLD/X_COMPILER_TYPE
         use_cross_gcc = parsed_args.cross_compiler_type == "gcc"
-        check_required_make_env_var("XCC", "gcc" if use_cross_gcc else "clang",
-                                    parsed_args.cross_bindir)
-        check_required_make_env_var("XCXX",
-                                    "g++" if use_cross_gcc else "clang++",
-                                    parsed_args.cross_bindir)
-        check_required_make_env_var("XCPP",
-                                    "cpp" if use_cross_gcc else "clang-cpp",
-                                    parsed_args.cross_bindir)
-        check_required_make_env_var("XLD", "ld" if use_cross_gcc else "ld.lld",
-                                    parsed_args.cross_bindir)
+        check_xtool_make_env_var("XCC", "gcc" if use_cross_gcc else "clang")
+        check_xtool_make_env_var("XCXX", "g++" if use_cross_gcc else "clang++")
+        check_xtool_make_env_var("XCPP",
+                                 "cpp" if use_cross_gcc else "clang-cpp")
+        check_xtool_make_env_var("XLD", "ld" if use_cross_gcc else "ld.lld")
 
         # We also need to set STRIPBIN if there is no working strip binary
         # in $PATH.
@@ -232,7 +234,7 @@ if __name__ == "__main__":
             else:
                 strip_binary = "strip"
             check_required_make_env_var("STRIPBIN", strip_binary,
-                                        parsed_args.cross_bindir)
+                                        parsed_args.host_bindir)
         if os.getenv("STRIPBIN") or "STRIPBIN" in new_env_vars:
             # If we are setting STRIPBIN, we have to set XSTRIPBIN to the
             # default if it is not set otherwise already.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202104101330.13ADU0dQ002164>