]> git.saurik.com Git - wxWidgets.git/blob - wx-config.in
Warning fix
[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[=LIBS]] [--gl-libs]
169 [--cppflags] [--cflags] [--cxxflags] [--ldflags] [--rezflags]
170 [--cc] [--cxx] [--ld]
171 [--inplace]
172
173 wx-config returns configuration information about the installed
174 version of wxWidgets. It may be used to query its version and
175 installation directories and also retrieve the C and C++ compilers
176 and linker which were used for its building and the corresponding
177 flags.
178
179 Ordinarily it should be installed to the appropriate system location
180 along with the headers and library files, but it is also possible to
181 use it to enable builds with an uninstalled wxWidgets version for
182 package building and bleeding edge developers. To do so, use it like
183 this:
184
185 \${wx_builddir}/wx-config --prefix=\${wx_srcdir} --exec-prefix=\${wx_builddir}
186
187 Note that any other options supplied must come *after* the prefix
188 specification for it to take effect.
189
190 --static must come before --cppflags, --cflags, --cxxflags,
191 --libs and --gl-libs.
192
193 --libs can take optional argument that contains comma-separated list of
194 wxWidgets libraries to link against. This list can include both core
195 and contrib libraries. Special value "std" stands for all libraries linked
196 in by default.
197
198 --gl-libs option is deprecated, used --libs=gl instead.
199
200 The --inplace flag allows wx-config to be used from the wxWindows
201 build directory and output flags to use the uninstalled version of
202 the headers and libs in the build directory.
203
204 EOF
205
206 exit $1
207 }
208
209 cppflags()
210 {
211 # we should never specify -I/usr/include on the compiler command line: this
212 # is at best useless and at worst breaks compilation on the systems where
213 # the system headers are non-ANSI because gcc works around this by storing
214 # the ANSI-fied versions of them in its private directory which is searched
215 # after all the directories on the cmd line.
216 #
217 # the situation is a bit more complicated with -I/usr/local/include:
218 # it shouldn't be specified with some gcc installations which look there
219 # by default anyhow and give warnings (at least 3.1 does) if it is
220 # specified explicitly --
221 # but this -I switch *is* needed for other gcc installation and for
222 # the other compilers.
223 # So I put a suitable test into configure.in and reuse the result here.
224 #
225 # note that we assume that if we use GNU cc we also use GNU c++ and vice
226 # versa, i.e. this won't work (either for --cflags or --cxxflags) if GNU C
227 # compiler and non-GNU C++ compiler are used or vice versa -- we'll fix
228 # this when/if anybody complains about it
229 if test "${includedir}" != "/usr/include" \
230 -a "${includedir}" != "/usr/include/c++" \
231 -a \( "${GCC_SEARCHES_USR_LOCAL_INCLUDE}" != "yes" \
232 -o "${includedir}" != "/usr/local/include" \) \
233 -a \( "${cross_compiling}" != "yes" \
234 -o "${includedir}" != "/usr/${target}/include" \) ;
235 then
236 includes=" -I${includedir}"
237 fi
238
239 includes="-I${libdir}/wx/include/${TOOLCHAIN_NAME}$includes"
240
241 # in inplace case we need to also add path to contrib headers -- do it
242 # unconditionally as they might be used and we have no way of knowing if
243 # they really are
244 if test $inplace_flag = yes ; then
245 includes="$includes -I${prefix}/contrib/include"
246 fi
247
248 if test $static_flag = yes ; then
249 echo $includes ${WXDEBUG_DEFINE} ${TOOLCHAIN_DEFS} ${WXCONFIG_INCLUDE} ${WX_LARGEFILE_FLAGS} ${GCC_PRAGMA_FLAGS}
250 else
251 echo $includes ${WXDEBUG_DEFINE} ${TOOLCHAIN_DEFS} ${TOOLCHAIN_DLL_DEFS} ${WXCONFIG_INCLUDE} ${WX_LARGEFILE_FLAGS} ${GCC_PRAGMA_FLAGS}
252 fi
253 }
254
255 if test $# -eq 0; then
256 usage 1 1>&2
257 fi
258
259 while test $# -gt 0; do
260 case "$1" in
261 -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
262 *) optarg= ;;
263 esac
264
265 case $1 in
266 --inplace)
267 prefix=`makeabs $srcdir`
268 exec_prefix=`makeabs $builddir`
269 exec_prefix_set=yes
270 inplace_flag=yes
271 update_prefixes
272 ;;
273 --prefix=*)
274 prefix=$optarg
275 if test $exec_prefix_set = no ; then
276 exec_prefix=$optarg
277 fi
278 update_prefixes
279 ;;
280 --prefix)
281 echo $prefix
282 ;;
283 --exec-prefix=*)
284 exec_prefix=$optarg
285 exec_prefix_set=yes
286 update_prefixes
287 ;;
288 --exec-prefix)
289 echo $exec_prefix
290 ;;
291 --version)
292 echo ${WX_MAJOR_VERSION_NUMBER}.${WX_MINOR_VERSION_NUMBER}.${WX_RELEASE_NUMBER}
293 ;;
294 --release)
295 echo $release
296 ;;
297 --basename)
298 echo $basename_gui
299 ;;
300 --static)
301 static_flag=yes
302 ;;
303 --cppflags)
304 cppflags
305 ;;
306 --cflags)
307 echo `cppflags` ${CODE_GEN_FLAGS}
308 ;;
309 --cxxflags)
310 echo `cppflags` ${CODE_GEN_FLAGS} ${CODE_GEN_FLAGS_CXX}
311 ;;
312 --ldflags)
313 echo ${LDFLAGS_EXE}
314 ;;
315 --rezflags)
316 echo `eval echo ${MACRESWXCONFIG}`
317 ;;
318
319 --libs*)
320 # find if the argument was --libs=list,of,libs or --libs:
321 if test "x$optarg" = "x" ; then
322 if test "$is_monolithic" = "0" ; then
323 # link against all libs if none given explicitly:
324 libs_list="$CORE_GUI_LIBS $CORE_BASE_LIBS"
325 fi
326 else
327 libs_list=`echo "$optarg" | tr ',' ' '`
328 # always add wxBase, any wxApp needs it:
329 libs_list="$libs_list base"
330 fi
331
332 # include install directory only if it is not default:
333 if test "${libdir}" != "/usr/lib" \
334 -a \( "${cross_compiling}" != "yes" \
335 -o "${libdir}" != "/usr/${target}/lib" \) ;
336 then
337 libs="-L${libdir}"
338 fi
339
340 # it's simpler to avoid handling "bae" itself at all as we add it in the
341 # end to the list of libraries anyhow
342 # in monolithic build, link against the main library:
343 if test "$is_monolithic" = "1" ; then
344 # filter out core libs, leave only contrib in libs_list:
345 newlist=
346 for i in $libs_list ; do
347 if isinlist $i $CORE_GUI_LIBS $CORE_BASE_LIBS; then
348 libs_list="" # do nothing
349 else
350 newlist="$newlist $i"
351 fi
352 done
353 libs_list="$newlist"
354
355 # output link flags:
356 contrib_libs=`output_libs $libs_list`
357 if test $static_flag = yes ; then
358 echo "$libs ${LDFLAGS} ${WXCONFIG_LDFLAGS_GUI} ${WXCONFIG_RPATH} $contrib_libs ${libdir}/${WXCONFIG_LIBS_STATIC} ${EXTRALIBS_GUI} ${LIBS} ${DMALLOC_LIBS}"
359 else
360 echo $libs ${LDFLAGS} ${WXCONFIG_LDFLAGS_GUI} ${WXCONFIG_RPATH} $contrib_libs ${WXCONFIG_LIBS} ${DMALLOC_LIBS}
361 fi
362 else
363 # we may need to replace "std" alias with its expansion
364 newlist=
365 hadstd=0
366 for i in $libs_list; do
367 case $i in
368 std)
369 hadstd=1
370 ;;
371
372 base)
373 # if we have std, we're going to add base anyhow, avoid
374 # having it twice in the end
375 if [ $hadstd = 0 ]; then
376 newlist="$newlist $i";
377 fi
378 ;;
379
380 *)
381 newlist="$newlist $i"
382 ;;
383 esac
384 done
385 libs_list="$newlist"
386 if [ $hadstd = 1 ]; then
387 libs_list="$libs_list $CORE_GUI_LIBS $CORE_BASE_LIBS"
388 fi
389
390 # in multilib mode, link against all sublibraries:
391 wxlibs=`output_libs $libs_list`
392 guildflags=`get_ldflags_gui $libs_list`
393 echo $libs ${LDFLAGS} ${guildflags} ${WXCONFIG_RPATH} $wxlibs ${DMALLOC_LIBS}
394 fi
395
396 ;;
397 --gl-libs)
398 output_libs gl
399 ;;
400 --cc)
401 echo $CC
402 ;;
403 --cxx)
404 echo $CXX
405 ;;
406 --ld)
407 echo $LD
408 ;;
409 *)
410 usage 1 1>&2
411 ;;
412 esac
413 shift
414 done
415