blob: af4600380bc45cf1661729464686df705409a30c [file] [log] [blame]
Alexandre Julliard67e8dc62002-05-20 18:29:58 +00001dnl Macros used to build the Wine configure script
2dnl
3dnl Copyright 2002 Alexandre Julliard
4dnl
5dnl This library is free software; you can redistribute it and/or
6dnl modify it under the terms of the GNU Lesser General Public
7dnl License as published by the Free Software Foundation; either
8dnl version 2.1 of the License, or (at your option) any later version.
9dnl
10dnl This library is distributed in the hope that it will be useful,
11dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
12dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13dnl Lesser General Public License for more details.
14dnl
15dnl You should have received a copy of the GNU Lesser General Public
16dnl License along with this library; if not, write to the Free Software
17dnl Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18dnl
19
20dnl **** Get the ldd program name; used by WINE_GET_SONAME ****
21dnl
22dnl Usage: WINE_PATH_LDD
23dnl
24AC_DEFUN([WINE_PATH_LDD],[AC_PATH_PROG(LDD,ldd,true,/sbin:/usr/sbin:$PATH)])
25
26dnl **** Extract the soname of a library ****
27dnl
28dnl Usage: WINE_GET_SONAME(LIBRARY, FUNCTION, [OTHER_LIBRARIES])
29dnl
30AC_DEFUN([WINE_GET_SONAME],
31[AC_REQUIRE([WINE_PATH_LDD])
32AC_CACHE_CHECK([for -l$1 soname], ac_cv_lib_soname_$1,
33[ac_get_soname_save_LIBS=$LIBS
34LIBS="-l$1 $3 $LIBS"
35 AC_LINK_IFELSE([AC_LANG_CALL([], [$2])],
36 [ac_cv_lib_soname_$1=`$ac_cv_path_LDD conftest$ac_exeext | grep lib$1\\.so | sed 's/^[[ ]]*\([[^ ]]*\)[[ ]]*=>.*$/\1/'`
37 if test "x$ac_cv_lib_soname_$1" = "x"
38 then
39 ac_cv_lib_soname_$1="lib$1.so"
40 fi],
41 [ac_cv_lib_soname_$1="lib$1.so"])
42 LIBS=$ac_get_soname_save_LIBS])
43if test "x$ac_cv_lib_soname_$1" != xNONE
44then AC_DEFINE_UNQUOTED(AS_TR_CPP(SONAME_LIB$1),"$ac_cv_lib_soname_$1",
45 [Define to the soname of the lib$1 library.])dnl
46fi])
47
48dnl **** Check if a structure contains a specified member ****
49dnl
50dnl Usage: WINE_CHECK_STRUCT_MEMBER(struct,member,[includes,[action-if-found,[action-if-not-found]]])
51dnl
52AC_DEFUN([WINE_CHECK_STRUCT_MEMBER],
53[AC_CACHE_CHECK([for $2 in struct $1], ac_cv_c_$1_$2,
54 AC_TRY_COMPILE([$3],[struct $1 s; s.$2 = 0],ac_cv_c_$1_$2="yes",ac_cv_c_$1_$2="no"))
55AS_IF([ test "x$ac_cv_c_$1_$2" = "xyes"],[$4],[$5])
56])
57
58dnl **** Check for reentrant libc ****
59dnl
60dnl Usage: WINE_CHECK_ERRNO(errno-name,[action-if-yes,[action-if-no]])
61dnl
62dnl For cross-compiling we blindly assume that libc is reentrant. This is
63dnl ok since non-reentrant libc is quite rare (mostly old libc5 versions).
64dnl
65AC_DEFUN([WINE_CHECK_ERRNO],
66[AC_CACHE_CHECK([for reentrant libc: $1],[wine_cv_libc_r_$1],
67 [AC_TRY_RUN([int myerrno = 0;
Alexandre Julliard67e8dc62002-05-20 18:29:58 +000068int *$1(){return &myerrno;}
Alexandre Julliard770c33f2002-07-01 18:39:26 +000069main(){close(333); close(333); exit(!myerrno);}],
Alexandre Julliard67e8dc62002-05-20 18:29:58 +000070 wine_cv_libc_r_$1=yes, wine_cv_libc_r_$1=no,
71 wine_cv_libc_r_$1=yes)])
72AS_IF([test "$wine_cv_libc_r_$1" = "yes"],[$2],[$3])])
73
74dnl **** Link C code with an assembly file ****
75dnl
76dnl Usage: WINE_TRY_ASM_LINK(asm-code,includes,function,[action-if-found,[action-if-not-found]])
77dnl
78AC_DEFUN([WINE_TRY_ASM_LINK],
Alexandre Julliard84555cc2002-07-22 20:51:02 +000079[AC_TRY_LINK([static void ac_asm(void) { asm([$1]); }
80[$2]],[$3],[$4],[$5])])
Alexandre Julliard67e8dc62002-05-20 18:29:58 +000081
82dnl **** Check if we can link an empty program with special CFLAGS ****
83dnl
84dnl Usage: WINE_TRY_CFLAGS(flags,[action-if-yes,[action-if-no]])
85dnl
86AC_DEFUN([WINE_TRY_CFLAGS],
87[ac_wine_try_cflags_saved=$CFLAGS
88CFLAGS="$CFLAGS $1"
89AC_TRY_LINK([],[],[$2],[$3])
90CFLAGS=$ac_wine_try_cflags_saved])
91
Alexandre Julliarddf234a92002-05-22 02:10:39 +000092dnl **** Check for ln ****
93dnl
94dnl Usage: WINE_PROG_LN
95dnl
96AC_DEFUN([WINE_PROG_LN],
97[AC_MSG_CHECKING([whether ln works])
98rm -f conf$$ conf$$.file
99echo >conf$$.file
100if ln conf$$.file conf$$ 2>/dev/null; then
101 AC_SUBST(LN,ln)
102 AC_MSG_RESULT([yes])
103else
104 AC_SUBST(LN,["cp -p"])
105 AC_MSG_RESULT([no, using $LN])
106fi
107rm -f conf$$ conf$$.file])
108
Alexandre Julliard67e8dc62002-05-20 18:29:58 +0000109dnl **** Create non-existent directories from config.status ****
110dnl
111dnl Usage: WINE_CONFIG_EXTRA_DIR(dirname)
112dnl
113AC_DEFUN([WINE_CONFIG_EXTRA_DIR],
114[AC_CONFIG_COMMANDS([$1],[test -d "$1" || (AC_MSG_NOTICE([creating $1]) && mkdir "$1")])])