]> git.proxmox.com Git - ceph.git/blob - ceph/src/spdk/configure
add subtree-ish sources for 12.0.3
[ceph.git] / ceph / src / spdk / configure
1 #!/usr/bin/env bash
2
3 set -e
4
5 function usage()
6 {
7 echo "'configure' configures SPDK to compile on supported platforms."
8 echo ""
9 echo "Usage: ./configure [OPTION]..."
10 echo ""
11 echo "Defaults for the options are specified in brackets."
12 echo ""
13 echo "General:"
14 echo " -h, --help Display this help and exit"
15 echo " --enable-debug Configure for debug builds"
16 echo " --enable-werror Treat compiler warnings as errors"
17 echo " --enable-asan Enable address sanitizer"
18 echo " --enable-ubsan Enable undefined behavior sanitizer"
19 echo " --enable-coverage Enable code coverage tracking"
20 echo " --with-env=path Use an alternate environment implementation"
21 echo ""
22 echo "Specifying Dependencies:"
23 echo "--with-DEPENDENCY[=path] Use the given dependency. Optionally, provide the"
24 echo " path."
25 echo "--without-DEPENDENCY Do not link to the given dependency. This may"
26 echo " disable features and components."
27 echo ""
28 echo "Valid dependencies are listed below."
29 echo " dpdk Required unless providing an alternate env implementation."
30 echo " example: /usr/share/dpdk/x86_64-default-linuxapp-gcc"
31 echo " fio Required to build fio_plugin."
32 echo " example: /usr/src/fio"
33 echo " rbd [disabled]"
34 echo " No path required."
35 echo " rdma [disabled]"
36 echo " No path required."
37 echo ""
38 }
39
40 for i in "$@"; do
41 case "$i" in
42 -h|--help)
43 usage
44 exit 0
45 ;;
46 --enable-debug)
47 CONFIG_DEBUG=y
48 ;;
49 --disable-debug)
50 CONFIG_DEBUG=n
51 ;;
52 --enable-asan)
53 CONFIG_ASAN=y
54 ;;
55 --disable-asan)
56 CONFIG_ASAN=n
57 ;;
58 --enable-ubsan)
59 CONFIG_UBSAN=y
60 ;;
61 --disable-ubsan)
62 CONFIG_UBSAN=n
63 ;;
64 --enable-coverage)
65 CONFIG_COVERAGE=y
66 ;;
67 --disable-coverage)
68 CONFIG_COVERAGE=n
69 ;;
70 --enable-werror)
71 CONFIG_WERROR=y
72 ;;
73 --disable-werror)
74 CONFIG_WERROR=n
75 ;;
76 --with-env=*)
77 CONFIG_ENV="${i#*=}"
78 ;;
79 --with-rbd)
80 CONFIG_RBD=y
81 ;;
82 --without-rbd)
83 CONFIG_RBD=n
84 ;;
85 --with-rdma)
86 CONFIG_RDMA=y
87 ;;
88 --without-rdma)
89 CONFIG_RDMA=n
90 ;;
91 --with-dpdk=*)
92 CONFIG_DPDK_DIR="${i#*=}"
93 ;;
94 --without-dpdk)
95 CONFIG_DPDK_DIR=
96 ;;
97 --with-fio=*)
98 FIO_SOURCE_DIR="${i#*=}"
99 CONFIG_FIO_PLUGIN=y
100 ;;
101 --without-fio)
102 FIO_SOURCE_DIR=
103 CONFIG_FIO_PLUGIN=n
104 ;;
105 --)
106 break
107 ;;
108 *)
109 echo "Unrecognized option $i"
110 usage
111 exit 1
112 esac
113 done
114
115 if [ -z "$CONFIG_ENV" ]; then
116 if [ -z "$CONFIG_DPDK_DIR" ]; then
117 echo "You must specify the path to dpdk using --with-dpdk=path."
118 exit 1
119 fi
120 fi
121
122 if [ "$CONFIG_FIO_PLUGIN" = "y" ]; then
123 if [ -z "$FIO_SOURCE_DIR" ]; then
124 echo "When fio is enabled, you must specify the fio directory using --with-fio=path"
125 exit 1
126 fi
127 fi
128
129 echo -n "Creating CONFIG.local..."
130
131 # Write the configuration file
132 rm -f CONFIG.local
133 if [ -n "$CONFIG_DEBUG" ]; then
134 echo "CONFIG_DEBUG?=$CONFIG_DEBUG" >> CONFIG.local
135 fi
136 if [ -n "$CONFIG_WERROR" ]; then
137 echo "CONFIG_WERROR?=$CONFIG_WERROR" >> CONFIG.local
138 fi
139 if [ -n "$CONFIG_COVERAGE" ]; then
140 echo "CONFIG_COVERAGE?=$CONFIG_COVERAGE" >> CONFIG.local
141 fi
142 if [ -n "$CONFIG_ASAN" ]; then
143 echo "CONFIG_ASAN?=$CONFIG_ASAN" >> CONFIG.local
144 fi
145 if [ -n "$CONFIG_UBSAN" ]; then
146 echo "CONFIG_UBSAN?=$CONFIG_UBSAN" >> CONFIG.local
147 fi
148 if [ -n "$CONFIG_ENV" ]; then
149 echo "CONFIG_ENV?=$CONFIG_ENV" >> CONFIG.local
150 fi
151 if [ -n "$CONFIG_DPDK_DIR" ]; then
152 echo "CONFIG_DPDK_DIR?=$CONFIG_DPDK_DIR" >> CONFIG.local
153 fi
154 if [ -n "$CONFIG_FIO_PLUGIN" ]; then
155 echo "CONFIG_FIO_PLUGIN?=$CONFIG_FIO_PLUGIN" >> CONFIG.local
156 fi
157 if [ -n "$FIO_SOURCE_DIR" ]; then
158 echo "FIO_SOURCE_DIR?=$FIO_SOURCE_DIR" >> CONFIG.local
159 fi
160 if [ -n "$CONFIG_RDMA" ]; then
161 echo "CONFIG_RDMA?=$CONFIG_RDMA" >> CONFIG.local
162 fi
163 if [ -n "$CONFIG_RBD" ]; then
164 echo "CONFIG_RBD?=$CONFIG_RBD" >> CONFIG.local
165 fi
166
167 echo "done."
168 echo "Type 'make' to build."
169
170 exit 0