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