]> git.saurik.com Git - wxWidgets.git/blob - wx-config.in
only on mouse-down
[wxWidgets.git] / wx-config.in
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