d48ea5da94
This is useful for enforcing that builds are independent of the environment; it can be used when all system library paths are added via /libpath: already. It's similar ot cl.exe's /X flag. Since it should also affect %LINK% (the other caller of `Process::GetEnv` in lld/COFF), the early-option-parsing needs to move around a bit. The options are: - Add a manual loop over the argv ArrayRef and look for "/lldignoreenv". This repeats the name of the flag in both Options.td and in DriverUtils.cpp. - Add yet another table.ParseArgs() call just for /lldignoreenv before adding %LINK%. - Use the existing early ParseArgs() that's there for --rsp-quoting and use it for /lldignoreenv for %LINK% as well. This means --rsp-quoting and /lldignoreenv can't be passed via %LINK%. I went with the third approach. Differential Revision: https://reviews.llvm.org/D67456 llvm-svn: 371852
40 lines
1.4 KiB
Plaintext
40 lines
1.4 KiB
Plaintext
# RUN: mkdir -p %t/a %t/b %t/c
|
|
# RUN: cp %p/Inputs/std64.lib %t/a/
|
|
# RUN: cp %p/Inputs/std64.lib %t/b/
|
|
# RUN: cp %p/Inputs/std64.lib %t/c/
|
|
|
|
# RUN: env LIB=%t/a lld-link /out:%t.exe /entry:main /verbose \
|
|
# RUN: std64.lib /subsystem:console %p/Inputs/hello64.obj \
|
|
# RUN: /libpath:%t/b /libpath:%t/c 2> %t.log
|
|
# RUN: FileCheck -check-prefix=CHECK1 %s < %t.log
|
|
|
|
CHECK1: b{{[/\\]}}std64.lib
|
|
|
|
# RUN: lld-link /out:%t.exe /entry:main /verbose \
|
|
# RUN: std64.lib /subsystem:console %p/Inputs/hello64.obj \
|
|
# RUN: /libpath:%t/a /libpath:%t/b /libpath:%t/c 2> %t.log
|
|
# RUN: FileCheck -check-prefix=CHECK2 %s < %t.log
|
|
|
|
CHECK2: a{{[/\\]}}std64.lib
|
|
|
|
# RUN: lld-link /out:%t.exe /entry:main /verbose \
|
|
# RUN: %t/a/std64.lib /subsystem:console %p/Inputs/hello64.obj \
|
|
# RUN: /libpath:%t/b /verbose > %t.log 2>&1
|
|
# RUN: FileCheck -check-prefix=CHECK3 %s < %t.log
|
|
|
|
CHECK3: Reading {{.*}}a/std64.lib
|
|
CHECK3-NOT: Reading {{.*}}b/std64.lib
|
|
|
|
# RUN: env LIB=%t/a lld-link /out:%t.exe /entry:main /verbose \
|
|
# RUN: std64.lib /subsystem:console %p/Inputs/hello64.obj \
|
|
# RUN: 2> %t.log
|
|
# RUN: FileCheck -check-prefix=CHECK4 %s < %t.log
|
|
|
|
CHECK4: a{{[/\\]}}std64.lib
|
|
|
|
# This should fail because /lldignoreenv should make lld-link
|
|
# ignore the LIB env var.
|
|
# RUN: env LIB=%t/a not lld-link /out:%t.exe /entry:main /verbose \
|
|
# RUN: std64.lib /subsystem:console %p/Inputs/hello64.obj \
|
|
# RUN: /lldignoreenv
|