]> git.saurik.com Git - wxWidgets.git/blob - wx-config.in
fix for CAN-2004-0797 zlib-1.2.x vulnerability (patch #1018094)
[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 WX_SUBRELEASE_NUMBER="@WX_SUBRELEASE_NUMBER@"
13 release="@WX_MAJOR_VERSION_NUMBER@.@WX_MINOR_VERSION_NUMBER@"
14 is_monolithic="@MONOLITHIC@"
15 cross_compiling="@cross_compiling@"
16 target="@host_alias@"
17 static_flag="@STATIC_FLAG@"
18 inplace_flag="no"
19
20 # Misc configuration variables:
21
22 update_prefixes()
23 {
24 includedir="@includedir@"
25 libdir="@libdir@"
26 }
27 prefix="@prefix@"
28 exec_prefix="@exec_prefix@"
29 update_prefixes
30
31 CC="@CC@"
32 GCC="@GCC@"
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]] [--host=HOST]
153 [--version[=VERSION]] [--version-full] [--release]
154 [--list] [--basename] [--static] [--libs] [--gl-libs]
155 [--cppflags] [--cflags] [--cxxflags] [--ldflags] [--rezflags]
156 [--cc] [--cxx] [--ld] [LIBRARIES]
157
158 wx-config returns configuration information about the installed
159 version of wxWidgets. It may be used to query its version and
160 installation directories and also retrieve the C and C++ compilers
161 and linker which were used for its building and the corresponding
162 flags.
163
164 Ordinarily it should be installed to the appropriate system location
165 along with the headers and library files, but it is also possible to
166 use it to enable builds with an uninstalled wxWidgets version for
167 package building and bleeding edge developers. To do so, use it like
168 this:
169
170 \${wx_builddir}/wx-config --inplace
171
172 Note that any other options supplied must come *after* --inplace
173 for it to take effect.
174
175 --static must come before --cppflags, --cflags, --cxxflags,
176 --libs and --gl-libs and --libs must come before the other ones.
177
178 wx-config can take optional argument that contains comma- or space-separated
179 list of wxWidgets libraries to compile and link against. This list can
180 include both core and contrib libraries. Special value "std" stands for all
181 libraries linked in by default. Examples: "wx-config --libs core,base"
182 or "wx-config --cxxflags core,base".
183
184 --gl-libs option is deprecated, use "--libs gl" instead.
185
186 If there are several different builds of wxWidgets installed in same prefix,
187 you can use --host, --toolkit, --unicode, --debug, --universal and --version
188 options to select one of them. Use --list option to show all available builds
189 that match given criteria.
190
191 EOF
192
193 exit $1
194 }
195
196 cppflags()
197 {
198 includes="-I${libdir}/wx/include/${TOOLCHAIN_NAME}"
199
200 # in inplace case we need to also add path to contrib headers -- do it
201 # unconditionally as they might be used and we have no way of knowing if
202 # they really are
203 if test $inplace_flag = yes ; then
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}"
207 fi
208
209 flags="$includes ${WXDEBUG_DEFINE} ${TOOLCHAIN_DEFS}"
210 if test $static_flag != yes ; then
211 flags="$flags ${TOOLCHAIN_DLL_DEFS}"
212 fi
213
214 if test $nogui_flag = "yes" ; then
215 flags="$flags -DwxUSE_GUI=0"
216 fi
217
218 echo "$flags ${WXCONFIG_INCLUDE} ${WX_LARGEFILE_FLAGS} ${GCC_PRAGMA_FLAGS}"
219 }
220
221 if test $# -eq 0; then
222 usage 1 1>&2
223 fi
224
225
226 # handle libraries list:
227
228 libs_list=""
229
230 for arg in $*; do
231 case "$arg" in
232 -*)
233 ;;
234 *)
235 libs_list="$libs_list `echo "$arg" | tr ',' ' '`"
236 ;;
237 esac
238 done
239
240 if 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
245 else
246 # always add wxBase, any wxApp needs it:
247 libs_list="$libs_list base"
248 fi
249
250 # determine if at least one gui lib was used:
251 if test "$is_monolithic" = "0" ; then
252 nogui_flag="yes"
253 for i in $libs_list; do
254 case $i in
255 base|net)
256 ;;
257 *)
258 nogui_flag="no"
259 ;;
260 esac
261 done
262 else
263 nogui_flag="no"
264 fi
265
266
267 # handle options:
268
269 while test $# -gt 0; do
270 case "$1" in
271 -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
272 *) optarg= ;;
273 esac
274
275 case $1 in
276 --inplace)
277 inplace_flag=yes
278 ;;
279 --prefix=*)
280 prefix=$optarg
281 if test $exec_prefix_set = no ; then
282 exec_prefix=$optarg
283 fi
284 update_prefixes
285 ;;
286 --prefix)
287 echo $prefix
288 ;;
289 --exec-prefix=*)
290 exec_prefix=$optarg
291 exec_prefix_set=yes
292 update_prefixes
293 ;;
294 --exec-prefix)
295 echo $exec_prefix
296 ;;
297 --version)
298 echo ${WX_MAJOR_VERSION_NUMBER}.${WX_MINOR_VERSION_NUMBER}.${WX_RELEASE_NUMBER}
299 ;;
300 --version-full)
301 echo ${WX_MAJOR_VERSION_NUMBER}.${WX_MINOR_VERSION_NUMBER}.${WX_RELEASE_NUMBER}.${WX_SUBRELEASE_NUMBER}
302 ;;
303 --release)
304 echo $release
305 ;;
306 --basename)
307 echo $basename_gui
308 ;;
309 --static)
310 static_flag=yes
311 ;;
312 --cppflags)
313 cppflags
314 ;;
315 --cflags)
316 echo `cppflags` ${CODE_GEN_FLAGS}
317 ;;
318 --cxxflags)
319 echo `cppflags` ${CODE_GEN_FLAGS} ${CODE_GEN_FLAGS_CXX}
320 ;;
321 --ldflags)
322 echo ${LDFLAGS_EXE}
323 ;;
324 --rezflags)
325 echo `eval echo ${MACRESWXCONFIG}`
326 ;;
327
328 --libs)
329 # include install directory only if it is not default:
330 if test "${libdir}" != "/usr/lib" \
331 -a \( "${cross_compiling}" != "yes" \
332 -o "${libdir}" != "/usr/${target}/lib" \) ;
333 then
334 libs="-L${libdir}"
335 fi
336
337 # it's simpler to avoid handling "base" itself at all as we add it in the
338 # end to the list of libraries anyhow
339 # in monolithic build, link against the main library:
340 if test "$is_monolithic" = "1" ; then
341 # filter out core libs, leave only contrib in libs_list:
342 newlist=
343 for i in $libs_list ; do
344 if isinlist $i $CORE_GUI_LIBS $CORE_BASE_LIBS; then
345 libs_list="" # do nothing
346 else
347 newlist="$newlist $i"
348 fi
349 done
350 libs_list="$newlist"
351
352 # output link flags:
353 contrib_libs=`output_libs $libs_list`
354 if test $static_flag = yes ; then
355 echo "$libs ${LDFLAGS} ${WXCONFIG_LDFLAGS_GUI} ${WXCONFIG_RPATH} $contrib_libs ${libdir}/${WXCONFIG_LIBS_STATIC} ${EXTRALIBS_GUI} ${LIBS} ${DMALLOC_LIBS}"
356 else
357 echo $libs ${LDFLAGS} ${WXCONFIG_LDFLAGS_GUI} ${WXCONFIG_RPATH} $contrib_libs ${WXCONFIG_LIBS} ${DMALLOC_LIBS}
358 fi
359 else
360 # we may need to replace "std" alias with its expansion
361 newlist=
362 hadstd=0
363 for i in $libs_list; do
364 case $i in
365 std)
366 hadstd=1
367 ;;
368
369 base)
370 # if we have std, we're going to add base anyhow, avoid
371 # having it twice in the end
372 if [ $hadstd = 0 ]; then
373 newlist="$newlist $i"
374 fi
375 ;;
376
377 *)
378 newlist="$newlist $i"
379 ;;
380 esac
381 done
382 libs_list="$newlist"
383 if [ $hadstd = 1 ]; then
384 libs_list="$libs_list $CORE_GUI_LIBS $CORE_BASE_LIBS"
385 fi
386
387 # in multilib mode, link against all sublibraries:
388 wxlibs=`output_libs $libs_list`
389 guildflags=`get_ldflags_gui $libs_list`
390 echo $libs ${LDFLAGS} ${guildflags} ${WXCONFIG_RPATH} $wxlibs ${DMALLOC_LIBS}
391 fi
392
393 ;;
394 --gl-libs)
395 output_libs gl
396 ;;
397 --cc)
398 echo $CC
399 ;;
400 --cxx)
401 echo $CXX
402 ;;
403 --ld)
404 echo $LD
405 ;;
406 --help|-h)
407 usage 1 1>&2
408 ;;
409 -*)
410 # unrecognized flag is error
411 usage 1 1>&2
412 ;;
413 esac
414 shift
415 done
416