blob: f7beb5db32272e828dd79bece06c1f7395502e4f [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
Jonathan Ernst360a3f92006-05-18 14:49:52 +020017dnl Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
Alexandre Julliard67e8dc62002-05-20 18:29:58 +000018dnl
Alexandre Julliard1d8d0172002-08-02 19:34:21 +000019dnl As a special exception to the GNU Lesser General Public License,
20dnl if you distribute this file as part of a program that contains a
21dnl configuration script generated by Autoconf, you may include it
22dnl under the same distribution terms that you use for the rest of
23dnl that program.
Alexandre Julliard67e8dc62002-05-20 18:29:58 +000024
25dnl **** Get the ldd program name; used by WINE_GET_SONAME ****
26dnl
27dnl Usage: WINE_PATH_LDD
28dnl
29AC_DEFUN([WINE_PATH_LDD],[AC_PATH_PROG(LDD,ldd,true,/sbin:/usr/sbin:$PATH)])
30
31dnl **** Extract the soname of a library ****
32dnl
Alexandre Julliard66afa982007-07-02 17:02:51 +020033dnl Usage: WINE_CHECK_SONAME(library, function, [action-if-found, [action-if-not-found, [other_libraries, [pattern]]]])
Alexandre Julliard67e8dc62002-05-20 18:29:58 +000034dnl
Alexandre Julliard66afa982007-07-02 17:02:51 +020035AC_DEFUN([WINE_CHECK_SONAME],
Alexandre Julliard30de3e82006-03-10 21:24:05 +010036[AC_REQUIRE([WINE_PATH_LDD])dnl
37AS_VAR_PUSHDEF([ac_Lib],[ac_cv_lib_soname_$1])dnl
Alexandre Julliard66afa982007-07-02 17:02:51 +020038m4_pushdef([ac_lib_pattern],m4_default([$6],[lib$1]))dnl
39AC_MSG_CHECKING([for -l$1])
Alexandre Julliard446befb2007-07-02 13:41:36 +020040AC_CACHE_VAL(ac_Lib,
Alexandre Julliard66afa982007-07-02 17:02:51 +020041[ac_check_soname_save_LIBS=$LIBS
42LIBS="-l$1 $5 $LIBS"
Alexandre Julliard67e8dc62002-05-20 18:29:58 +000043 AC_LINK_IFELSE([AC_LANG_CALL([], [$2])],
Alexandre Julliardbdbffd92006-08-07 21:41:55 +020044 [case "$LIBEXT" in
Alexandre Julliard446befb2007-07-02 13:41:36 +020045 dll) ;;
Alexandre Julliard66afa982007-07-02 17:02:51 +020046 dylib) AS_VAR_SET(ac_Lib,[`otool -L conftest$ac_exeext | grep "ac_lib_pattern\\.[[0-9A-Za-z.]]*dylib" | sed -e "s/^.*\/\(ac_lib_pattern\.[[0-9A-Za-z.]]*dylib\).*$/\1/"';2,$d'`]) ;;
47 *) AS_VAR_SET(ac_Lib,[`$ac_cv_path_LDD conftest$ac_exeext | grep "ac_lib_pattern\\.$LIBEXT" | sed -e "s/^.*\(ac_lib_pattern\.$LIBEXT[[^ ]]*\).*$/\1/"';2,$d'`]) ;;
Alexandre Julliard446befb2007-07-02 13:41:36 +020048 esac])
Alexandre Julliard66afa982007-07-02 17:02:51 +020049 LIBS=$ac_check_soname_save_LIBS])dnl
Alexandre Julliard446befb2007-07-02 13:41:36 +020050AS_IF([test "x]AS_VAR_GET(ac_Lib)[" = "x"],
Alexandre Julliard66afa982007-07-02 17:02:51 +020051 [AC_MSG_RESULT([not found])
52 $4],
Alexandre Julliard446befb2007-07-02 13:41:36 +020053 [AC_MSG_RESULT(AS_VAR_GET(ac_Lib))
54 AC_DEFINE_UNQUOTED(AS_TR_CPP(SONAME_LIB$1),["]AS_VAR_GET(ac_Lib)["],
Alexandre Julliard66afa982007-07-02 17:02:51 +020055 [Define to the soname of the lib$1 library.])
56 $3])dnl
57m4_popdef([ac_lib_pattern])dnl
Alexandre Julliard30de3e82006-03-10 21:24:05 +010058AS_VAR_POPDEF([ac_Lib])])
Alexandre Julliard67e8dc62002-05-20 18:29:58 +000059
Alexandre Julliard67e8dc62002-05-20 18:29:58 +000060dnl **** Link C code with an assembly file ****
61dnl
62dnl Usage: WINE_TRY_ASM_LINK(asm-code,includes,function,[action-if-found,[action-if-not-found]])
63dnl
64AC_DEFUN([WINE_TRY_ASM_LINK],
Alexandre Julliardad356de2007-06-08 20:23:16 +020065[AC_LINK_IFELSE(AC_LANG_PROGRAM([[$2]],[[asm($1); $3]]),[$4],[$5])])
Alexandre Julliard67e8dc62002-05-20 18:29:58 +000066
67dnl **** Check if we can link an empty program with special CFLAGS ****
68dnl
69dnl Usage: WINE_TRY_CFLAGS(flags,[action-if-yes,[action-if-no]])
70dnl
Alexandre Julliard182d1502006-08-25 13:22:33 +020071dnl The default action-if-yes is to append the flags to EXTRACFLAGS.
72dnl
Alexandre Julliard67e8dc62002-05-20 18:29:58 +000073AC_DEFUN([WINE_TRY_CFLAGS],
Alexandre Julliard182d1502006-08-25 13:22:33 +020074[AS_VAR_PUSHDEF([ac_var], ac_cv_cflags_[[$1]])dnl
75AC_CACHE_CHECK([whether the compiler supports $1], ac_var,
Alexandre Julliard67e8dc62002-05-20 18:29:58 +000076[ac_wine_try_cflags_saved=$CFLAGS
77CFLAGS="$CFLAGS $1"
Alexandre Julliard295806f2009-10-07 13:46:06 +020078AC_LINK_IFELSE(AC_LANG_SOURCE([int main(int argc, char *argv[]) { return 0; }]),
79 [AS_VAR_SET(ac_var,yes)], [AS_VAR_SET(ac_var,no)])
Alexandre Julliard67e8dc62002-05-20 18:29:58 +000080CFLAGS=$ac_wine_try_cflags_saved])
Alexandre Julliard182d1502006-08-25 13:22:33 +020081AS_IF([test AS_VAR_GET(ac_var) = yes],
82 [m4_default([$2], [EXTRACFLAGS="$EXTRACFLAGS $1"])], [$3])dnl
83AS_VAR_POPDEF([ac_var])])
Alexandre Julliard67e8dc62002-05-20 18:29:58 +000084
Warren Baird421e8b92004-09-22 19:17:55 +000085dnl **** Check if we can link an empty shared lib (no main) with special CFLAGS ****
86dnl
87dnl Usage: WINE_TRY_SHLIB_FLAGS(flags,[action-if-yes,[action-if-no]])
88dnl
89AC_DEFUN([WINE_TRY_SHLIB_FLAGS],
90[ac_wine_try_cflags_saved=$CFLAGS
91CFLAGS="$CFLAGS $1"
92AC_LINK_IFELSE([void myfunc() {}],[$2],[$3])
93CFLAGS=$ac_wine_try_cflags_saved])
94
Alexandre Julliard05783b52002-12-11 00:21:55 +000095dnl **** Check whether we need to define a symbol on the compiler command line ****
96dnl
97dnl Usage: WINE_CHECK_DEFINE(name),[action-if-yes,[action-if-no]])
98dnl
99AC_DEFUN([WINE_CHECK_DEFINE],
100[AS_VAR_PUSHDEF([ac_var],[ac_cv_cpp_def_$1])dnl
101AC_CACHE_CHECK([whether we need to define $1],ac_var,
102 AC_EGREP_CPP(yes,[#ifndef $1
103yes
104#endif],
105 [AS_VAR_SET(ac_var,yes)],[AS_VAR_SET(ac_var,no)]))
106AS_IF([test AS_VAR_GET(ac_var) = yes],
107 [CFLAGS="$CFLAGS -D$1"
108 LINTFLAGS="$LINTFLAGS -D$1"])dnl
109AS_VAR_POPDEF([ac_var])])
110
Alexandre Julliard2d1a6272006-02-11 20:54:06 +0100111dnl **** Check for functions with some extra libraries ****
112dnl
113dnl Usage: WINE_CHECK_LIB_FUNCS(funcs,libs,[action-if-found,[action-if-not-found]])
114dnl
115AC_DEFUN([WINE_CHECK_LIB_FUNCS],
116[ac_wine_check_funcs_save_LIBS="$LIBS"
117LIBS="$LIBS $2"
118AC_CHECK_FUNCS([$1],[$3],[$4])
119LIBS="$ac_wine_check_funcs_save_LIBS"])
120
Alexandre Julliarddf234a92002-05-22 02:10:39 +0000121dnl **** Check for ln ****
122dnl
123dnl Usage: WINE_PROG_LN
124dnl
125AC_DEFUN([WINE_PROG_LN],
126[AC_MSG_CHECKING([whether ln works])
127rm -f conf$$ conf$$.file
128echo >conf$$.file
129if ln conf$$.file conf$$ 2>/dev/null; then
130 AC_SUBST(LN,ln)
131 AC_MSG_RESULT([yes])
132else
133 AC_SUBST(LN,["cp -p"])
134 AC_MSG_RESULT([no, using $LN])
135fi
136rm -f conf$$ conf$$.file])
137
Alexandre Julliardeae0dc22007-01-01 13:14:21 +0100138dnl **** Check for a mingw program, trying the various mingw prefixes ****
139dnl
140dnl Usage: WINE_CHECK_MINGW_PROG(variable,prog,[value-if-not-found],[path])
141dnl
142AC_DEFUN([WINE_CHECK_MINGW_PROG],
143[AC_CHECK_PROGS([$1],
144 m4_foreach([ac_wine_prefix],
Alexandre Julliardccbf9592009-06-18 21:35:51 +0200145 [$host_cpu-pc-mingw32, i586-mingw32msvc, i386-mingw32msvc, i686-mingw32, i586-mingw32, i486-mingw32, i386-mingw32, i686-pc-mingw32],
Alexandre Julliardeae0dc22007-01-01 13:14:21 +0100146 [ac_wine_prefix-$2 ]),
147 [$3],[$4])])
148
149
Francois Gouget4d801b62005-02-10 19:19:35 +0000150dnl **** Create nonexistent directories from config.status ****
Alexandre Julliard67e8dc62002-05-20 18:29:58 +0000151dnl
152dnl Usage: WINE_CONFIG_EXTRA_DIR(dirname)
153dnl
154AC_DEFUN([WINE_CONFIG_EXTRA_DIR],
155[AC_CONFIG_COMMANDS([$1],[test -d "$1" || (AC_MSG_NOTICE([creating $1]) && mkdir "$1")])])
Alexandre Julliard446befb2007-07-02 13:41:36 +0200156
Alexandre Julliarda360e932008-08-20 16:02:37 +0200157dnl **** Create a make rules file from config.status ****
158dnl
159dnl Usage: WINE_CONFIG_MAKERULES(file,var,deps)
160dnl
161AC_DEFUN([WINE_CONFIG_MAKERULES],
162[ALL_MAKERULES="$ALL_MAKERULES \\
163 $1"
164ALL_MAKEFILE_DEPENDS="$ALL_MAKEFILE_DEPENDS
165$1: m4_ifval([$3],[$1.in $3],[$1.in])"
166$2=$1
167AC_SUBST_FILE([$2])dnl
168AC_CONFIG_FILES([$1])])
169
170dnl **** Create a makefile from config.status ****
171dnl
Alexandre Julliard485cc592008-08-25 12:03:35 +0200172dnl Usage: WINE_CONFIG_MAKEFILE(file,deps,prefix,var,enable)
Alexandre Julliarda360e932008-08-20 16:02:37 +0200173dnl
174AC_DEFUN([WINE_CONFIG_MAKEFILE],
Alexandre Julliard49163da2008-08-25 12:02:27 +0200175[m4_pushdef([ac_dir],m4_bpatsubst([$1],[^\($3/?\(.*\)/\)?Makefile$],[\2]))dnl
Alexandre Julliarda360e932008-08-20 16:02:37 +0200176m4_ifval(ac_dir,[ALL_MAKEFILES="$ALL_MAKEFILES \\
177 $1"])
Alexandre Julliard485cc592008-08-25 12:03:35 +0200178AS_VAR_PUSHDEF([ac_enable],m4_default([$5],[enable_]ac_dir))dnl
Alexandre Julliard4051eaf2008-08-25 12:14:54 +0200179m4_ifval([$4],[test "x$ac_enable" != xno]m4_foreach([ac_var],[$4],[ && ac_var="$ac_var \\
180 ac_dir"]))
Alexandre Julliard485cc592008-08-25 12:03:35 +0200181AS_VAR_POPDEF([ac_enable])dnl
Alexandre Julliarda360e932008-08-20 16:02:37 +0200182ALL_MAKEFILE_DEPENDS="$ALL_MAKEFILE_DEPENDS
183[$1: ]m4_ifval([$2],[$1.in $2],[$1.in])"
184AC_CONFIG_FILES([$1])dnl
185m4_popdef([ac_dir])])
186
Alexandre Julliard8d8c5c62007-07-10 15:05:40 +0200187dnl **** Add a message to the list displayed at the end ****
188dnl
189dnl Usage: WINE_NOTICE(notice)
Alexandre Julliarda41f0f12008-01-07 14:51:44 +0100190dnl Usage: WINE_NOTICE_WITH(with_flag, test, notice)
Alexandre Julliard8d8c5c62007-07-10 15:05:40 +0200191dnl Usage: WINE_WARNING(warning)
Alexandre Julliarda41f0f12008-01-07 14:51:44 +0100192dnl Usage: WINE_WARNING_WITH(with_flag, test, warning)
Alexandre Julliard8d8c5c62007-07-10 15:05:40 +0200193dnl Usage: WINE_PRINT_MESSAGES
194dnl
195AC_DEFUN([WINE_NOTICE],[wine_notices="$wine_notices|$1"])
Alexandre Julliard8d8c5c62007-07-10 15:05:40 +0200196AC_DEFUN([WINE_WARNING],[wine_warnings="$wine_warnings|$1"])
Alexandre Julliarda41f0f12008-01-07 14:51:44 +0100197
198AC_DEFUN([WINE_NOTICE_WITH],[AS_IF([$2],[case "x$with_$1" in
199 x) WINE_NOTICE([$3]) ;;
200 xno) ;;
201 *) AC_MSG_ERROR([$3
202This is an error since --with-$1 was requested.]) ;;
203esac])])
204
205AC_DEFUN([WINE_WARNING_WITH],[AS_IF([$2],[case "x$with_$1" in
206 x) WINE_WARNING([$3]) ;;
207 xno) ;;
208 *) AC_MSG_ERROR([$3
209This is an error since --with-$1 was requested.]) ;;
210esac])])
Alexandre Julliard8d8c5c62007-07-10 15:05:40 +0200211
Alexandre Julliard76adea12008-05-21 14:48:33 +0200212AC_DEFUN([WINE_ERROR_WITH],[AS_IF([$2],[case "x$with_$1" in
213 xno) ;;
214 *) AC_MSG_ERROR([$3
215Use the --without-$1 option if you really want this.]) ;;
216esac])])
217
Alexandre Julliard8d8c5c62007-07-10 15:05:40 +0200218AC_DEFUN([WINE_PRINT_MESSAGES],[ac_save_IFS="$IFS"
Alexandre Julliarda41f0f12008-01-07 14:51:44 +0100219if test "x$wine_notices != "x; then
220 echo >&AS_MESSAGE_FD
Rafał Mużyło4736c992008-10-20 21:43:21 +0200221 IFS="|"
Alexandre Julliard8d8c5c62007-07-10 15:05:40 +0200222 for msg in $wine_notices; do
Rafał Mużyło4736c992008-10-20 21:43:21 +0200223 IFS="$ac_save_IFS"
Alexandre Julliard8d8c5c62007-07-10 15:05:40 +0200224 if test -n "$msg"; then
Alexandre Julliard8d8c5c62007-07-10 15:05:40 +0200225 AC_MSG_NOTICE([$msg])
226 fi
227 done
228fi
Rafał Mużyło4736c992008-10-20 21:43:21 +0200229IFS="|"
Alexandre Julliard8d8c5c62007-07-10 15:05:40 +0200230for msg in $wine_warnings; do
Rafał Mużyło4736c992008-10-20 21:43:21 +0200231 IFS="$ac_save_IFS"
Alexandre Julliard8d8c5c62007-07-10 15:05:40 +0200232 if test -n "$msg"; then
233 echo >&2
234 AC_MSG_WARN([$msg])
235 fi
236done
237IFS="$ac_save_IFS"])
238
Alexandre Julliard446befb2007-07-02 13:41:36 +0200239dnl Local Variables:
240dnl compile-command: "autoreconf --warnings=all"
241dnl End: