]> git.saurik.com Git - wxWidgets.git/blob - wx-config.in
added DEBUG_FLAG, DEBUG_INFO and DEBUG_RUNTIME_LIBS options
[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 prefix="@prefix@"
22 exec_prefix="@exec_prefix@"
23 includedir="@includedir@"
24 libdir="@libdir@"
25 CC="@CC@"
26 GCC="@GCC@"
27 CXX="@CXX@"
28 LD="@SHARED_LD@"
29 srcdir="@top_srcdir@"
30 builddir="@top_builddir_wxconfig@"
31 basename_nogui="@WX_LIBRARY_BASENAME_NOGUI@"
32 basename_gui="@WX_LIBRARY_BASENAME_GUI@"
33
34 TOOLCHAIN_NAME="@TOOLCHAIN_NAME@"
35 LDFLAGS="@LDFLAGS@"
36 WXCONFIG_RPATH="@WXCONFIG_RPATH@"
37 DMALLOC_LIBS="@DMALLOC_LIBS@"
38 WXCONFIG_LIBS="@WXCONFIG_LIBS@"
39 WXCONFIG_LIBS_STATIC="@WXCONFIG_LIBS_STATIC@"
40 WXDEBUG_DEFINE="@WXDEBUG_DEFINE@"
41 TOOLCHAIN_DEFS="@TOOLCHAIN_DEFS@"
42 TOOLCHAIN_DLL_DEFS="@TOOLCHAIN_DLL_DEFS@"
43 WXCONFIG_INCLUDE="@WXCONFIG_INCLUDE@"
44 WX_LARGEFILE_FLAGS="@WX_LARGEFILE_FLAGS@"
45 CODE_GEN_FLAGS="@CODE_GEN_FLAGS@"
46 CODE_GEN_FLAGS_CXX="@CODE_GEN_FLAGS_CXX@"
47 LDFLAGS_EXE="@LDFLAGS_EXE@"
48 MACRESWXCONFIG="@MACRESWXCONFIG@"
49 EXTRALIBS_GUI="@EXTRALIBS_GUI@"
50 LIBS="@LIBS@"
51
52
53 # Linker flags for sublibraries:
54
55 CORE_BASE_LIBS="xml net base"
56 CORE_GUI_LIBS="html core"
57
58 ldlibs_base="@WXCONFIG_EXTRALIBS@"
59 ldlibs_core="@EXTRALIBS_GUI@"
60 ldlibs_xml="@EXTRALIBS_XML@"
61
62 ldflags_gl="@LDFLAGS_GL@"
63 ldlibs_gl="@OPENGL_LIBS@"
64
65
66
67 # -------------------------------------------------------------------------
68 # Script code:
69 # -------------------------------------------------------------------------
70
71 exec_prefix_set=no
72
73 # is $1 among the rest of arguments?
74 isinlist()
75 {
76 value=$1
77 shift
78 isin=no
79 for iii in $* ; do
80 if test $iii = $value ; then isin=yes ; fi
81 done
82 test $isin = yes
83 }
84
85 # output linker commands needed to link against libraries passed as arguments
86 # (does not handle monolithic/multilib):
87 output_libs()
88 {
89 if test "$cross_compiling" = "yes" ; then
90 target_tag="-${target}"
91 fi
92
93 all_libs=""
94 all_ldflags=""
95 wxlibs=""
96
97 for lib in $* ; do
98 eval xlibs=\$ldlibs_$lib
99 eval xflags=\$ldflags_$lib
100 if isinlist $lib $CORE_BASE_LIBS ; then
101 basename=$basename_nogui
102 else
103 basename=$basename_gui
104 fi
105 if test $lib = "base" ; then
106 libname="$basename"
107 else
108 libname="${basename}_${lib}"
109 fi
110
111 all_ldflags="$all_ldflags $xflags"
112 if test $static_flag = yes ; then
113 wxlibs="$wxlibs ${libdir}/lib${libname}-${release}${target_tag}.a"
114 all_libs="$all_libs $xlibs"
115 else
116 wxlibs="$wxlibs -l${libname}-${release}${target_tag}"
117 fi
118 done
119
120 echo $all_ldflags $wxlibs $all_libs
121 }
122
123 # return the absolute path prepending builddir to it if needed
124 makeabs()
125 {
126 path=$1
127 # TODO: this only works under Unix and even there it could be
128 # enhanced to remove ".." and "."
129 if [ `echo $path | sed 's/^\(.\).*/\1/'` != "/" ]; then
130 if [ $path = "." ]; then
131 path=$builddir
132 else
133 path="$builddir/$path"
134 fi
135 fi
136
137 echo $path
138 }
139
140 usage()
141 {
142 cat <<EOF
143 Usage: wx-config [--prefix[=DIR]] [--exec-prefix[=DIR]] [--version] [--release]
144 [--basename] [--static] [--libs[=LIBS]] [--gl-libs]
145 [--cppflags] [--cflags] [--cxxflags] [--ldflags] [--rezflags]
146 [--cc] [--cxx] [--ld]
147
148 wx-config returns configuration information about the installed
149 version of wxWindows. It may be used to query its version and
150 installation directories and also retrieve the C and C++ compilers
151 and linker which were used for its building and the corresponding
152 flags.
153
154 Ordinarily it should be installed to the appropriate system location
155 along with the headers and library files, but it is also possible to
156 use it to enable builds with an uninstalled wxWindows version for
157 package building and bleeding edge developers. To do so, use it like
158 this:
159
160 \${wx_builddir}/wx-config --prefix=\${wx_srcdir} --exec-prefix=\${wx_builddir}
161
162 Note that any other options supplied must come *after* the prefix
163 specification for it to take effect.
164
165 --static must come before --libs and --gl-libs.
166
167 --libs can take optional argument that contains comma-separated list of
168 wxWindows libraries to link against. This list can include both core
169 and contrib libraries.
170
171 --gl-libs option is deprecated, used --libs=gl instead.
172
173 EOF
174
175 exit $1
176 }
177
178 cppflags()
179 {
180 # we should never specify -I/usr/include on the compiler command line: this
181 # is at best useless and at worst breaks compilation on the systems where
182 # the system headers are non-ANSI because gcc works around this by storing
183 # the ANSI-fied versions of them in its private directory which is searched
184 # after all the directories on the cmd line.
185 #
186 # the situation is a bit more complicated with -I/usr/local/include: again,
187 # it shouldn't be specified with gcc which looks there by default anyhow
188 # and gives warnings (at least 3.1 does) if it is specified explicitly --
189 # but this -I switch *is* needed for the other compilers
190 #
191 # note that we assume that if we use GNU cc we also use GNU c++ and vice
192 # versa, i.e. this won't work (either for --cflags or --cxxflags) if GNU C
193 # compiler and non-GNU C++ compiler are used or vice versa -- we'll fix
194 # this when/if anybody complains about it
195 if test "${includedir}" != "/usr/include" \
196 -a "${includedir}" != "/usr/include/c++" \
197 -a \( "${GCC}" != "yes" \
198 -o "${includedir}" != "/usr/local/include" \) \
199 -a \( "${cross_compiling}" != "yes" \
200 -o "${includedir}" != "/usr/${target}/include" \) ;
201 then
202 includes=" -I${includedir}"
203 fi
204
205 includes="-I${libdir}/wx/include/${TOOLCHAIN_NAME}$includes"
206
207 if test $static_flag = yes ; then
208 echo $includes ${WXDEBUG_DEFINE} ${TOOLCHAIN_DEFS} ${WXCONFIG_INCLUDE} ${WX_LARGEFILE_FLAGS}
209 else
210 echo $includes ${WXDEBUG_DEFINE} ${TOOLCHAIN_DEFS} ${TOOLCHAIN_DLL_DEFS} ${WXCONFIG_INCLUDE} ${WX_LARGEFILE_FLAGS}
211 fi
212 }
213
214 if test $# -eq 0; then
215 usage 1 1>&2
216 fi
217
218 while test $# -gt 0; do
219 case "$1" in
220 -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
221 *) optarg= ;;
222 esac
223
224 case $1 in
225 --inplace)
226 prefix=`makeabs $srcdir`
227 exec_prefix=`makeabs $builddir`
228 exec_prefix_set=yes
229 ;;
230 --prefix=*)
231 prefix=$optarg
232 if test $exec_prefix_set = no ; then
233 exec_prefix=$optarg
234 fi
235 ;;
236 --prefix)
237 echo $prefix
238 ;;
239 --exec-prefix=*)
240 exec_prefix=$optarg
241 exec_prefix_set=yes
242 ;;
243 --exec-prefix)
244 echo $exec_prefix
245 ;;
246 --version)
247 echo ${WX_MAJOR_VERSION_NUMBER}.${WX_MINOR_VERSION_NUMBER}.${WX_RELEASE_NUMBER}
248 ;;
249 --release)
250 echo $release
251 ;;
252 --basename)
253 echo $basename_gui
254 ;;
255 --static)
256 static_flag=yes
257 ;;
258 --cppflags)
259 cppflags
260 ;;
261 --cflags)
262 echo `cppflags` ${CODE_GEN_FLAGS}
263 ;;
264 --cxxflags)
265 echo `cppflags` ${CODE_GEN_FLAGS} ${CODE_GEN_FLAGS_CXX}
266 ;;
267 --ldflags)
268 echo ${LDFLAGS_EXE}
269 ;;
270 --rezflags)
271 echo ${MACRESWXCONFIG}
272 ;;
273
274 --libs*)
275 # find if the argument was --libs=list,of,libs or --libs:
276 if test "x$optarg" = "x" ; then
277 if test "$is_monolithic" = "0" ; then
278 # link against all libs if none given explicitly:
279 libs_list="$CORE_GUI_LIBS $CORE_BASE_LIBS"
280 fi
281 else
282 libs_list=`echo "$optarg" | tr ',' ' '`
283 # always add wxBase, any wxApp needs it:
284 libs_list="$libs_list base"
285 fi
286
287 # include install directory only if it is not default:
288 if test "${libdir}" != "/usr/lib" \
289 -a \( "${cross_compiling}" != "yes" \
290 -o "${libdir}" != "/usr/${target}/lib" \) ;
291 then
292 libs="-L${libdir}"
293 fi
294
295 # in monolithic build, link against the main library:
296 if test "$is_monolithic" = "1" ; then
297 # filter out core libs, leave only contrib in libs_list:
298 newlist=
299 for i in $libs_list ; do
300 if isinlist $i $CORE_BASE_LIBS $CORE_GUI_LIBS ; then
301 libs_list="" # do nothing
302 else
303 newlist="$newlist $i"
304 fi
305 done
306 libs_list="$newlist"
307
308 # output link flags:
309 contrib_libs=`output_libs $libs_list`
310 if test $static_flag = yes ; then
311 echo "$libs ${LDFLAGS} ${WXCONFIG_RPATH} $contrib_libs ${libdir}/${WXCONFIG_LIBS_STATIC} ${EXTRALIBS_GUI} ${LIBS} ${DMALLOC_LIBS}"
312 else
313 echo $libs ${LDFLAGS} ${WXCONFIG_RPATH} $contrib_libs ${WXCONFIG_LIBS} ${DMALLOC_LIBS}
314 fi
315 else
316 # in multilib mode, link against all sublibraries:
317 wxlibs=`output_libs $libs_list`
318 echo $libs ${LDFLAGS} ${WXCONFIG_RPATH} $wxlibs ${DMALLOC_LIBS}
319 fi
320
321 ;;
322 --gl-libs)
323 output_libs gl
324 ;;
325 --cc)
326 echo $CC
327 ;;
328 --cxx)
329 echo $CXX
330 ;;
331 --ld)
332 echo $LD
333 ;;
334 *)
335 usage 1 1>&2
336 ;;
337 esac
338 shift
339 done
340