]> git.saurik.com Git - wxWidgets.git/blob - wx-config.in
Added version test
[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
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 CODE_GEN_FLAGS="@CODE_GEN_FLAGS@"
52 CODE_GEN_FLAGS_CXX="@CODE_GEN_FLAGS_CXX@"
53 LDFLAGS_EXE="@LDFLAGS_EXE@"
54 MACRESWXCONFIG="@MACRESWXCONFIG@"
55 EXTRALIBS_GUI="@EXTRALIBS_GUI@"
56 LIBS="@LIBS@"
57 WXCONFIG_LDFLAGS_GUI="@WXCONFIG_LDFLAGS_GUI@"
58
59
60 # Linker flags for sublibraries:
61
62 CORE_BASE_LIBS="@CORE_BASE_LIBS@"
63 CORE_GUI_LIBS="@CORE_GUI_LIBS@"
64
65 ldlibs_base="@WXCONFIG_EXTRALIBS@"
66 ldlibs_core="@EXTRALIBS_GUI@"
67 ldlibs_xml="@EXTRALIBS_XML@"
68 ldlibs_html="@EXTRALIBS_HTML@"
69 ldlibs_odbc="@EXTRALIBS_ODBC@"
70 ldlibs_adv="@EXTRALIBS_SDL@"
71
72 ldflags_gl="@LDFLAGS_GL@"
73 ldlibs_gl="@OPENGL_LIBS@"
74
75
76
77 # -------------------------------------------------------------------------
78 # Script code:
79 # -------------------------------------------------------------------------
80
81 exec_prefix_set=no
82
83 # is $1 among the rest of arguments?
84 isinlist()
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):
97 output_libs()
98 {
99 if test "$cross_compiling" = "yes" ; then
100 target_tag="-${target}"
101 fi
102
103 all_libs=""
104 all_ldflags=""
105 wxlibs=""
106
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
115 if test $lib = "base" ; then
116 libname="$basename"
117 else
118 libname="${basename}_${lib}"
119 fi
120
121 all_ldflags="$all_ldflags $xflags"
122 if test $static_flag = yes ; then
123 wxlibs="$wxlibs ${libdir}/lib${libname}-${release}${target_tag}.a"
124 all_libs="$all_libs $xlibs"
125 else
126 wxlibs="$wxlibs -l${libname}-${release}${target_tag}"
127 fi
128 done
129
130 echo $all_ldflags $wxlibs $all_libs
131 }
132
133 # output $(WXCONFIG_LDFLAGS_GUI) if any of libs passed as arguments is GUI
134 # library, nothing otherwise:
135 get_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
146 # return the absolute path prepending builddir to it if needed
147 makeabs()
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
163 usage()
164 {
165 cat <<EOF
166 Usage: wx-config [--prefix[=DIR]] [--exec-prefix[=DIR]] [--version] [--release]
167 [--basename] [--static] [--libs[=LIBS]] [--gl-libs]
168 [--cppflags] [--cflags] [--cxxflags] [--ldflags] [--rezflags]
169 [--cc] [--cxx] [--ld]
170
171 wx-config returns configuration information about the installed
172 version of wxWidgets. It may be used to query its version and
173 installation directories and also retrieve the C and C++ compilers
174 and linker which were used for its building and the corresponding
175 flags.
176
177 Ordinarily it should be installed to the appropriate system location
178 along with the headers and library files, but it is also possible to
179 use it to enable builds with an uninstalled wxWidgets version for
180 package building and bleeding edge developers. To do so, use it like
181 this:
182
183 \${wx_builddir}/wx-config --prefix=\${wx_srcdir} --exec-prefix=\${wx_builddir}
184
185 Note that any other options supplied must come *after* the prefix
186 specification for it to take effect.
187
188 --static must come before --cppflags, --cflags, --cxxflags,
189 --libs and --gl-libs.
190
191 --libs can take optional argument that contains comma-separated list of
192 wxWidgets libraries to link against. This list can include both core
193 and contrib libraries.
194
195 --gl-libs option is deprecated, used --libs=gl instead.
196
197 EOF
198
199 exit $1
200 }
201
202 cppflags()
203 {
204 # we should never specify -I/usr/include on the compiler command line: this
205 # is at best useless and at worst breaks compilation on the systems where
206 # the system headers are non-ANSI because gcc works around this by storing
207 # the ANSI-fied versions of them in its private directory which is searched
208 # after all the directories on the cmd line.
209 #
210 # the situation is a bit more complicated with -I/usr/local/include:
211 # it shouldn't be specified with some gcc installations which look there
212 # by default anyhow and give warnings (at least 3.1 does) if it is
213 # specified explicitly --
214 # but this -I switch *is* needed for other gcc installation and for
215 # the other compilers.
216 # So I put a suitable test into configure.in and reuse the result here.
217 #
218 # note that we assume that if we use GNU cc we also use GNU c++ and vice
219 # versa, i.e. this won't work (either for --cflags or --cxxflags) if GNU C
220 # compiler and non-GNU C++ compiler are used or vice versa -- we'll fix
221 # this when/if anybody complains about it
222 if test "${includedir}" != "/usr/include" \
223 -a "${includedir}" != "/usr/include/c++" \
224 -a \( "${GCC_SEARCHES_USR_LOCAL_INCLUDE}" != "yes" \
225 -o "${includedir}" != "/usr/local/include" \) \
226 -a \( "${cross_compiling}" != "yes" \
227 -o "${includedir}" != "/usr/${target}/include" \) ;
228 then
229 includes=" -I${includedir}"
230 fi
231
232 includes="-I${libdir}/wx/include/${TOOLCHAIN_NAME}$includes"
233
234 if test $static_flag = yes ; then
235 echo $includes ${WXDEBUG_DEFINE} ${TOOLCHAIN_DEFS} ${WXCONFIG_INCLUDE} ${WX_LARGEFILE_FLAGS}
236 else
237 echo $includes ${WXDEBUG_DEFINE} ${TOOLCHAIN_DEFS} ${TOOLCHAIN_DLL_DEFS} ${WXCONFIG_INCLUDE} ${WX_LARGEFILE_FLAGS}
238 fi
239 }
240
241 if test $# -eq 0; then
242 usage 1 1>&2
243 fi
244
245 while test $# -gt 0; do
246 case "$1" in
247 -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
248 *) optarg= ;;
249 esac
250
251 case $1 in
252 --inplace)
253 prefix=`makeabs $srcdir`
254 exec_prefix=`makeabs $builddir`
255 exec_prefix_set=yes
256 update_prefixes
257 ;;
258 --prefix=*)
259 prefix=$optarg
260 if test $exec_prefix_set = no ; then
261 exec_prefix=$optarg
262 fi
263 update_prefixes
264 ;;
265 --prefix)
266 echo $prefix
267 ;;
268 --exec-prefix=*)
269 exec_prefix=$optarg
270 exec_prefix_set=yes
271 update_prefixes
272 ;;
273 --exec-prefix)
274 echo $exec_prefix
275 ;;
276 --version)
277 echo ${WX_MAJOR_VERSION_NUMBER}.${WX_MINOR_VERSION_NUMBER}.${WX_RELEASE_NUMBER}
278 ;;
279 --release)
280 echo $release
281 ;;
282 --basename)
283 echo $basename_gui
284 ;;
285 --static)
286 static_flag=yes
287 ;;
288 --cppflags)
289 cppflags
290 ;;
291 --cflags)
292 echo `cppflags` ${CODE_GEN_FLAGS}
293 ;;
294 --cxxflags)
295 echo `cppflags` ${CODE_GEN_FLAGS} ${CODE_GEN_FLAGS_CXX}
296 ;;
297 --ldflags)
298 echo ${LDFLAGS_EXE}
299 ;;
300 --rezflags)
301 echo `eval echo ${MACRESWXCONFIG}`
302 ;;
303
304 --libs*)
305 # find if the argument was --libs=list,of,libs or --libs:
306 if test "x$optarg" = "x" ; then
307 if test "$is_monolithic" = "0" ; then
308 # link against all libs if none given explicitly:
309 libs_list="$CORE_GUI_LIBS $CORE_BASE_LIBS"
310 fi
311 else
312 libs_list=`echo "$optarg" | tr ',' ' '`
313 # always add wxBase, any wxApp needs it:
314 libs_list="$libs_list base"
315 fi
316
317 # include install directory only if it is not default:
318 if test "${libdir}" != "/usr/lib" \
319 -a \( "${cross_compiling}" != "yes" \
320 -o "${libdir}" != "/usr/${target}/lib" \) ;
321 then
322 libs="-L${libdir}"
323 fi
324
325 # in monolithic build, link against the main library:
326 if test "$is_monolithic" = "1" ; then
327 # filter out core libs, leave only contrib in libs_list:
328 newlist=
329 for i in $libs_list ; do
330 if isinlist $i $CORE_BASE_LIBS $CORE_GUI_LIBS ; then
331 libs_list="" # do nothing
332 else
333 newlist="$newlist $i"
334 fi
335 done
336 libs_list="$newlist"
337
338 # output link flags:
339 contrib_libs=`output_libs $libs_list`
340 if test $static_flag = yes ; then
341 echo "$libs ${LDFLAGS} ${WXCONFIG_LDFLAGS_GUI} ${WXCONFIG_RPATH} $contrib_libs ${libdir}/${WXCONFIG_LIBS_STATIC} ${EXTRALIBS_GUI} ${LIBS} ${DMALLOC_LIBS}"
342 else
343 echo $libs ${LDFLAGS} ${WXCONFIG_LDFLAGS_GUI} ${WXCONFIG_RPATH} $contrib_libs ${WXCONFIG_LIBS} ${DMALLOC_LIBS}
344 fi
345 else
346 # in multilib mode, link against all sublibraries:
347 wxlibs=`output_libs $libs_list`
348 guildflags=`get_ldflags_gui $libs_list`
349 echo $libs ${LDFLAGS} ${guildflags} ${WXCONFIG_RPATH} $wxlibs ${DMALLOC_LIBS}
350 fi
351
352 ;;
353 --gl-libs)
354 output_libs gl
355 ;;
356 --cc)
357 echo $CC
358 ;;
359 --cxx)
360 echo $CXX
361 ;;
362 --ld)
363 echo $LD
364 ;;
365 *)
366 usage 1 1>&2
367 ;;
368 esac
369 shift
370 done
371