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