]> git.saurik.com Git - wxWidgets.git/blob - wx-config.in
Added wxXRC_NO_RELOADING
[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 # return the absolute path prepending builddir to it if needed
148 makeabs()
149 {
150 path=$1
151 # TODO: this only works under Unix and even there it could be
152 # enhanced to remove ".." and "."
153 if [ `echo $path | sed 's/^\(.\).*/\1/'` != "/" ]; then
154 if [ $path = "." ]; then
155 path=$builddir
156 else
157 path="$builddir/$path"
158 fi
159 fi
160
161 echo $path
162 }
163
164 usage()
165 {
166 cat <<EOF
167 Usage: wx-config [--prefix[=DIR]] [--exec-prefix[=DIR]] [--version] [--release]
168 [--basename] [--static] [--libs] [--gl-libs]
169 [--cppflags] [--cflags] [--cxxflags] [--ldflags] [--rezflags]
170 [--cc] [--cxx] [--ld] [--inplace] [LIBRARIES]
171
172 wx-config returns configuration information about the installed
173 version of wxWidgets. It may be used to query its version and
174 installation directories and also retrieve the C and C++ compilers
175 and linker which were used for its building and the corresponding
176 flags.
177
178 Ordinarily it should be installed to the appropriate system location
179 along with the headers and library files, but it is also possible to
180 use it to enable builds with an uninstalled wxWidgets version for
181 package building and bleeding edge developers. To do so, use it like
182 this:
183
184 \${wx_builddir}/wx-config --prefix=\${wx_srcdir} --exec-prefix=\${wx_builddir}
185
186 Note that any other options supplied must come *after* the prefix
187 specification for it to take effect.
188
189 --static must come before --cppflags, --cflags, --cxxflags,
190 --libs and --gl-libs and --libs must come before the other ones.
191
192 --libs can take optional argument that contains comma-separated list of
193 wxWidgets libraries to link against. This list can include both core
194 and contrib libraries. Special value "std" stands for all libraries linked
195 in by default.
196
197 --gl-libs option is deprecated, use "--libs gl" instead.
198
199 The --inplace flag allows wx-config to be used from the wxWindows
200 build directory and output flags to use the uninstalled version of
201 the headers and libs in the build directory.
202
203 EOF
204
205 exit $1
206 }
207
208 cppflags()
209 {
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 #
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.
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
228 if test "${includedir}" != "/usr/include" \
229 -a "${includedir}" != "/usr/include/c++" \
230 -a \( "${GCC_SEARCHES_USR_LOCAL_INCLUDE}" != "yes" \
231 -o "${includedir}" != "/usr/local/include" \) \
232 -a \( "${cross_compiling}" != "yes" \
233 -o "${includedir}" != "/usr/${target}/include" \) ;
234 then
235 includes=" -I${includedir}"
236 fi
237
238 includes="-I${libdir}/wx/include/${TOOLCHAIN_NAME}$includes"
239
240 # in inplace case we need to also add path to contrib headers -- do it
241 # unconditionally as they might be used and we have no way of knowing if
242 # they really are
243 if test $inplace_flag = yes ; then
244 includes="$includes -I${prefix}/contrib/include"
245 fi
246
247 flags="$includes ${WXDEBUG_DEFINE} ${TOOLCHAIN_DEFS}"
248 if test $static_flag != yes ; then
249 flags="$flags ${TOOLCHAIN_DLL_DEFS}"
250 fi
251
252 if test $nogui_flag = "yes" ; then
253 flags="$flags -DwxUSE_GUI=0"
254 fi
255
256 echo "$flags${WXCONFIG_INCLUDE} ${WX_LARGEFILE_FLAGS} ${GCC_PRAGMA_FLAGS}"
257 }
258
259 if test $# -eq 0; then
260 usage 1 1>&2
261 fi
262
263
264 # handle libraries list:
265
266 libs_list=""
267
268 for arg in $*; do
269 case "$arg" in
270 -*)
271 ;;
272 *)
273 libs_list="$libs_list `echo "$arg" | tr ',' ' '`"
274 ;;
275 esac
276 done
277
278 if test "x$libs_list" = "x" ; then
279 if test "$is_monolithic" = "0" ; then
280 # link against all libs if none given explicitly:
281 libs_list="$CORE_GUI_LIBS $CORE_BASE_LIBS"
282 fi
283 else
284 # always add wxBase, any wxApp needs it:
285 libs_list="$libs_list base"
286 fi
287
288 # determine if at least one gui lib was used:
289 nogui_flag="yes"
290 for i in $libs_list; do
291 case $i in
292 base|net)
293 ;;
294 *)
295 nogui_flag="no"
296 ;;
297 esac
298 done
299
300
301 # handle options:
302
303 while test $# -gt 0; do
304 case "$1" in
305 -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
306 *) optarg= ;;
307 esac
308
309 case $1 in
310 --inplace)
311 prefix=`makeabs $srcdir`
312 exec_prefix=`makeabs $builddir`
313 exec_prefix_set=yes
314 inplace_flag=yes
315 update_prefixes
316 ;;
317 --prefix=*)
318 prefix=$optarg
319 if test $exec_prefix_set = no ; then
320 exec_prefix=$optarg
321 fi
322 update_prefixes
323 ;;
324 --prefix)
325 echo $prefix
326 ;;
327 --exec-prefix=*)
328 exec_prefix=$optarg
329 exec_prefix_set=yes
330 update_prefixes
331 ;;
332 --exec-prefix)
333 echo $exec_prefix
334 ;;
335 --version)
336 echo ${WX_MAJOR_VERSION_NUMBER}.${WX_MINOR_VERSION_NUMBER}.${WX_RELEASE_NUMBER}
337 ;;
338 --release)
339 echo $release
340 ;;
341 --basename)
342 echo $basename_gui
343 ;;
344 --static)
345 static_flag=yes
346 ;;
347 --cppflags)
348 cppflags
349 ;;
350 --cflags)
351 echo `cppflags` ${CODE_GEN_FLAGS}
352 ;;
353 --cxxflags)
354 echo `cppflags` ${CODE_GEN_FLAGS} ${CODE_GEN_FLAGS_CXX}
355 ;;
356 --ldflags)
357 echo ${LDFLAGS_EXE}
358 ;;
359 --rezflags)
360 echo `eval echo ${MACRESWXCONFIG}`
361 ;;
362
363 --libs)
364 # include install directory only if it is not default:
365 if test "${libdir}" != "/usr/lib" \
366 -a \( "${cross_compiling}" != "yes" \
367 -o "${libdir}" != "/usr/${target}/lib" \) ;
368 then
369 libs="-L${libdir}"
370 fi
371
372 # it's simpler to avoid handling "base" itself at all as we add it in the
373 # end to the list of libraries anyhow
374 # in monolithic build, link against the main library:
375 if test "$is_monolithic" = "1" ; then
376 # filter out core libs, leave only contrib in libs_list:
377 newlist=
378 for i in $libs_list ; do
379 if isinlist $i $CORE_GUI_LIBS $CORE_BASE_LIBS; then
380 libs_list="" # do nothing
381 else
382 newlist="$newlist $i"
383 fi
384 done
385 libs_list="$newlist"
386
387 # output link flags:
388 contrib_libs=`output_libs $libs_list`
389 if test $static_flag = yes ; then
390 echo "$libs ${LDFLAGS} ${WXCONFIG_LDFLAGS_GUI} ${WXCONFIG_RPATH} $contrib_libs ${libdir}/${WXCONFIG_LIBS_STATIC} ${EXTRALIBS_GUI} ${LIBS} ${DMALLOC_LIBS}"
391 else
392 echo $libs ${LDFLAGS} ${WXCONFIG_LDFLAGS_GUI} ${WXCONFIG_RPATH} $contrib_libs ${WXCONFIG_LIBS} ${DMALLOC_LIBS}
393 fi
394 else
395 # we may need to replace "std" alias with its expansion
396 newlist=
397 hadstd=0
398 for i in $libs_list; do
399 case $i in
400 std)
401 hadstd=1
402 ;;
403
404 base)
405 # if we have std, we're going to add base anyhow, avoid
406 # having it twice in the end
407 if [ $hadstd = 0 ]; then
408 newlist="$newlist $i"
409 fi
410 ;;
411
412 *)
413 newlist="$newlist $i"
414 ;;
415 esac
416 done
417 libs_list="$newlist"
418 if [ $hadstd = 1 ]; then
419 libs_list="$libs_list $CORE_GUI_LIBS $CORE_BASE_LIBS"
420 fi
421
422 # in multilib mode, link against all sublibraries:
423 wxlibs=`output_libs $libs_list`
424 guildflags=`get_ldflags_gui $libs_list`
425 echo $libs ${LDFLAGS} ${guildflags} ${WXCONFIG_RPATH} $wxlibs ${DMALLOC_LIBS}
426 fi
427
428 ;;
429 --gl-libs)
430 output_libs gl
431 ;;
432 --cc)
433 echo $CC
434 ;;
435 --cxx)
436 echo $CXX
437 ;;
438 --ld)
439 echo $LD
440 ;;
441 --help|-h)
442 usage 1 1>&2
443 ;;
444 esac
445 shift
446 done
447