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