]> git.saurik.com Git - wxWidgets.git/blame - wx-config.in
Use native C++ GSocket interface
[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@"
224bf05c 12WX_SUBRELEASE_NUMBER="@WX_SUBRELEASE_NUMBER@"
33380099
VS
13release="@WX_MAJOR_VERSION_NUMBER@.@WX_MINOR_VERSION_NUMBER@"
14is_monolithic="@MONOLITHIC@"
15cross_compiling="@cross_compiling@"
16target="@host_alias@"
17static_flag="@STATIC_FLAG@"
127e9080 18inplace_flag="no"
33380099
VS
19
20# Misc configuration variables:
21
0154f61a
VS
22update_prefixes()
23{
24 includedir="@includedir@"
25 libdir="@libdir@"
26}
33380099
VS
27prefix="@prefix@"
28exec_prefix="@exec_prefix@"
0154f61a
VS
29update_prefixes
30
6ce73557 31CC="@CC@"
2b5f62a0 32GCC="@GCC@"
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 152 [--universal[=yes|no]] [--host=HOST]
224bf05c 153 [--version[=VERSION]] [--version-full] [--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 177
838c9bd0
VS
178wx-config can take optional argument that contains comma- or space-separated
179list of wxWidgets libraries to compile and link against. This list can
180include both core and contrib libraries. Special value "std" stands for all
181libraries linked in by default. Examples: "wx-config --libs core,base"
182or "wx-config --cxxflags core,base".
cf615ebb 183
251f47d1 184--gl-libs option is deprecated, use "--libs gl" instead.
67c13b6c 185
8708fa76 186If there are several different builds of wxWidgets installed in same prefix,
48112931
VS
187you can use --host, --toolkit, --unicode, --debug, --universal and --version
188options to select one of them. Use --list option to show all available builds
189that match given criteria.
8708fa76 190
75f4be8a
VZ
191EOF
192
193 exit $1
194}
195
196cppflags()
197{
166bcebb 198 includes="-I${libdir}/wx/include/${TOOLCHAIN_NAME}"
00c81359 199
127e9080 200 # in inplace case we need to also add path to contrib headers -- do it
bc79eb4f 201 # unconditionally as they might be used and we have no way of knowing if
127e9080
VZ
202 # they really are
203 if test $inplace_flag = yes ; then
166bcebb
VS
204 includes="$includes -I${prefix}/include -I${prefix}/contrib/include"
205 else
206 includes="$includes -I${includedir}/wx-${WX_MAJOR_VERSION_NUMBER}.${WX_MINOR_VERSION_NUMBER}"
127e9080
VZ
207 fi
208
a43ed08a
VZ
209 flags="$includes ${WXDEBUG_DEFINE} ${TOOLCHAIN_DEFS}"
210 if test $static_flag != yes ; then
211 flags="$flags ${TOOLCHAIN_DLL_DEFS}"
00c81359 212 fi
a43ed08a 213
251f47d1
VS
214 if test $nogui_flag = "yes" ; then
215 flags="$flags -DwxUSE_GUI=0"
a43ed08a
VZ
216 fi
217
2001ecbc 218 echo "$flags ${WXCONFIG_INCLUDE} ${WX_LARGEFILE_FLAGS} ${GCC_PRAGMA_FLAGS}"
75f4be8a 219}
9a98a854
VZ
220
221if test $# -eq 0; then
3a922bb4 222 usage 1 1>&2
9a98a854
VZ
223fi
224
251f47d1
VS
225
226# handle libraries list:
227
228libs_list=""
229
230for arg in $*; do
231 case "$arg" in
232 -*)
233 ;;
234 *)
235 libs_list="$libs_list `echo "$arg" | tr ',' ' '`"
236 ;;
237 esac
238done
239
240if test "x$libs_list" = "x" ; then
241 if test "$is_monolithic" = "0" ; then
242 # link against all libs if none given explicitly:
243 libs_list="$CORE_GUI_LIBS $CORE_BASE_LIBS"
244 fi
245else
246 # always add wxBase, any wxApp needs it:
247 libs_list="$libs_list base"
248fi
249
250# determine if at least one gui lib was used:
251nogui_flag="yes"
252for i in $libs_list; do
253 case $i in
254 base|net)
255 ;;
256 *)
257 nogui_flag="no"
258 ;;
259 esac
260done
261
262
263# handle options:
264
9a98a854
VZ
265while test $# -gt 0; do
266 case "$1" in
267 -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
268 *) optarg= ;;
269 esac
270
271 case $1 in
52c71b80 272 --inplace)
127e9080 273 inplace_flag=yes
52c71b80 274 ;;
9a98a854
VZ
275 --prefix=*)
276 prefix=$optarg
277 if test $exec_prefix_set = no ; then
278 exec_prefix=$optarg
279 fi
0154f61a 280 update_prefixes
9a98a854
VZ
281 ;;
282 --prefix)
283 echo $prefix
284 ;;
285 --exec-prefix=*)
286 exec_prefix=$optarg
287 exec_prefix_set=yes
0154f61a 288 update_prefixes
9a98a854
VZ
289 ;;
290 --exec-prefix)
291 echo $exec_prefix
292 ;;
293 --version)
33380099 294 echo ${WX_MAJOR_VERSION_NUMBER}.${WX_MINOR_VERSION_NUMBER}.${WX_RELEASE_NUMBER}
9a98a854 295 ;;
224bf05c
VZ
296 --version-full)
297 echo ${WX_MAJOR_VERSION_NUMBER}.${WX_MINOR_VERSION_NUMBER}.${WX_RELEASE_NUMBER}.${WX_SUBRELEASE_NUMBER}
298 ;;
2f42e5b6 299 --release)
cf615ebb 300 echo $release
2f42e5b6
VS
301 ;;
302 --basename)
9171d4b4 303 echo $basename_gui
2f42e5b6 304 ;;
3d63bc3a
RL
305 --static)
306 static_flag=yes
307 ;;
75f4be8a
VZ
308 --cppflags)
309 cppflags
310 ;;
9a98a854 311 --cflags)
33380099 312 echo `cppflags` ${CODE_GEN_FLAGS}
75f4be8a
VZ
313 ;;
314 --cxxflags)
33380099 315 echo `cppflags` ${CODE_GEN_FLAGS} ${CODE_GEN_FLAGS_CXX}
9a98a854 316 ;;
40f7145c 317 --ldflags)
33380099 318 echo ${LDFLAGS_EXE}
40f7145c 319 ;;
2baaf735 320 --rezflags)
09d3439c 321 echo `eval echo ${MACRESWXCONFIG}`
2baaf735 322 ;;
cf615ebb 323
251f47d1 324 --libs)
cf615ebb 325 # include install directory only if it is not default:
33380099 326 if test "${libdir}" != "/usr/lib" \
77e13408 327 -a \( "${cross_compiling}" != "yes" \
33380099 328 -o "${libdir}" != "/usr/${target}/lib" \) ;
3a922bb4 329 then
33380099 330 libs="-L${libdir}"
9a98a854 331 fi
3d63bc3a 332
a43ed08a 333 # it's simpler to avoid handling "base" itself at all as we add it in the
1d8864ac 334 # end to the list of libraries anyhow
cf615ebb
VS
335 # in monolithic build, link against the main library:
336 if test "$is_monolithic" = "1" ; then
337 # filter out core libs, leave only contrib in libs_list:
338 newlist=
339 for i in $libs_list ; do
1d8864ac 340 if isinlist $i $CORE_GUI_LIBS $CORE_BASE_LIBS; then
cf615ebb
VS
341 libs_list="" # do nothing
342 else
343 newlist="$newlist $i"
344 fi
345 done
346 libs_list="$newlist"
9171d4b4 347
cf615ebb
VS
348 # output link flags:
349 contrib_libs=`output_libs $libs_list`
350 if test $static_flag = yes ; then
ffef10f6 351 echo "$libs ${LDFLAGS} ${WXCONFIG_LDFLAGS_GUI} ${WXCONFIG_RPATH} $contrib_libs ${libdir}/${WXCONFIG_LIBS_STATIC} ${EXTRALIBS_GUI} ${LIBS} ${DMALLOC_LIBS}"
cf615ebb 352 else
ffef10f6 353 echo $libs ${LDFLAGS} ${WXCONFIG_LDFLAGS_GUI} ${WXCONFIG_RPATH} $contrib_libs ${WXCONFIG_LIBS} ${DMALLOC_LIBS}
cf615ebb 354 fi
3d63bc3a 355 else
1d8864ac
VZ
356 # we may need to replace "std" alias with its expansion
357 newlist=
358 hadstd=0
359 for i in $libs_list; do
360 case $i in
361 std)
362 hadstd=1
363 ;;
364
365 base)
366 # if we have std, we're going to add base anyhow, avoid
367 # having it twice in the end
368 if [ $hadstd = 0 ]; then
a43ed08a 369 newlist="$newlist $i"
1d8864ac
VZ
370 fi
371 ;;
372
373 *)
374 newlist="$newlist $i"
375 ;;
376 esac
377 done
378 libs_list="$newlist"
379 if [ $hadstd = 1 ]; then
380 libs_list="$libs_list $CORE_GUI_LIBS $CORE_BASE_LIBS"
381 fi
382
cf615ebb
VS
383 # in multilib mode, link against all sublibraries:
384 wxlibs=`output_libs $libs_list`
ffef10f6
VS
385 guildflags=`get_ldflags_gui $libs_list`
386 echo $libs ${LDFLAGS} ${guildflags} ${WXCONFIG_RPATH} $wxlibs ${DMALLOC_LIBS}
3d63bc3a
RL
387 fi
388
3a922bb4
RL
389 ;;
390 --gl-libs)
cf615ebb 391 output_libs gl
9a98a854 392 ;;
6ce73557
VZ
393 --cc)
394 echo $CC
395 ;;
396 --cxx)
397 echo $CXX
398 ;;
399 --ld)
400 echo $LD
401 ;;
251f47d1 402 --help|-h)
75f4be8a 403 usage 1 1>&2
9a98a854 404 ;;
14885f09
VS
405 -*)
406 # unrecognized flag is error
407 usage 1 1>&2
408 ;;
9a98a854
VZ
409 esac
410 shift
411done
412