[llvm] 53727b4 - [gn build] Use lib_dirs instead of qualified path in libs for diaguids.lib

Nico Weber via llvm-commits llvm-commits at lists.llvm.org
Tue Sep 14 09:32:30 PDT 2021


Author: Nico Weber
Date: 2021-09-14T12:31:41-04:00
New Revision: 53727b48fde1c275476e7531a0731bb1d9842dc5

URL: https://github.com/llvm/llvm-project/commit/53727b48fde1c275476e7531a0731bb1d9842dc5
DIFF: https://github.com/llvm/llvm-project/commit/53727b48fde1c275476e7531a0731bb1d9842dc5.diff

LOG: [gn build] Use lib_dirs instead of qualified path in libs for diaguids.lib

Follow-up to D109708: Using lib_dirs means this will work with ancient gn binaries.

Change the toolchain definitions to make lib_dirs have the right effect, and
pull out lib_switch of each of the tools while here.

This means we now do pass /LIBPATH: to link.exe, but since we invoke it directly
and not through clang-cl, this doesn't actually require D109624. And since this
is built in to GN, we don't need a config to push the flag to dependents.

This is arguably a bit more idiomatic, and it doesn't require folks to update
their GN binaries. No effective behavior change.

Differential Revision: https://reviews.llvm.org/D109763

Added: 
    

Modified: 
    llvm/utils/gn/build/toolchain/BUILD.gn
    llvm/utils/gn/secondary/llvm/lib/DebugInfo/PDB/BUILD.gn

Removed: 
    


################################################################################
diff  --git a/llvm/utils/gn/build/toolchain/BUILD.gn b/llvm/utils/gn/build/toolchain/BUILD.gn
index 35fbb2d1a6653..0f33ee76cb6d3 100644
--- a/llvm/utils/gn/build/toolchain/BUILD.gn
+++ b/llvm/utils/gn/build/toolchain/BUILD.gn
@@ -99,6 +99,10 @@ template("unix_toolchain") {
                  "Update it, perhaps by running llvm/utils/gn/get.py")
     }
 
+    # Make these apply to all tools below.
+    lib_switch = "-l"
+    lib_dir_switch = "-L"
+
     tool("solink") {
       outfile = "{{output_dir}}/{{target_output_name}}{{output_extension}}"
       if (current_os == "ios" || current_os == "mac") {
@@ -110,7 +114,6 @@ template("unix_toolchain") {
       }
       description = "SOLINK $outfile"
       outputs = [ outfile ]
-      lib_switch = "-l"
       output_prefix = "lib"
       default_output_dir = "{{root_out_dir}}/lib"
     }
@@ -126,7 +129,6 @@ template("unix_toolchain") {
       }
       description = "SOLINK $outfile"
       outputs = [ outfile ]
-      lib_switch = "-l"
       default_output_dir = "{{root_out_dir}}/lib"
     }
 
@@ -140,7 +142,6 @@ template("unix_toolchain") {
       }
       description = "LINK $outfile"
       outputs = [ outfile ]
-      lib_switch = "-l"
 
       # Setting this allows targets to override the default executable output by
       # setting output_dir.
@@ -290,6 +291,10 @@ template("win_toolchain") {
       default_output_dir = "{{root_out_dir}}/lib"
     }
 
+    # Make these apply to all tools below.
+    lib_switch = ""
+    lib_dir_switch = "/LIBPATH:"
+
     tool("solink") {
       outprefix = "{{output_dir}}/{{target_output_name}}"
       dllfile = "$outprefix{{output_extension}}"
@@ -304,7 +309,6 @@ template("win_toolchain") {
         dllfile,
         libfile,
       ]
-      lib_switch = ""
       default_output_extension = ".dll"
       restat = true
 
@@ -325,7 +329,6 @@ template("win_toolchain") {
       command = "$link /nologo /dll {{ldflags}} /out:$dllfile /pdb:$pdbfile {{inputs}} {{libs}} "
       description = "LINK_MODULE $dllfile"
       outputs = [ dllfile ]
-      lib_switch = ""
       runtime_outputs = outputs
       default_output_extension = ".dll"
 
@@ -339,7 +342,6 @@ template("win_toolchain") {
       command = "$link /nologo {{ldflags}} /out:$outfile /pdb:$pdbfile {{inputs}} {{libs}}"
       description = "LINK $outfile"
       outputs = [ outfile ]
-      lib_switch = ""
       default_output_extension = ".exe"
 
       # Setting this allows targets to override the default executable output by

diff  --git a/llvm/utils/gn/secondary/llvm/lib/DebugInfo/PDB/BUILD.gn b/llvm/utils/gn/secondary/llvm/lib/DebugInfo/PDB/BUILD.gn
index 07b34d41b9213..040828fab335b 100644
--- a/llvm/utils/gn/secondary/llvm/lib/DebugInfo/PDB/BUILD.gn
+++ b/llvm/utils/gn/secondary/llvm/lib/DebugInfo/PDB/BUILD.gn
@@ -126,19 +126,17 @@ static_library("PDB") {
 
     dia_lib_path = ""
     if (sysroot != "") {
-      assert(gn_version >= 1937,
-             "Building with sysroot and DIA requires a newer GN. " +
-                 "Run `python3 llvm\utils\gn\get.py` to update.")
       include_dirs = [ "$sysroot/DIA SDK/include" ]
-      dia_lib_path = "$sysroot/DIA SDK/lib/"  # x86 .lib file is here.
-      if (current_cpu == "arm") {
-        dia_lib_path += "arm/"
+      dia_lib_path = "$sysroot/DIA SDK/lib"  # x86 .lib file is here.
+      if (current_cpu == "/arm") {
+        dia_lib_path += "arm"
       } else if (current_cpu == "arm64") {
-        dia_lib_path += "arm64/"
+        dia_lib_path += "/arm64"
       } else if (current_cpu == "x64") {
-        dia_lib_path += "amd64/"
+        dia_lib_path += "/amd64"
       }
+      lib_dirs = [ dia_lib_path ]
     }
-    libs = [ "${dia_lib_path}diaguids.lib" ]
+    libs = [ "diaguids.lib" ]
   }
 }


        


More information about the llvm-commits mailing list