Line 0
Link Here
|
|
|
1 |
#!/bin/bash -e |
2 |
|
3 |
build_var() { |
4 |
cpp -P -Iinclude -include llvm/Config/config.h -include tools/llvm-config/BuildVariables.inc - <<< "$1" |
5 |
} |
6 |
|
7 |
build_yes_no() { |
8 |
if [[ $(build_var "$1") = 1 ]]; then |
9 |
echo YES |
10 |
else |
11 |
echo NO |
12 |
fi |
13 |
} |
14 |
|
15 |
build_on_off() { |
16 |
if [[ $(build_var "$1") = 1 ]]; then |
17 |
echo ON |
18 |
else |
19 |
echo OFF |
20 |
fi |
21 |
} |
22 |
|
23 |
: ${CBUILD:-${CHOST}} |
24 |
|
25 |
if [[ -n ${CBUILD} ]]; then |
26 |
CXX=${CBUILD}-c++ |
27 |
else |
28 |
CXX=c++ |
29 |
fi |
30 |
|
31 |
TEMP_EXE=$(mktemp) |
32 |
trap 'rm -f "${TEMP_EXE}"' EXIT |
33 |
|
34 |
${CXX} -o "${TEMP_EXE}" -x c++ - <<EOF |
35 |
#include <cstdio> |
36 |
#include "tools/llvm-config/LibraryDependencies.inc" |
37 |
|
38 |
int main(int argc, char** argv) { |
39 |
unsigned int i, total; |
40 |
struct AvailableComponent *component; |
41 |
const char *library; |
42 |
|
43 |
total = sizeof(AvailableComponents) / sizeof(AvailableComponents[0]); |
44 |
|
45 |
for (i = 0; i < total; i++) { |
46 |
component = &AvailableComponents[i]; |
47 |
library = component->Library; |
48 |
if (library == NULL) library = ""; |
49 |
if (component->IsInstalled) printf("\t\"%s %s\"\n", component->Name, library); |
50 |
} |
51 |
|
52 |
return 0; |
53 |
} |
54 |
EOF |
55 |
|
56 |
cat <<EOF |
57 |
#!/bin/bash -e |
58 |
|
59 |
PREFIX=\${0%/*/*/*} |
60 |
|
61 |
COMPONENTS=( |
62 |
$("${TEMP_EXE}") |
63 |
) |
64 |
|
65 |
handle_arg() { |
66 |
case "\${1}" in |
67 |
--version) echo $(build_var PACKAGE_VERSION) ;; |
68 |
--prefix) echo "\${PREFIX}" ;; |
69 |
--bindir) echo "\${PREFIX}"/bin ;; |
70 |
--includedir) echo "\${PREFIX}"/include ;; |
71 |
--libdir) echo "\${PREFIX}"/lib$(build_var LLVM_LIBDIR_SUFFIX) ;; |
72 |
--cppflags) echo "-I\$(handle_arg --includedir) "$(build_var LLVM_CPPFLAGS) ;; |
73 |
--cflags) echo "-I\$(handle_arg --includedir) "$(build_var LLVM_CFLAGS) ;; |
74 |
--cxxflags) echo "-I\$(handle_arg --includedir) "$(build_var LLVM_CXXFLAGS) ;; |
75 |
--ldflags) echo "-L\$(handle_arg --libdir) "$(build_var LLVM_LDFLAGS) ;; |
76 |
--libs) LIBS=(\${COMPONENTS[@]#* }); echo "\${LIBS[@]/#/-l}" ;; |
77 |
--libnames) LIBS=(\${COMPONENTS[@]#* }); LIBS=(\${LIBS[@]/%/$(build_var LTDL_SHLIB_EXT)}); echo "\${LIBS[@]/#/lib}" ;; |
78 |
--libfiles) LIBS=(\${COMPONENTS[@]#* }); LIBS=(\${LIBS[@]/%/$(build_var LTDL_SHLIB_EXT)}); echo "\${LIBS[@]/#/\${PREFIX}/lib$(build_var LLVM_LIBDIR_SUFFIX)/lib}" ;; |
79 |
--components) echo "\${COMPONENTS[@]% *}" ;; |
80 |
--targets-built) echo $(build_var LLVM_TARGETS_BUILT) ;; |
81 |
--host-target) echo $(build_var LLVM_HOST_TRIPLE) ;; |
82 |
--build-mode) echo $(build_var LLVM_BUILDMODE) ;; |
83 |
--build-system) echo $(build_var LLVM_BUILD_SYSTEM) ;; |
84 |
--has-rtti) echo $(build_yes_no LLVM_HAS_RTTI) ;; |
85 |
--has-global-isel) echo $(build_on_off LLVM_HAS_GLOBAL_ISEL) ;; |
86 |
--shared-mode) echo shared ;; |
87 |
esac |
88 |
} |
89 |
|
90 |
for ARG in "\${@}"; do |
91 |
handle_arg "\${ARG}" |
92 |
done |
93 |
EOF |