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