]> git.saurik.com Git - wxWidgets.git/blame - aclocal.m4
Added wxWINDOWS_POCKETPC, wxWINDOWS_SMARTPHONE
[wxWidgets.git] / aclocal.m4
CommitLineData
2a879853 1# aclocal.m4 generated automatically by aclocal 1.6.3 -*- Autoconf -*-
8168de4c 2
2a879853 3# Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002
fe0895cf
VS
4# Free Software Foundation, Inc.
5# This file is free software; the Free Software Foundation
6# gives unlimited permission to copy and/or distribute it,
7# with or without modifications, as long as this notice is preserved.
8168de4c 8
fe0895cf
VS
9# This program is distributed in the hope that it will be useful,
10# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
11# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
12# PARTICULAR PURPOSE.
8168de4c 13
b040e242
VS
14dnl ---------------------------------------------------------------------------
15dnl
16dnl Macros for configure.in for wxWindows by Robert Roebling, Phil Blecker,
17dnl Vadim Zeitlin and Ron Lee
18dnl
19dnl This script is under the wxWindows licence.
20dnl
af8ebe8a 21dnl Version: $Id$
b040e242
VS
22dnl ---------------------------------------------------------------------------
23
480ccd21
DE
24dnl ===========================================================================
25dnl macros to detect specialty compiler options
26dnl ===========================================================================
27
28dnl Figure out if we need to pass -ext o to compiler (MetroWerks)
29AC_DEFUN([AC_WX_METROWERKS_EXTO],
30[AC_CACHE_CHECK([if the _AC_LANG compiler requires -ext o], wx_cv_[]_AC_LANG_ABBREV[]_exto,
31dnl First create an empty conf test
32[AC_LANG_CONFTEST([AC_LANG_PROGRAM()])
33dnl Now remove .o and .c.o or .cc.o
34rm -f conftest.$ac_objext conftest.$ac_ext.o
35dnl Now compile the test
36AS_IF([AC_TRY_EVAL(ac_compile)],
37dnl If the test succeeded look for conftest.c.o or conftest.cc.o
38[for ac_file in `(ls conftest.* 2>/dev/null)`; do
39 case $ac_file in
40 conftest.$ac_ext.o)
41 wx_cv_[]_AC_LANG_ABBREV[]_exto="-ext o"
42 ;;
43 *)
44 ;;
45 esac
46done],
47[AC_MSG_FAILURE([cannot figure out if compiler needs -ext o: cannot compile])
48]) dnl AS_IF
49
50rm -f conftest.$ac_ext.o conftest.$ac_objext conftest.$ac_ext
51]) dnl AC_CACHE_CHECK
52
53if test "x$wx_cv_[]_AC_LANG_ABBREV[]_exto" '!=' "x"; then
54 if test "[]_AC_LANG_ABBREV[]" = "c"; then
55 CFLAGS="$wx_cv_[]_AC_LANG_ABBREV[]_exto $CFLAGS"
56 fi
57 if test "[]_AC_LANG_ABBREV[]" = "cxx"; then
58 CXXFLAGS="$wx_cv_[]_AC_LANG_ABBREV[]_exto $CXXFLAGS"
59 fi
60fi
61]) dnl AC_DEFUN
62
63
9273ffba
DE
64dnl Based on autoconf _AC_LANG_COMPILER_GNU
65AC_DEFUN([_AC_WX_LANG_COMPILER_XLC],
66[AC_CACHE_CHECK([whether we are using the IBM xlC _AC_LANG compiler],
67 [wx_cv_[]_AC_LANG_ABBREV[]_compiler_xlc],
68 [AC_TRY_COMPILE([],[#ifndef __xlC__
69 choke me
70#endif
71],
72 [wx_compiler_xlc=yes],
73 [wx_compiler_xlc=no])
74 wx_cv_[]_AC_LANG_ABBREV[]_compiler_xlc=$wx_compiler_xlc
75 ])
76])
77
78dnl Loosely based on autoconf AC_PROG_CC
79AC_DEFUN([AC_WX_PROG_XLCC],
80[AC_LANG_PUSH(C)
81_AC_WX_LANG_COMPILER_XLC
82XLCC=`test $wx_compiler_xlc = yes && echo yes`
83AC_LANG_POP(C)
84])
85
86dnl Loosely based on autoconf AC_PROG_CXX
87AC_DEFUN([AC_WX_PROG_XLCXX],
88[AC_LANG_PUSH(C++)
89_AC_WX_LANG_COMPILER_XLC
90XLCXX=`test $wx_compiler_xlc = yes && echo yes`
91AC_LANG_POP(C++)
92])
93
1d1af5ea
DE
94dnl ===========================================================================
95dnl Objective-C(++) related macros
96dnl ===========================================================================
97m4_define([AC_WX_LANG_OBJECTIVEC],
98[AC_LANG(C)
99ac_ext=m
100])
101
102m4_define([AC_WX_LANG_OBJECTIVECPLUSPLUS],
103[AC_LANG(C++)
104ac_ext=mm
105])
9273ffba 106
b040e242
VS
107dnl ===========================================================================
108dnl macros to find the a file in the list of include/lib paths
109dnl ===========================================================================
110
111dnl ---------------------------------------------------------------------------
112dnl call WX_PATH_FIND_INCLUDES(search path, header name), sets ac_find_includes
113dnl to the full name of the file that was found or leaves it empty if not found
114dnl ---------------------------------------------------------------------------
115AC_DEFUN([WX_PATH_FIND_INCLUDES],
116[
117ac_find_includes=
2b5f62a0 118for ac_dir in $1 /usr/include;
b040e242
VS
119 do
120 if test -f "$ac_dir/$2"; then
121 ac_find_includes=$ac_dir
122 break
123 fi
124 done
125])
126
127dnl ---------------------------------------------------------------------------
128dnl call WX_PATH_FIND_LIBRARIES(search path, header name), sets ac_find_libraries
129dnl to the full name of the file that was found or leaves it empty if not found
130dnl ---------------------------------------------------------------------------
131AC_DEFUN([WX_PATH_FIND_LIBRARIES],
132[
133ac_find_libraries=
2b5f62a0 134for ac_dir in $1 /usr/lib;
b040e242
VS
135 do
136 for ac_extension in a so sl dylib; do
137 if test -f "$ac_dir/lib$2.$ac_extension"; then
138 ac_find_libraries=$ac_dir
139 break 2
140 fi
141 done
142 done
143])
144
145dnl ---------------------------------------------------------------------------
146dnl Path to include, already defined
147dnl ---------------------------------------------------------------------------
148AC_DEFUN([WX_INCLUDE_PATH_EXIST],
149[
2b5f62a0
VZ
150 dnl never add -I/usr/include to the CPPFLAGS
151 if test "x$1" = "x/usr/include"; then
b040e242
VS
152 ac_path_to_include=""
153 else
2b5f62a0
VZ
154 echo "$2" | grep "\-I$1" > /dev/null
155 result=$?
156 if test $result = 0; then
157 ac_path_to_include=""
158 else
159 ac_path_to_include=" -I$1"
160 fi
b040e242
VS
161 fi
162])
163
164dnl ---------------------------------------------------------------------------
165dnl Path to link, already defined
166dnl ---------------------------------------------------------------------------
167AC_DEFUN([WX_LINK_PATH_EXIST],
168[
169 echo "$2" | grep "\-L$1" > /dev/null
170 result=$?
171 if test $result = 0; then
172 ac_path_to_link=""
173 else
174 ac_path_to_link=" -L$1"
175 fi
176])
177
178dnl ===========================================================================
179dnl C++ features test
180dnl ===========================================================================
181
182dnl ---------------------------------------------------------------------------
183dnl WX_CPP_NEW_HEADERS checks whether the compiler has "new" <iostream> header
184dnl or only the old <iostream.h> one - it may be generally assumed that if
185dnl <iostream> exists, the other "new" headers (without .h) exist too.
186dnl
c2218763 187dnl call WX_CPP_NEW_HEADERS(actiof-if-true, action-if-false)
b040e242
VS
188dnl ---------------------------------------------------------------------------
189
190AC_DEFUN([WX_CPP_NEW_HEADERS],
191[
b040e242
VS
192 AC_LANG_SAVE
193 AC_LANG_CPLUSPLUS
194
195 AC_CHECK_HEADERS(iostream)
196
197 if test "$ac_cv_header_iostream" = "yes" ; then
198 ifelse([$1], , :, [$1])
199 else
200 ifelse([$2], , :, [$2])
201 fi
202
203 AC_LANG_RESTORE
b040e242
VS
204])
205
206dnl ---------------------------------------------------------------------------
207dnl WX_CPP_BOOL checks whether the C++ compiler has a built in bool type
208dnl
209dnl call WX_CPP_BOOL - will define HAVE_BOOL if the compiler supports bool
210dnl ---------------------------------------------------------------------------
211
212AC_DEFUN([WX_CPP_BOOL],
213[
214 AC_CACHE_CHECK([if C++ compiler supports bool], wx_cv_cpp_bool,
215 [
216 AC_LANG_SAVE
217 AC_LANG_CPLUSPLUS
218
219 AC_TRY_COMPILE(
220 [
221 ],
222 [
223 bool b = true;
224
225 return 0;
226 ],
227 [
228 wx_cv_cpp_bool=yes
229 ],
230 [
231 wx_cv_cpp_bool=no
232 ]
233 )
234
235 AC_LANG_RESTORE
236 ])
237
238 if test "$wx_cv_cpp_bool" = "yes"; then
239 AC_DEFINE(HAVE_BOOL)
240 fi
241])
242
986ecc86
VZ
243dnl ---------------------------------------------------------------------------
244dnl WX_CPP_EXPLICIT checks whether the C++ compiler support the explicit
245dnl keyword and defines HAVE_EXPLICIT if this is the case
246dnl ---------------------------------------------------------------------------
247
248AC_DEFUN([WX_CPP_EXPLICIT],
249[
250 AC_CACHE_CHECK([if C++ compiler supports the explicit keyword],
251 wx_cv_explicit,
252 [
253 AC_LANG_SAVE
254 AC_LANG_CPLUSPLUS
255
256 dnl do the test in 2 steps: first check that the compiler knows about the
257 dnl explicit keyword at all and then verify that it really honours it
258 AC_TRY_COMPILE(
259 [
260 class Foo { public: explicit Foo(int) {} };
261 ],
262 [
263 return 0;
264 ],
265 [
266 AC_TRY_COMPILE(
267 [
268 class Foo { public: explicit Foo(int) {} };
269 static void TakeFoo(const Foo& foo) { }
270 ],
271 [
272 TakeFoo(17);
273 return 0;
274 ],
275 wx_cv_explicit=no,
276 wx_cv_explicit=yes
277 )
278 ],
279 wx_cv_explicit=no
280 )
281
282 AC_LANG_RESTORE
283 ])
284
285 if test "$wx_cv_explicit" = "yes"; then
286 AC_DEFINE(HAVE_EXPLICIT)
287 fi
288])
289
b040e242
VS
290dnl ---------------------------------------------------------------------------
291dnl a slightly better AC_C_BIGENDIAN macro which allows cross-compiling
292dnl ---------------------------------------------------------------------------
293
294AC_DEFUN([WX_C_BIGENDIAN],
295[AC_CACHE_CHECK([whether byte ordering is bigendian], ac_cv_c_bigendian,
296[ac_cv_c_bigendian=unknown
297# See if sys/param.h defines the BYTE_ORDER macro.
298AC_TRY_COMPILE([#include <sys/types.h>
299#include <sys/param.h>], [
300#if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN
301 bogus endian macros
302#endif], [# It does; now see whether it defined to BIG_ENDIAN or not.
303AC_TRY_COMPILE([#include <sys/types.h>
304#include <sys/param.h>], [
305#if BYTE_ORDER != BIG_ENDIAN
306 not big endian
307#endif], ac_cv_c_bigendian=yes, ac_cv_c_bigendian=no)])
308if test $ac_cv_c_bigendian = unknown; then
309AC_TRY_RUN([main () {
310 /* Are we little or big endian? From Harbison&Steele. */
311 union
312 {
313 long l;
314 char c[sizeof (long)];
315 } u;
316 u.l = 1;
317 exit (u.c[sizeof (long) - 1] == 1);
318}], [ac_cv_c_bigendian=no], [ac_cv_c_bigendian=yes], [ac_cv_c_bigendian=unknown])
319fi])
320if test $ac_cv_c_bigendian = unknown; then
321 AC_MSG_WARN([Assuming little-endian target machine - this may be overriden by adding the line "ac_cv_c_bigendian=${ac_cv_c_bigendian='yes'}" to config.cache file])
322fi
323if test $ac_cv_c_bigendian = yes; then
324 AC_DEFINE(WORDS_BIGENDIAN)
325fi
326])
327
328dnl ---------------------------------------------------------------------------
329dnl override AC_ARG_ENABLE/WITH to cache the results in .cache file
330dnl ---------------------------------------------------------------------------
331
332AC_DEFUN([WX_ARG_CACHE_INIT],
333 [
334 wx_arg_cache_file="configarg.cache"
335 echo "loading argument cache $wx_arg_cache_file"
336 rm -f ${wx_arg_cache_file}.tmp
337 touch ${wx_arg_cache_file}.tmp
338 touch ${wx_arg_cache_file}
339 ])
340
341AC_DEFUN([WX_ARG_CACHE_FLUSH],
342 [
343 echo "saving argument cache $wx_arg_cache_file"
344 mv ${wx_arg_cache_file}.tmp ${wx_arg_cache_file}
345 ])
346
347dnl this macro checks for a three-valued command line --with argument:
348dnl possible arguments are 'yes', 'no', 'sys', or 'builtin'
349dnl usage: WX_ARG_SYS_WITH(option, helpmessage, variable-name)
350AC_DEFUN([WX_ARG_SYS_WITH],
351 [
352 AC_MSG_CHECKING([for --with-$1])
353 no_cache=0
354 AC_ARG_WITH($1, [$2],
355 [
356 if test "$withval" = yes; then
357 ac_cv_use_$1='$3=yes'
358 elif test "$withval" = no; then
359 ac_cv_use_$1='$3=no'
360 elif test "$withval" = sys; then
361 ac_cv_use_$1='$3=sys'
362 elif test "$withval" = builtin; then
363 ac_cv_use_$1='$3=builtin'
364 else
365 AC_MSG_ERROR([Invalid value for --with-$1: should be yes, no, sys, or builtin])
366 fi
367 ],
368 [
369 LINE=`grep "$3" ${wx_arg_cache_file}`
370 if test "x$LINE" != x ; then
371 eval "DEFAULT_$LINE"
372 else
373 no_cache=1
374 fi
375
376 ac_cv_use_$1='$3='$DEFAULT_$3
377 ])
378
379 eval "$ac_cv_use_$1"
380 if test "$no_cache" != 1; then
381 echo $ac_cv_use_$1 >> ${wx_arg_cache_file}.tmp
382 fi
383
384 if test "$$3" = yes; then
385 AC_MSG_RESULT(yes)
386 elif test "$$3" = no; then
387 AC_MSG_RESULT(no)
388 elif test "$$3" = sys; then
389 AC_MSG_RESULT([system version])
390 elif test "$$3" = builtin; then
391 AC_MSG_RESULT([builtin version])
392 else
393 AC_MSG_ERROR([Invalid value for --with-$1: should be yes, no, sys, or builtin])
394 fi
395 ])
396
397dnl this macro checks for a command line argument and caches the result
398dnl usage: WX_ARG_WITH(option, helpmessage, variable-name)
399AC_DEFUN([WX_ARG_WITH],
400 [
401 AC_MSG_CHECKING([for --with-$1])
402 no_cache=0
403 AC_ARG_WITH($1, [$2],
404 [
405 if test "$withval" = yes; then
406 ac_cv_use_$1='$3=yes'
407 else
408 ac_cv_use_$1='$3=no'
409 fi
410 ],
411 [
412 LINE=`grep "$3" ${wx_arg_cache_file}`
413 if test "x$LINE" != x ; then
414 eval "DEFAULT_$LINE"
415 else
416 no_cache=1
417 fi
418
419 ac_cv_use_$1='$3='$DEFAULT_$3
420 ])
421
422 eval "$ac_cv_use_$1"
423 if test "$no_cache" != 1; then
424 echo $ac_cv_use_$1 >> ${wx_arg_cache_file}.tmp
425 fi
426
427 if test "$$3" = yes; then
428 AC_MSG_RESULT(yes)
429 else
430 AC_MSG_RESULT(no)
431 fi
432 ])
433
434dnl like WX_ARG_WITH but uses AC_ARG_ENABLE instead of AC_ARG_WITH
5005acfe 435dnl usage: WX_ARG_ENABLE(option, helpmessage, variable-name, enablestring)
2b5f62a0
VZ
436dnl
437dnl enablestring is a hack and allows to show "checking for --disable-foo"
438dnl message when running configure instead of the default "checking for
439dnl --enable-foo" one whih is useful for the options enabled by default
b040e242
VS
440AC_DEFUN([WX_ARG_ENABLE],
441 [
5005acfe
VZ
442 enablestring=$4
443 AC_MSG_CHECKING([for --${enablestring:-enable}-$1])
b040e242
VS
444 no_cache=0
445 AC_ARG_ENABLE($1, [$2],
446 [
447 if test "$enableval" = yes; then
448 ac_cv_use_$1='$3=yes'
449 else
450 ac_cv_use_$1='$3=no'
451 fi
452 ],
453 [
454 LINE=`grep "$3" ${wx_arg_cache_file}`
455 if test "x$LINE" != x ; then
456 eval "DEFAULT_$LINE"
457 else
458 no_cache=1
459 fi
460
461 ac_cv_use_$1='$3='$DEFAULT_$3
462 ])
463
464 eval "$ac_cv_use_$1"
465 if test "$no_cache" != 1; then
466 echo $ac_cv_use_$1 >> ${wx_arg_cache_file}.tmp
467 fi
468
469 if test "$$3" = yes; then
470 AC_MSG_RESULT(yes)
471 else
472 AC_MSG_RESULT(no)
473 fi
474 ])
475
476
2b5f62a0
VZ
477dnl ===========================================================================
478dnl Linker features test
479dnl ===========================================================================
480
481dnl ---------------------------------------------------------------------------
482dnl WX_VERSIONED_SYMBOLS checks whether the linker can create versioned
483dnl symbols. If it can, sets LDFLAGS_VERSIONING to $CXX flags needed to use
484dnl version script file named versionfile
485dnl
486dnl call WX_VERSIONED_SYMBOLS(versionfile)
487dnl ---------------------------------------------------------------------------
488AC_DEFUN([WX_VERSIONED_SYMBOLS],
489[
490 found_versioning=no
491
b4eecb7e
VS
492 dnl FIXME - doesn't work, Solaris linker doesn't accept wildcards
493 dnl in the script.
494 dnl dnl Check for known non-gcc cases:
495 dnl case "${host}" in
496 dnl *-*-solaris2* )
497 dnl if test "x$GCC" != "xyes" ; then
498 dnl LDFLAGS_VERSIONING="-M $1"
499 dnl found_versioning=yes
500 dnl fi
501 dnl ;;
502 dnl esac
2b5f62a0
VZ
503
504 dnl Generic check for GCC or GCC-like behaviour (Intel C++, GCC):
505 if test $found_versioning = no ; then
506 AC_CACHE_CHECK([if the linker accepts --version-script], wx_cv_version_script,
507 [
508 echo "VER_1 { *; };" >conftest.sym
509 echo "int main() { return 0; }" >conftest.cpp
510
511 if AC_TRY_COMMAND([
512 $CXX -o conftest.output $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.cpp
513 -Wl,--version-script,conftest.sym >/dev/null 2>conftest.stderr]) ; then
514 if test -s conftest.stderr ; then
515 wx_cv_version_script=no
516 else
517 wx_cv_version_script=yes
518 fi
519 else
520 wx_cv_version_script=no
521 fi
522 rm -f conftest.output conftest.stderr conftest.sym conftest.cpp
523 ])
524 if test $wx_cv_version_script = yes ; then
525 LDFLAGS_VERSIONING="-Wl,--version-script,$1"
526 fi
527 fi
528])
529
b040e242
VS
530
531dnl ===========================================================================
532dnl "3rd party" macros included here because they are not widely available
533dnl ===========================================================================
534
b040e242
VS
535dnl ---------------------------------------------------------------------------
536dnl test for availability of iconv()
537dnl ---------------------------------------------------------------------------
538
b040e242
VS
539dnl From Bruno Haible.
540
541AC_DEFUN([AM_ICONV],
542[
543 dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and
544 dnl those with the standalone portable GNU libiconv installed).
545
546 AC_ARG_WITH([libiconv-prefix],
547[ --with-libiconv-prefix=DIR search for libiconv in DIR/include and DIR/lib], [
548 for dir in `echo "$withval" | tr : ' '`; do
549 if test -d $dir/include; then CPPFLAGS="$CPPFLAGS -I$dir/include"; fi
550 if test -d $dir/lib; then LDFLAGS="$LDFLAGS -L$dir/lib"; fi
551 done
552 ])
553
554 AC_CACHE_CHECK(for iconv, am_cv_func_iconv, [
555 am_cv_func_iconv="no, consider installing GNU libiconv"
556 am_cv_lib_iconv=no
557 AC_TRY_LINK([#include <stdlib.h>
558#include <iconv.h>],
559 [iconv_t cd = iconv_open("","");
560 iconv(cd,NULL,NULL,NULL,NULL);
561 iconv_close(cd);],
562 am_cv_func_iconv=yes)
563 if test "$am_cv_func_iconv" != yes; then
564 am_save_LIBS="$LIBS"
565 LIBS="$LIBS -liconv"
566 AC_TRY_LINK([#include <stdlib.h>
567#include <iconv.h>],
568 [iconv_t cd = iconv_open("","");
569 iconv(cd,NULL,NULL,NULL,NULL);
570 iconv_close(cd);],
571 am_cv_lib_iconv=yes
572 am_cv_func_iconv=yes)
573 LIBS="$am_save_LIBS"
574 fi
575 ])
576 if test "$am_cv_func_iconv" = yes; then
577 AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.])
b7043674 578 AC_CACHE_CHECK([if iconv needs const], wx_cv_func_iconv_const,
b040e242
VS
579 AC_TRY_COMPILE([
580#include <stdlib.h>
581#include <iconv.h>
582extern
583#ifdef __cplusplus
584"C"
585#endif
586#if defined(__STDC__) || defined(__cplusplus)
587size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
588#else
589size_t iconv();
590#endif
b7043674
VZ
591 ],
592 [],
593 wx_cv_func_iconv_const="no",
594 wx_cv_func_iconv_const="yes"
595 )
596 )
597
598 iconv_const=
1c405bb5 599 if test "x$wx_cv_func_iconv_const" = "xyes"; then
b7043674
VZ
600 iconv_const="const"
601 fi
602
603 AC_DEFINE_UNQUOTED(ICONV_CONST, $iconv_const,
b040e242
VS
604 [Define as const if the declaration of iconv() needs const.])
605 fi
606 LIBICONV=
607 if test "$am_cv_lib_iconv" = yes; then
608 LIBICONV="-liconv"
609 fi
610 AC_SUBST(LIBICONV)
611])
612
90dd450c
VZ
613dnl ---------------------------------------------------------------------------
614dnl AC_SYS_LARGEFILE (partly based on the code from autoconf 2.5x)
615dnl ---------------------------------------------------------------------------
616
617dnl WX_SYS_LARGEFILE_TEST
618dnl
619dnl NB: original autoconf test was checking if compiler supported 6 bit off_t
620dnl arithmetic properly but this failed miserably with gcc under Linux
621dnl whereas the system still supports 64 bit files, so now simply check
622dnl that off_t is big enough
623define(WX_SYS_LARGEFILE_TEST,
624[typedef struct {
625 unsigned int field: sizeof(off_t) == 8;
626} wxlf;
627])
628
629
630dnl WX_SYS_LARGEFILE_MACRO_VALUE(C-MACRO, VALUE, CACHE-VAR)
631define(WX_SYS_LARGEFILE_MACRO_VALUE,
632[
633 AC_CACHE_CHECK([for $1 value needed for large files], [$3],
634 [
635 AC_TRY_COMPILE([#define $1 $2
636 #include <sys/types.h>],
637 WX_SYS_LARGEFILE_TEST,
638 [$3=$2],
639 [$3=no])
640 ]
641 )
642
643 if test "$$3" != no; then
5a5d3c08 644 wx_largefile=yes
90dd450c
VZ
645 AC_DEFINE_UNQUOTED([$1], [$$3])
646 fi
647])
648
649
650dnl AC_SYS_LARGEFILE
651dnl ----------------
652dnl By default, many hosts won't let programs access large files;
653dnl one must use special compiler options to get large-file access to work.
654dnl For more details about this brain damage please see:
655dnl http://www.sas.com/standards/large.file/x_open.20Mar96.html
656AC_DEFUN([AC_SYS_LARGEFILE],
657[AC_ARG_ENABLE(largefile,
658 [ --disable-largefile omit support for large files])
659if test "$enable_largefile" != no; then
660 dnl _FILE_OFFSET_BITS==64 is needed for Linux, Solaris, ...
661 dnl _LARGE_FILES -- for AIX
5a5d3c08 662 wx_largefile=no
90dd450c
VZ
663 WX_SYS_LARGEFILE_MACRO_VALUE(_FILE_OFFSET_BITS, 64, ac_cv_sys_file_offset_bits)
664 if test "x$wx_largefile" != "xyes"; then
665 WX_SYS_LARGEFILE_MACRO_VALUE(_LARGE_FILES, 1, ac_cv_sys_large_files)
666 fi
667
5a5d3c08 668 AC_MSG_CHECKING(if large file support is available)
90dd450c
VZ
669 if test "x$wx_largefile" = "xyes"; then
670 AC_DEFINE(HAVE_LARGEFILE_SUPPORT)
671 fi
5a5d3c08 672 AC_MSG_RESULT($wx_largefile)
90dd450c
VZ
673fi
674])
b040e242 675
521196a2
MB
676
677dnl Available from the GNU Autoconf Macro Archive at:
678dnl http://www.gnu.org/software/ac-archive/htmldoc/ac_cxx_const_cast.html
679dnl
680AC_DEFUN([AC_CXX_CONST_CAST],
681[AC_CACHE_CHECK(whether the compiler supports const_cast<>,
682ac_cv_cxx_const_cast,
683[AC_LANG_SAVE
684 AC_LANG_CPLUSPLUS
685 AC_TRY_COMPILE(,[int x = 0;const int& y = x;int& z = const_cast<int&>(y);return z;],
686 ac_cv_cxx_const_cast=yes, ac_cv_cxx_const_cast=no)
687 AC_LANG_RESTORE
688])
689if test "$ac_cv_cxx_const_cast" = yes; then
690 AC_DEFINE(HAVE_CONST_CAST,,[define if the compiler supports const_cast<>])
691fi
692])
693
7714864e
RL
694dnl http://www.gnu.org/software/ac-archive/htmldoc/ac_cxx_reinterpret_cast.html
695AC_DEFUN([AC_CXX_REINTERPRET_CAST],
696[AC_CACHE_CHECK(whether the compiler supports reinterpret_cast<>,
697ac_cv_cxx_reinterpret_cast,
698[AC_LANG_SAVE
699 AC_LANG_CPLUSPLUS
700 AC_TRY_COMPILE([#include <typeinfo>
701class Base { public : Base () {} virtual void f () = 0;};
702class Derived : public Base { public : Derived () {} virtual void f () {} };
703class Unrelated { public : Unrelated () {} };
704int g (Unrelated&) { return 0; }],[
705Derived d;Base& b=d;Unrelated& e=reinterpret_cast<Unrelated&>(b);return g(e);],
706 ac_cv_cxx_reinterpret_cast=yes, ac_cv_cxx_reinterpret_cast=no)
707 AC_LANG_RESTORE
708])
709if test "$ac_cv_cxx_reinterpret_cast" = yes; then
710 AC_DEFINE(HAVE_REINTERPRET_CAST,,
711 [define if the compiler supports reinterpret_cast<>])
712fi
713])
714
ecfd48ca
VZ
715dnl and http://www.gnu.org/software/ac-archive/htmldoc/ac_cxx_static_cast.html
716AC_DEFUN([AC_CXX_STATIC_CAST],
717[AC_CACHE_CHECK(whether the compiler supports static_cast<>,
718ac_cv_cxx_static_cast,
719[AC_LANG_SAVE
720 AC_LANG_CPLUSPLUS
721 AC_TRY_COMPILE([#include <typeinfo>
722class Base { public : Base () {} virtual void f () = 0; };
723class Derived : public Base { public : Derived () {} virtual void f () {} };
724int g (Derived&) { return 0; }],[
725Derived d; Base& b = d; Derived& s = static_cast<Derived&> (b); return g (s);],
726 ac_cv_cxx_static_cast=yes, ac_cv_cxx_static_cast=no)
727 AC_LANG_RESTORE
728])
729if test "$ac_cv_cxx_static_cast" = yes; then
730 AC_DEFINE(HAVE_STATIC_CAST,, [define if the compiler supports static_cast<>])
731fi
732])
733
08cd454f
DE
734dnl http://autoconf-archive.cryp.to/ac_cxx_dynamic_cast.html
735AC_DEFUN([AC_CXX_DYNAMIC_CAST],
736[AC_CACHE_CHECK(whether the compiler supports dynamic_cast<>,
737ac_cv_cxx_dynamic_cast,
738[AC_LANG_SAVE
739 AC_LANG_CPLUSPLUS
740 AC_TRY_COMPILE([#include <typeinfo>
741class Base { public : Base () {} virtual void f () = 0;};
742class Derived : public Base { public : Derived () {} virtual void f () {} };],[
743Derived d; Base& b=d; return dynamic_cast<Derived*>(&b) ? 0 : 1;],
744 ac_cv_cxx_dynamic_cast=yes, ac_cv_cxx_dynamic_cast=no)
745 AC_LANG_RESTORE
746])
747if test "$ac_cv_cxx_dynamic_cast" = yes; then
748 AC_DEFINE(HAVE_DYNAMIC_CAST,,[define if the compiler supports dynamic_cast<>])
749fi
750])
751
752
2e350179
VS
753dnl ---------------------------------------------------------------------------
754dnl Support macros for makefiles generated by BAKEFILE.
755dnl ---------------------------------------------------------------------------
b040e242 756
2e350179
VS
757dnl Lots of compiler & linker detection code contained here was taken from
758dnl wxWindows configure.in script (see http://www.wxwindows.org)
3f345b47 759
2e350179
VS
760dnl Based on autoconf _AC_LANG_COMPILER_GNU
761AC_DEFUN([_AC_BAKEFILE_LANG_COMPILER_MWERKS],
762[AC_CACHE_CHECK([whether we are using the Metrowerks _AC_LANG compiler],
763 [bakefile_cv_[]_AC_LANG_ABBREV[]_compiler_mwerks],
764 [AC_TRY_COMPILE([],[#ifndef __MWERKS__
765 choke me
766#endif
767],
768 [bakefile_compiler_mwerks=yes],
769 [bakefile_compiler_mwerks=no])
770 bakefile_cv_[]_AC_LANG_ABBREV[]_compiler_mwerks=$bakefile_compiler_mwerks
771 ])
772])
3f345b47 773
2e350179
VS
774dnl Loosely based on autoconf AC_PROG_CC
775dnl TODO: Maybe this should wrap the call to AC_PROG_CC and be used instead.
776AC_DEFUN([AC_BAKEFILE_PROG_MWCC],
777[AC_LANG_PUSH(C)
778_AC_BAKEFILE_LANG_COMPILER_MWERKS
779MWCC=`test $bakefile_compiler_mwerks = yes && echo yes`
780AC_LANG_POP(C)
781])
9e691f46 782
2e350179
VS
783dnl Loosely based on autoconf AC_PROG_CXX
784dnl TODO: Maybe this should wrap the call to AC_PROG_CXX and be used instead.
785AC_DEFUN([AC_BAKEFILE_PROG_MWCXX],
786[AC_LANG_PUSH(C++)
787_AC_BAKEFILE_LANG_COMPILER_MWERKS
788MWCXX=`test $bakefile_compiler_mwerks = yes && echo yes`
789AC_LANG_POP(C++)
790])
9e691f46 791
2e350179
VS
792dnl ---------------------------------------------------------------------------
793dnl AC_BAKEFILE_GNUMAKE
794dnl
795dnl Detects GNU make
796dnl ---------------------------------------------------------------------------
797
798AC_DEFUN([AC_BAKEFILE_GNUMAKE],
799[
800 dnl does make support "-include" (only GNU make does AFAIK)?
801 AC_CACHE_CHECK([if make is GNU make], bakefile_cv_prog_makeisgnu,
802 [
803 if ( ${SHELL-sh} -c "${MAKE-make} --version" 2> /dev/null |
804 egrep -s GNU > /dev/null); then
805 bakefile_cv_prog_makeisgnu="yes"
806 else
807 bakefile_cv_prog_makeisgnu="no"
808 fi
809 ])
810
811 if test "x$bakefile_cv_prog_makeisgnu" = "xyes"; then
812 IF_GNU_MAKE=""
9e691f46 813 else
2e350179 814 IF_GNU_MAKE="#"
9e691f46 815 fi
2e350179
VS
816 AC_SUBST(IF_GNU_MAKE)
817])
9e691f46 818
2e350179
VS
819dnl ---------------------------------------------------------------------------
820dnl AC_BAKEFILE_PLATFORM
821dnl
822dnl Detects platform and sets PLATFORM_XXX variables accordingly
823dnl ---------------------------------------------------------------------------
9e691f46 824
2e350179
VS
825AC_DEFUN([AC_BAKEFILE_PLATFORM],
826[
827 PLATFORM_UNIX=0
828 PLATFORM_WIN32=0
829 PLATFORM_MSDOS=0
830 PLATFORM_MAC=0
831 PLATFORM_MACOS=0
832 PLATFORM_MACOSX=0
833 PLATFORM_OS2=0
834 PLATFORM_BEOS=0
9e691f46 835
2e350179
VS
836 if test "x$BAKEFILE_FORCE_PLATFORM" = "x"; then
837 case "${BAKEFILE_HOST}" in
838 *-*-cygwin* | *-*-mingw32* )
839 PLATFORM_WIN32=1
840 ;;
841 *-pc-msdosdjgpp )
842 PLATFORM_MSDOS=1
843 ;;
844 *-pc-os2_emx | *-pc-os2-emx )
845 PLATFORM_OS2=1
846 ;;
847 powerpc-*-darwin* )
848 PLATFORM_MAC=1
849 PLATFORM_MACOSX=1
850 ;;
851 *-*-beos* )
852 PLATFORM_BEOS=1
853 ;;
854 powerpc-apple-macos* )
855 PLATFORM_MAC=1
856 PLATFORM_MACOS=1
857 ;;
858 * )
859 PLATFORM_UNIX=1
860 ;;
861 esac
9e691f46 862 else
2e350179
VS
863 case "$BAKEFILE_FORCE_PLATFORM" in
864 win32 )
865 PLATFORM_WIN32=1
866 ;;
867 msdos )
868 PLATFORM_MSDOS=1
869 ;;
870 os2 )
871 PLATFORM_OS2=1
872 ;;
873 darwin )
874 PLATFORM_MAC=1
875 PLATFORM_MACOSX=1
876 ;;
877 unix )
878 PLATFORM_UNIX=1
879 ;;
880 beos )
881 PLATFORM_BEOS=1
882 ;;
883 * )
884 AC_MSG_ERROR([Unknown platform: $BAKEFILE_FORCE_PLATFORM])
885 ;;
886 esac
9e691f46 887 fi
8168de4c 888
2e350179
VS
889 AC_SUBST(PLATFORM_UNIX)
890 AC_SUBST(PLATFORM_WIN32)
891 AC_SUBST(PLATFORM_MSDOS)
892 AC_SUBST(PLATFORM_MAC)
893 AC_SUBST(PLATFORM_MACOS)
894 AC_SUBST(PLATFORM_MACOSX)
895 AC_SUBST(PLATFORM_OS2)
896 AC_SUBST(PLATFORM_BEOS)
897])
898
899
900dnl ---------------------------------------------------------------------------
901dnl AC_BAKEFILE_PLATFORM_SPECIFICS
8168de4c 902dnl
2e350179
VS
903dnl Sets misc platform-specific settings
904dnl ---------------------------------------------------------------------------
8168de4c 905
2e350179
VS
906AC_DEFUN([AC_BAKEFILE_PLATFORM_SPECIFICS],
907[
908 AC_ARG_ENABLE([omf], AS_HELP_STRING([--enable-omf],
909 [use OMF object format (OS/2)]),
910 [bk_os2_use_omf="$enableval"])
911
912 case "${BAKEFILE_HOST}" in
913 *-*-darwin* )
914 dnl For Unix to MacOS X porting instructions, see:
915 dnl http://fink.sourceforge.net/doc/porting/porting.html
916 CFLAGS="$CFLAGS -fno-common"
917 CXXFLAGS="$CXXFLAGS -fno-common"
918 ;;
8168de4c 919
2e350179
VS
920 *-pc-os2_emx | *-pc-os2-emx )
921 if test "x$bk_os2_use_omf" = "xyes" ; then
922 AR=emxomfar
923 RANLIB=:
924 LDFLAGS="-Zomf $LDFLAGS"
925 CFLAGS="-Zomf $CFLAGS"
926 CXXFLAGS="-Zomf $CXXFLAGS"
927 OS2_LIBEXT="lib"
928 else
929 OS2_LIBEXT="a"
930 fi
931 ;;
932
933 i*86-*-beos* )
934 LDFLAGS="-L/boot/develop/lib/x86 $LDFLAGS"
935 ;;
936 esac
937])
8168de4c 938
2e350179
VS
939dnl ---------------------------------------------------------------------------
940dnl AC_BAKEFILE_SUFFIXES
941dnl
942dnl Detects shared various suffixes for shared libraries, libraries, programs,
943dnl plugins etc.
944dnl ---------------------------------------------------------------------------
fe0895cf 945
af8ebe8a 946AC_DEFUN([AC_BAKEFILE_SUFFIXES],
fe0895cf
VS
947[
948 SO_SUFFIX="so"
131f235d 949 SO_SUFFIX_MODULE="so"
fe0895cf 950 EXEEXT=""
3fd9c298
DE
951 LIBPREFIX="lib"
952 LIBEXT=".a"
953 DLLPREFIX="lib"
954 DLLPREFIX_MODULE=""
955 DLLIMP_SUFFIX=""
fe0895cf 956
f93ca9fd 957 case "${BAKEFILE_HOST}" in
fe0895cf
VS
958 *-hp-hpux* )
959 SO_SUFFIX="sl"
131f235d 960 SO_SUFFIX_MODULE="sl"
fe0895cf
VS
961 ;;
962 *-*-aix* )
963 dnl quoting from
964 dnl http://www-1.ibm.com/servers/esdd/articles/gnu.html:
965 dnl Both archive libraries and shared libraries on AIX have an
966 dnl .a extension. This will explain why you can't link with an
967 dnl .so and why it works with the name changed to .a.
968 SO_SUFFIX="a"
131f235d 969 SO_SUFFIX_MODULE="a"
fe0895cf
VS
970 ;;
971 *-*-cygwin* | *-*-mingw32* )
972 SO_SUFFIX="dll"
131f235d 973 SO_SUFFIX_MODULE="dll"
3fd9c298 974 DLLIMP_SUFFIX="dll.a"
fe0895cf
VS
975 EXEEXT=".exe"
976 DLLPREFIX=""
977 ;;
4b1f6360
VS
978 *-pc-msdosdjgpp )
979 EXEEXT=".exe"
980 DLLPREFIX=""
981 ;;
982 *-pc-os2_emx | *-pc-os2-emx )
11a20c3a
SN
983 SO_SUFFIX="dll"
984 SO_SUFFIX_MODULE="dll"
3fd9c298 985 DLLIMP_SUFFIX=$OS2_LIBEXT
fe0895cf
VS
986 EXEEXT=".exe"
987 DLLPREFIX=""
4b1f6360 988 LIBPREFIX=""
3fd9c298 989 LIBEXT=".$OS2_LIBEXT"
fe0895cf
VS
990 ;;
991 powerpc-*-darwin* )
992 SO_SUFFIX="dylib"
131f235d 993 SO_SUFFIX_MODULE="bundle"
fe0895cf
VS
994 ;;
995 esac
996
3fd9c298
DE
997 if test "x$DLLIMP_SUFFIX" = "x" ; then
998 DLLIMP_SUFFIX="$SO_SUFFIX"
999 fi
1000
fe0895cf 1001 AC_SUBST(SO_SUFFIX)
131f235d 1002 AC_SUBST(SO_SUFFIX_MODULE)
3fd9c298 1003 AC_SUBST(DLLIMP_SUFFIX)
fe0895cf 1004 AC_SUBST(EXEEXT)
4b1f6360 1005 AC_SUBST(LIBPREFIX)
3fd9c298 1006 AC_SUBST(LIBEXT)
fe0895cf 1007 AC_SUBST(DLLPREFIX)
131f235d 1008 AC_SUBST(DLLPREFIX_MODULE)
fe0895cf
VS
1009])
1010
1011
1012dnl ---------------------------------------------------------------------------
1013dnl AC_BAKEFILE_SHARED_LD
1014dnl
1015dnl Detects command for making shared libraries, substitutes SHARED_LD_CC
1016dnl and SHARED_LD_CXX.
1017dnl ---------------------------------------------------------------------------
1018
af8ebe8a 1019AC_DEFUN([AC_BAKEFILE_SHARED_LD],
fe0895cf 1020[
fe0895cf 1021 dnl the extra compiler flags needed for compilation of shared library
6ff53182 1022 PIC_FLAG=""
fe0895cf
VS
1023 if test "x$GCC" = "xyes"; then
1024 dnl the switch for gcc is the same under all platforms
1025 PIC_FLAG="-fPIC"
1026 fi
6ff53182
DE
1027
1028 dnl Defaults for GCC and ELF .so shared libs:
1029 SHARED_LD_CC="\$(CC) -shared ${PIC_FLAG} -o"
1030 SHARED_LD_CXX="\$(CXX) -shared ${PIC_FLAG} -o"
fe0895cf 1031
f93ca9fd 1032 case "${BAKEFILE_HOST}" in
fe0895cf
VS
1033 *-hp-hpux* )
1034 dnl default settings are good for gcc but not for the native HP-UX
6ff53182 1035 if test "x$GCC" != "xyes"; then
fe0895cf
VS
1036 dnl no idea why it wants it, but it does
1037 LDFLAGS="$LDFLAGS -L/usr/lib"
1038
1039 SHARED_LD_CC="${CC} -b -o"
1040 SHARED_LD_CXX="${CXX} -b -o"
1041 PIC_FLAG="+Z"
1042 fi
1043 ;;
1044
1045 *-*-linux* )
1046 if test "x$GCC" != "xyes"; then
1047 AC_CACHE_CHECK([for Intel compiler], bakefile_cv_prog_icc,
1048 [
1049 AC_TRY_COMPILE([],
1050 [
1051 #ifndef __INTEL_COMPILER
1052 #error Not icc
1053 #endif
1054 ],
1055 bakefile_cv_prog_icc=yes,
1056 bakefile_cv_prog_icc=no
1057 )
1058 ])
1059 if test "$bakefile_cv_prog_icc" = "yes"; then
1060 PIC_FLAG="-KPIC"
1061 fi
1062 fi
1063 ;;
1064
1065 *-*-solaris2* )
1066 if test "x$GCC" != xyes ; then
1067 SHARED_LD_CC="${CC} -G -o"
1068 SHARED_LD_CXX="${CXX} -G -o"
1069 PIC_FLAG="-KPIC"
1070 fi
1071 ;;
1072
1073 *-*-darwin* )
fe0895cf
VS
1074 dnl Most apps benefit from being fully binded (its faster and static
1075 dnl variables initialized at startup work).
1076 dnl This can be done either with the exe linker flag -Wl,-bind_at_load
1077 dnl or with a double stage link in order to create a single module
1078 dnl "-init _wxWindowsDylibInit" not useful with lazy linking solved
1079
2a879853
VS
1080 dnl If using newer dev tools then there is a -single_module flag that
1081 dnl we can use to do this, otherwise we'll need to use a helper
1082 dnl script. Check the version of gcc to see which way we can go:
1083 AC_CACHE_CHECK([for gcc 3.1 or later], wx_cv_gcc31, [
1084 AC_TRY_COMPILE([],
1085 [
1086 #if (__GNUC__ < 3) || \
1087 ((__GNUC__ == 3) && (__GNUC_MINOR__ < 1))
1088 #error old gcc
1089 #endif
1090 ],
1091 [
1092 wx_cv_gcc31=yes
1093 ],
1094 [
1095 wx_cv_gcc31=no
1096 ]
1097 )
1098 ])
1099 if test "$wx_cv_gcc31" = "no"; then
3fd9c298 1100 AC_BAKEFILE_CREATE_FILE_SHARED_LD_SH
43948499
RD
1101 chmod +x shared-ld-sh
1102
2a879853 1103 dnl Use the shared-ld-sh helper script
7f523214
VS
1104 SHARED_LD_CC="`pwd`/shared-ld-sh -dynamiclib -headerpad_max_install_names -o"
1105 SHARED_LD_MODULE_CC="`pwd`/shared-ld-sh -bundle -headerpad_max_install_names -o"
2a879853
VS
1106 SHARED_LD_CXX="$SHARED_LD_CC"
1107 SHARED_LD_MODULE_CXX="$SHARED_LD_MODULE_CC"
1108 else
1109 dnl Use the -single_module flag and let the linker do it for us
7f523214
VS
1110 SHARED_LD_CC="\${CC} -dynamiclib -single_module -headerpad_max_install_names -o"
1111 SHARED_LD_MODULE_CC="\${CC} -bundle -single_module -headerpad_max_install_names -o"
1112 SHARED_LD_CXX="\${CXX} -dynamiclib -single_module -headerpad_max_install_names -o"
1113 SHARED_LD_MODULE_CXX="\${CXX} -bundle -single_module -headerpad_max_install_names -o"
2a879853
VS
1114 fi
1115
fe0895cf 1116 PIC_FLAG="-dynamic -fPIC"
fe0895cf
VS
1117 ;;
1118
1119 *-*-aix* )
1120 dnl default settings are ok for gcc
1121 if test "x$GCC" != "xyes"; then
1122 dnl the abs path below used to be hardcoded here so I guess it must
1123 dnl be some sort of standard location under AIX?
1124 AC_CHECK_PROG(AIX_CXX_LD, makeC++SharedLib,
1125 makeC++SharedLib, /usr/lpp/xlC/bin/makeC++SharedLib)
1126 dnl FIXME - what about makeCSharedLib?
1127 SHARED_LD_CC="$AIX_CC_LD -p 0 -o"
1128 SHARED_LD_CXX="$AIX_CXX_LD -p 0 -o"
1129 fi
1130 ;;
1131
1132 *-*-beos* )
1133 dnl can't use gcc under BeOS for shared library creation because it
1134 dnl complains about missing 'main'
6ff53182
DE
1135 SHARED_LD_CC="${LD} -nostart -o"
1136 SHARED_LD_CXX="${LD} -nostart -o"
fe0895cf
VS
1137 ;;
1138
1139 *-*-irix* )
1140 dnl default settings are ok for gcc
1141 if test "x$GCC" != "xyes"; then
1142 PIC_FLAG="-KPIC"
1143 fi
1144 ;;
1145
1146 *-*-cygwin* | *-*-mingw32* )
1147 PIC_FLAG=""
6ff53182
DE
1148 SHARED_LD_CC="\$(CC) -shared -o"
1149 SHARED_LD_CXX="\$(CXX) -shared -o"
fe0895cf 1150 ;;
3fd9c298 1151
11a20c3a 1152 *-pc-os2_emx | *-pc-os2-emx )
b1d22ded
DE
1153 SHARED_LD_CC="`pwd`/dllar.sh -libf INITINSTANCE -libf TERMINSTANCE -o"
1154 SHARED_LD_CXX="`pwd`/dllar.sh -libf INITINSTANCE -libf TERMINSTANCE -o"
11a20c3a 1155 PIC_FLAG=""
3fd9c298
DE
1156 AC_BAKEFILE_CREATE_FILE_DLLAR_SH
1157 chmod +x dllar.sh
11a20c3a
SN
1158 ;;
1159
6ff53182 1160 powerpc-apple-macos* | \
fe0895cf
VS
1161 *-*-freebsd* | *-*-openbsd* | *-*-netbsd* | \
1162 *-*-sunos4* | \
1163 *-*-osf* | \
1164 *-*-dgux5* | \
d5fc095c 1165 *-*-sysv5* )
fe0895cf
VS
1166 dnl defaults are ok
1167 ;;
1168
1169 *)
f93ca9fd 1170 AC_MSG_ERROR(unknown system type $BAKEFILE_HOST.)
fe0895cf
VS
1171 esac
1172
af8ebe8a
VS
1173 if test "x$PIC_FLAG" != "x" ; then
1174 PIC_FLAG="$PIC_FLAG -DPIC"
1175 fi
1176
131f235d
VS
1177 if test "x$SHARED_LD_MODULE_CC" = "x" ; then
1178 SHARED_LD_MODULE_CC="$SHARED_LD_CC"
1179 fi
1180 if test "x$SHARED_LD_MODULE_CXX" = "x" ; then
239394fb 1181 SHARED_LD_MODULE_CXX="$SHARED_LD_CXX"
131f235d
VS
1182 fi
1183
fe0895cf
VS
1184 AC_SUBST(SHARED_LD_CC)
1185 AC_SUBST(SHARED_LD_CXX)
131f235d
VS
1186 AC_SUBST(SHARED_LD_MODULE_CC)
1187 AC_SUBST(SHARED_LD_MODULE_CXX)
fe0895cf
VS
1188 AC_SUBST(PIC_FLAG)
1189])
1190
1191
1192dnl ---------------------------------------------------------------------------
1193dnl AC_BAKEFILE_SHARED_VERSIONS
1194dnl
1195dnl Detects linker options for attaching versions (sonames) to shared libs.
1196dnl ---------------------------------------------------------------------------
1197
af8ebe8a 1198AC_DEFUN([AC_BAKEFILE_SHARED_VERSIONS],
fe0895cf
VS
1199[
1200 USE_SOVERSION=0
1201 USE_SOVERLINUX=0
1202 USE_SOVERSOLARIS=0
1203 USE_SOSYMLINKS=0
1204 USE_MACVERSION=0
1205 SONAME_FLAG=
1206
f93ca9fd 1207 case "${BAKEFILE_HOST}" in
b1d22ded 1208 *-*-linux* | *-*-freebsd* )
5f652d0d
VS
1209 SONAME_FLAG="-Wl,-soname,"
1210 USE_SOVERSION=1
1211 USE_SOVERLINUX=1
1212 USE_SOSYMLINKS=1
1213 ;;
fe0895cf
VS
1214
1215 *-*-solaris2* )
1216 SONAME_FLAG="-h "
1217 USE_SOVERSION=1
1218 USE_SOVERSOLARIS=1
1219 USE_SOSYMLINKS=1
1220 ;;
1221
1222 *-*-darwin* )
1223 USE_MACVERSION=1
1224 USE_SOVERSION=1
1225 USE_SOSYMLINKS=1
1226 ;;
1227 esac
1228
1229 AC_SUBST(USE_SOVERSION)
1230 AC_SUBST(USE_SOVERLINUX)
1231 AC_SUBST(USE_SOVERSOLARIS)
1232 AC_SUBST(USE_MACVERSION)
1233 AC_SUBST(USE_SOSYMLINKS)
1234 AC_SUBST(SONAME_FLAG)
1235])
1236
1237
2e350179
VS
1238dnl ---------------------------------------------------------------------------
1239dnl AC_BAKEFILE_DEPS
1240dnl
1241dnl Detects available C/C++ dependency tracking options
1242dnl ---------------------------------------------------------------------------
1243
1244AC_DEFUN([AC_BAKEFILE_DEPS],
1245[
1246 AC_MSG_CHECKING([for dependency tracking method])
1247 DEPS_TRACKING=0
1248
1249 if test "x$GCC" = "xyes"; then
1250 DEPSMODE=gcc
1251 DEPS_TRACKING=1
1252 case "${BAKEFILE_HOST}" in
1253 powerpc-*-darwin* )
1254 dnl -cpp-precomp (the default) conflicts with -MMD option
1255 dnl used by bk-deps (see also http://developer.apple.com/documentation/Darwin/Conceptual/PortingUnix/compiling/chapter_4_section_3.html)
1256 DEPSFLAG_GCC="-no-cpp-precomp -MMD"
1257 ;;
1258 * )
1259 DEPSFLAG_GCC="-MMD"
1260 ;;
1261 esac
1262 AC_MSG_RESULT([gcc])
1263 elif test "x$MWCC" = "xyes"; then
1264 DEPSMODE=mwcc
1265 DEPS_TRACKING=1
1266 DEPSFLAG_MWCC="-MM"
1267 AC_MSG_RESULT([mwcc])
1268 else
1269 AC_MSG_RESULT([none])
1270 fi
1271
1272 if test $DEPS_TRACKING = 1 ; then
1273 AC_BAKEFILE_CREATE_FILE_BK_DEPS
1274 chmod +x bk-deps
1275 fi
1276
1277 AC_SUBST(DEPS_TRACKING)
1278])
1279
1280dnl ---------------------------------------------------------------------------
1281dnl AC_BAKEFILE_CHECK_BASIC_STUFF
1282dnl
1283dnl Checks for presence of basic programs, such as C and C++ compiler, "ranlib"
1284dnl or "install"
1285dnl ---------------------------------------------------------------------------
1286
1287AC_DEFUN([AC_BAKEFILE_CHECK_BASIC_STUFF],
1288[
1289 AC_PROG_RANLIB
1290 AC_PROG_INSTALL
1291 AC_PROG_LN_S
1292
1293 AC_PROG_MAKE_SET
1294 AC_SUBST(MAKE_SET)
1295
1296 AC_CHECK_TOOL(AR, ar, ar)
1297 AC_CHECK_TOOL(STRIP, strip, :)
1298 AC_CHECK_TOOL(NM, nm, :)
1299
1300 case ${BAKEFILE_HOST} in
1301 *-hp-hpux* )
1302 dnl HP-UX install doesn't handle the "-d" switch so don't
1303 dnl use it there
1304 INSTALL_DIR="mkdir -p"
1305 ;;
1306 *) INSTALL_DIR="$INSTALL -d"
1307 ;;
1308 esac
1309 AC_SUBST(INSTALL_DIR)
1310
1311 LDFLAGS_GUI=
1312 case ${BAKEFILE_HOST} in
1313 *-*-cygwin* | *-*-mingw32* )
1314 LDFLAGS_GUI="-mwindows"
1315 esac
1316 AC_SUBST(LDFLAGS_GUI)
1317])
1318
1319
1320dnl ---------------------------------------------------------------------------
1321dnl AC_BAKEFILE_RES_COMPILERS
1322dnl
1323dnl Checks for presence of resource compilers for win32 or mac
1324dnl ---------------------------------------------------------------------------
1325
1326AC_DEFUN([AC_BAKEFILE_RES_COMPILERS],
1327[
1328 RESCOMP=
1329 SETFILE=
1330
1331 case ${BAKEFILE_HOST} in
1332 *-*-cygwin* | *-*-mingw32* )
1333 dnl Check for win32 resources compiler:
1334 if test "$build" != "$host" ; then
1335 RESCOMP=$host_alias-windres
1336 else
1337 AC_CHECK_PROG(RESCOMP, windres, windres, windres)
1338 fi
1339 ;;
1340
1341 *-*-darwin* | powerpc-apple-macos* )
1342 AC_CHECK_PROG(RESCOMP, Rez, Rez, /Developer/Tools/Rez)
1343 AC_CHECK_PROG(SETFILE, SetFile, SetFile, /Developer/Tools/SetFile)
1344 ;;
1345 esac
1346
1347 AC_SUBST(RESCOMP)
1348 AC_SUBST(SETFILE)
1349])
1350
1351dnl ---------------------------------------------------------------------------
1352dnl AC_BAKEFILE_PRECOMP_HEADERS
1353dnl
1354dnl Check for precompiled headers support (GCC >= 3.4)
1355dnl ---------------------------------------------------------------------------
1356
1357AC_DEFUN([AC_BAKEFILE_PRECOMP_HEADERS],
1358[
1359
1360 AC_ARG_ENABLE([precomp-headers],
1361 AS_HELP_STRING([--disable-precomp-headers],
1362 [don't use precompiled headers even if compiler can]),
1363 [bk_use_pch="$enableval"])
1364
1365 GCC_PCH=0
1366
1367 if test "x$bk_use_pch" = "x" -o "x$bk_use_pch" = "xyes" ; then
1368 if test "x$GCC" = "xyes"; then
1369 dnl test if we have gcc-3.4:
1370 AC_MSG_CHECKING([if the compiler supports precompiled headers])
1371 AC_TRY_COMPILE([],
1372 [
1373 #if !defined(__GNUC__) || !defined(__GNUC_MINOR__)
1374 #error "no pch support"
1375 #endif
1376 #if (__GNUC__ < 3)
1377 #error "no pch support"
1378 #endif
1379 #if (__GNUC__ == 3) && \
1380 ((!defined(__APPLE_CC__) && (__GNUC_MINOR__ < 4)) || \
1381 ( defined(__APPLE_CC__) && (__GNUC_MINOR__ < 3)))
1382 #error "no pch support"
1383 #endif
1384 ],
1385 [
1386 AC_MSG_RESULT([yes])
1387 GCC_PCH=1
1388 ],
1389 [
1390 AC_MSG_RESULT([no])
1391 ])
1392 if test $GCC_PCH = 1 ; then
1393 AC_BAKEFILE_CREATE_FILE_BK_MAKE_PCH
1394 chmod +x bk-make-pch
1395 fi
1396 fi
1397 fi
1398
1399 AC_SUBST(GCC_PCH)
1400])
1401
1402
1403
1404dnl ---------------------------------------------------------------------------
1405dnl AC_BAKEFILE([autoconf_inc.m4 inclusion])
1406dnl
1407dnl To be used in configure.in of any project using Bakefile-generated mks
1408dnl
1409dnl Behaviour can be modified by setting following variables:
1410dnl BAKEFILE_CHECK_BASICS set to "no" if you don't want bakefile to
1411dnl to perform check for basic tools like ranlib
1412dnl BAKEFILE_HOST set this to override host detection, defaults
1413dnl to ${host}
1414dnl BAKEFILE_FORCE_PLATFORM set to override platform detection
1415dnl
1416dnl Example usage:
1417dnl
1418dnl AC_BAKEFILE([FOO(autoconf_inc.m4)])
1419dnl
1420dnl (replace FOO with m4_include above, aclocal would die otherwise)
1421dnl (yes, it's ugly, but thanks to a bug in aclocal, it's the only thing
1422dnl we can do...)
1423dnl ---------------------------------------------------------------------------
1424
1425AC_DEFUN([AC_BAKEFILE],
1426[
1427 AC_PREREQ(2.58)
1428
1429 if test "x$BAKEFILE_HOST" = "x"; then
1430 BAKEFILE_HOST="${host}"
1431 fi
1432
1433 if test "x$BAKEFILE_CHECK_BASICS" != "xno"; then
1434 AC_BAKEFILE_CHECK_BASIC_STUFF
1435 fi
1436 AC_BAKEFILE_GNUMAKE
1437 AC_BAKEFILE_PLATFORM
1438 AC_BAKEFILE_PLATFORM_SPECIFICS
1439 AC_BAKEFILE_SUFFIXES
1440 AC_BAKEFILE_SHARED_LD
1441 AC_BAKEFILE_SHARED_VERSIONS
1442 AC_BAKEFILE_DEPS
1443 AC_BAKEFILE_RES_COMPILERS
1444
94acd38e 1445 BAKEFILE_BAKEFILE_M4_VERSION="0.1.7"
2e350179
VS
1446
1447 dnl includes autoconf_inc.m4:
1448 $1
1449
1450 if test "$BAKEFILE_BAKEFILE_M4_VERSION" != "$BAKEFILE_AUTOCONF_INC_M4_VERSION" ; then
1451 AC_MSG_ERROR([Versions of Bakefile used to generate makefiles ($BAKEFILE_AUTOCONF_INC_M4_VERSION) and configure ($BAKEFILE_BAKEFILE_M4_VERSION) do not match.])
1452 fi
1453])
1454
1455
1456dnl ---------------------------------------------------------------------------
1457dnl Embedded copies of helper scripts follow:
1458dnl ---------------------------------------------------------------------------
1459
1460AC_DEFUN([AC_BAKEFILE_CREATE_FILE_DLLAR_SH],
1461[
1462dnl ===================== dllar.sh begins here =====================
1463dnl (Created by merge-scripts.py from dllar.sh
1464dnl file do not edit here!)
1465D='$'
1466cat <<EOF >dllar.sh
1467#!/bin/sh
1468#
1469# dllar - a tool to build both a .dll and an .a file
1470# from a set of object (.o) files for EMX/OS2.
1471#
1472# Written by Andrew Zabolotny, bit@freya.etu.ru
1473# Ported to Unix like shell by Stefan Neis, Stefan.Neis@t-online.de
1474#
1475# This script will accept a set of files on the command line.
1476# All the public symbols from the .o files will be exported into
1477# a .DEF file, then linker will be run (through gcc) against them to
1478# build a shared library consisting of all given .o files. All libraries
1479# (.a) will be first decompressed into component .o files then act as
1480# described above. You can optionally give a description (-d "description")
1481# which will be put into .DLL. To see the list of accepted options (as well
1482# as command-line format) simply run this program without options. The .DLL
1483# is built to be imported by name (there is no guarantee that new versions
1484# of the library you build will have same ordinals for same symbols).
1485#
1486# dllar is free software; you can redistribute it and/or modify
1487# it under the terms of the GNU General Public License as published by
1488# the Free Software Foundation; either version 2, or (at your option)
1489# any later version.
1490#
1491# dllar is distributed in the hope that it will be useful,
1492# but WITHOUT ANY WARRANTY; without even the implied warranty of
1493# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1494# GNU General Public License for more details.
1495#
1496# You should have received a copy of the GNU General Public License
1497# along with dllar; see the file COPYING. If not, write to the Free
1498# Software Foundation, 59 Temple Place - Suite 330, Boston, MA
1499# 02111-1307, USA.
1500
1501# To successfuly run this program you will need:
1502# - Current drive should have LFN support (HPFS, ext2, network, etc)
1503# (Sometimes dllar generates filenames which won't fit 8.3 scheme)
1504# - gcc
1505# (used to build the .dll)
1506# - emxexp
1507# (used to create .def file from .o files)
1508# - emximp
1509# (used to create .a file from .def file)
1510# - GNU text utilites (cat, sort, uniq)
1511# used to process emxexp output
1512# - GNU file utilities (mv, rm)
1513# - GNU sed
1514# - lxlite (optional, see flag below)
1515# (used for general .dll cleanup)
1516#
1517
1518flag_USE_LXLITE=1;
fe0895cf 1519
2e350179
VS
1520#
1521# helper functions
1522# basnam, variant of basename, which does _not_ remove the path, _iff_
1523# second argument (suffix to remove) is given
1524basnam(){
1525 case ${D}# in
1526 1)
1527 echo ${D}1 | sed 's/.*\\///' | sed 's/.*\\\\//'
1528 ;;
1529 2)
1530 echo ${D}1 | sed 's/'${D}2'${D}//'
1531 ;;
1532 *)
1533 echo "error in basnam ${D}*"
1534 exit 8
1535 ;;
1536 esac
1537}
49b0a3aa 1538
2e350179
VS
1539# Cleanup temporary files and output
1540CleanUp() {
1541 cd ${D}curDir
1542 for i in ${D}inputFiles ; do
1543 case ${D}i in
1544 *!)
1545 rm -rf \`basnam ${D}i !\`
3e5c3c83 1546 ;;
2e350179 1547 *)
3e5c3c83
VS
1548 ;;
1549 esac
2e350179 1550 done
49b0a3aa 1551
2e350179
VS
1552 # Kill result in case of failure as there is just to many stupid make/nmake
1553 # things out there which doesn't do this.
1554 if @<:@ ${D}# -eq 0 @:>@; then
1555 rm -f ${D}arcFile ${D}arcFile2 ${D}defFile ${D}dllFile
fe0895cf 1556 fi
2e350179 1557}
fe0895cf 1558
2e350179
VS
1559# Print usage and exit script with rc=1.
1560PrintHelp() {
1561 echo 'Usage: dllar.sh @<:@-o@<:@utput@:>@ output_file@:>@ @<:@-i@<:@mport@:>@ importlib_name@:>@'
1562 echo ' @<:@-name-mangler-script script.sh@:>@'
1563 echo ' @<:@-d@<:@escription@:>@ "dll descrption"@:>@ @<:@-cc "CC"@:>@ @<:@-f@<:@lags@:>@ "CFLAGS"@:>@'
1564 echo ' @<:@-ord@<:@inals@:>@@:>@ -ex@<:@clude@:>@ "symbol(s)"'
1565 echo ' @<:@-libf@<:@lags@:>@ "{INIT|TERM}{GLOBAL|INSTANCE}"@:>@ @<:@-nocrt@<:@dll@:>@@:>@ @<:@-nolxl@<:@ite@:>@@:>@'
1566 echo ' @<:@*.o@:>@ @<:@*.a@:>@'
1567 echo '*> "output_file" should have no extension.'
1568 echo ' If it has the .o, .a or .dll extension, it is automatically removed.'
1569 echo ' The import library name is derived from this and is set to "name".a,'
1570 echo ' unless overridden by -import'
1571 echo '*> "importlib_name" should have no extension.'
1572 echo ' If it has the .o, or .a extension, it is automatically removed.'
1573 echo ' This name is used as the import library name and may be longer and'
1574 echo ' more descriptive than the DLL name which has to follow the old '
1575 echo ' 8.3 convention of FAT.'
1576 echo '*> "script.sh may be given to override the output_file name by a'
1577 echo ' different name. It is mainly useful if the regular make process'
1578 echo ' of some package does not take into account OS/2 restriction of'
1579 echo ' DLL name lengths. It takes the importlib name as input and is'
1580 echo ' supposed to procude a shorter name as output. The script should'
1581 echo ' expect to get importlib_name without extension and should produce'
1582 echo ' a (max.) 8 letter name without extension.'
1583 echo '*> "cc" is used to use another GCC executable. (default: gcc.exe)'
1584 echo '*> "flags" should be any set of valid GCC flags. (default: -s -Zcrtdll)'
1585 echo ' These flags will be put at the start of GCC command line.'
1586 echo '*> -ord@<:@inals@:>@ tells dllar to export entries by ordinals. Be careful.'
1587 echo '*> -ex@<:@clude@:>@ defines symbols which will not be exported. You can define'
1588 echo ' multiple symbols, for example -ex "myfunc yourfunc _GLOBAL*".'
1589 echo ' If the last character of a symbol is "*", all symbols beginning'
1590 echo ' with the prefix before "*" will be exclude, (see _GLOBAL* above).'
1591 echo '*> -libf@<:@lags@:>@ can be used to add INITGLOBAL/INITINSTANCE and/or'
1592 echo ' TERMGLOBAL/TERMINSTANCE flags to the dynamically-linked library.'
1593 echo '*> -nocrt@<:@dll@:>@ switch will disable linking the library against emx''s'
1594 echo ' C runtime DLLs.'
1595 echo '*> -nolxl@<:@ite@:>@ switch will disable running lxlite on the resulting DLL.'
1596 echo '*> All other switches (for example -L./ or -lmylib) will be passed'
1597 echo ' unchanged to GCC at the end of command line.'
1598 echo '*> If you create a DLL from a library and you do not specify -o,'
1599 echo ' the basename for DLL and import library will be set to library name,'
1600 echo ' the initial library will be renamed to 'name'_s.a (_s for static)'
1601 echo ' i.e. "dllar gcc.a" will create gcc.dll and gcc.a, and the initial'
1602 echo ' library will be renamed into gcc_s.a.'
1603 echo '--------'
1604 echo 'Example:'
1605 echo ' dllar -o gcc290.dll libgcc.a -d "GNU C runtime library" -ord'
1606 echo ' -ex "__main __ctordtor*" -libf "INITINSTANCE TERMINSTANCE"'
1607 CleanUp
1608 exit 1
1609}
fe0895cf 1610
2e350179
VS
1611# Execute a command.
1612# If exit code of the commnad <> 0 CleanUp() is called and we'll exit the script.
1613# @Uses Whatever CleanUp() uses.
1614doCommand() {
1615 echo "${D}*"
1616 eval ${D}*
1617 rcCmd=${D}?
fe0895cf 1618
2e350179
VS
1619 if @<:@ ${D}rcCmd -ne 0 @:>@; then
1620 echo "command failed, exit code="${D}rcCmd
1621 CleanUp
1622 exit ${D}rcCmd
1623 fi
1624}
fe0895cf 1625
2e350179
VS
1626# main routine
1627# setup globals
1628cmdLine=${D}*
1629outFile=""
1630outimpFile=""
1631inputFiles=""
1632renameScript=""
1633description=""
1634CC=gcc.exe
1635CFLAGS="-s -Zcrtdll"
1636EXTRA_CFLAGS=""
1637EXPORT_BY_ORDINALS=0
1638exclude_symbols=""
1639library_flags=""
1640curDir=\`pwd\`
1641curDirS=curDir
1642case ${D}curDirS in
1643*/)
1644 ;;
1645*)
1646 curDirS=${D}{curDirS}"/"
1647 ;;
1648esac
1649# Parse commandline
1650libsToLink=0
1651omfLinking=0
1652while @<:@ ${D}1 @:>@; do
1653 case ${D}1 in
1654 -ord*)
1655 EXPORT_BY_ORDINALS=1;
1656 ;;
1657 -o*)
1658 shift
1659 outFile=${D}1
1660 ;;
1661 -i*)
1662 shift
1663 outimpFile=${D}1
1664 ;;
1665 -name-mangler-script)
1666 shift
1667 renameScript=${D}1
1668 ;;
1669 -d*)
1670 shift
1671 description=${D}1
1672 ;;
1673 -f*)
1674 shift
1675 CFLAGS=${D}1
1676 ;;
1677 -c*)
1678 shift
1679 CC=${D}1
1680 ;;
1681 -h*)
1682 PrintHelp
1683 ;;
1684 -ex*)
1685 shift
1686 exclude_symbols=${D}{exclude_symbols}${D}1" "
1687 ;;
1688 -libf*)
1689 shift
1690 library_flags=${D}{library_flags}${D}1" "
1691 ;;
1692 -nocrt*)
1693 CFLAGS="-s"
1694 ;;
1695 -nolxl*)
1696 flag_USE_LXLITE=0
1697 ;;
1698 -* | /*)
1699 case ${D}1 in
1700 -L* | -l*)
1701 libsToLink=1
fe0895cf 1702 ;;
2e350179
VS
1703 -Zomf)
1704 omfLinking=1
fe0895cf 1705 ;;
2e350179
VS
1706 *)
1707 ;;
1708 esac
1709 EXTRA_CFLAGS=${D}{EXTRA_CFLAGS}" "${D}1
1710 ;;
1711 *.dll)
1712 EXTRA_CFLAGS="${D}{EXTRA_CFLAGS} \`basnam ${D}1 .dll\`"
1713 if @<:@ ${D}omfLinking -eq 1 @:>@; then
1714 EXTRA_CFLAGS="${D}{EXTRA_CFLAGS}.lib"
1715 else
1716 EXTRA_CFLAGS="${D}{EXTRA_CFLAGS}.a"
1717 fi
1718 ;;
1719 *)
1720 found=0;
1721 if @<:@ ${D}libsToLink -ne 0 @:>@; then
1722 EXTRA_CFLAGS=${D}{EXTRA_CFLAGS}" "${D}1
1723 else
1724 for file in ${D}1 ; do
1725 if @<:@ -f ${D}file @:>@; then
1726 inputFiles="${D}{inputFiles} ${D}file"
1727 found=1
1728 fi
1729 done
1730 if @<:@ ${D}found -eq 0 @:>@; then
1731 echo "ERROR: No file(s) found: "${D}1
1732 exit 8
1733 fi
1734 fi
1735 ;;
fe0895cf 1736 esac
2e350179
VS
1737 shift
1738done # iterate cmdline words
fe0895cf 1739
2e350179
VS
1740#
1741if @<:@ -z "${D}inputFiles" @:>@; then
1742 echo "dllar: no input files"
1743 PrintHelp
1744fi
fe0895cf 1745
2e350179
VS
1746# Now extract all .o files from .a files
1747newInputFiles=""
1748for file in ${D}inputFiles ; do
1749 case ${D}file in
1750 *.a | *.lib)
1751 case ${D}file in
1752 *.a)
1753 suffix=".a"
1754 AR="ar"
1755 ;;
1756 *.lib)
1757 suffix=".lib"
1758 AR="emxomfar"
1759 EXTRA_CFLAGS="${D}EXTRA_CFLAGS -Zomf"
1760 ;;
1761 *)
1762 ;;
1763 esac
1764 dirname=\`basnam ${D}file ${D}suffix\`"_%"
1765 mkdir ${D}dirname
1766 if @<:@ ${D}? -ne 0 @:>@; then
1767 echo "Failed to create subdirectory ./${D}dirname"
1768 CleanUp
1769 exit 8;
1770 fi
1771 # Append '!' to indicate archive
1772 newInputFiles="${D}newInputFiles ${D}{dirname}!"
1773 doCommand "cd ${D}dirname; ${D}AR x ../${D}file"
1774 cd ${D}curDir
1775 found=0;
1776 for subfile in ${D}dirname/*.o* ; do
1777 if @<:@ -f ${D}subfile @:>@; then
1778 found=1
1779 if @<:@ -s ${D}subfile @:>@; then
1780 # FIXME: This should be: is file size > 32 byte, _not_ > 0!
1781 newInputFiles="${D}newInputFiles ${D}subfile"
1782 fi
fe0895cf 1783 fi
2e350179
VS
1784 done
1785 if @<:@ ${D}found -eq 0 @:>@; then
1786 echo "WARNING: there are no files in archive \\'${D}file\\'"
1787 fi
1788 ;;
1789 *)
1790 newInputFiles="${D}{newInputFiles} ${D}file"
fe0895cf
VS
1791 ;;
1792 esac
2e350179
VS
1793done
1794inputFiles="${D}newInputFiles"
fe0895cf 1795
2e350179
VS
1796# Output filename(s).
1797do_backup=0;
1798if @<:@ -z ${D}outFile @:>@; then
1799 do_backup=1;
1800 set outFile ${D}inputFiles; outFile=${D}2
1801fi
45842500 1802
2e350179
VS
1803# If it is an archive, remove the '!' and the '_%' suffixes
1804case ${D}outFile in
1805*_%!)
1806 outFile=\`basnam ${D}outFile _%!\`
1807 ;;
1808*)
1809 ;;
1810esac
1811case ${D}outFile in
1812*.dll)
1813 outFile=\`basnam ${D}outFile .dll\`
1814 ;;
1815*.DLL)
1816 outFile=\`basnam ${D}outFile .DLL\`
1817 ;;
1818*.o)
1819 outFile=\`basnam ${D}outFile .o\`
1820 ;;
1821*.obj)
1822 outFile=\`basnam ${D}outFile .obj\`
1823 ;;
1824*.a)
1825 outFile=\`basnam ${D}outFile .a\`
1826 ;;
1827*.lib)
1828 outFile=\`basnam ${D}outFile .lib\`
1829 ;;
1830*)
1831 ;;
1832esac
1833case ${D}outimpFile in
1834*.a)
1835 outimpFile=\`basnam ${D}outimpFile .a\`
1836 ;;
1837*.lib)
1838 outimpFile=\`basnam ${D}outimpFile .lib\`
1839 ;;
1840*)
1841 ;;
1842esac
1843if @<:@ -z ${D}outimpFile @:>@; then
1844 outimpFile=${D}outFile
1845fi
1846defFile="${D}{outFile}.def"
1847arcFile="${D}{outimpFile}.a"
1848arcFile2="${D}{outimpFile}.lib"
45842500 1849
2e350179
VS
1850#create ${D}dllFile as something matching 8.3 restrictions,
1851if @<:@ -z ${D}renameScript @:>@ ; then
1852 dllFile="${D}outFile"
1853else
1854 dllFile=\`${D}renameScript ${D}outimpFile\`
1855fi
45842500 1856
2e350179
VS
1857if @<:@ ${D}do_backup -ne 0 @:>@ ; then
1858 if @<:@ -f ${D}arcFile @:>@ ; then
1859 doCommand "mv ${D}arcFile ${D}{outFile}_s.a"
1860 fi
1861 if @<:@ -f ${D}arcFile2 @:>@ ; then
1862 doCommand "mv ${D}arcFile2 ${D}{outFile}_s.lib"
45842500 1863 fi
2e350179 1864fi
45842500 1865
2e350179
VS
1866# Extract public symbols from all the object files.
1867tmpdefFile=${D}{defFile}_%
1868rm -f ${D}tmpdefFile
1869for file in ${D}inputFiles ; do
1870 case ${D}file in
1871 *!)
1872 ;;
1873 *)
1874 doCommand "emxexp -u ${D}file >> ${D}tmpdefFile"
1875 ;;
1876 esac
1877done
1878
1879# Create the def file.
1880rm -f ${D}defFile
1881echo "LIBRARY \`basnam ${D}dllFile\` ${D}library_flags" >> ${D}defFile
1882dllFile="${D}{dllFile}.dll"
1883if @<:@ ! -z ${D}description @:>@; then
1884 echo "DESCRIPTION \\"${D}{description}\\"" >> ${D}defFile
1885fi
1886echo "EXPORTS" >> ${D}defFile
45842500 1887
2e350179
VS
1888doCommand "cat ${D}tmpdefFile | sort.exe | uniq.exe > ${D}{tmpdefFile}%"
1889grep -v "^ *;" < ${D}{tmpdefFile}% | grep -v "^ *${D}" >${D}tmpdefFile
45842500 1890
2e350179
VS
1891# Checks if the export is ok or not.
1892for word in ${D}exclude_symbols; do
1893 grep -v ${D}word < ${D}tmpdefFile >${D}{tmpdefFile}%
1894 mv ${D}{tmpdefFile}% ${D}tmpdefFile
1895done
45842500 1896
fe0895cf 1897
2e350179
VS
1898if @<:@ ${D}EXPORT_BY_ORDINALS -ne 0 @:>@; then
1899 sed "=" < ${D}tmpdefFile | \\
1900 sed '
1901 N
1902 : loop
1903 s/^\\(@<:@0-9@:>@\\+\\)\\(@<:@^;@:>@*\\)\\(;.*\\)\\?/\\2 @\\1 NONAME/
1904 t loop
1905 ' > ${D}{tmpdefFile}%
1906 grep -v "^ *${D}" < ${D}{tmpdefFile}% > ${D}tmpdefFile
1907else
1908 rm -f ${D}{tmpdefFile}%
1909fi
1910cat ${D}tmpdefFile >> ${D}defFile
1911rm -f ${D}tmpdefFile
6ff53182 1912
2e350179
VS
1913# Do linking, create implib, and apply lxlite.
1914gccCmdl="";
1915for file in ${D}inputFiles ; do
1916 case ${D}file in
1917 *!)
1918 ;;
1919 *)
1920 gccCmdl="${D}gccCmdl ${D}file"
1921 ;;
1922 esac
1923done
1924doCommand "${D}CC ${D}CFLAGS -Zdll -o ${D}dllFile ${D}defFile ${D}gccCmdl ${D}EXTRA_CFLAGS"
1925touch "${D}{outFile}.dll"
f93ca9fd 1926
2e350179
VS
1927doCommand "emximp -o ${D}arcFile ${D}defFile"
1928if @<:@ ${D}flag_USE_LXLITE -ne 0 @:>@; then
1929 add_flags="";
1930 if @<:@ ${D}EXPORT_BY_ORDINALS -ne 0 @:>@; then
1931 add_flags="-ynd"
fe0895cf 1932 fi
2e350179
VS
1933 doCommand "lxlite -cs -t: -mrn -mln ${D}add_flags ${D}dllFile"
1934fi
1935doCommand "emxomf -s -l ${D}arcFile"
fe0895cf 1936
2e350179
VS
1937# Successful exit.
1938CleanUp 1
1939exit 0
1940EOF
1941dnl ===================== dllar.sh ends here =====================
fe0895cf 1942])
3fd9c298 1943
2e350179 1944AC_DEFUN([AC_BAKEFILE_CREATE_FILE_BK_DEPS],
3fd9c298 1945[
2e350179
VS
1946dnl ===================== bk-deps begins here =====================
1947dnl (Created by merge-scripts.py from bk-deps
8f98c6c0 1948dnl file do not edit here!)
3fd9c298 1949D='$'
2e350179 1950cat <<EOF >bk-deps
3fd9c298 1951#!/bin/sh
3fd9c298 1952
2e350179
VS
1953# This script is part of Bakefile (http://bakefile.sourceforge.net) autoconf
1954# script. It is used to track C/C++ files dependencies in portable way.
3fd9c298 1955#
2e350179 1956# Permission is given to use this file in any way.
3fd9c298 1957
2e350179
VS
1958DEPSMODE=${DEPSMODE}
1959DEPSDIR=.deps
1960DEPSFLAG_GCC="${DEPSFLAG_GCC}"
1961DEPSFLAG_MWCC="${DEPSFLAG_MWCC}"
3fd9c298 1962
2e350179 1963mkdir -p ${D}DEPSDIR
3fd9c298 1964
2e350179
VS
1965if test ${D}DEPSMODE = gcc ; then
1966 ${D}* ${D}{DEPSFLAG_GCC}
1967 status=${D}?
1968 if test ${D}{status} != 0 ; then
1969 exit ${D}{status}
3fd9c298 1970 fi
2e350179
VS
1971 # move created file to the location we want it in:
1972 while test ${D}# -gt 0; do
1973 case "${D}1" in
1974 -o )
1975 shift
1976 objfile=${D}1
1977 ;;
1978 -* )
1979 ;;
1980 * )
1981 srcfile=${D}1
1982 ;;
1983 esac
1984 shift
1985 done
1986 depfile=\`basename ${D}srcfile | sed -e 's/\\..*${D}/.d/g'\`
1987 depobjname=\`echo ${D}depfile |sed -e 's/\\.d/.o/g'\`
1988 if test -f ${D}depfile ; then
1989 sed -e "s,${D}depobjname:,${D}objfile:,g" ${D}depfile >${D}{DEPSDIR}/${D}{objfile}.d
1990 rm -f ${D}depfile
1991 else
1992 depfile=\`basename ${D}objfile | sed -e 's/\\..*${D}/.d/g'\`
1993 if test -f ${D}depfile ; then
1994 sed -e "/^${D}objfile/!s,${D}depobjname:,${D}objfile:,g" ${D}depfile >${D}{DEPSDIR}/${D}{objfile}.d
1995 rm -f ${D}depfile
1996 fi
1997 fi
1998 exit 0
1999elif test ${D}DEPSMODE = mwcc ; then
2000 ${D}*
2001 status=${D}?
2002 if test ${D}{status} != 0 ; then
2003 exit ${D}{status}
2004 fi
2005 # Run mwcc again with -MM and redirect into the dep file we want
2006 # NOTE: We can't use shift here because we need ${D}* to be valid
2007 prevarg=
2008 for arg in ${D}* ; do
2009 if test "${D}prevarg" = "-o"; then
2010 objfile=${D}arg
2011 else
2012 case "${D}arg" in
2013 -* )
2014 ;;
2015 * )
2016 srcfile=${D}arg
2017 ;;
2018 esac
2019 fi
2020 prevarg="${D}arg"
2021 done
2022 ${D}* ${D}DEPSFLAG_MWCC >${D}{DEPSDIR}/${D}{objfile}.d
2023 exit 0
2024else
2025 ${D}*
2026 exit ${D}?
2027fi
2028EOF
2029dnl ===================== bk-deps ends here =====================
2030])
3fd9c298 2031
2e350179
VS
2032AC_DEFUN([AC_BAKEFILE_CREATE_FILE_SHARED_LD_SH],
2033[
2034dnl ===================== shared-ld-sh begins here =====================
2035dnl (Created by merge-scripts.py from shared-ld-sh
2036dnl file do not edit here!)
2037D='$'
2038cat <<EOF >shared-ld-sh
2039#!/bin/sh
2040#-----------------------------------------------------------------------------
2041#-- Name: distrib/mac/shared-ld-sh
2042#-- Purpose: Link a mach-o dynamic shared library for Darwin / Mac OS X
2043#-- Author: Gilles Depeyrot
2044#-- Copyright: (c) 2002 Gilles Depeyrot
2045#-- Licence: any use permitted
2046#-----------------------------------------------------------------------------
3fd9c298 2047
2e350179
VS
2048verbose=0
2049args=""
2050objects=""
2051linking_flag="-dynamiclib"
3fd9c298 2052
2e350179 2053while test ${D}# -gt 0; do
3fd9c298 2054 case ${D}1 in
2e350179
VS
2055
2056 -v)
2057 verbose=1
3fd9c298 2058 ;;
2e350179
VS
2059
2060 -o|-compatibility_version|-current_version|-framework|-undefined|-install_name)
2061 # collect these options and values
2062 args="${D}{args} ${D}1 ${D}2"
3fd9c298 2063 shift
3fd9c298 2064 ;;
2e350179
VS
2065
2066 -l*|-L*|-flat_namespace|-headerpad_max_install_names)
2067 # collect these options
2068 args="${D}{args} ${D}1"
3fd9c298 2069 ;;
2e350179
VS
2070
2071 -dynamiclib|-bundle)
2072 linking_flag="${D}1"
3fd9c298 2073 ;;
2e350179
VS
2074
2075 -*)
2076 echo "shared-ld: unhandled option '${D}1'"
2077 exit 1
3fd9c298 2078 ;;
2e350179
VS
2079
2080 *.o | *.a | *.dylib)
2081 # collect object files
2082 objects="${D}{objects} ${D}1"
3fd9c298 2083 ;;
2e350179 2084
3fd9c298 2085 *)
2e350179
VS
2086 echo "shared-ld: unhandled argument '${D}1'"
2087 exit 1
b1d22ded 2088 ;;
2e350179 2089
3fd9c298
DE
2090 esac
2091 shift
2e350179
VS
2092done
2093
2094#
2095# Link one module containing all the others
2096#
2097if test ${D}{verbose} = 1; then
2098 echo "c++ -r -keep_private_externs -nostdlib ${D}{objects} -o master.${D}${D}.o"
2099fi
2100c++ -r -keep_private_externs -nostdlib ${D}{objects} -o master.${D}${D}.o
2101status=${D}?
2102if test ${D}{status} != 0; then
2103 exit ${D}{status}
2104fi
2105
2106#
2107# Link the shared library from the single module created
2108#
2109if test ${D}{verbose} = 1; then
2110 echo "cc ${D}{linking_flag} master.${D}${D}.o ${D}{args}"
2111fi
2112c++ ${D}{linking_flag} master.${D}${D}.o ${D}{args}
2113status=${D}?
2114if test ${D}{status} != 0; then
2115 exit ${D}{status}
2116fi
2117
2118#
2119# Remove intermediate module
2120#
2121rm -f master.${D}${D}.o
2122
2123exit 0
2124EOF
2125dnl ===================== shared-ld-sh ends here =====================
2126])
2127
2128AC_DEFUN([AC_BAKEFILE_CREATE_FILE_BK_MAKE_PCH],
2129[
2130dnl ===================== bk-make-pch begins here =====================
2131dnl (Created by merge-scripts.py from bk-make-pch
2132dnl file do not edit here!)
2133D='$'
2134cat <<EOF >bk-make-pch
2135#!/bin/sh
3fd9c298 2136
2e350179
VS
2137# This script is part of Bakefile (http://bakefile.sourceforge.net) autoconf
2138# script. It is used to generated precompiled headers.
3fd9c298 2139#
2e350179 2140# Permission is given to use this file in any way.
3fd9c298 2141
2e350179
VS
2142outfile="${D}{1}"
2143header="${D}{2}"
2144shift
2145shift
2146
2147compiler=
2148headerfile=
2149while test ${D}{#} -gt 0; do
2150 case "${D}{1}" in
2151 -I* )
2152 incdir=\`echo ${D}{1} | sed -e 's/-I\\(.*\\)/\\1/g'\`
2153 if test "x${D}{headerfile}" = "x" -a -f "${D}{incdir}/${D}{header}" ; then
2154 headerfile="${D}{incdir}/${D}{header}"
3fd9c298 2155 fi
3fd9c298
DE
2156 ;;
2157 esac
2e350179
VS
2158 compiler="${D}{compiler} ${D}{1}"
2159 shift
3fd9c298 2160done
3fd9c298 2161
2e350179
VS
2162if test "x${D}{headerfile}" = "x" ; then
2163 echo "error: can't find header ${D}{header} in include paths" >2
2164else
2165 if test -f ${D}{outfile} ; then
2166 rm -f ${D}{outfile}
2167 else
2168 mkdir -p \`dirname ${D}{outfile}\`
2169 fi
2170 depsfile=".deps/\`echo ${D}{outfile} | tr '/.' '__'\`.d"
2171 mkdir -p .deps
2172 # can do this because gcc is >= 3.4:
2173 ${D}{compiler} -o ${D}{outfile} -MMD -MF "${D}{depsfile}" "${D}{headerfile}"
2174 exit ${D}{?}
3fd9c298 2175fi
2e350179
VS
2176EOF
2177dnl ===================== bk-make-pch ends here =====================
2178])
3fd9c298 2179
2e350179
VS
2180# Configure paths for GTK+
2181# Owen Taylor 1997-2001
2182
2183dnl AM_PATH_GTK_2_0([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]])
2184dnl Test for GTK+, and define GTK_CFLAGS and GTK_LIBS, if gthread is specified in MODULES,
2185dnl pass to pkg-config
2186dnl
2187AC_DEFUN([AM_PATH_GTK_2_0],
2188[dnl
2189dnl Get the cflags and libraries from pkg-config
2190dnl
2191AC_ARG_ENABLE(gtktest, [ --disable-gtktest do not try to compile and run a test GTK+ program],
2192 , enable_gtktest=yes)
2193
2194 pkg_config_args=gtk+-2.0
2195 for module in . $4
2196 do
2197 case "$module" in
2198 gthread)
2199 pkg_config_args="$pkg_config_args gthread-2.0"
2200 ;;
2201 esac
2202 done
2203
2204 no_gtk=""
2205
2206 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
2207
2208 if test x$PKG_CONFIG != xno ; then
2209 if pkg-config --atleast-pkgconfig-version 0.7 ; then
2210 :
2211 else
2212 echo "*** pkg-config too old; version 0.7 or better required."
2213 no_gtk=yes
2214 PKG_CONFIG=no
2215 fi
2216 else
2217 no_gtk=yes
2218 fi
2219
2220 min_gtk_version=ifelse([$1], ,2.0.0,$1)
2221 AC_MSG_CHECKING(for GTK+ - version >= $min_gtk_version)
2222
2223 if test x$PKG_CONFIG != xno ; then
2224 ## don't try to run the test against uninstalled libtool libs
2225 if $PKG_CONFIG --uninstalled $pkg_config_args; then
2226 echo "Will use uninstalled version of GTK+ found in PKG_CONFIG_PATH"
2227 enable_gtktest=no
2228 fi
2229
2230 if $PKG_CONFIG --atleast-version $min_gtk_version $pkg_config_args; then
2231 :
2232 else
2233 no_gtk=yes
2234 fi
2235 fi
2236
2237 if test x"$no_gtk" = x ; then
2238 GTK_CFLAGS=`$PKG_CONFIG $pkg_config_args --cflags`
2239 GTK_LIBS=`$PKG_CONFIG $pkg_config_args --libs`
2240 gtk_config_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2241 sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
2242 gtk_config_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2243 sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
2244 gtk_config_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2245 sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
2246 if test "x$enable_gtktest" = "xyes" ; then
2247 ac_save_CFLAGS="$CFLAGS"
2248 ac_save_LIBS="$LIBS"
2249 CFLAGS="$CFLAGS $GTK_CFLAGS"
2250 LIBS="$GTK_LIBS $LIBS"
2251dnl
2252dnl Now check if the installed GTK+ is sufficiently new. (Also sanity
2253dnl checks the results of pkg-config to some extent)
2254dnl
2255 rm -f conf.gtktest
2256 AC_TRY_RUN([
2257#include <gtk/gtk.h>
2258#include <stdio.h>
2259#include <stdlib.h>
2260
2261int
2262main ()
2263{
2264 int major, minor, micro;
2265 char *tmp_version;
2266
2267 system ("touch conf.gtktest");
2268
2269 /* HP/UX 9 (%@#!) writes to sscanf strings */
2270 tmp_version = g_strdup("$min_gtk_version");
2271 if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
2272 printf("%s, bad version string\n", "$min_gtk_version");
2273 exit(1);
2274 }
2275
2276 if ((gtk_major_version != $gtk_config_major_version) ||
2277 (gtk_minor_version != $gtk_config_minor_version) ||
2278 (gtk_micro_version != $gtk_config_micro_version))
2279 {
2280 printf("\n*** 'pkg-config --modversion gtk+-2.0' returned %d.%d.%d, but GTK+ (%d.%d.%d)\n",
2281 $gtk_config_major_version, $gtk_config_minor_version, $gtk_config_micro_version,
2282 gtk_major_version, gtk_minor_version, gtk_micro_version);
2283 printf ("*** was found! If pkg-config was correct, then it is best\n");
2284 printf ("*** to remove the old version of GTK+. You may also be able to fix the error\n");
2285 printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n");
2286 printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n");
2287 printf("*** required on your system.\n");
2288 printf("*** If pkg-config was wrong, set the environment variable PKG_CONFIG_PATH\n");
2289 printf("*** to point to the correct configuration files\n");
2290 }
2291 else if ((gtk_major_version != GTK_MAJOR_VERSION) ||
2292 (gtk_minor_version != GTK_MINOR_VERSION) ||
2293 (gtk_micro_version != GTK_MICRO_VERSION))
2294 {
2295 printf("*** GTK+ header files (version %d.%d.%d) do not match\n",
2296 GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION);
2297 printf("*** library (version %d.%d.%d)\n",
2298 gtk_major_version, gtk_minor_version, gtk_micro_version);
2299 }
2300 else
2301 {
2302 if ((gtk_major_version > major) ||
2303 ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
2304 ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro)))
2305 {
2306 return 0;
2307 }
2308 else
2309 {
2310 printf("\n*** An old version of GTK+ (%d.%d.%d) was found.\n",
2311 gtk_major_version, gtk_minor_version, gtk_micro_version);
2312 printf("*** You need a version of GTK+ newer than %d.%d.%d. The latest version of\n",
2313 major, minor, micro);
2314 printf("*** GTK+ is always available from ftp://ftp.gtk.org.\n");
2315 printf("***\n");
2316 printf("*** If you have already installed a sufficiently new version, this error\n");
2317 printf("*** probably means that the wrong copy of the pkg-config shell script is\n");
2318 printf("*** being found. The easiest way to fix this is to remove the old version\n");
2319 printf("*** of GTK+, but you can also set the PKG_CONFIG environment to point to the\n");
2320 printf("*** correct copy of pkg-config. (In this case, you will have to\n");
2321 printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n");
2322 printf("*** so that the correct libraries are found at run-time))\n");
2323 }
2324 }
2325 return 1;
2326}
2327],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
2328 CFLAGS="$ac_save_CFLAGS"
2329 LIBS="$ac_save_LIBS"
2330 fi
2331 fi
2332 if test "x$no_gtk" = x ; then
2333 AC_MSG_RESULT(yes (version $gtk_config_major_version.$gtk_config_minor_version.$gtk_config_micro_version))
2334 ifelse([$2], , :, [$2])
2335 else
2336 AC_MSG_RESULT(no)
2337 if test "$PKG_CONFIG" = "no" ; then
2338 echo "*** A new enough version of pkg-config was not found."
2339 echo "*** See http://pkgconfig.sourceforge.net"
2340 else
2341 if test -f conf.gtktest ; then
2342 :
2343 else
2344 echo "*** Could not run GTK+ test program, checking why..."
2345 ac_save_CFLAGS="$CFLAGS"
2346 ac_save_LIBS="$LIBS"
2347 CFLAGS="$CFLAGS $GTK_CFLAGS"
2348 LIBS="$LIBS $GTK_LIBS"
2349 AC_TRY_LINK([
2350#include <gtk/gtk.h>
2351#include <stdio.h>
2352], [ return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); ],
2353 [ echo "*** The test program compiled, but did not run. This usually means"
2354 echo "*** that the run-time linker is not finding GTK+ or finding the wrong"
2355 echo "*** version of GTK+. If it is not finding GTK+, you'll need to set your"
2356 echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
2357 echo "*** to the installed location Also, make sure you have run ldconfig if that"
2358 echo "*** is required on your system"
2359 echo "***"
2360 echo "*** If you have an old version installed, it is best to remove it, although"
2361 echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" ],
2362 [ echo "*** The test program failed to compile or link. See the file config.log for the"
2363 echo "*** exact error that occured. This usually means GTK+ is incorrectly installed."])
2364 CFLAGS="$ac_save_CFLAGS"
2365 LIBS="$ac_save_LIBS"
2366 fi
2367 fi
2368 GTK_CFLAGS=""
2369 GTK_LIBS=""
2370 ifelse([$3], , :, [$3])
2371 fi
2372 AC_SUBST(GTK_CFLAGS)
2373 AC_SUBST(GTK_LIBS)
2374 rm -f conf.gtktest
2375])
b1d22ded 2376
2e350179
VS
2377# Configure paths for GTK+
2378# Owen Taylor 97-11-3
3fd9c298 2379
2e350179
VS
2380dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]])
2381dnl Test for GTK, and define GTK_CFLAGS and GTK_LIBS
2382dnl
2383AC_DEFUN(AM_PATH_GTK,
2384[dnl
2385dnl Get the cflags and libraries from the gtk-config script
2386dnl
2387AC_ARG_WITH(gtk-prefix,[ --with-gtk-prefix=PFX Prefix where GTK is installed (optional)],
2388 gtk_config_prefix="$withval", gtk_config_prefix="")
2389AC_ARG_WITH(gtk-exec-prefix,[ --with-gtk-exec-prefix=PFX Exec prefix where GTK is installed (optional)],
2390 gtk_config_exec_prefix="$withval", gtk_config_exec_prefix="")
2391AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program],
2392 , enable_gtktest=yes)
3fd9c298 2393
2e350179
VS
2394 for module in . $4
2395 do
2396 case "$module" in
2397 gthread)
2398 gtk_config_args="$gtk_config_args gthread"
2399 ;;
2400 esac
2401 done
3fd9c298 2402
2e350179
VS
2403 if test x$gtk_config_exec_prefix != x ; then
2404 gtk_config_args="$gtk_config_args --exec-prefix=$gtk_config_exec_prefix"
2405 if test x${GTK_CONFIG+set} != xset ; then
2406 GTK_CONFIG=$gtk_config_exec_prefix/bin/gtk-config
2407 fi
2408 fi
2409 if test x$gtk_config_prefix != x ; then
2410 gtk_config_args="$gtk_config_args --prefix=$gtk_config_prefix"
2411 if test x${GTK_CONFIG+set} != xset ; then
2412 GTK_CONFIG=$gtk_config_prefix/bin/gtk-config
2413 fi
2414 fi
3fd9c298 2415
2e350179
VS
2416 AC_PATH_PROG(GTK_CONFIG, gtk-config, no)
2417 min_gtk_version=ifelse([$1], ,0.99.7,$1)
2418 AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
2419 no_gtk=""
2420 if test "$GTK_CONFIG" = "no" ; then
2421 no_gtk=yes
2422 else
2423 GTK_CFLAGS=`$GTK_CONFIG $gtk_config_args --cflags`
2424 GTK_LIBS=`$GTK_CONFIG $gtk_config_args --libs`
2425 gtk_config_major_version=`$GTK_CONFIG $gtk_config_args --version | \
2426 sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
2427 gtk_config_minor_version=`$GTK_CONFIG $gtk_config_args --version | \
2428 sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
2429 gtk_config_micro_version=`$GTK_CONFIG $gtk_config_args --version | \
2430 sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
2431 if test "x$enable_gtktest" = "xyes" ; then
2432 ac_save_CFLAGS="$CFLAGS"
2433 ac_save_LIBS="$LIBS"
2434 CFLAGS="$CFLAGS $GTK_CFLAGS"
2435 LIBS="$GTK_LIBS $LIBS"
2436dnl
2437dnl Now check if the installed GTK is sufficiently new. (Also sanity
2438dnl checks the results of gtk-config to some extent
2439dnl
2440 rm -f conf.gtktest
2441 AC_TRY_RUN([
2442#include <gtk/gtk.h>
2443#include <stdio.h>
2444#include <stdlib.h>
3fd9c298 2445
2e350179
VS
2446int
2447main ()
2448{
2449 int major, minor, micro;
2450 char *tmp_version;
3fd9c298 2451
2e350179 2452 system ("touch conf.gtktest");
3fd9c298 2453
2e350179
VS
2454 /* HP/UX 9 (%@#!) writes to sscanf strings */
2455 tmp_version = g_strdup("$min_gtk_version");
2456 if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
2457 printf("%s, bad version string\n", "$min_gtk_version");
2458 exit(1);
2459 }
3fd9c298 2460
2e350179
VS
2461 if ((gtk_major_version != $gtk_config_major_version) ||
2462 (gtk_minor_version != $gtk_config_minor_version) ||
2463 (gtk_micro_version != $gtk_config_micro_version))
2464 {
2465 printf("\n*** 'gtk-config --version' returned %d.%d.%d, but GTK+ (%d.%d.%d)\n",
2466 $gtk_config_major_version, $gtk_config_minor_version, $gtk_config_micro_version,
2467 gtk_major_version, gtk_minor_version, gtk_micro_version);
2468 printf ("*** was found! If gtk-config was correct, then it is best\n");
2469 printf ("*** to remove the old version of GTK+. You may also be able to fix the error\n");
2470 printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n");
2471 printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n");
2472 printf("*** required on your system.\n");
2473 printf("*** If gtk-config was wrong, set the environment variable GTK_CONFIG\n");
2474 printf("*** to point to the correct copy of gtk-config, and remove the file config.cache\n");
2475 printf("*** before re-running configure\n");
2476 }
2477#if defined (GTK_MAJOR_VERSION) && defined (GTK_MINOR_VERSION) && defined (GTK_MICRO_VERSION)
2478 else if ((gtk_major_version != GTK_MAJOR_VERSION) ||
2479 (gtk_minor_version != GTK_MINOR_VERSION) ||
2480 (gtk_micro_version != GTK_MICRO_VERSION))
2481 {
2482 printf("*** GTK+ header files (version %d.%d.%d) do not match\n",
2483 GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION);
2484 printf("*** library (version %d.%d.%d)\n",
2485 gtk_major_version, gtk_minor_version, gtk_micro_version);
2486 }
2487#endif /* defined (GTK_MAJOR_VERSION) ... */
2488 else
2489 {
2490 if ((gtk_major_version > major) ||
2491 ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
2492 ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro)))
2493 {
2494 return 0;
2495 }
2496 else
2497 {
2498 printf("\n*** An old version of GTK+ (%d.%d.%d) was found.\n",
2499 gtk_major_version, gtk_minor_version, gtk_micro_version);
2500 printf("*** You need a version of GTK+ newer than %d.%d.%d. The latest version of\n",
2501 major, minor, micro);
2502 printf("*** GTK+ is always available from ftp://ftp.gtk.org.\n");
2503 printf("***\n");
2504 printf("*** If you have already installed a sufficiently new version, this error\n");
2505 printf("*** probably means that the wrong copy of the gtk-config shell script is\n");
2506 printf("*** being found. The easiest way to fix this is to remove the old version\n");
2507 printf("*** of GTK+, but you can also set the GTK_CONFIG environment to point to the\n");
2508 printf("*** correct copy of gtk-config. (In this case, you will have to\n");
2509 printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n");
2510 printf("*** so that the correct libraries are found at run-time))\n");
2511 }
2512 }
2513 return 1;
2514}
2515],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
2516 CFLAGS="$ac_save_CFLAGS"
2517 LIBS="$ac_save_LIBS"
2518 fi
2519 fi
2520 if test "x$no_gtk" = x ; then
2521 AC_MSG_RESULT(yes)
2522 ifelse([$2], , :, [$2])
2523 else
2524 AC_MSG_RESULT(no)
2525 if test "$GTK_CONFIG" = "no" ; then
2526 echo "*** The gtk-config script installed by GTK could not be found"
2527 echo "*** If GTK was installed in PREFIX, make sure PREFIX/bin is in"
2528 echo "*** your path, or set the GTK_CONFIG environment variable to the"
2529 echo "*** full path to gtk-config."
2530 else
2531 if test -f conf.gtktest ; then
2532 :
2533 else
2534 echo "*** Could not run GTK test program, checking why..."
2535 CFLAGS="$CFLAGS $GTK_CFLAGS"
2536 LIBS="$LIBS $GTK_LIBS"
2537 AC_TRY_LINK([
2538#include <gtk/gtk.h>
2539#include <stdio.h>
2540], [ return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); ],
2541 [ echo "*** The test program compiled, but did not run. This usually means"
2542 echo "*** that the run-time linker is not finding GTK or finding the wrong"
2543 echo "*** version of GTK. If it is not finding GTK, you'll need to set your"
2544 echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
2545 echo "*** to the installed location Also, make sure you have run ldconfig if that"
2546 echo "*** is required on your system"
2547 echo "***"
2548 echo "*** If you have an old version installed, it is best to remove it, although"
2549 echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"
2550 echo "***"
2551 echo "*** If you have a RedHat 5.0 system, you should remove the GTK package that"
2552 echo "*** came with the system with the command"
2553 echo "***"
2554 echo "*** rpm --erase --nodeps gtk gtk-devel" ],
2555 [ echo "*** The test program failed to compile or link. See the file config.log for the"
2556 echo "*** exact error that occured. This usually means GTK was incorrectly installed"
2557 echo "*** or that you have moved GTK since it was installed. In the latter case, you"
2558 echo "*** may want to edit the gtk-config script: $GTK_CONFIG" ])
2559 CFLAGS="$ac_save_CFLAGS"
2560 LIBS="$ac_save_LIBS"
2561 fi
2562 fi
2563 GTK_CFLAGS=""
2564 GTK_LIBS=""
2565 ifelse([$3], , :, [$3])
2566 fi
2567 AC_SUBST(GTK_CFLAGS)
2568 AC_SUBST(GTK_LIBS)
2569 rm -f conf.gtktest
2570])
3fd9c298 2571
3fd9c298 2572
2e350179
VS
2573dnl PKG_CHECK_MODULES(GSTUFF, gtk+-2.0 >= 1.3 glib = 1.3.4, action-if, action-not)
2574dnl defines GSTUFF_LIBS, GSTUFF_CFLAGS, see pkg-config man page
2575dnl also defines GSTUFF_PKG_ERRORS on error
2576AC_DEFUN(PKG_CHECK_MODULES, [
2577 succeeded=no
3fd9c298 2578
2e350179
VS
2579 if test -z "$PKG_CONFIG"; then
2580 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
2581 fi
3fd9c298 2582
2e350179
VS
2583 if test "$PKG_CONFIG" = "no" ; then
2584 echo "*** The pkg-config script could not be found. Make sure it is"
2585 echo "*** in your path, or set the PKG_CONFIG environment variable"
2586 echo "*** to the full path to pkg-config."
2587 echo "*** Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config."
2588 else
2589 PKG_CONFIG_MIN_VERSION=0.9.0
2590 if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
2591 AC_MSG_CHECKING(for $2)
3fd9c298 2592
2e350179
VS
2593 if $PKG_CONFIG --exists "$2" ; then
2594 AC_MSG_RESULT(yes)
2595 succeeded=yes
3fd9c298 2596
2e350179
VS
2597 AC_MSG_CHECKING($1_CFLAGS)
2598 $1_CFLAGS=`$PKG_CONFIG --cflags "$2"`
2599 AC_MSG_RESULT($$1_CFLAGS)
3fd9c298 2600
2e350179
VS
2601 AC_MSG_CHECKING($1_LIBS)
2602 $1_LIBS=`$PKG_CONFIG --libs "$2"`
2603 AC_MSG_RESULT($$1_LIBS)
8f98c6c0 2604 else
2e350179
VS
2605 $1_CFLAGS=""
2606 $1_LIBS=""
2607 ## If we have a custom action on failure, don't print errors, but
2608 ## do set a variable so people can do so.
2609 $1_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2"`
2610 ifelse([$4], ,echo $$1_PKG_ERRORS,)
8f98c6c0 2611 fi
3fd9c298 2612
2e350179
VS
2613 AC_SUBST($1_CFLAGS)
2614 AC_SUBST($1_LIBS)
2615 else
2616 echo "*** Your version of pkg-config is too old. You need version $PKG_CONFIG_MIN_VERSION or newer."
2617 echo "*** See http://www.freedesktop.org/software/pkgconfig"
2618 fi
2619 fi
3fd9c298 2620
2e350179
VS
2621 if test $succeeded = yes; then
2622 ifelse([$3], , :, [$3])
2623 else
2624 ifelse([$4], , AC_MSG_ERROR([Library requirements ($2) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them.]), [$4])
2625 fi
2626])
3fd9c298 2627
3fd9c298 2628
3fd9c298 2629
2e350179
VS
2630# Configure paths for SDL
2631# Sam Lantinga 9/21/99
2632# stolen from Manish Singh
2633# stolen back from Frank Belew
2634# stolen from Manish Singh
2635# Shamelessly stolen from Owen Taylor
3fd9c298 2636
2e350179
VS
2637dnl AM_PATH_SDL([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
2638dnl Test for SDL, and define SDL_CFLAGS and SDL_LIBS
2639dnl
2640AC_DEFUN([AM_PATH_SDL],
2641[dnl
2642dnl Get the cflags and libraries from the sdl-config script
2643dnl
2644AC_ARG_WITH(sdl-prefix,[ --with-sdl-prefix=PFX Prefix where SDL is installed (optional)],
2645 sdl_prefix="$withval", sdl_prefix="")
2646AC_ARG_WITH(sdl-exec-prefix,[ --with-sdl-exec-prefix=PFX Exec prefix where SDL is installed (optional)],
2647 sdl_exec_prefix="$withval", sdl_exec_prefix="")
2648AC_ARG_ENABLE(sdltest, [ --disable-sdltest Do not try to compile and run a test SDL program],
2649 , enable_sdltest=yes)
3fd9c298 2650
2e350179
VS
2651 if test x$sdl_exec_prefix != x ; then
2652 sdl_args="$sdl_args --exec-prefix=$sdl_exec_prefix"
2653 if test x${SDL_CONFIG+set} != xset ; then
2654 SDL_CONFIG=$sdl_exec_prefix/bin/sdl-config
2655 fi
2656 fi
2657 if test x$sdl_prefix != x ; then
2658 sdl_args="$sdl_args --prefix=$sdl_prefix"
2659 if test x${SDL_CONFIG+set} != xset ; then
2660 SDL_CONFIG=$sdl_prefix/bin/sdl-config
2661 fi
2662 fi
3fd9c298 2663
2e350179
VS
2664 AC_REQUIRE([AC_CANONICAL_TARGET])
2665 PATH="$prefix/bin:$prefix/usr/bin:$PATH"
2666 AC_PATH_PROG(SDL_CONFIG, sdl-config, no, [$PATH])
2667 min_sdl_version=ifelse([$1], ,0.11.0,$1)
2668 AC_MSG_CHECKING(for SDL - version >= $min_sdl_version)
2669 no_sdl=""
2670 if test "$SDL_CONFIG" = "no" ; then
2671 no_sdl=yes
2672 else
2673 SDL_CFLAGS=`$SDL_CONFIG $sdlconf_args --cflags`
2674 SDL_LIBS=`$SDL_CONFIG $sdlconf_args --libs`
3fd9c298 2675
2e350179
VS
2676 sdl_major_version=`$SDL_CONFIG $sdl_args --version | \
2677 sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
2678 sdl_minor_version=`$SDL_CONFIG $sdl_args --version | \
2679 sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
2680 sdl_micro_version=`$SDL_CONFIG $sdl_config_args --version | \
2681 sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
2682 if test "x$enable_sdltest" = "xyes" ; then
2683 ac_save_CFLAGS="$CFLAGS"
94acd38e 2684 ac_save_CXXFLAGS="$CXXFLAGS"
2e350179
VS
2685 ac_save_LIBS="$LIBS"
2686 CFLAGS="$CFLAGS $SDL_CFLAGS"
94acd38e 2687 CXXFLAGS="$CXXFLAGS $SDL_CFLAGS"
2e350179
VS
2688 LIBS="$LIBS $SDL_LIBS"
2689dnl
2690dnl Now check if the installed SDL is sufficiently new. (Also sanity
2691dnl checks the results of sdl-config to some extent
2692dnl
2693 rm -f conf.sdltest
2694 AC_TRY_RUN([
2695#include <stdio.h>
2696#include <stdlib.h>
2697#include <string.h>
2698#include "SDL.h"
3fd9c298 2699
2e350179
VS
2700char*
2701my_strdup (char *str)
2702{
2703 char *new_str;
2704
2705 if (str)
2706 {
2707 new_str = (char *)malloc ((strlen (str) + 1) * sizeof(char));
2708 strcpy (new_str, str);
2709 }
2710 else
2711 new_str = NULL;
2712
2713 return new_str;
2714}
3fd9c298 2715
2e350179
VS
2716int main (int argc, char *argv[])
2717{
2718 int major, minor, micro;
2719 char *tmp_version;
3fd9c298 2720
2e350179
VS
2721 /* This hangs on some systems (?)
2722 system ("touch conf.sdltest");
2723 */
2724 { FILE *fp = fopen("conf.sdltest", "a"); if ( fp ) fclose(fp); }
3fd9c298 2725
2e350179
VS
2726 /* HP/UX 9 (%@#!) writes to sscanf strings */
2727 tmp_version = my_strdup("$min_sdl_version");
2728 if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
2729 printf("%s, bad version string\n", "$min_sdl_version");
2730 exit(1);
2731 }
3fd9c298 2732
2e350179
VS
2733 if (($sdl_major_version > major) ||
2734 (($sdl_major_version == major) && ($sdl_minor_version > minor)) ||
2735 (($sdl_major_version == major) && ($sdl_minor_version == minor) && ($sdl_micro_version >= micro)))
2736 {
2737 return 0;
2738 }
2739 else
2740 {
2741 printf("\n*** 'sdl-config --version' returned %d.%d.%d, but the minimum version\n", $sdl_major_version, $sdl_minor_version, $sdl_micro_version);
2742 printf("*** of SDL required is %d.%d.%d. If sdl-config is correct, then it is\n", major, minor, micro);
2743 printf("*** best to upgrade to the required version.\n");
2744 printf("*** If sdl-config was wrong, set the environment variable SDL_CONFIG\n");
2745 printf("*** to point to the correct copy of sdl-config, and remove the file\n");
2746 printf("*** config.cache before re-running configure\n");
2747 return 1;
2748 }
2749}
fe0895cf 2750
2e350179
VS
2751],, no_sdl=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
2752 CFLAGS="$ac_save_CFLAGS"
94acd38e 2753 CXXFLAGS="$ac_save_CXXFLAGS"
2e350179
VS
2754 LIBS="$ac_save_LIBS"
2755 fi
2756 fi
2757 if test "x$no_sdl" = x ; then
2758 AC_MSG_RESULT(yes)
2759 ifelse([$2], , :, [$2])
2760 else
2761 AC_MSG_RESULT(no)
2762 if test "$SDL_CONFIG" = "no" ; then
2763 echo "*** The sdl-config script installed by SDL could not be found"
2764 echo "*** If SDL was installed in PREFIX, make sure PREFIX/bin is in"
2765 echo "*** your path, or set the SDL_CONFIG environment variable to the"
2766 echo "*** full path to sdl-config."
2767 else
2768 if test -f conf.sdltest ; then
2769 :
2770 else
2771 echo "*** Could not run SDL test program, checking why..."
2772 CFLAGS="$CFLAGS $SDL_CFLAGS"
94acd38e 2773 CXXFLAGS="$CXXFLAGS $SDL_CFLAGS"
2e350179
VS
2774 LIBS="$LIBS $SDL_LIBS"
2775 AC_TRY_LINK([
2776#include <stdio.h>
2777#include "SDL.h"
6ff53182 2778
2e350179
VS
2779int main(int argc, char *argv[])
2780{ return 0; }
2781#undef main
2782#define main K_and_R_C_main
2783], [ return 0; ],
2784 [ echo "*** The test program compiled, but did not run. This usually means"
2785 echo "*** that the run-time linker is not finding SDL or finding the wrong"
2786 echo "*** version of SDL. If it is not finding SDL, you'll need to set your"
2787 echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
2788 echo "*** to the installed location Also, make sure you have run ldconfig if that"
2789 echo "*** is required on your system"
2790 echo "***"
2791 echo "*** If you have an old version installed, it is best to remove it, although"
2792 echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"],
2793 [ echo "*** The test program failed to compile or link. See the file config.log for the"
2794 echo "*** exact error that occured. This usually means SDL was incorrectly installed"
2795 echo "*** or that you have moved SDL since it was installed. In the latter case, you"
2796 echo "*** may want to edit the sdl-config script: $SDL_CONFIG" ])
2797 CFLAGS="$ac_save_CFLAGS"
94acd38e 2798 CXXFLAGS="$ac_save_CXXFLAGS"
2e350179
VS
2799 LIBS="$ac_save_LIBS"
2800 fi
2801 fi
2802 SDL_CFLAGS=""
2803 SDL_LIBS=""
2804 ifelse([$3], , :, [$3])
2805 fi
2806 AC_SUBST(SDL_CFLAGS)
2807 AC_SUBST(SDL_LIBS)
2808 rm -f conf.sdltest
2809])
6ff53182 2810
2e350179
VS
2811dnl Perform a check for a GStreamer element using gst-inspect
2812dnl Thomas Vander Stichele <thomas at apestaart dot org>
94acd38e 2813dnl Last modification: 25/01/2005
6ff53182 2814
2e350179 2815dnl AM_GST_ELEMENT_CHECK(ELEMENT-NAME, ACTION-IF-FOUND, ACTION-IF-NOT-FOUND)
6ff53182 2816
2e350179
VS
2817AC_DEFUN([AM_GST_ELEMENT_CHECK],
2818[
94acd38e
DE
2819 if test "x$GST_INSPECT" == "x"; then
2820 AC_CHECK_PROG(GST_INSPECT, gst-inspect, gst-inspect, [])
2821 fi
2822
2e350179
VS
2823 if test "x$GST_INSPECT" != "x"; then
2824 AC_MSG_CHECKING(GStreamer element $1)
2825 if [ $GST_INSPECT $1 > /dev/null 2> /dev/null ]; then
2826 AC_MSG_RESULT(found.)
2827 $2
6ff53182 2828 else
2e350179
VS
2829 AC_MSG_RESULT(not found.)
2830 $3
6ff53182 2831 fi
2e350179 2832 fi
6ff53182 2833])
2e350179 2834
670ec357 2835dnl
af8ebe8a 2836dnl AM_PATH_CPPUNIT(MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
670ec357
VS
2837dnl
2838AC_DEFUN(AM_PATH_CPPUNIT,
2839[
2840
2841AC_ARG_WITH(cppunit-prefix,[ --with-cppunit-prefix=PFX Prefix where CppUnit is installed (optional)],
2842 cppunit_config_prefix="$withval", cppunit_config_prefix="")
2843AC_ARG_WITH(cppunit-exec-prefix,[ --with-cppunit-exec-prefix=PFX Exec prefix where CppUnit is installed (optional)],
2844 cppunit_config_exec_prefix="$withval", cppunit_config_exec_prefix="")
2845
2846 if test x$cppunit_config_exec_prefix != x ; then
2847 cppunit_config_args="$cppunit_config_args --exec-prefix=$cppunit_config_exec_prefix"
2848 if test x${CPPUNIT_CONFIG+set} != xset ; then
2849 CPPUNIT_CONFIG=$cppunit_config_exec_prefix/bin/cppunit-config
2850 fi
2851 fi
2852 if test x$cppunit_config_prefix != x ; then
2853 cppunit_config_args="$cppunit_config_args --prefix=$cppunit_config_prefix"
2854 if test x${CPPUNIT_CONFIG+set} != xset ; then
2855 CPPUNIT_CONFIG=$cppunit_config_prefix/bin/cppunit-config
2856 fi
2857 fi
2858
2859 AC_PATH_PROG(CPPUNIT_CONFIG, cppunit-config, no)
2860 cppunit_version_min=$1
2861
2862 AC_MSG_CHECKING(for Cppunit - version >= $cppunit_version_min)
2863 no_cppunit=""
2864 if test "$CPPUNIT_CONFIG" = "no" ; then
2865 no_cppunit=yes
2866 else
2867 CPPUNIT_CFLAGS=`$CPPUNIT_CONFIG --cflags`
2868 CPPUNIT_LIBS=`$CPPUNIT_CONFIG --libs`
2869 cppunit_version=`$CPPUNIT_CONFIG --version`
2870
2871 cppunit_major_version=`echo $cppunit_version | \
2872 sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
2873 cppunit_minor_version=`echo $cppunit_version | \
2874 sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
2875 cppunit_micro_version=`echo $cppunit_version | \
2876 sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
2877
2878 cppunit_major_min=`echo $cppunit_version_min | \
2879 sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
2880 cppunit_minor_min=`echo $cppunit_version_min | \
2881 sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
2882 cppunit_micro_min=`echo $cppunit_version_min | \
2883 sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
2884
2885 cppunit_version_proper=`expr \
2886 $cppunit_major_version \> $cppunit_major_min \| \
2887 $cppunit_major_version \= $cppunit_major_min \& \
2888 $cppunit_minor_version \> $cppunit_minor_min \| \
2889 $cppunit_major_version \= $cppunit_major_min \& \
2890 $cppunit_minor_version \= $cppunit_minor_min \& \
2891 $cppunit_micro_version \>= $cppunit_micro_min `
2892
2893 if test "$cppunit_version_proper" = "1" ; then
2894 AC_MSG_RESULT([$cppunit_major_version.$cppunit_minor_version.$cppunit_micro_version])
2895 else
2896 AC_MSG_RESULT(no)
2897 no_cppunit=yes
2898 fi
2899 fi
2900
2901 if test "x$no_cppunit" = x ; then
2902 ifelse([$2], , :, [$2])
2903 else
2904 CPPUNIT_CFLAGS=""
2905 CPPUNIT_LIBS=""
2906 ifelse([$3], , :, [$3])
2907 fi
2908
2909 AC_SUBST(CPPUNIT_CFLAGS)
2910 AC_SUBST(CPPUNIT_LIBS)
2911])
2912
2913
2914
2915