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