1 | //===-- MakeSuport.cpp --------------------------------------------------*-===// |
2 | // |
3 | // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
4 | // See https://llvm.org/LICENSE.txt for license information. |
5 | // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
6 | // |
7 | //===----------------------------------------------------------------------===// |
8 | |
9 | #include "clang/Basic/MakeSupport.h" |
10 | |
11 | void clang::quoteMakeTarget(StringRef Target, SmallVectorImpl<char> &Res) { |
12 | for (unsigned i = 0, e = Target.size(); i != e; ++i) { |
13 | switch (Target[i]) { |
14 | case ' ': |
15 | case '\t': |
16 | // Escape the preceding backslashes |
17 | for (int j = i - 1; j >= 0 && Target[j] == '\\'; --j) |
18 | Res.push_back(Elt: '\\'); |
19 | |
20 | // Escape the space/tab |
21 | Res.push_back(Elt: '\\'); |
22 | break; |
23 | case '$': |
24 | Res.push_back(Elt: '$'); |
25 | break; |
26 | case '#': |
27 | Res.push_back(Elt: '\\'); |
28 | break; |
29 | default: |
30 | break; |
31 | } |
32 | |
33 | Res.push_back(Elt: Target[i]); |
34 | } |
35 | } |
36 | |