]>
Commit | Line | Data |
---|---|---|
9a98a854 VZ |
1 | #!/bin/sh |
2 | ||
33380099 VS |
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@" | |
127e9080 | 17 | inplace_flag="no" |
33380099 VS |
18 | |
19 | # Misc configuration variables: | |
20 | ||
0154f61a VS |
21 | update_prefixes() |
22 | { | |
23 | includedir="@includedir@" | |
24 | libdir="@libdir@" | |
25 | } | |
33380099 VS |
26 | prefix="@prefix@" |
27 | exec_prefix="@exec_prefix@" | |
0154f61a VS |
28 | update_prefixes |
29 | ||
6ce73557 | 30 | CC="@CC@" |
2b5f62a0 | 31 | GCC="@GCC@" |
31414f4c | 32 | GCC_SEARCHES_USR_LOCAL_INCLUDE="@GCC_SEARCHES_USR_LOCAL_INCLUDE@" |
6ce73557 VZ |
33 | CXX="@CXX@" |
34 | LD="@SHARED_LD@" | |
33380099 VS |
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@" | |
ffef10f6 | 57 | WXCONFIG_LDFLAGS_GUI="@WXCONFIG_LDFLAGS_GUI@" |
cf615ebb VS |
58 | |
59 | ||
60 | # Linker flags for sublibraries: | |
33380099 | 61 | |
edd891e2 VS |
62 | CORE_BASE_LIBS="@CORE_BASE_LIBS@" |
63 | CORE_GUI_LIBS="@CORE_GUI_LIBS@" | |
cf615ebb | 64 | |
67c13b6c | 65 | ldlibs_base="@WXCONFIG_EXTRALIBS@" |
cf615ebb VS |
66 | ldlibs_core="@EXTRALIBS_GUI@" |
67 | ldlibs_xml="@EXTRALIBS_XML@" | |
3527f29c | 68 | ldlibs_html="@EXTRALIBS_HTML@" |
bb41dcbe | 69 | ldlibs_odbc="@EXTRALIBS_ODBC@" |
f93ca9fd | 70 | ldlibs_adv="@EXTRALIBS_SDL@" |
cf615ebb VS |
71 | |
72 | ldflags_gl="@LDFLAGS_GL@" | |
73 | ldlibs_gl="@OPENGL_LIBS@" | |
74 | ||
75 | ||
33380099 VS |
76 | |
77 | # ------------------------------------------------------------------------- | |
78 | # Script code: | |
79 | # ------------------------------------------------------------------------- | |
80 | ||
81 | exec_prefix_set=no | |
82 | ||
cf615ebb VS |
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 | { | |
67c13b6c VS |
99 | if test "$cross_compiling" = "yes" ; then |
100 | target_tag="-${target}" | |
101 | fi | |
102 | ||
cf615ebb VS |
103 | all_libs="" |
104 | all_ldflags="" | |
105 | wxlibs="" | |
67c13b6c | 106 | |
cf615ebb VS |
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 | |
fef23dd4 VS |
115 | if test $lib = "base" ; then |
116 | libname="$basename" | |
117 | else | |
118 | libname="${basename}_${lib}" | |
119 | fi | |
cf615ebb VS |
120 | |
121 | all_ldflags="$all_ldflags $xflags" | |
122 | if test $static_flag = yes ; then | |
33380099 | 123 | wxlibs="$wxlibs ${libdir}/lib${libname}-${release}${target_tag}.a" |
cf615ebb VS |
124 | all_libs="$all_libs $xlibs" |
125 | else | |
67c13b6c | 126 | wxlibs="$wxlibs -l${libname}-${release}${target_tag}" |
cf615ebb VS |
127 | fi |
128 | done | |
129 | ||
130 | echo $all_ldflags $wxlibs $all_libs | |
131 | } | |
9a98a854 | 132 | |
ffef10f6 VS |
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 | ||
52c71b80 VZ |
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 | ||
75f4be8a VZ |
163 | usage() |
164 | { | |
165 | cat <<EOF | |
2f42e5b6 | 166 | Usage: wx-config [--prefix[=DIR]] [--exec-prefix[=DIR]] [--version] [--release] |
cf615ebb | 167 | [--basename] [--static] [--libs[=LIBS]] [--gl-libs] |
40f7145c | 168 | [--cppflags] [--cflags] [--cxxflags] [--ldflags] [--rezflags] |
75f4be8a | 169 | [--cc] [--cxx] [--ld] |
16327fd8 | 170 | [--inplace] |
75f4be8a VZ |
171 | |
172 | wx-config returns configuration information about the installed | |
b63b07a8 | 173 | version of wxWidgets. It may be used to query its version and |
75f4be8a VZ |
174 | installation directories and also retrieve the C and C++ compilers |
175 | and linker which were used for its building and the corresponding | |
176 | flags. | |
2b5f62a0 | 177 | |
82a649b6 RL |
178 | Ordinarily it should be installed to the appropriate system location |
179 | along with the headers and library files, but it is also possible to | |
b63b07a8 | 180 | use it to enable builds with an uninstalled wxWidgets version for |
82a649b6 RL |
181 | package building and bleeding edge developers. To do so, use it like |
182 | this: | |
183 | ||
dc5e3b9e | 184 | \${wx_builddir}/wx-config --prefix=\${wx_srcdir} --exec-prefix=\${wx_builddir} |
82a649b6 RL |
185 | |
186 | Note that any other options supplied must come *after* the prefix | |
187 | specification for it to take effect. | |
188 | ||
efe6c06f VS |
189 | --static must come before --cppflags, --cflags, --cxxflags, |
190 | --libs and --gl-libs. | |
cf615ebb VS |
191 | |
192 | --libs can take optional argument that contains comma-separated list of | |
b63b07a8 | 193 | wxWidgets libraries to link against. This list can include both core |
1d8864ac VZ |
194 | and contrib libraries. Special value "std" stands for all libraries linked |
195 | in by default. | |
cf615ebb | 196 | |
67c13b6c VS |
197 | --gl-libs option is deprecated, used --libs=gl instead. |
198 | ||
16327fd8 VS |
199 | The --inplace flag allows wx-config to be used from the wxWindows |
200 | build directory and output flags to use the uninstalled version of | |
201 | the headers and libs in the build directory. (Currently configure | |
202 | must be invoked via a full path name for this to work correctly.) | |
203 | ||
75f4be8a VZ |
204 | EOF |
205 | ||
206 | exit $1 | |
207 | } | |
208 | ||
209 | cppflags() | |
210 | { | |
2b5f62a0 VZ |
211 | # we should never specify -I/usr/include on the compiler command line: this |
212 | # is at best useless and at worst breaks compilation on the systems where | |
213 | # the system headers are non-ANSI because gcc works around this by storing | |
214 | # the ANSI-fied versions of them in its private directory which is searched | |
215 | # after all the directories on the cmd line. | |
216 | # | |
31414f4c SN |
217 | # the situation is a bit more complicated with -I/usr/local/include: |
218 | # it shouldn't be specified with some gcc installations which look there | |
219 | # by default anyhow and give warnings (at least 3.1 does) if it is | |
220 | # specified explicitly -- | |
221 | # but this -I switch *is* needed for other gcc installation and for | |
222 | # the other compilers. | |
223 | # So I put a suitable test into configure.in and reuse the result here. | |
2b5f62a0 VZ |
224 | # |
225 | # note that we assume that if we use GNU cc we also use GNU c++ and vice | |
226 | # versa, i.e. this won't work (either for --cflags or --cxxflags) if GNU C | |
227 | # compiler and non-GNU C++ compiler are used or vice versa -- we'll fix | |
228 | # this when/if anybody complains about it | |
33380099 VS |
229 | if test "${includedir}" != "/usr/include" \ |
230 | -a "${includedir}" != "/usr/include/c++" \ | |
31414f4c | 231 | -a \( "${GCC_SEARCHES_USR_LOCAL_INCLUDE}" != "yes" \ |
33380099 | 232 | -o "${includedir}" != "/usr/local/include" \) \ |
77e13408 | 233 | -a \( "${cross_compiling}" != "yes" \ |
33380099 | 234 | -o "${includedir}" != "/usr/${target}/include" \) ; |
3a922bb4 | 235 | then |
33380099 | 236 | includes=" -I${includedir}" |
75f4be8a | 237 | fi |
00c81359 | 238 | |
33380099 | 239 | includes="-I${libdir}/wx/include/${TOOLCHAIN_NAME}$includes" |
00c81359 | 240 | |
127e9080 | 241 | # in inplace case we need to also add path to contrib headers -- do it |
bc79eb4f | 242 | # unconditionally as they might be used and we have no way of knowing if |
127e9080 VZ |
243 | # they really are |
244 | if test $inplace_flag = yes ; then | |
245 | includes="$includes -I${prefix}/contrib/include" | |
246 | fi | |
247 | ||
00c81359 | 248 | if test $static_flag = yes ; then |
33380099 | 249 | echo $includes ${WXDEBUG_DEFINE} ${TOOLCHAIN_DEFS} ${WXCONFIG_INCLUDE} ${WX_LARGEFILE_FLAGS} |
00c81359 | 250 | else |
33380099 | 251 | echo $includes ${WXDEBUG_DEFINE} ${TOOLCHAIN_DEFS} ${TOOLCHAIN_DLL_DEFS} ${WXCONFIG_INCLUDE} ${WX_LARGEFILE_FLAGS} |
00c81359 | 252 | fi |
75f4be8a | 253 | } |
9a98a854 VZ |
254 | |
255 | if test $# -eq 0; then | |
3a922bb4 | 256 | usage 1 1>&2 |
9a98a854 VZ |
257 | fi |
258 | ||
259 | while test $# -gt 0; do | |
260 | case "$1" in | |
261 | -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;; | |
262 | *) optarg= ;; | |
263 | esac | |
264 | ||
265 | case $1 in | |
52c71b80 VZ |
266 | --inplace) |
267 | prefix=`makeabs $srcdir` | |
268 | exec_prefix=`makeabs $builddir` | |
269 | exec_prefix_set=yes | |
127e9080 | 270 | inplace_flag=yes |
0154f61a | 271 | update_prefixes |
52c71b80 | 272 | ;; |
9a98a854 VZ |
273 | --prefix=*) |
274 | prefix=$optarg | |
275 | if test $exec_prefix_set = no ; then | |
276 | exec_prefix=$optarg | |
277 | fi | |
0154f61a | 278 | update_prefixes |
9a98a854 VZ |
279 | ;; |
280 | --prefix) | |
281 | echo $prefix | |
282 | ;; | |
283 | --exec-prefix=*) | |
284 | exec_prefix=$optarg | |
285 | exec_prefix_set=yes | |
0154f61a | 286 | update_prefixes |
9a98a854 VZ |
287 | ;; |
288 | --exec-prefix) | |
289 | echo $exec_prefix | |
290 | ;; | |
291 | --version) | |
33380099 | 292 | echo ${WX_MAJOR_VERSION_NUMBER}.${WX_MINOR_VERSION_NUMBER}.${WX_RELEASE_NUMBER} |
9a98a854 | 293 | ;; |
2f42e5b6 | 294 | --release) |
cf615ebb | 295 | echo $release |
2f42e5b6 VS |
296 | ;; |
297 | --basename) | |
9171d4b4 | 298 | echo $basename_gui |
2f42e5b6 | 299 | ;; |
3d63bc3a RL |
300 | --static) |
301 | static_flag=yes | |
302 | ;; | |
75f4be8a VZ |
303 | --cppflags) |
304 | cppflags | |
305 | ;; | |
9a98a854 | 306 | --cflags) |
33380099 | 307 | echo `cppflags` ${CODE_GEN_FLAGS} |
75f4be8a VZ |
308 | ;; |
309 | --cxxflags) | |
33380099 | 310 | echo `cppflags` ${CODE_GEN_FLAGS} ${CODE_GEN_FLAGS_CXX} |
9a98a854 | 311 | ;; |
40f7145c | 312 | --ldflags) |
33380099 | 313 | echo ${LDFLAGS_EXE} |
40f7145c | 314 | ;; |
2baaf735 | 315 | --rezflags) |
09d3439c | 316 | echo `eval echo ${MACRESWXCONFIG}` |
2baaf735 | 317 | ;; |
cf615ebb VS |
318 | |
319 | --libs*) | |
320 | # find if the argument was --libs=list,of,libs or --libs: | |
321 | if test "x$optarg" = "x" ; then | |
322 | if test "$is_monolithic" = "0" ; then | |
323 | # link against all libs if none given explicitly: | |
324 | libs_list="$CORE_GUI_LIBS $CORE_BASE_LIBS" | |
325 | fi | |
326 | else | |
327 | libs_list=`echo "$optarg" | tr ',' ' '` | |
67c13b6c VS |
328 | # always add wxBase, any wxApp needs it: |
329 | libs_list="$libs_list base" | |
cf615ebb VS |
330 | fi |
331 | ||
332 | # include install directory only if it is not default: | |
33380099 | 333 | if test "${libdir}" != "/usr/lib" \ |
77e13408 | 334 | -a \( "${cross_compiling}" != "yes" \ |
33380099 | 335 | -o "${libdir}" != "/usr/${target}/lib" \) ; |
3a922bb4 | 336 | then |
33380099 | 337 | libs="-L${libdir}" |
9a98a854 | 338 | fi |
3d63bc3a | 339 | |
1d8864ac VZ |
340 | # it's simpler to avoid handling "bae" itself at all as we add it in the |
341 | # end to the list of libraries anyhow | |
cf615ebb VS |
342 | # in monolithic build, link against the main library: |
343 | if test "$is_monolithic" = "1" ; then | |
344 | # filter out core libs, leave only contrib in libs_list: | |
345 | newlist= | |
346 | for i in $libs_list ; do | |
1d8864ac | 347 | if isinlist $i $CORE_GUI_LIBS $CORE_BASE_LIBS; then |
cf615ebb VS |
348 | libs_list="" # do nothing |
349 | else | |
350 | newlist="$newlist $i" | |
351 | fi | |
352 | done | |
353 | libs_list="$newlist" | |
9171d4b4 | 354 | |
cf615ebb VS |
355 | # output link flags: |
356 | contrib_libs=`output_libs $libs_list` | |
357 | if test $static_flag = yes ; then | |
ffef10f6 | 358 | echo "$libs ${LDFLAGS} ${WXCONFIG_LDFLAGS_GUI} ${WXCONFIG_RPATH} $contrib_libs ${libdir}/${WXCONFIG_LIBS_STATIC} ${EXTRALIBS_GUI} ${LIBS} ${DMALLOC_LIBS}" |
cf615ebb | 359 | else |
ffef10f6 | 360 | echo $libs ${LDFLAGS} ${WXCONFIG_LDFLAGS_GUI} ${WXCONFIG_RPATH} $contrib_libs ${WXCONFIG_LIBS} ${DMALLOC_LIBS} |
cf615ebb | 361 | fi |
3d63bc3a | 362 | else |
1d8864ac VZ |
363 | # we may need to replace "std" alias with its expansion |
364 | newlist= | |
365 | hadstd=0 | |
366 | for i in $libs_list; do | |
367 | case $i in | |
368 | std) | |
369 | hadstd=1 | |
370 | ;; | |
371 | ||
372 | base) | |
373 | # if we have std, we're going to add base anyhow, avoid | |
374 | # having it twice in the end | |
375 | if [ $hadstd = 0 ]; then | |
376 | newlist="$newlist $i"; | |
377 | fi | |
378 | ;; | |
379 | ||
380 | *) | |
381 | newlist="$newlist $i" | |
382 | ;; | |
383 | esac | |
384 | done | |
385 | libs_list="$newlist" | |
386 | if [ $hadstd = 1 ]; then | |
387 | libs_list="$libs_list $CORE_GUI_LIBS $CORE_BASE_LIBS" | |
388 | fi | |
389 | ||
cf615ebb VS |
390 | # in multilib mode, link against all sublibraries: |
391 | wxlibs=`output_libs $libs_list` | |
ffef10f6 VS |
392 | guildflags=`get_ldflags_gui $libs_list` |
393 | echo $libs ${LDFLAGS} ${guildflags} ${WXCONFIG_RPATH} $wxlibs ${DMALLOC_LIBS} | |
3d63bc3a RL |
394 | fi |
395 | ||
3a922bb4 RL |
396 | ;; |
397 | --gl-libs) | |
cf615ebb | 398 | output_libs gl |
9a98a854 | 399 | ;; |
6ce73557 VZ |
400 | --cc) |
401 | echo $CC | |
402 | ;; | |
403 | --cxx) | |
404 | echo $CXX | |
405 | ;; | |
406 | --ld) | |
407 | echo $LD | |
408 | ;; | |
9a98a854 | 409 | *) |
75f4be8a | 410 | usage 1 1>&2 |
9a98a854 VZ |
411 | ;; |
412 | esac | |
413 | shift | |
414 | done | |
415 |