Skip to content

Commit 61a5e28

Browse files
committed
[Driver] Change layout of per-target runtimes to resemble multiarch
This is a follow up to r361432, changing the layout of per-target runtimes to more closely resemble multiarch. While before, we used the following layout: [RESOURCE_DIR]/<target>/lib/libclang_rt.<runtime>.<ext> Now we use the following layout: [RESOURCE_DIR]/lib/<target>/libclang_rt.<runtime>.<ext> This also more closely resembles the existing "non-per-target" layout: [RESOURCE_DIR]/lib/<os>/libclang_rt.<runtime>-<arch>.<ext> This change will enable further simplification of the driver logic in follow up changes. Differential Revision: https://reviews.llvm.org/D62469 llvm-svn: 361784
1 parent 82dc06c commit 61a5e28

29 files changed

+28
-28
lines changed

clang/lib/Driver/ToolChain.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -411,13 +411,13 @@ Optional<std::string> ToolChain::getRuntimePath() const {
411411

412412
// First try the triple passed to driver as --target=<triple>.
413413
P.assign(D.ResourceDir);
414-
llvm::sys::path::append(P, D.getTargetTriple(), "lib");
414+
llvm::sys::path::append(P, "lib", D.getTargetTriple());
415415
if (getVFS().exists(P))
416416
return llvm::Optional<std::string>(P.str());
417417

418418
// Second try the normalized triple.
419419
P.assign(D.ResourceDir);
420-
llvm::sys::path::append(P, Triple.str(), "lib");
420+
llvm::sys::path::append(P, "lib", Triple.str());
421421
if (getVFS().exists(P))
422422
return llvm::Optional<std::string>(P.str());
423423

clang/test/Driver/Inputs/resource_dir_with_per_target_subdir/lib/x86_64-fuchsia/libclang_rt.xray.a

Whitespace-only changes.

clang/test/Driver/Inputs/resource_dir_with_per_target_subdir/lib/x86_64-fuchsia/noexcept/.keep

Whitespace-only changes.

clang/test/Driver/Inputs/resource_dir_with_per_target_subdir/lib/x86_64-linux-gnu/.keep

Whitespace-only changes.

clang/test/Driver/Inputs/resource_dir_with_per_target_subdir/lib/x86_64-linux-gnu/libclang_rt.builtins.a

Whitespace-only changes.

clang/test/Driver/fuchsia.c

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@
2626
// CHECK-NOT: crti.o
2727
// CHECK-NOT: crtbegin.o
2828
// CHECK: "-L[[SYSROOT]]{{/|\\\\}}lib"
29-
// CHECK-X86_64: "[[RESOURCE_DIR]]{{/|\\\\}}x86_64-fuchsia{{/|\\\\}}lib{{/|\\\\}}libclang_rt.builtins.a"
30-
// CHECK-AARCH64: "[[RESOURCE_DIR]]{{/|\\\\}}aarch64-fuchsia{{/|\\\\}}lib{{/|\\\\}}libclang_rt.builtins.a"
29+
// CHECK-X86_64: "[[RESOURCE_DIR]]{{/|\\\\}}lib{{/|\\\\}}x86_64-fuchsia{{/|\\\\}}libclang_rt.builtins.a"
30+
// CHECK-AARCH64: "[[RESOURCE_DIR]]{{/|\\\\}}lib{{/|\\\\}}aarch64-fuchsia{{/|\\\\}}libclang_rt.builtins.a"
3131
// CHECK: "-lc"
3232
// CHECK-NOT: crtend.o
3333
// CHECK-NOT: crtn.o
@@ -57,21 +57,21 @@
5757
// RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \
5858
// RUN: | FileCheck %s -check-prefix=CHECK-NODEFAULTLIBS
5959
// CHECK-NODEFAULTLIBS: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
60-
// CHECK-NODEFAULTLIBS-NOT: "[[RESOURCE_DIR]]{{/|\\\\}}x86_64-fuchsia{{/|\\\\}}lib{{/|\\\\}}libclang_rt.builtins.a"
60+
// CHECK-NODEFAULTLIBS-NOT: "[[RESOURCE_DIR]]{{/|\\\\}}lib{{/|\\\\}}x86_64-fuchsia{{/|\\\\}}libclang_rt.builtins.a"
6161
// CHECK-NODEFAULTLIBS-NOT: "-lc"
6262

6363
// RUN: %clang %s -### --target=x86_64-fuchsia -nostdlib -fuse-ld=lld 2>&1 \
6464
// RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \
6565
// RUN: | FileCheck %s -check-prefix=CHECK-NOSTDLIB
6666
// CHECK-NOSTDLIB: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
67-
// CHECK-NOSTDLIB-NOT: "[[RESOURCE_DIR]]{{/|\\\\}}x86_64-fuchsia{{/|\\\\}}lib{{/|\\\\}}libclang_rt.builtins.a"
67+
// CHECK-NOSTDLIB-NOT: "[[RESOURCE_DIR]]{{/|\\\\}}lib{{/|\\\\}}x86_64-fuchsia{{/|\\\\}}libclang_rt.builtins.a"
6868
// CHECK-NOSTDLIB-NOT: "-lc"
6969

7070
// RUN: %clang %s -### --target=x86_64-fuchsia -nolibc -fuse-ld=lld 2>&1 \
7171
// RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \
7272
// RUN: | FileCheck %s -check-prefix=CHECK-NOLIBC
7373
// CHECK-NOLIBC: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
74-
// CHECK-NOLIBC: "[[RESOURCE_DIR]]{{/|\\\\}}x86_64-fuchsia{{/|\\\\}}lib{{/|\\\\}}libclang_rt.builtins.a"
74+
// CHECK-NOLIBC: "[[RESOURCE_DIR]]{{/|\\\\}}lib{{/|\\\\}}x86_64-fuchsia{{/|\\\\}}libclang_rt.builtins.a"
7575
// CHECK-NOLIBC-NOT: "-lc"
7676

7777
// RUN: %clang %s -### --target=x86_64-fuchsia \
@@ -81,7 +81,7 @@
8181
// RUN: | FileCheck %s -check-prefix=CHECK-SAFESTACK
8282
// CHECK-SAFESTACK: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
8383
// CHECK-SAFESTACK: "-fsanitize=safe-stack"
84-
// CHECK-SAFESTACK-NOT: "[[RESOURCE_DIR]]{{/|\\\\}}x86_64-fuchsia{{/|\\\\}}lib{{/|\\\\}}libclang_rt.safestack.a"
84+
// CHECK-SAFESTACK-NOT: "[[RESOURCE_DIR]]{{/|\\\\}}lib{{/|\\\\}}x86_64-fuchsia{{/|\\\\}}libclang_rt.safestack.a"
8585
// CHECK-SAFESTACK-NOT: "__safestack_init"
8686

8787
// RUN: %clang %s -### --target=x86_64-fuchsia \
@@ -93,8 +93,8 @@
9393
// CHECK-ASAN-X86: "-fsanitize=address"
9494
// CHECK-ASAN-X86: "-fsanitize-address-globals-dead-stripping"
9595
// CHECK-ASAN-X86: "-dynamic-linker" "asan/ld.so.1"
96-
// CHECK-ASAN-X86: "[[RESOURCE_DIR]]{{/|\\\\}}x86_64-fuchsia{{/|\\\\}}lib{{/|\\\\}}libclang_rt.asan.so"
97-
// CHECK-ASAN-X86: "[[RESOURCE_DIR]]{{/|\\\\}}x86_64-fuchsia{{/|\\\\}}lib{{/|\\\\}}libclang_rt.asan-preinit.a"
96+
// CHECK-ASAN-X86: "[[RESOURCE_DIR]]{{/|\\\\}}lib{{/|\\\\}}x86_64-fuchsia{{/|\\\\}}libclang_rt.asan.so"
97+
// CHECK-ASAN-X86: "[[RESOURCE_DIR]]{{/|\\\\}}lib{{/|\\\\}}x86_64-fuchsia{{/|\\\\}}libclang_rt.asan-preinit.a"
9898

9999
// RUN: %clang %s -### --target=aarch64-fuchsia \
100100
// RUN: -fsanitize=address 2>&1 \
@@ -105,8 +105,8 @@
105105
// CHECK-ASAN-AARCH64: "-fsanitize=address"
106106
// CHECK-ASAN-AARCH64: "-fsanitize-address-globals-dead-stripping"
107107
// CHECK-ASAN-AARCH64: "-dynamic-linker" "asan/ld.so.1"
108-
// CHECK-ASAN-AARCH64: "[[RESOURCE_DIR]]{{/|\\\\}}aarch64-fuchsia{{/|\\\\}}lib{{/|\\\\}}libclang_rt.asan.so"
109-
// CHECK-ASAN-AARCH64: "[[RESOURCE_DIR]]{{/|\\\\}}aarch64-fuchsia{{/|\\\\}}lib{{/|\\\\}}libclang_rt.asan-preinit.a"
108+
// CHECK-ASAN-AARCH64: "[[RESOURCE_DIR]]{{/|\\\\}}lib{{/|\\\\}}aarch64-fuchsia{{/|\\\\}}libclang_rt.asan.so"
109+
// CHECK-ASAN-AARCH64: "[[RESOURCE_DIR]]{{/|\\\\}}lib{{/|\\\\}}aarch64-fuchsia{{/|\\\\}}libclang_rt.asan-preinit.a"
110110

111111
// RUN: %clang %s -### --target=x86_64-fuchsia \
112112
// RUN: -fsanitize=address -fPIC -shared 2>&1 \
@@ -116,8 +116,8 @@
116116
// CHECK-ASAN-SHARED: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
117117
// CHECK-ASAN-SHARED: "-fsanitize=address"
118118
// CHECK-ASAN-SHARED: "-fsanitize-address-globals-dead-stripping"
119-
// CHECK-ASAN-SHARED: "[[RESOURCE_DIR]]{{/|\\\\}}x86_64-fuchsia{{/|\\\\}}lib{{/|\\\\}}libclang_rt.asan.so"
120-
// CHECK-ASAN-SHARED-NOT: "[[RESOURCE_DIR]]{{/|\\\\}}x86_64-fuchsia{{/|\\\\}}lib{{/|\\\\}}libclang_rt.asan-preinit.a"
119+
// CHECK-ASAN-SHARED: "[[RESOURCE_DIR]]{{/|\\\\}}lib{{/|\\\\}}x86_64-fuchsia{{/|\\\\}}libclang_rt.asan.so"
120+
// CHECK-ASAN-SHARED-NOT: "[[RESOURCE_DIR]]{{/|\\\\}}lib{{/|\\\\}}x86_64-fuchsia{{/|\\\\}}libclang_rt.asan-preinit.a"
121121

122122
// RUN: %clang %s -### --target=x86_64-fuchsia \
123123
// RUN: -fsanitize=fuzzer 2>&1 \
@@ -126,7 +126,7 @@
126126
// RUN: | FileCheck %s -check-prefix=CHECK-FUZZER-X86
127127
// CHECK-FUZZER-X86: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
128128
// CHECK-FUZZER-X86: "-fsanitize=fuzzer,fuzzer-no-link,safe-stack"
129-
// CHECK-FUZZER-X86: "[[RESOURCE_DIR]]{{/|\\\\}}x86_64-fuchsia{{/|\\\\}}lib{{/|\\\\}}libclang_rt.fuzzer.a"
129+
// CHECK-FUZZER-X86: "[[RESOURCE_DIR]]{{/|\\\\}}lib{{/|\\\\}}x86_64-fuchsia{{/|\\\\}}libclang_rt.fuzzer.a"
130130

131131
// RUN: %clang %s -### --target=aarch64-fuchsia \
132132
// RUN: -fsanitize=fuzzer 2>&1 \
@@ -135,7 +135,7 @@
135135
// RUN: | FileCheck %s -check-prefix=CHECK-FUZZER-AARCH64
136136
// CHECK-FUZZER-AARCH64: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
137137
// CHECK-FUZZER-AARCH64: "-fsanitize=fuzzer,fuzzer-no-link,safe-stack"
138-
// CHECK-FUZZER-AARCH64: "[[RESOURCE_DIR]]{{/|\\\\}}aarch64-fuchsia{{/|\\\\}}lib{{/|\\\\}}libclang_rt.fuzzer.a"
138+
// CHECK-FUZZER-AARCH64: "[[RESOURCE_DIR]]{{/|\\\\}}lib{{/|\\\\}}aarch64-fuchsia{{/|\\\\}}libclang_rt.fuzzer.a"
139139

140140
// RUN: %clang %s -### --target=x86_64-fuchsia \
141141
// RUN: -fsanitize=scudo 2>&1 \
@@ -145,7 +145,7 @@
145145
// CHECK-SCUDO-X86: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
146146
// CHECK-SCUDO-X86: "-fsanitize=safe-stack,scudo"
147147
// CHECK-SCUDO-X86: "-pie"
148-
// CHECK-SCUDO-X86: "[[RESOURCE_DIR]]{{/|\\\\}}x86_64-fuchsia{{/|\\\\}}lib{{/|\\\\}}libclang_rt.scudo.so"
148+
// CHECK-SCUDO-X86: "[[RESOURCE_DIR]]{{/|\\\\}}lib{{/|\\\\}}x86_64-fuchsia{{/|\\\\}}libclang_rt.scudo.so"
149149

150150
// RUN: %clang %s -### --target=aarch64-fuchsia \
151151
// RUN: -fsanitize=scudo 2>&1 \
@@ -155,7 +155,7 @@
155155
// CHECK-SCUDO-AARCH64: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
156156
// CHECK-SCUDO-AARCH64: "-fsanitize=safe-stack,scudo"
157157
// CHECK-SCUDO-AARCH64: "-pie"
158-
// CHECK-SCUDO-AARCH64: "[[RESOURCE_DIR]]{{/|\\\\}}aarch64-fuchsia{{/|\\\\}}lib{{/|\\\\}}libclang_rt.scudo.so"
158+
// CHECK-SCUDO-AARCH64: "[[RESOURCE_DIR]]{{/|\\\\}}lib{{/|\\\\}}aarch64-fuchsia{{/|\\\\}}libclang_rt.scudo.so"
159159

160160
// RUN: %clang %s -### --target=x86_64-fuchsia \
161161
// RUN: -fsanitize=scudo -fPIC -shared 2>&1 \
@@ -164,7 +164,7 @@
164164
// RUN: | FileCheck %s -check-prefix=CHECK-SCUDO-SHARED
165165
// CHECK-SCUDO-SHARED: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
166166
// CHECK-SCUDO-SHARED: "-fsanitize=safe-stack,scudo"
167-
// CHECK-SCUDO-SHARED: "[[RESOURCE_DIR]]{{/|\\\\}}x86_64-fuchsia{{/|\\\\}}lib{{/|\\\\}}libclang_rt.scudo.so"
167+
// CHECK-SCUDO-SHARED: "[[RESOURCE_DIR]]{{/|\\\\}}lib{{/|\\\\}}x86_64-fuchsia{{/|\\\\}}libclang_rt.scudo.so"
168168

169169
// RUN: %clang %s -### --target=x86_64-fuchsia \
170170
// RUN: -fxray-instrument -fxray-modes=xray-basic \
@@ -173,8 +173,8 @@
173173
// RUN: | FileCheck %s -check-prefix=CHECK-XRAY-X86
174174
// CHECK-XRAY-X86: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
175175
// CHECK-XRAY-X86: "-fxray-instrument"
176-
// CHECK-XRAY-X86: "[[RESOURCE_DIR]]{{/|\\\\}}x86_64-fuchsia{{/|\\\\}}lib{{/|\\\\}}libclang_rt.xray.a"
177-
// CHECK-XRAY-X86: "[[RESOURCE_DIR]]{{/|\\\\}}x86_64-fuchsia{{/|\\\\}}lib{{/|\\\\}}libclang_rt.xray-basic.a"
176+
// CHECK-XRAY-X86: "[[RESOURCE_DIR]]{{/|\\\\}}lib{{/|\\\\}}x86_64-fuchsia{{/|\\\\}}libclang_rt.xray.a"
177+
// CHECK-XRAY-X86: "[[RESOURCE_DIR]]{{/|\\\\}}lib{{/|\\\\}}x86_64-fuchsia{{/|\\\\}}libclang_rt.xray-basic.a"
178178

179179
// RUN: %clang %s -### --target=aarch64-fuchsia \
180180
// RUN: -fxray-instrument -fxray-modes=xray-basic \
@@ -183,8 +183,8 @@
183183
// RUN: | FileCheck %s -check-prefix=CHECK-XRAY-AARCH64
184184
// CHECK-XRAY-AARCH64: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
185185
// CHECK-XRAY-AARCH64: "-fxray-instrument"
186-
// CHECK-XRAY-AARCH64: "[[RESOURCE_DIR]]{{/|\\\\}}aarch64-fuchsia{{/|\\\\}}lib{{/|\\\\}}libclang_rt.xray.a"
187-
// CHECK-XRAY-AARCH64: "[[RESOURCE_DIR]]{{/|\\\\}}aarch64-fuchsia{{/|\\\\}}lib{{/|\\\\}}libclang_rt.xray-basic.a"
186+
// CHECK-XRAY-AARCH64: "[[RESOURCE_DIR]]{{/|\\\\}}lib{{/|\\\\}}aarch64-fuchsia{{/|\\\\}}libclang_rt.xray.a"
187+
// CHECK-XRAY-AARCH64: "[[RESOURCE_DIR]]{{/|\\\\}}lib{{/|\\\\}}aarch64-fuchsia{{/|\\\\}}libclang_rt.xray-basic.a"
188188

189189
// RUN: %clang %s -### --target=aarch64-fuchsia \
190190
// RUN: -O3 -flto -mcpu=cortex-a53 2>&1 \

clang/test/Driver/fuchsia.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
// CHECK: "-lc++"
2424
// CHECK: "-lm"
2525
// CHECK: "--pop-state"
26-
// CHECK: "[[RESOURCE_DIR]]{{/|\\\\}}x86_64-fuchsia{{/|\\\\}}lib{{/|\\\\}}libclang_rt.builtins.a"
26+
// CHECK: "[[RESOURCE_DIR]]{{/|\\\\}}lib{{/|\\\\}}x86_64-fuchsia{{/|\\\\}}libclang_rt.builtins.a"
2727
// CHECK: "-lc"
2828
// CHECK-NOT: crtend.o
2929
// CHECK-NOT: crtn.o

clang/test/Driver/linux-per-target-runtime-dir.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,10 @@
1818
// RUN: --target=x86_64-linux-gnu \
1919
// RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \
2020
// RUN: | FileCheck --check-prefix=CHECK-CLANGRT-X8664 %s
21-
// CHECK-CLANGRT-X8664: x86_64-linux-gnu{{/|\\}}lib{{/|\\}}libclang_rt.builtins.a
21+
// CHECK-CLANGRT-X8664: lib{{/|\\}}x86_64-linux-gnu{{/|\\}}libclang_rt.builtins.a
2222

2323
// RUN: %clang -rtlib=compiler-rt -print-file-name=libclang_rt.builtins.a 2>&1 \
2424
// RUN: --target=x86_64-linux-gnu \
2525
// RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \
2626
// RUN: | FileCheck --check-prefix=CHECK-FILE-NAME-X8664 %s
27-
// CHECK-FILE-NAME-X8664: x86_64-linux-gnu{{/|\\}}lib{{/|\\}}libclang_rt.builtins.a
27+
// CHECK-FILE-NAME-X8664: lib{{/|\\}}x86_64-linux-gnu{{/|\\}}libclang_rt.builtins.a

compiler-rt/cmake/Modules/CompilerRTUtils.cmake

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -365,7 +365,7 @@ endfunction()
365365
function(get_compiler_rt_install_dir arch install_dir)
366366
if(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT APPLE)
367367
get_compiler_rt_target(${arch} target)
368-
set(${install_dir} ${COMPILER_RT_INSTALL_PATH}/${target}/lib PARENT_SCOPE)
368+
set(${install_dir} ${COMPILER_RT_INSTALL_PATH}/lib/${target} PARENT_SCOPE)
369369
else()
370370
set(${install_dir} ${COMPILER_RT_LIBRARY_INSTALL_DIR} PARENT_SCOPE)
371371
endif()
@@ -374,7 +374,7 @@ endfunction()
374374
function(get_compiler_rt_output_dir arch output_dir)
375375
if(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT APPLE)
376376
get_compiler_rt_target(${arch} target)
377-
set(${output_dir} ${COMPILER_RT_OUTPUT_DIR}/${target}/lib PARENT_SCOPE)
377+
set(${output_dir} ${COMPILER_RT_OUTPUT_DIR}/lib/${target} PARENT_SCOPE)
378378
else()
379379
set(${output_dir} ${COMPILER_RT_LIBRARY_OUTPUT_DIR} PARENT_SCOPE)
380380
endif()

0 commit comments

Comments
 (0)