added wxAdvanced
[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 adv 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