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