]>
Commit | Line | Data |
---|---|---|
1 | #!/bin/sh | |
2 | ||
3 | # ------------------------------------------------------------------------- | |
4 | # Configured settings: | |
5 | # ------------------------------------------------------------------------- | |
6 | ||
7 | # Version and build type information: | |
8 | ||
9 | WX_MAJOR_VERSION_NUMBER="@WX_MAJOR_VERSION_NUMBER@" | |
10 | WX_MINOR_VERSION_NUMBER="@WX_MINOR_VERSION_NUMBER@" | |
11 | WX_RELEASE_NUMBER="@WX_RELEASE_NUMBER@" | |
12 | release="@WX_MAJOR_VERSION_NUMBER@.@WX_MINOR_VERSION_NUMBER@" | |
13 | is_monolithic="@MONOLITHIC@" | |
14 | cross_compiling="@cross_compiling@" | |
15 | target="@host_alias@" | |
16 | static_flag="@STATIC_FLAG@" | |
17 | inplace_flag="no" | |
18 | ||
19 | # Misc configuration variables: | |
20 | ||
21 | update_prefixes() | |
22 | { | |
23 | includedir="@includedir@" | |
24 | libdir="@libdir@" | |
25 | } | |
26 | prefix="@prefix@" | |
27 | exec_prefix="@exec_prefix@" | |
28 | update_prefixes | |
29 | ||
30 | CC="@CC@" | |
31 | GCC="@GCC@" | |
32 | GCC_SEARCHES_USR_LOCAL_INCLUDE="@GCC_SEARCHES_USR_LOCAL_INCLUDE@" | |
33 | CXX="@CXX@" | |
34 | LD="@SHARED_LD@" | |
35 | srcdir="@top_srcdir@" | |
36 | builddir="@top_builddir_wxconfig@" | |
37 | basename_nogui="@WX_LIBRARY_BASENAME_NOGUI@" | |
38 | basename_gui="@WX_LIBRARY_BASENAME_GUI@" | |
39 | ||
40 | TOOLCHAIN_NAME="@TOOLCHAIN_NAME@" | |
41 | LDFLAGS="@LDFLAGS@" | |
42 | WXCONFIG_RPATH="@WXCONFIG_RPATH@" | |
43 | DMALLOC_LIBS="@DMALLOC_LIBS@" | |
44 | WXCONFIG_LIBS="@WXCONFIG_LIBS@" | |
45 | WXCONFIG_LIBS_STATIC="@WXCONFIG_LIBS_STATIC@" | |
46 | WXDEBUG_DEFINE="@WXDEBUG_DEFINE@" | |
47 | TOOLCHAIN_DEFS="@TOOLCHAIN_DEFS@" | |
48 | TOOLCHAIN_DLL_DEFS="@TOOLCHAIN_DLL_DEFS@" | |
49 | WXCONFIG_INCLUDE="@WXCONFIG_INCLUDE@" | |
50 | WX_LARGEFILE_FLAGS="@WX_LARGEFILE_FLAGS@" | |
51 | GCC_PRAGMA_FLAGS="@GCC_PRAGMA_FLAGS@" | |
52 | CODE_GEN_FLAGS="@CODE_GEN_FLAGS@" | |
53 | CODE_GEN_FLAGS_CXX="@CODE_GEN_FLAGS_CXX@" | |
54 | LDFLAGS_EXE="@LDFLAGS_EXE@" | |
55 | MACRESWXCONFIG="@MACRESWXCONFIG@" | |
56 | EXTRALIBS_GUI="@EXTRALIBS_GUI@" | |
57 | LIBS="@LIBS@" | |
58 | WXCONFIG_LDFLAGS_GUI="@WXCONFIG_LDFLAGS_GUI@" | |
59 | ||
60 | ||
61 | # Linker flags for sublibraries: | |
62 | ||
63 | CORE_BASE_LIBS="@CORE_BASE_LIBS@" | |
64 | CORE_GUI_LIBS="@CORE_GUI_LIBS@" | |
65 | ||
66 | ldlibs_base="@WXCONFIG_EXTRALIBS@" | |
67 | ldlibs_core="@EXTRALIBS_GUI@" | |
68 | ldlibs_xml="@EXTRALIBS_XML@" | |
69 | ldlibs_html="@EXTRALIBS_HTML@" | |
70 | ldlibs_odbc="@EXTRALIBS_ODBC@" | |
71 | ldlibs_adv="@EXTRALIBS_SDL@" | |
72 | ||
73 | ldflags_gl="@LDFLAGS_GL@" | |
74 | ldlibs_gl="@OPENGL_LIBS@" | |
75 | ||
76 | ||
77 | ||
78 | # ------------------------------------------------------------------------- | |
79 | # Script code: | |
80 | # ------------------------------------------------------------------------- | |
81 | ||
82 | exec_prefix_set=no | |
83 | ||
84 | # is $1 among the rest of arguments? | |
85 | isinlist() | |
86 | { | |
87 | value=$1 | |
88 | shift | |
89 | isin=no | |
90 | for iii in $* ; do | |
91 | if test $iii = $value ; then isin=yes ; fi | |
92 | done | |
93 | test $isin = yes | |
94 | } | |
95 | ||
96 | # output linker commands needed to link against libraries passed as arguments | |
97 | # (does not handle monolithic/multilib): | |
98 | output_libs() | |
99 | { | |
100 | if test "$cross_compiling" = "yes" ; then | |
101 | target_tag="-${target}" | |
102 | fi | |
103 | ||
104 | all_libs="" | |
105 | all_ldflags="" | |
106 | wxlibs="" | |
107 | ||
108 | for lib in $* ; do | |
109 | eval xlibs=\$ldlibs_$lib | |
110 | eval xflags=\$ldflags_$lib | |
111 | if isinlist $lib $CORE_BASE_LIBS ; then | |
112 | basename=$basename_nogui | |
113 | else | |
114 | basename=$basename_gui | |
115 | fi | |
116 | if test $lib = "base" ; then | |
117 | libname="$basename" | |
118 | else | |
119 | libname="${basename}_${lib}" | |
120 | fi | |
121 | ||
122 | all_ldflags="$all_ldflags $xflags" | |
123 | if test $static_flag = yes ; then | |
124 | wxlibs="$wxlibs ${libdir}/lib${libname}-${release}${target_tag}.a" | |
125 | all_libs="$all_libs $xlibs" | |
126 | else | |
127 | wxlibs="$wxlibs -l${libname}-${release}${target_tag}" | |
128 | fi | |
129 | done | |
130 | ||
131 | echo $all_ldflags $wxlibs $all_libs | |
132 | } | |
133 | ||
134 | # output $(WXCONFIG_LDFLAGS_GUI) if any of libs passed as arguments is GUI | |
135 | # library, nothing otherwise: | |
136 | get_ldflags_gui() | |
137 | { | |
138 | flags_to_ret="" | |
139 | for lib in $* ; do | |
140 | if isinlist $lib $CORE_GUI_LIBS ; then | |
141 | flags_to_ret="$WXCONFIG_LDFLAGS_GUI" | |
142 | fi | |
143 | done | |
144 | echo $flags_to_ret | |
145 | } | |
146 | ||
147 | usage() | |
148 | { | |
149 | cat <<EOF | |
150 | Usage: wx-config [--prefix[=DIR]] [--exec-prefix[=DIR]] [--inplace] | |
151 | [--toolkit=TOOLKIT] [--unicode[=yes|no]] [--debug[=yes|no]] | |
152 | [--universal[=yes|no]] [--version[=VERSION]] [--release] | |
153 | [--list] [--basename] [--static] [--libs] [--gl-libs] | |
154 | [--cppflags] [--cflags] [--cxxflags] [--ldflags] [--rezflags] | |
155 | [--cc] [--cxx] [--ld] [LIBRARIES] | |
156 | ||
157 | wx-config returns configuration information about the installed | |
158 | version of wxWidgets. It may be used to query its version and | |
159 | installation directories and also retrieve the C and C++ compilers | |
160 | and linker which were used for its building and the corresponding | |
161 | flags. | |
162 | ||
163 | Ordinarily it should be installed to the appropriate system location | |
164 | along with the headers and library files, but it is also possible to | |
165 | use it to enable builds with an uninstalled wxWidgets version for | |
166 | package building and bleeding edge developers. To do so, use it like | |
167 | this: | |
168 | ||
169 | \${wx_builddir}/wx-config --inplace | |
170 | ||
171 | Note that any other options supplied must come *after* --inplace | |
172 | for it to take effect. | |
173 | ||
174 | --static must come before --cppflags, --cflags, --cxxflags, | |
175 | --libs and --gl-libs and --libs must come before the other ones. | |
176 | ||
177 | --libs can take optional argument that contains comma-separated list of | |
178 | wxWidgets libraries to link against. This list can include both core | |
179 | and contrib libraries. Special value "std" stands for all libraries linked | |
180 | in by default. | |
181 | ||
182 | --gl-libs option is deprecated, use "--libs gl" instead. | |
183 | ||
184 | If there are several different builds of wxWidgets installed in same prefix, | |
185 | you can use --toolkit, --unicode, --debug, --universal and --version options | |
186 | to select one of them. Use --list option to show all available builds that | |
187 | match given criteria. | |
188 | ||
189 | EOF | |
190 | ||
191 | exit $1 | |
192 | } | |
193 | ||
194 | cppflags() | |
195 | { | |
196 | # we should never specify -I/usr/include on the compiler command line: this | |
197 | # is at best useless and at worst breaks compilation on the systems where | |
198 | # the system headers are non-ANSI because gcc works around this by storing | |
199 | # the ANSI-fied versions of them in its private directory which is searched | |
200 | # after all the directories on the cmd line. | |
201 | # | |
202 | # the situation is a bit more complicated with -I/usr/local/include: | |
203 | # it shouldn't be specified with some gcc installations which look there | |
204 | # by default anyhow and give warnings (at least 3.1 does) if it is | |
205 | # specified explicitly -- | |
206 | # but this -I switch *is* needed for other gcc installation and for | |
207 | # the other compilers. | |
208 | # So I put a suitable test into configure.in and reuse the result here. | |
209 | # | |
210 | # note that we assume that if we use GNU cc we also use GNU c++ and vice | |
211 | # versa, i.e. this won't work (either for --cflags or --cxxflags) if GNU C | |
212 | # compiler and non-GNU C++ compiler are used or vice versa -- we'll fix | |
213 | # this when/if anybody complains about it | |
214 | if test "${includedir}" != "/usr/include" \ | |
215 | -a "${includedir}" != "/usr/include/c++" \ | |
216 | -a \( "${GCC_SEARCHES_USR_LOCAL_INCLUDE}" != "yes" \ | |
217 | -o "${includedir}" != "/usr/local/include" \) \ | |
218 | -a \( "${cross_compiling}" != "yes" \ | |
219 | -o "${includedir}" != "/usr/${target}/include" \) ; | |
220 | then | |
221 | includes=" -I${includedir}" | |
222 | fi | |
223 | ||
224 | includes="-I${libdir}/wx/include/${TOOLCHAIN_NAME}$includes" | |
225 | ||
226 | # in inplace case we need to also add path to contrib headers -- do it | |
227 | # unconditionally as they might be used and we have no way of knowing if | |
228 | # they really are | |
229 | if test $inplace_flag = yes ; then | |
230 | includes="$includes -I${prefix}/contrib/include" | |
231 | fi | |
232 | ||
233 | flags="$includes ${WXDEBUG_DEFINE} ${TOOLCHAIN_DEFS}" | |
234 | if test $static_flag != yes ; then | |
235 | flags="$flags ${TOOLCHAIN_DLL_DEFS}" | |
236 | fi | |
237 | ||
238 | if test $nogui_flag = "yes" ; then | |
239 | flags="$flags -DwxUSE_GUI=0" | |
240 | fi | |
241 | ||
242 | echo "$flags${WXCONFIG_INCLUDE} ${WX_LARGEFILE_FLAGS} ${GCC_PRAGMA_FLAGS}" | |
243 | } | |
244 | ||
245 | if test $# -eq 0; then | |
246 | usage 1 1>&2 | |
247 | fi | |
248 | ||
249 | ||
250 | # handle libraries list: | |
251 | ||
252 | libs_list="" | |
253 | ||
254 | for arg in $*; do | |
255 | case "$arg" in | |
256 | -*) | |
257 | ;; | |
258 | *) | |
259 | libs_list="$libs_list `echo "$arg" | tr ',' ' '`" | |
260 | ;; | |
261 | esac | |
262 | done | |
263 | ||
264 | if test "x$libs_list" = "x" ; then | |
265 | if test "$is_monolithic" = "0" ; then | |
266 | # link against all libs if none given explicitly: | |
267 | libs_list="$CORE_GUI_LIBS $CORE_BASE_LIBS" | |
268 | fi | |
269 | else | |
270 | # always add wxBase, any wxApp needs it: | |
271 | libs_list="$libs_list base" | |
272 | fi | |
273 | ||
274 | # determine if at least one gui lib was used: | |
275 | nogui_flag="yes" | |
276 | for i in $libs_list; do | |
277 | case $i in | |
278 | base|net) | |
279 | ;; | |
280 | *) | |
281 | nogui_flag="no" | |
282 | ;; | |
283 | esac | |
284 | done | |
285 | ||
286 | ||
287 | # handle options: | |
288 | ||
289 | while test $# -gt 0; do | |
290 | case "$1" in | |
291 | -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;; | |
292 | *) optarg= ;; | |
293 | esac | |
294 | ||
295 | case $1 in | |
296 | --inplace) | |
297 | inplace_flag=yes | |
298 | ;; | |
299 | --prefix=*) | |
300 | prefix=$optarg | |
301 | if test $exec_prefix_set = no ; then | |
302 | exec_prefix=$optarg | |
303 | fi | |
304 | update_prefixes | |
305 | ;; | |
306 | --prefix) | |
307 | echo $prefix | |
308 | ;; | |
309 | --exec-prefix=*) | |
310 | exec_prefix=$optarg | |
311 | exec_prefix_set=yes | |
312 | update_prefixes | |
313 | ;; | |
314 | --exec-prefix) | |
315 | echo $exec_prefix | |
316 | ;; | |
317 | --version) | |
318 | echo ${WX_MAJOR_VERSION_NUMBER}.${WX_MINOR_VERSION_NUMBER}.${WX_RELEASE_NUMBER} | |
319 | ;; | |
320 | --release) | |
321 | echo $release | |
322 | ;; | |
323 | --basename) | |
324 | echo $basename_gui | |
325 | ;; | |
326 | --static) | |
327 | static_flag=yes | |
328 | ;; | |
329 | --cppflags) | |
330 | cppflags | |
331 | ;; | |
332 | --cflags) | |
333 | echo `cppflags` ${CODE_GEN_FLAGS} | |
334 | ;; | |
335 | --cxxflags) | |
336 | echo `cppflags` ${CODE_GEN_FLAGS} ${CODE_GEN_FLAGS_CXX} | |
337 | ;; | |
338 | --ldflags) | |
339 | echo ${LDFLAGS_EXE} | |
340 | ;; | |
341 | --rezflags) | |
342 | echo `eval echo ${MACRESWXCONFIG}` | |
343 | ;; | |
344 | ||
345 | --libs) | |
346 | # include install directory only if it is not default: | |
347 | if test "${libdir}" != "/usr/lib" \ | |
348 | -a \( "${cross_compiling}" != "yes" \ | |
349 | -o "${libdir}" != "/usr/${target}/lib" \) ; | |
350 | then | |
351 | libs="-L${libdir}" | |
352 | fi | |
353 | ||
354 | # it's simpler to avoid handling "base" itself at all as we add it in the | |
355 | # end to the list of libraries anyhow | |
356 | # in monolithic build, link against the main library: | |
357 | if test "$is_monolithic" = "1" ; then | |
358 | # filter out core libs, leave only contrib in libs_list: | |
359 | newlist= | |
360 | for i in $libs_list ; do | |
361 | if isinlist $i $CORE_GUI_LIBS $CORE_BASE_LIBS; then | |
362 | libs_list="" # do nothing | |
363 | else | |
364 | newlist="$newlist $i" | |
365 | fi | |
366 | done | |
367 | libs_list="$newlist" | |
368 | ||
369 | # output link flags: | |
370 | contrib_libs=`output_libs $libs_list` | |
371 | if test $static_flag = yes ; then | |
372 | echo "$libs ${LDFLAGS} ${WXCONFIG_LDFLAGS_GUI} ${WXCONFIG_RPATH} $contrib_libs ${libdir}/${WXCONFIG_LIBS_STATIC} ${EXTRALIBS_GUI} ${LIBS} ${DMALLOC_LIBS}" | |
373 | else | |
374 | echo $libs ${LDFLAGS} ${WXCONFIG_LDFLAGS_GUI} ${WXCONFIG_RPATH} $contrib_libs ${WXCONFIG_LIBS} ${DMALLOC_LIBS} | |
375 | fi | |
376 | else | |
377 | # we may need to replace "std" alias with its expansion | |
378 | newlist= | |
379 | hadstd=0 | |
380 | for i in $libs_list; do | |
381 | case $i in | |
382 | std) | |
383 | hadstd=1 | |
384 | ;; | |
385 | ||
386 | base) | |
387 | # if we have std, we're going to add base anyhow, avoid | |
388 | # having it twice in the end | |
389 | if [ $hadstd = 0 ]; then | |
390 | newlist="$newlist $i" | |
391 | fi | |
392 | ;; | |
393 | ||
394 | *) | |
395 | newlist="$newlist $i" | |
396 | ;; | |
397 | esac | |
398 | done | |
399 | libs_list="$newlist" | |
400 | if [ $hadstd = 1 ]; then | |
401 | libs_list="$libs_list $CORE_GUI_LIBS $CORE_BASE_LIBS" | |
402 | fi | |
403 | ||
404 | # in multilib mode, link against all sublibraries: | |
405 | wxlibs=`output_libs $libs_list` | |
406 | guildflags=`get_ldflags_gui $libs_list` | |
407 | echo $libs ${LDFLAGS} ${guildflags} ${WXCONFIG_RPATH} $wxlibs ${DMALLOC_LIBS} | |
408 | fi | |
409 | ||
410 | ;; | |
411 | --gl-libs) | |
412 | output_libs gl | |
413 | ;; | |
414 | --cc) | |
415 | echo $CC | |
416 | ;; | |
417 | --cxx) | |
418 | echo $CXX | |
419 | ;; | |
420 | --ld) | |
421 | echo $LD | |
422 | ;; | |
423 | --help|-h) | |
424 | usage 1 1>&2 | |
425 | ;; | |
426 | -*) | |
427 | # unrecognized flag is error | |
428 | usage 1 1>&2 | |
429 | ;; | |
430 | esac | |
431 | shift | |
432 | done | |
433 |