]> git.saurik.com Git - wxWidgets.git/blame - wx-config.in
update from Marco Cavallini
[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
VS
151 [--toolkit=TOOLKIT] [--unicode[=yes|no]] [--debug[=yes|no]]
152 [--universal[=yes|no]] [--version[=VERSION]] [--release]
153 [--list] [--basename] [--static] [--libs] [--gl-libs]
40f7145c 154 [--cppflags] [--cflags] [--cxxflags] [--ldflags] [--rezflags]
89816e4f 155 [--cc] [--cxx] [--ld] [LIBRARIES]
75f4be8a
VZ
156
157wx-config returns configuration information about the installed
b63b07a8 158version of wxWidgets. It may be used to query its version and
75f4be8a
VZ
159installation directories and also retrieve the C and C++ compilers
160and linker which were used for its building and the corresponding
161flags.
2b5f62a0 162
82a649b6
RL
163Ordinarily it should be installed to the appropriate system location
164along with the headers and library files, but it is also possible to
b63b07a8 165use it to enable builds with an uninstalled wxWidgets version for
82a649b6
RL
166package building and bleeding edge developers. To do so, use it like
167this:
168
89816e4f 169\${wx_builddir}/wx-config --inplace
82a649b6 170
89816e4f
VS
171Note that any other options supplied must come *after* --inplace
172for it to take effect.
82a649b6 173
efe6c06f 174--static must come before --cppflags, --cflags, --cxxflags,
a43ed08a 175--libs and --gl-libs and --libs must come before the other ones.
cf615ebb
VS
176
177--libs can take optional argument that contains comma-separated list of
b63b07a8 178wxWidgets libraries to link against. This list can include both core
1d8864ac
VZ
179and contrib libraries. Special value "std" stands for all libraries linked
180in by default.
cf615ebb 181
251f47d1 182--gl-libs option is deprecated, use "--libs gl" instead.
67c13b6c 183
8708fa76
VS
184If there are several different builds of wxWidgets installed in same prefix,
185you can use --toolkit, --unicode, --debug, --universal and --version options
186to select one of them. Use --list option to show all available builds that
187match given criteria.
188
75f4be8a
VZ
189EOF
190
191 exit $1
192}
193
194cppflags()
195{
2b5f62a0
VZ
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 #
31414f4c
SN
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.
2b5f62a0
VZ
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
33380099
VS
214 if test "${includedir}" != "/usr/include" \
215 -a "${includedir}" != "/usr/include/c++" \
31414f4c 216 -a \( "${GCC_SEARCHES_USR_LOCAL_INCLUDE}" != "yes" \
33380099 217 -o "${includedir}" != "/usr/local/include" \) \
77e13408 218 -a \( "${cross_compiling}" != "yes" \
33380099 219 -o "${includedir}" != "/usr/${target}/include" \) ;
3a922bb4 220 then
33380099 221 includes=" -I${includedir}"
75f4be8a 222 fi
00c81359 223
33380099 224 includes="-I${libdir}/wx/include/${TOOLCHAIN_NAME}$includes"
00c81359 225
127e9080 226 # in inplace case we need to also add path to contrib headers -- do it
bc79eb4f 227 # unconditionally as they might be used and we have no way of knowing if
127e9080
VZ
228 # they really are
229 if test $inplace_flag = yes ; then
230 includes="$includes -I${prefix}/contrib/include"
231 fi
232
a43ed08a
VZ
233 flags="$includes ${WXDEBUG_DEFINE} ${TOOLCHAIN_DEFS}"
234 if test $static_flag != yes ; then
235 flags="$flags ${TOOLCHAIN_DLL_DEFS}"
00c81359 236 fi
a43ed08a 237
251f47d1
VS
238 if test $nogui_flag = "yes" ; then
239 flags="$flags -DwxUSE_GUI=0"
a43ed08a
VZ
240 fi
241
242 echo "$flags${WXCONFIG_INCLUDE} ${WX_LARGEFILE_FLAGS} ${GCC_PRAGMA_FLAGS}"
75f4be8a 243}
9a98a854
VZ
244
245if test $# -eq 0; then
3a922bb4 246 usage 1 1>&2
9a98a854
VZ
247fi
248
251f47d1
VS
249
250# handle libraries list:
251
252libs_list=""
253
254for arg in $*; do
255 case "$arg" in
256 -*)
257 ;;
258 *)
259 libs_list="$libs_list `echo "$arg" | tr ',' ' '`"
260 ;;
261 esac
262done
263
264if 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
269else
270 # always add wxBase, any wxApp needs it:
271 libs_list="$libs_list base"
272fi
273
274# determine if at least one gui lib was used:
275nogui_flag="yes"
276for i in $libs_list; do
277 case $i in
278 base|net)
279 ;;
280 *)
281 nogui_flag="no"
282 ;;
283 esac
284done
285
286
287# handle options:
288
9a98a854
VZ
289while 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
52c71b80 296 --inplace)
127e9080 297 inplace_flag=yes
52c71b80 298 ;;
9a98a854
VZ
299 --prefix=*)
300 prefix=$optarg
301 if test $exec_prefix_set = no ; then
302 exec_prefix=$optarg
303 fi
0154f61a 304 update_prefixes
9a98a854
VZ
305 ;;
306 --prefix)
307 echo $prefix
308 ;;
309 --exec-prefix=*)
310 exec_prefix=$optarg
311 exec_prefix_set=yes
0154f61a 312 update_prefixes
9a98a854
VZ
313 ;;
314 --exec-prefix)
315 echo $exec_prefix
316 ;;
317 --version)
33380099 318 echo ${WX_MAJOR_VERSION_NUMBER}.${WX_MINOR_VERSION_NUMBER}.${WX_RELEASE_NUMBER}
9a98a854 319 ;;
2f42e5b6 320 --release)
cf615ebb 321 echo $release
2f42e5b6
VS
322 ;;
323 --basename)
9171d4b4 324 echo $basename_gui
2f42e5b6 325 ;;
3d63bc3a
RL
326 --static)
327 static_flag=yes
328 ;;
75f4be8a
VZ
329 --cppflags)
330 cppflags
331 ;;
9a98a854 332 --cflags)
33380099 333 echo `cppflags` ${CODE_GEN_FLAGS}
75f4be8a
VZ
334 ;;
335 --cxxflags)
33380099 336 echo `cppflags` ${CODE_GEN_FLAGS} ${CODE_GEN_FLAGS_CXX}
9a98a854 337 ;;
40f7145c 338 --ldflags)
33380099 339 echo ${LDFLAGS_EXE}
40f7145c 340 ;;
2baaf735 341 --rezflags)
09d3439c 342 echo `eval echo ${MACRESWXCONFIG}`
2baaf735 343 ;;
cf615ebb 344
251f47d1 345 --libs)
cf615ebb 346 # include install directory only if it is not default:
33380099 347 if test "${libdir}" != "/usr/lib" \
77e13408 348 -a \( "${cross_compiling}" != "yes" \
33380099 349 -o "${libdir}" != "/usr/${target}/lib" \) ;
3a922bb4 350 then
33380099 351 libs="-L${libdir}"
9a98a854 352 fi
3d63bc3a 353
a43ed08a 354 # it's simpler to avoid handling "base" itself at all as we add it in the
1d8864ac 355 # end to the list of libraries anyhow
cf615ebb
VS
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
1d8864ac 361 if isinlist $i $CORE_GUI_LIBS $CORE_BASE_LIBS; then
cf615ebb
VS
362 libs_list="" # do nothing
363 else
364 newlist="$newlist $i"
365 fi
366 done
367 libs_list="$newlist"
9171d4b4 368
cf615ebb
VS
369 # output link flags:
370 contrib_libs=`output_libs $libs_list`
371 if test $static_flag = yes ; then
ffef10f6 372 echo "$libs ${LDFLAGS} ${WXCONFIG_LDFLAGS_GUI} ${WXCONFIG_RPATH} $contrib_libs ${libdir}/${WXCONFIG_LIBS_STATIC} ${EXTRALIBS_GUI} ${LIBS} ${DMALLOC_LIBS}"
cf615ebb 373 else
ffef10f6 374 echo $libs ${LDFLAGS} ${WXCONFIG_LDFLAGS_GUI} ${WXCONFIG_RPATH} $contrib_libs ${WXCONFIG_LIBS} ${DMALLOC_LIBS}
cf615ebb 375 fi
3d63bc3a 376 else
1d8864ac
VZ
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
a43ed08a 390 newlist="$newlist $i"
1d8864ac
VZ
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
cf615ebb
VS
404 # in multilib mode, link against all sublibraries:
405 wxlibs=`output_libs $libs_list`
ffef10f6
VS
406 guildflags=`get_ldflags_gui $libs_list`
407 echo $libs ${LDFLAGS} ${guildflags} ${WXCONFIG_RPATH} $wxlibs ${DMALLOC_LIBS}
3d63bc3a
RL
408 fi
409
3a922bb4
RL
410 ;;
411 --gl-libs)
cf615ebb 412 output_libs gl
9a98a854 413 ;;
6ce73557
VZ
414 --cc)
415 echo $CC
416 ;;
417 --cxx)
418 echo $CXX
419 ;;
420 --ld)
421 echo $LD
422 ;;
251f47d1 423 --help|-h)
75f4be8a 424 usage 1 1>&2
9a98a854 425 ;;
14885f09
VS
426 -*)
427 # unrecognized flag is error
428 usage 1 1>&2
429 ;;
9a98a854
VZ
430 esac
431 shift
432done
433