1 // UNSUPPORTED: system-windows
2 
3 // -----------------------------------------------------------------------------
4 // Passing --musl
5 // -----------------------------------------------------------------------------
6 // RUN: %clang -### -target hexagon-unknown-linux-musl \
7 // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \
8 // RUN:   -mcpu=hexagonv60 \
9 // RUN:   -fuse-ld=lld \
10 // RUN:   --sysroot=%S/Inputs/basic_linux_libcxx_tree \
11 // RUN:   %s 2>&1 \
12 // RUN:   | FileCheck -check-prefix=CHECK000 %s
13 // CHECK000-NOT:  {{.*}}basic_linux_libcxx_tree{{/|\\\\}}usr{{/|\\\\}}lib{{/|\\\\}}crti.o
14 // CHECK000:      "-dynamic-linker={{/|\\\\}}lib{{/|\\\\}}ld-musl-hexagon.so.1"
15 // CHECK000:      "{{.*}}basic_linux_libcxx_tree{{/|\\\\}}usr{{/|\\\\}}lib{{/|\\\\}}crt1.o"
16 // CHECK000:      "-lclang_rt.builtins-hexagon" "-lc"
17 // -----------------------------------------------------------------------------
18 // Passing --musl --shared
19 // -----------------------------------------------------------------------------
20 // RUN: %clang -### -target hexagon-unknown-linux-musl \
21 // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \
22 // RUN:   -mcpu=hexagonv60 \
23 // RUN:   --sysroot=%S/Inputs/basic_linux_libcxx_tree -shared \
24 // RUN:   %s 2>&1 \
25 // RUN:   | FileCheck -check-prefix=CHECK001 %s
26 // CHECK001-NOT:    -dynamic-linker={{/|\\\\}}lib{{/|\\\\}}ld-musl-hexagon.so.1
27 // CHECK001:        "{{.*}}basic_linux_libcxx_tree{{/|\\\\}}usr{{/|\\\\}}lib{{/|\\\\}}crti.o"
28 // CHECK001:        "-lclang_rt.builtins-hexagon" "-lc"
29 // CHECK001-NOT:    {{.*}}basic_linux_libcxx_tree{{/|\\\\}}usr{{/|\\\\}}lib{{/|\\\\}}crt1.o
30 // -----------------------------------------------------------------------------
31 // Passing --musl -nostdlib
32 // -----------------------------------------------------------------------------
33 // RUN: %clang -### -target hexagon-unknown-linux-musl \
34 // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \
35 // RUN:   -mcpu=hexagonv60 \
36 // RUN:   --sysroot=%S/Inputs/basic_linux_libcxx_tree -nostdlib \
37 // RUN:   %s 2>&1 \
38 // RUN:   | FileCheck -check-prefix=CHECK002 %s
39 // CHECK002:       "-dynamic-linker={{/|\\\\}}lib{{/|\\\\}}ld-musl-hexagon.so.1"
40 // CHECK002-NOT:   {{.*}}basic_linux_libcxx_tree{{/|\\\\}}usr{{/|\\\\}}lib{{/|\\\\}}crti.o
41 // CHECK002-NOT:   {{.*}}basic_linux_libcxx_tree{{/|\\\\}}usr{{/|\\\\}}lib{{/|\\\\}}crt1.o
42 // CHECK002-NOT:   "-lclang_rt.builtins-hexagon"
43 // CHECK002-NOT:   "-lc"
44 // -----------------------------------------------------------------------------
45 // Passing --musl -nostartfiles
46 // -----------------------------------------------------------------------------
47 // RUN: %clang -### -target hexagon-unknown-linux-musl \
48 // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \
49 // RUN:   -mcpu=hexagonv60 \
50 // RUN:   --sysroot=%S/Inputs/basic_linux_libcxx_tree -nostartfiles \
51 // RUN:   %s 2>&1 \
52 // RUN:   | FileCheck -check-prefix=CHECK003 %s
53 // CHECK003:       "-dynamic-linker={{/|\\\\}}lib{{/|\\\\}}ld-musl-hexagon.so.1"
54 // CHECK003-NOT:   {{.*}}basic_linux_libcxx_tree{{/|\\\\}}usr{{/|\\\\}}lib{{/|\\\\}}Scrt1.o
55 // CHECK003-NOT:   {{.*}}basic_linux_libcxx_tree{{/|\\\\}}usr{{/|\\\\}}lib{{/|\\\\}}crt1.o
56 // CHECK003:       "-lclang_rt.builtins-hexagon" "-lc"
57 // -----------------------------------------------------------------------------
58 // Passing --musl -nodefaultlibs
59 // -----------------------------------------------------------------------------
60 // RUN: %clang -### -target hexagon-unknown-linux-musl \
61 // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \
62 // RUN:   -mcpu=hexagonv60 \
63 // RUN:   --sysroot=%S/Inputs/basic_linux_libcxx_tree -nodefaultlibs \
64 // RUN:   %s 2>&1 \
65 // RUN:   | FileCheck -check-prefix=CHECK004 %s
66 // CHECK004:       "-dynamic-linker={{/|\\\\}}lib{{/|\\\\}}ld-musl-hexagon.so.1"
67 // CHECK004:       "{{.*}}basic_linux_libcxx_tree{{/|\\\\}}usr{{/|\\\\}}lib{{/|\\\\}}crt1.o"
68 // CHECK004-NOT:   "-lclang_rt.builtins-hexagon"
69 // CHECK004-NOT:   "-lc"
70 // -----------------------------------------------------------------------------
71 // Not Passing -fno-use-init-array when musl is selected
72 // -----------------------------------------------------------------------------
73 // RUN: %clang -### -target hexagon-unknown-linux-musl \
74 // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \
75 // RUN:   -mcpu=hexagonv60 \
76 // RUN:   %s 2>&1 \
77 // RUN:   | FileCheck -check-prefix=CHECK005 %s
78 // CHECK005-NOT:          -fno-use-init-array
79 // -----------------------------------------------------------------------------
80 // -----------------------------------------------------------------------------
81 // c++ when musl is selected
82 // -----------------------------------------------------------------------------
83 // RUN: %clangxx -### -target hexagon-unknown-linux-musl \
84 // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \
85 // RUN:   --sysroot=%S/Inputs/basic_linux_libcxx_tree \
86 // RUN:   -mcpu=hexagonv60 \
87 // RUN:   %s 2>&1 \
88 // RUN:   | FileCheck -check-prefix=CHECK006 %s
89 // CHECK006:          "-internal-isystem" "{{.*}}basic_linux_libcxx_tree{{/|\\\\}}usr{{/|\\\\}}include{{/|\\\\}}c++{{/|\\\\}}v1"
90 // -----------------------------------------------------------------------------
91 // c++ when musl is selected
92 // -----------------------------------------------------------------------------
93 // RUN: %clangxx -### -target hexagon-unknown-elf \
94 // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \
95 // RUN:   -stdlib=libc++ \
96 // RUN:   -mcpu=hexagonv60 \
97 // RUN:   %s 2>&1 \
98 // RUN:   | FileCheck -check-prefix=CHECK007 %s
99 // CHECK007:   "-internal-isystem" "{{.*}}hexagon{{/|\\\\}}include{{/|\\\\}}c++{{/|\\\\}}v1"
100 // -----------------------------------------------------------------------------
101 // internal-isystem for linux with and without musl
102 // -----------------------------------------------------------------------------
103 // RUN: %clang -### -target hexagon-unknown-linux-musl \
104 // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \
105 // RUN:   -resource-dir=%S/Inputs/resource_dir \
106 // RUN:   %s 2>&1 \
107 // RUN:   | FileCheck -check-prefix=CHECK008 %s
108 // CHECK008:   InstalledDir: [[INSTALLED_DIR:.+]]
109 // CHECK008:   "-resource-dir" "[[RESOURCE:[^"]+]]"
110 // CHECK008-SAME: {{^}} "-internal-isystem" "[[RESOURCE]]/include"
111 // CHECK008-SAME: {{^}} "-internal-externc-isystem" "[[INSTALLED_DIR]]/../target/hexagon/include"
112 
113 // RUN: %clang -### -target hexagon-unknown-linux \
114 // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \
115 // RUN:   -resource-dir=%S/Inputs/resource_dir \
116 // RUN:   %s 2>&1 \
117 // RUN:   | FileCheck -check-prefix=CHECK009 %s
118 // CHECK009:   InstalledDir: [[INSTALLED_DIR:.+]]
119 // CHECK009:   "-resource-dir" "[[RESOURCE:[^"]+]]"
120 // CHECK009-SAME: {{^}} "-internal-isystem" "[[RESOURCE]]/include"
121 // CHECK009-SAME: {{^}} "-internal-externc-isystem" "[[INSTALLED_DIR]]/../target/hexagon/include"
122