configure: Check for __builtin_ms_va_list on all x86_64 platforms.
[wine.git] / aclocal.m4
blobf4d742407c2a20bea63827adb22284ae1b5e16ee
1 dnl Macros used to build the Wine configure script
2 dnl
3 dnl Copyright 2002 Alexandre Julliard
4 dnl
5 dnl This library is free software; you can redistribute it and/or
6 dnl modify it under the terms of the GNU Lesser General Public
7 dnl License as published by the Free Software Foundation; either
8 dnl version 2.1 of the License, or (at your option) any later version.
9 dnl
10 dnl This library is distributed in the hope that it will be useful,
11 dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
12 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13 dnl Lesser General Public License for more details.
14 dnl
15 dnl You should have received a copy of the GNU Lesser General Public
16 dnl License along with this library; if not, write to the Free Software
17 dnl Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
18 dnl
19 dnl As a special exception to the GNU Lesser General Public License,
20 dnl if you distribute this file as part of a program that contains a
21 dnl configuration script generated by Autoconf, you may include it
22 dnl under the same distribution terms that you use for the rest of
23 dnl that program.
25 dnl WINE_CHECK_HOST_TOOL(VARIABLE, PROG-TO-CHECK-FOR, [VALUE-IF-NOT-FOUND], [PATH])
26 dnl
27 dnl Like AC_CHECK_TOOL but without the broken fallback to non-prefixed name
28 dnl
29 AC_DEFUN([WINE_CHECK_HOST_TOOL],
30 [AS_VAR_SET_IF([ac_tool_prefix],
31   AC_CHECK_PROG([$1],[${ac_tool_prefix}$2],[${ac_tool_prefix}$2],,[$4]))
32 AS_VAR_IF([ac_cv_prog_$1],[],
33   [AS_VAR_IF([cross_compiling],[yes],[],
34     [AS_UNSET([ac_cv_prog_$1])
35      AC_CHECK_PROG([$1],[$2],[$2],[$3],[$4])])],
36 [AS_VAR_COPY([$1],[ac_cv_prog_$1])])])
38 dnl **** Initialize the programs used by other checks ****
39 dnl
40 dnl Usage: WINE_PATH_SONAME_TOOLS
41 dnl Usage: WINE_PATH_PKG_CONFIG
42 dnl
43 AC_DEFUN([WINE_PATH_SONAME_TOOLS],
44 [AC_PATH_PROG(LDD,ldd,true,/sbin:/usr/sbin:$PATH)
45 AC_CHECK_TOOL(OTOOL,otool,otool)
46 AC_CHECK_TOOL(READELF,[readelf],true)])
48 AC_DEFUN([WINE_PATH_PKG_CONFIG],
49 [WINE_CHECK_HOST_TOOL(PKG_CONFIG,[pkg-config])])
51 dnl **** Extract the soname of a library ****
52 dnl
53 dnl Usage: WINE_CHECK_SONAME(library, function, [action-if-found, [action-if-not-found, [other_libraries, [pattern]]]])
54 dnl
55 AC_DEFUN([WINE_CHECK_SONAME],
56 [AC_REQUIRE([WINE_PATH_SONAME_TOOLS])dnl
57 AS_VAR_PUSHDEF([ac_Lib],[ac_cv_lib_soname_$1])dnl
58 m4_pushdef([ac_lib_pattern],m4_default([$6],[lib$1]))dnl
59 AC_MSG_CHECKING([for -l$1])
60 AC_CACHE_VAL(ac_Lib,
61 [ac_check_soname_save_LIBS=$LIBS
62 LIBS="-l$1 $5 $LIBS"
63   AC_LINK_IFELSE([AC_LANG_CALL([], [$2])],
64   [case "$LIBEXT" in
65     dll) AS_VAR_SET(ac_Lib,[`$ac_cv_path_LDD conftest.exe | grep "$1" | sed -e "s/dll.*/dll/"';2,$d'`]) ;;
66     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'`]) ;;
67     *) AS_VAR_SET(ac_Lib,[`$READELF -d conftest$ac_exeext | grep "NEEDED.*ac_lib_pattern\\.$LIBEXT" | sed -e "s/^.*\\m4_dquote(\\(ac_lib_pattern\\.$LIBEXT[[^    ]]*\\)\\).*$/\1/"';2,$d'`])
68        AS_VAR_IF([ac_Lib],[],
69              [AS_VAR_SET(ac_Lib,[`$LDD conftest$ac_exeext | grep "ac_lib_pattern\\.$LIBEXT" | sed -e "s/^.*\(ac_lib_pattern\.$LIBEXT[[^  ]]*\).*$/\1/"';2,$d'`])]) ;;
70   esac])
71   LIBS=$ac_check_soname_save_LIBS])dnl
72 AS_VAR_IF([ac_Lib],[],
73       [AC_MSG_RESULT([not found])
74        $4],
75       [AC_MSG_RESULT(AS_VAR_GET(ac_Lib))
76        AC_DEFINE_UNQUOTED(AS_TR_CPP(SONAME_LIB$1),["]AS_VAR_GET(ac_Lib)["],
77                           [Define to the soname of the lib$1 library.])
78        $3])dnl
79 m4_popdef([ac_lib_pattern])dnl
80 AS_VAR_POPDEF([ac_Lib])])
82 dnl **** Get flags from pkg-config or alternate xxx-config program ****
83 dnl
84 dnl Usage: WINE_PACKAGE_FLAGS(var,pkg-name,[default-lib,[cflags-alternate,libs-alternate,[checks]]])
85 dnl
86 AC_DEFUN([WINE_PACKAGE_FLAGS],
87 [AC_REQUIRE([WINE_PATH_PKG_CONFIG])dnl
88 AS_VAR_PUSHDEF([ac_cflags],[[$1]_CFLAGS])dnl
89 AS_VAR_PUSHDEF([ac_libs],[[$1]_LIBS])dnl
90 AC_ARG_VAR(ac_cflags, [C compiler flags for $2, overriding pkg-config])dnl
91 AS_VAR_IF([ac_cflags],[],
92       [AS_VAR_SET_IF([PKG_CONFIG],
93       [ac_cflags=`$PKG_CONFIG --cflags [$2] 2>/dev/null`])])
94 m4_ifval([$4],[test "$cross_compiling" = yes || ac_cflags=[$]{ac_cflags:-[$4]}])
95 AC_ARG_VAR(ac_libs, [Linker flags for $2, overriding pkg-config])dnl
96 AS_VAR_IF([ac_libs],[],
97       [AS_VAR_SET_IF([PKG_CONFIG],
98       [ac_libs=`$PKG_CONFIG --libs [$2] 2>/dev/null`])])
99 m4_ifval([$5],[test "$cross_compiling" = yes || ac_libs=[$]{ac_libs:-[$5]}])
100 m4_ifval([$3],[ac_libs=[$]{ac_libs:-"$3"}])
101 AS_ECHO(["$as_me:${as_lineno-$LINENO}: $2 cflags: $ac_cflags"]) >&AS_MESSAGE_LOG_FD
102 AS_ECHO(["$as_me:${as_lineno-$LINENO}: $2 libs: $ac_libs"]) >&AS_MESSAGE_LOG_FD
103 ac_save_CPPFLAGS=$CPPFLAGS
104 CPPFLAGS="$CPPFLAGS $ac_cflags"
106 CPPFLAGS=$ac_save_CPPFLAGS
107 test -z "$ac_cflags" || ac_cflags=`echo " $ac_cflags" | sed 's/ -I\([[^/]]\)/ -I\$(top_builddir)\/\1/g'`
108 test -z "$ac_libs" || ac_libs=`echo " $ac_libs" | sed 's/ -L\([[^/]]\)/ -L\$(top_builddir)\/\1/g'`
109 AS_VAR_POPDEF([ac_libs])dnl
110 AS_VAR_POPDEF([ac_cflags])])dnl
112 dnl **** Link C code with an assembly file ****
114 dnl Usage: WINE_TRY_ASM_LINK(asm-code,includes,function,[action-if-found,[action-if-not-found]])
116 AC_DEFUN([WINE_TRY_ASM_LINK],
117 [AC_LINK_IFELSE([AC_LANG_PROGRAM([[$2]],[[asm($1); $3]])],[$4],[$5])])
119 dnl **** Check if we can link an empty program with special CFLAGS ****
121 dnl Usage: WINE_TRY_CFLAGS(flags,[action-if-yes,[action-if-no]])
123 dnl The default action-if-yes is to append the flags to EXTRACFLAGS.
125 AC_DEFUN([WINE_TRY_CFLAGS],
126 [AS_VAR_PUSHDEF([ac_var], ac_cv_cflags_[[$1]])dnl
127 AC_CACHE_CHECK([whether the compiler supports $1], ac_var,
128 [ac_wine_try_cflags_saved=$CFLAGS
129 CFLAGS="$CFLAGS $1"
130 AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(int argc, char **argv) { return 0; }]])],
131                [AS_VAR_SET(ac_var,yes)], [AS_VAR_SET(ac_var,no)])
132 CFLAGS=$ac_wine_try_cflags_saved])
133 AS_VAR_IF([ac_var],[yes],[m4_default([$2], [EXTRACFLAGS="$EXTRACFLAGS $1"])], [$3])dnl
134 AS_VAR_POPDEF([ac_var])])
136 dnl **** Check if we can link an empty shared lib (no main) with special CFLAGS ****
138 dnl Usage: WINE_TRY_SHLIB_FLAGS(flags,[action-if-yes,[action-if-no]])
140 AC_DEFUN([WINE_TRY_SHLIB_FLAGS],
141 [ac_wine_try_cflags_saved=$CFLAGS
142 CFLAGS="$CFLAGS $1"
143 AC_LINK_IFELSE([AC_LANG_SOURCE([void myfunc() {}])],[$2],[$3])
144 CFLAGS=$ac_wine_try_cflags_saved])
146 dnl **** Check whether we need to define a symbol on the compiler command line ****
148 dnl Usage: WINE_CHECK_DEFINE(name),[action-if-yes,[action-if-no]])
150 AC_DEFUN([WINE_CHECK_DEFINE],
151 [AS_VAR_PUSHDEF([ac_var],[ac_cv_cpp_def_$1])dnl
152 AC_CACHE_CHECK([whether we need to define $1],ac_var,
153     AC_EGREP_CPP(yes,[#ifndef $1
155 #endif],
156     [AS_VAR_SET(ac_var,yes)],[AS_VAR_SET(ac_var,no)]))
157 AS_VAR_IF([ac_var],[yes],
158       [CFLAGS="$CFLAGS -D$1"
159   LINTFLAGS="$LINTFLAGS -D$1"])dnl
160 AS_VAR_POPDEF([ac_var])])
162 dnl **** Check for functions with some extra libraries ****
164 dnl Usage: WINE_CHECK_LIB_FUNCS(funcs,libs,[action-if-found,[action-if-not-found]])
166 AC_DEFUN([WINE_CHECK_LIB_FUNCS],
167 [ac_wine_check_funcs_save_LIBS="$LIBS"
168 LIBS="$LIBS $2"
169 AC_CHECK_FUNCS([$1],[$3],[$4])
170 LIBS="$ac_wine_check_funcs_save_LIBS"])
172 dnl **** Check for a mingw program, trying the various mingw prefixes ****
174 dnl Usage: WINE_CHECK_MINGW_PROG(variable,[value-if-not-found],[path])
176 AC_DEFUN([WINE_CHECK_MINGW_PROG],
177 [case "$host_cpu" in
178   arm*)
179     ac_prefix_list="armv7-w64-mingw32-clang armv7-w64-mingw32-gcc" ;;
180   i[[3456789]]86*)
181     ac_prefix_list="m4_foreach([ac_wine_prefix],[w64-mingw32, pc-mingw32, mingw32msvc, mingw32],
182                         m4_foreach([ac_wine_cpu],[i686,i586,i486,i386],[ac_wine_cpu-ac_wine_prefix-gcc ]))
183                      m4_foreach([ac_wine_cpu],[i686,i586,i486,i386],[ac_wine_cpu-w64-mingw32-clang ])
184                      mingw32-gcc" ;;
185   x86_64)
186     ac_prefix_list="m4_foreach([ac_wine_prefix],[pc-mingw32, w64-mingw32, mingw32msvc],
187                         m4_foreach([ac_wine_cpu],[x86_64,amd64],[ac_wine_cpu-ac_wine_prefix-gcc ]))
188                     m4_foreach([ac_wine_cpu],[x86_64,amd64],[ac_wine_cpu-w64-mingw32-clang ])" ;;
189   *)
190     ac_prefix_list="" ;;
191 esac
192 AC_CHECK_PROGS([$1],[$ac_prefix_list],[$2],[$3])])
195 dnl **** Define helper functions for creating config.status files ****
197 dnl Usage: AC_REQUIRE([WINE_CONFIG_HELPERS])
199 AC_DEFUN([WINE_CONFIG_HELPERS],
200 [wine_rules_file=conf$$rules.make
201 rm -f $wine_rules_file
202 AC_SUBST(SUBDIRS,"")
203 AC_SUBST(DISABLED_SUBDIRS,"")
204 AC_SUBST(CONFIGURE_TARGETS,"")
205 AC_SUBST(ALL_TEST_RESOURCES,"")
207 wine_fn_append_file ()
209     AS_VAR_APPEND($[1]," \\$as_nl       $[2]")
212 wine_fn_append_rule ()
214     AS_ECHO("$[1]") >>$wine_rules_file
217 wine_fn_has_flag ()
219     expr ",$ac_flags," : ".*,$[1],.*" >/dev/null
222 wine_fn_all_rules ()
224     wine_fn_append_file SUBDIRS $ac_dir
225     wine_fn_append_rule \
226 "all: $ac_dir
227 .PHONY: $ac_dir
228 $ac_dir: dummy
229         @cd $ac_dir && \$(MAKE)"
232 wine_fn_install_rules ()
234     wine_fn_has_flag install-lib || wine_fn_has_flag install-dev || return
236     wine_fn_append_rule \
237 ".PHONY: $ac_dir/install $ac_dir/uninstall
238 $ac_dir/install:: $ac_dir
239         @cd $ac_dir && \$(MAKE) install
240 $ac_dir/uninstall::
241         @cd $ac_dir && \$(MAKE) uninstall
242 install:: $ac_dir/install
243 __uninstall__: $ac_dir/uninstall"
245     if wine_fn_has_flag install-lib
246     then
247         wine_fn_append_rule \
248 ".PHONY: $ac_dir/install-lib
249 $ac_dir/install-lib:: $ac_dir
250         @cd $ac_dir && \$(MAKE) install-lib
251 install-lib:: $ac_dir/install-lib"
252     fi
254     if wine_fn_has_flag install-dev
255     then
256         wine_fn_append_rule \
257 ".PHONY: $ac_dir/install-dev
258 $ac_dir/install-dev:: $ac_dir
259         @cd $ac_dir && \$(MAKE) install-dev
260 install-dev:: $ac_dir/install-dev"
261     fi
264 wine_fn_clean_rules ()
266     ac_clean=$[@]
268     if wine_fn_has_flag clean
269     then
270         wine_fn_append_rule \
271 "$ac_dir/clean: dummy
272         @cd $ac_dir && \$(MAKE) clean"
273     else
274         wine_fn_append_rule \
275 "$ac_dir/clean: dummy
276         \$(RM) \$(CLEAN_FILES:%=$ac_dir/%) $ac_clean"
277     fi
278         wine_fn_append_rule \
279 "__clean__: $ac_dir/clean
280 .PHONY: $ac_dir/clean"
283 wine_fn_disabled_rules ()
285     ac_clean=$[@]
287     wine_fn_append_file SUBDIRS $ac_dir
288     wine_fn_append_file DISABLED_SUBDIRS $ac_dir
289     wine_fn_append_rule \
290 "__clean__: $ac_dir/clean
291 .PHONY: $ac_dir/clean
292 $ac_dir/clean: dummy
293         \$(RM) \$(CLEAN_FILES:%=$ac_dir/%) $ac_clean"
296 wine_fn_config_makefile ()
298     ac_dir=$[1]
299     ac_enable=$[2]
300     ac_flags=$[3]
302     AS_VAR_IF([$ac_enable],[no],[wine_fn_disabled_rules; return])
303     wine_fn_all_rules
304     wine_fn_install_rules
305     wine_fn_clean_rules
308 wine_fn_config_lib ()
310     ac_name=$[1]
311     ac_flags=$[2]
312     ac_dir=dlls/$ac_name
313     ac_deps="include"
315     AS_VAR_IF([enable_tools],[no],,[ac_deps="tools/widl tools/winebuild tools/winegcc $ac_deps"])
316     wine_fn_all_rules
317     wine_fn_clean_rules
319     wine_fn_append_rule \
320 ".PHONY: $ac_dir/install $ac_dir/uninstall
321 $ac_dir/install:: $ac_dir
322         \$(INSTALL_DATA) $ac_dir/lib$ac_name.a \$(DESTDIR)\$(dlldir)/lib$ac_name.a
323 $ac_dir/uninstall::
324         \$(RM) \$(DESTDIR)\$(dlldir)/lib$ac_name.a
325 install install-dev:: $ac_dir/install
326 __uninstall__: $ac_dir/uninstall
327 __builddeps__: $ac_dir
328 $ac_dir: $ac_deps"
331 wine_fn_config_dll ()
333     ac_name=$[1]
334     ac_dir=dlls/$ac_name
335     ac_enable=$[2]
336     ac_flags=$[3]
337     ac_implib=${4:-$ac_name}
338     ac_file=$ac_dir/lib$ac_implib
339     ac_dll=$ac_name
340     ac_deps="include"
341     ac_implibflags=""
343     AS_VAR_IF([enable_tools],[no],,[ac_deps="tools/widl tools/winebuild tools/winegcc $ac_deps"])
344     case $ac_name in
345       *16) ac_implibflags=" -m16" ;;
346       *.*) ;;
347       *)   ac_dll=$ac_dll.dll ;;
348     esac
350     ac_clean=
351     wine_fn_has_flag implib && ac_clean="$ac_clean $ac_file.$IMPLIBEXT"
352     test -n "$DLLEXT" || ac_clean="$ac_clean $ac_dir/$ac_dll"
354     AS_VAR_IF([$ac_enable],[no],
355               dnl enable_win16 is special in that it disables import libs too
356               [if test "$ac_enable" != enable_win16
357                then
358                    wine_fn_clean_rules $ac_clean
359                    wine_fn_append_file SUBDIRS $ac_dir
360                    wine_fn_append_file DISABLED_SUBDIRS $ac_dir
361                else
362                    wine_fn_disabled_rules $ac_clean
363                    return
364                fi],
366               [wine_fn_all_rules
367                wine_fn_clean_rules $ac_clean
368                wine_fn_append_rule \
369 "$ac_dir: __builddeps__
370 manpages htmlpages sgmlpages xmlpages::
371         @cd $ac_dir && \$(MAKE) \$[@]
372 .PHONY: $ac_dir/install-lib $ac_dir/uninstall
373 install install-lib:: $ac_dir/install-lib
374 __uninstall__: $ac_dir/uninstall"
375                 if test -n "$DLLEXT"
376                 then
377                     wine_fn_append_rule \
378 "$ac_dir/install-lib:: $ac_dir
379         \$(INSTALL_PROGRAM) $ac_dir/$ac_dll$DLLEXT \$(DESTDIR)\$(dlldir)/$ac_dll$DLLEXT
380         \$(INSTALL_DATA) $ac_dir/$ac_dll.fake \$(DESTDIR)\$(fakedlldir)/$ac_dll
381 $ac_dir/uninstall::
382         \$(RM) \$(DESTDIR)\$(dlldir)/$ac_dll$DLLEXT \$(DESTDIR)\$(fakedlldir)/$ac_dll"
383                 else
384                     wine_fn_append_rule \
385 "$ac_dir/install-lib:: $ac_dir
386         \$(INSTALL_PROGRAM) $ac_dir/$ac_dll \$(DESTDIR)\$(dlldir)/$ac_dll
387 $ac_dir/uninstall::
388         \$(RM) \$(DESTDIR)\$(dlldir)/$ac_dll"
389                 fi])
391     if wine_fn_has_flag staticimplib
392     then
393         wine_fn_append_rule \
394 "__builddeps__: $ac_file.$IMPLIBEXT $ac_file.$STATIC_IMPLIBEXT
395 $ac_file.$STATIC_IMPLIBEXT $ac_file.cross.a: $ac_deps
396 $ac_file.def: $srcdir/$ac_dir/$ac_name.spec \$(WINEBUILD)
397         \$(WINEBUILD) \$(TARGETFLAGS)$ac_implibflags -w --def -o \$[@] --export $srcdir/$ac_dir/$ac_name.spec
398 $ac_file.$STATIC_IMPLIBEXT: dummy
399         @cd $ac_dir && \$(MAKE) lib$ac_implib.$STATIC_IMPLIBEXT
400 .PHONY: $ac_dir/install-dev $ac_dir/uninstall
401 $ac_dir/install-dev:: $ac_file.$IMPLIBEXT
402         \$(INSTALL_DATA) $ac_file.$IMPLIBEXT \$(DESTDIR)\$(dlldir)/lib$ac_implib.$IMPLIBEXT
403 $ac_dir/uninstall::
404         \$(RM) \$(DESTDIR)\$(dlldir)/lib$ac_implib.$IMPLIBEXT
405 install install-dev:: $ac_dir/install-dev
406 __uninstall__: $ac_dir/uninstall"
408         if test "$IMPLIBEXT" != "$STATIC_IMPLIBEXT"
409         then
410             wine_fn_append_rule \
411 "$ac_dir/install-dev:: $ac_file.$STATIC_IMPLIBEXT __builddeps__
412         \$(INSTALL_DATA) $ac_file.$STATIC_IMPLIBEXT \$(DESTDIR)\$(dlldir)/lib$ac_implib.$STATIC_IMPLIBEXT
413 $ac_dir/uninstall::
414         \$(RM) \$(DESTDIR)\$(dlldir)/lib$ac_implib.$STATIC_IMPLIBEXT"
415         fi
417         if test -n "$CROSSTARGET" -a -z "$ac_implibflags"
418         then
419             wine_fn_append_rule \
420 "__builddeps__: $ac_file.cross.a
421 $ac_file.cross.a: dummy
422         @cd $ac_dir && \$(MAKE) lib$ac_implib.cross.a"
423         fi
425     elif wine_fn_has_flag implib
426     then
427         wine_fn_append_rule \
428 "__builddeps__: $ac_file.$IMPLIBEXT
429 $ac_file.def: $srcdir/$ac_dir/$ac_name.spec \$(WINEBUILD)
430         \$(WINEBUILD) \$(TARGETFLAGS)$ac_implibflags -w --def -o \$[@] --export $srcdir/$ac_dir/$ac_name.spec
431 $ac_file.a: $srcdir/$ac_dir/$ac_name.spec \$(WINEBUILD)
432         \$(WINEBUILD) \$(TARGETFLAGS)$ac_implibflags -w --implib -o \$[@] --export $srcdir/$ac_dir/$ac_name.spec
433 .PHONY: $ac_dir/install-dev $ac_dir/uninstall
434 $ac_dir/install-dev:: $ac_file.$IMPLIBEXT
435         \$(INSTALL_DATA) $ac_file.$IMPLIBEXT \$(DESTDIR)\$(dlldir)/lib$ac_implib.$IMPLIBEXT
436 $ac_dir/uninstall::
437         \$(RM) \$(DESTDIR)\$(dlldir)/lib$ac_implib.$IMPLIBEXT
438 install install-dev:: $ac_dir/install-dev
439 __uninstall__: $ac_dir/uninstall"
440         if test -n "$CROSSTARGET" -a -z "$ac_implibflags"
441         then
442             wine_fn_append_rule \
443 "__builddeps__: $ac_file.cross.a
444 $ac_file.cross.a: $srcdir/$ac_dir/$ac_name.spec \$(WINEBUILD)
445         \$(WINEBUILD) \$(CROSSTARGET:%=-b %)$ac_implibflags -w --implib -o \$[@] --export $srcdir/$ac_dir/$ac_name.spec"
446         fi
447     fi
450 wine_fn_config_program ()
452     ac_name=$[1]
453     ac_dir=programs/$ac_name
454     ac_enable=$[2]
455     ac_flags=$[3]
456     ac_program=$ac_name
458     case $ac_name in
459       *.*) ;;
460       *)   ac_program=$ac_program.exe ;;
461     esac
463     ac_clean=
464     wine_fn_has_flag manpage && ac_clean="$ac_clean $ac_dir/$ac_name.man"
465     test -n "$DLLEXT" || ac_clean="$ac_clean $ac_dir/$ac_program"
467     AS_VAR_IF([$ac_enable],[no],[wine_fn_disabled_rules $ac_clean; return])
469     wine_fn_all_rules
470     wine_fn_clean_rules $ac_clean
471     wine_fn_append_rule "$ac_dir: __builddeps__"
473     wine_fn_has_flag install || return
474     wine_fn_append_rule \
475 ".PHONY: $ac_dir/install $ac_dir/uninstall
476 install install-lib:: $ac_dir/install
477 __uninstall__: $ac_dir/uninstall"
479     if test -n "$DLLEXT"
480     then
481         wine_fn_append_rule \
482 "$ac_dir/install:: $ac_dir
483         \$(INSTALL_PROGRAM) $ac_dir/$ac_program$DLLEXT \$(DESTDIR)\$(dlldir)/$ac_program$DLLEXT
484         \$(INSTALL_DATA) $ac_dir/$ac_program.fake \$(DESTDIR)\$(fakedlldir)/$ac_program
485 $ac_dir/uninstall::
486         \$(RM) \$(DESTDIR)\$(dlldir)/$ac_program$DLLEXT \$(DESTDIR)\$(fakedlldir)/$ac_program"
488         if test -z "$with_wine64" && wine_fn_has_flag installbin
489         then
490             wine_fn_append_rule \
491 "$ac_dir/install:: __tooldeps__
492         \$(INSTALL_SCRIPT) \$(TOOLSDIR)/tools/wineapploader \$(DESTDIR)\$(bindir)/$ac_name
493 $ac_dir/uninstall::
494         \$(RM) \$(DESTDIR)\$(bindir)/$ac_name"
495         fi
496     else
497         wine_fn_append_rule \
498 "$ac_dir/install:: $ac_dir
499         \$(INSTALL_PROGRAM) $ac_dir/$ac_program \$(DESTDIR)\$(bindir)/$ac_program
500 $ac_dir/uninstall::
501         \$(RM) \$(DESTDIR)\$(bindir)/$ac_program"
502     fi
504     if test -z "$with_wine64" && wine_fn_has_flag manpage
505     then
506         wine_fn_append_rule \
507 "$ac_dir/install:: $ac_dir
508         \$(INSTALL_DATA) $ac_dir/$ac_name.man \$(DESTDIR)\$(mandir)/man\$(prog_manext)/$ac_name.\$(prog_manext)
509 $ac_dir/uninstall::
510         \$(RM) \$(DESTDIR)\$(mandir)/man\$(prog_manext)/$ac_name.\$(prog_manext)"
511     fi
514 wine_fn_config_test ()
516     ac_dir=$[1]
517     ac_name=$[2]
518     ac_flags=$[3]
520     ac_clean=
521     test -n "$CROSSTARGET" && ac_clean=`expr $ac_dir/${ac_name} : "\\(.*\\)_test"`_crosstest.exe
522     test -n "$DLLEXT" || ac_clean="$ac_dir/${ac_name}.exe $ac_dir/${ac_name}-stripped.exe"
524     AS_VAR_IF([enable_tests],[no],[wine_fn_disabled_rules $ac_clean; return])
526     wine_fn_append_file ALL_TEST_RESOURCES $ac_name.res
527     wine_fn_all_rules
528     wine_fn_clean_rules $ac_clean
530     wine_fn_append_rule \
531 "$ac_dir: __builddeps__
532 programs/winetest: $ac_dir
533 check test: $ac_dir/test
534 .PHONY: $ac_dir/test
535 $ac_dir/test: dummy
536         @cd $ac_dir && \$(MAKE) test
537 testclean::
538         \$(RM) $ac_dir/*.ok"
540         if test -n "$CROSSTARGET"
541         then
542             wine_fn_append_rule \
543 "crosstest: $ac_dir/crosstest
544 .PHONY: $ac_dir/crosstest
545 $ac_dir/crosstest: __builddeps__ dummy
546         @cd $ac_dir && \$(MAKE) crosstest"
547         fi
550 wine_fn_config_tool ()
552     ac_dir=$[1]
553     ac_flags=$[2]
554     AS_VAR_IF([enable_tools],[no],[wine_fn_append_file DISABLED_SUBDIRS $ac_dir; return])
556     wine_fn_all_rules
557     wine_fn_install_rules
558     wine_fn_clean_rules
560     wine_fn_append_rule "__tooldeps__: $ac_dir"
561     wine_fn_append_rule "$ac_dir: libs/port"
562     case $ac_dir in
563       tools/winebuild) wine_fn_append_rule "\$(WINEBUILD): $ac_dir" ;;
564     esac
567 wine_fn_config_symlink ()
569     ac_linkdir=
570     if test "x$[1]" = "x-d"
571     then
572         ac_linkdir=$[2]
573         shift; shift
574     fi
575     ac_links=$[@]
576     wine_fn_append_rule \
577 "$ac_links:
578         @./config.status \$[@]"
579     for f in $ac_links; do wine_fn_append_file CONFIGURE_TARGETS $f; done
580     test -n "$ac_linkdir" || return
581     wine_fn_append_rule "$ac_linkdir/depend: $ac_links"
584 dnl **** Define helper function to append a file to a makefile file list ****
586 dnl Usage: WINE_APPEND_FILE(var,file)
588 AC_DEFUN([WINE_APPEND_FILE],[AC_REQUIRE([WINE_CONFIG_HELPERS])wine_fn_append_file $1 "$2"])
590 dnl **** Define helper function to append a rule to a makefile command list ****
592 dnl Usage: WINE_APPEND_RULE(rule)
594 AC_DEFUN([WINE_APPEND_RULE],[AC_REQUIRE([WINE_CONFIG_HELPERS])wine_fn_append_rule "$1"])
596 dnl **** Create symlinks from config.status ****
598 dnl Usage: WINE_CONFIG_SYMLINK(target,src,files,enable,srcfile)
600 AC_DEFUN([WINE_CONFIG_SYMLINK],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
601 m4_ifval([$4],[if test "x$[$4]" != xno; then
602 ])m4_foreach([f],[$3],
603 [AC_CONFIG_LINKS(m4_ifval([$1],[$1/])f[:]m4_ifval([$2],[$2/])m4_ifval([$5],[$5],f))])dnl
604 m4_if([$1],[$2],[test "$srcdir" = "." || ])dnl
605 wine_fn_config_symlink[]m4_if([$1],[$2],,m4_ifval([$1],[ -d $1]))[]m4_foreach([f],[$3],[ ]m4_ifval([$1],[$1/])f)m4_ifval([$4],[
606 fi])[]dnl
607 ])])
609 dnl **** Create a makefile from config.status ****
611 dnl Usage: WINE_CONFIG_MAKEFILE(file,enable,flags)
613 AC_DEFUN([WINE_CONFIG_MAKEFILE],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
614 AS_VAR_PUSHDEF([ac_enable],m4_default([$2],[enable_]$1))dnl
615 m4_append_uniq([_AC_USER_OPTS],ac_enable,[
616 ])dnl
617 wine_fn_config_makefile [$1] ac_enable [$3]dnl
618 AS_VAR_POPDEF([ac_enable])])
620 dnl **** Create a dll makefile from config.status ****
622 dnl Usage: WINE_CONFIG_DLL(name,enable,flags,implib)
624 AC_DEFUN([WINE_CONFIG_DLL],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
625 AS_VAR_PUSHDEF([ac_enable],m4_default([$2],[enable_]$1))dnl
626 m4_append_uniq([_AC_USER_OPTS],ac_enable,[
627 ])dnl
628 wine_fn_config_dll [$1] ac_enable [$3] [$4]dnl
629 AS_VAR_POPDEF([ac_enable])])
631 dnl **** Create a program makefile from config.status ****
633 dnl Usage: WINE_CONFIG_PROGRAM(name,enable,flags)
635 AC_DEFUN([WINE_CONFIG_PROGRAM],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
636 AS_VAR_PUSHDEF([ac_enable],m4_default([$2],[enable_]$1))dnl
637 m4_append_uniq([_AC_USER_OPTS],ac_enable,[
638 ])dnl
639 wine_fn_config_program [$1] ac_enable [$3]dnl
640 AS_VAR_POPDEF([ac_enable])])
642 dnl **** Create a test makefile from config.status ****
644 dnl Usage: WINE_CONFIG_TEST(dir,flags)
646 AC_DEFUN([WINE_CONFIG_TEST],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
647 m4_pushdef([ac_suffix],m4_if(m4_substr([$1],0,9),[programs/],[.exe_test],[_test]))dnl
648 m4_pushdef([ac_name],[m4_bpatsubst([$1],[.*/\(.*\)/tests$],[\1])])dnl
649 wine_fn_config_test $1 ac_name[]ac_suffix [$2]dnl
650 m4_popdef([ac_suffix])dnl
651 m4_popdef([ac_name])])
653 dnl **** Create a static lib makefile from config.status ****
655 dnl Usage: WINE_CONFIG_LIB(name,flags)
657 AC_DEFUN([WINE_CONFIG_LIB],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
658 wine_fn_config_lib [$1] [$2]])
660 dnl **** Create a tool makefile from config.status ****
662 dnl Usage: WINE_CONFIG_TOOL(name,flags)
664 AC_DEFUN([WINE_CONFIG_TOOL],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
665 m4_append_uniq([_AC_USER_OPTS],[enable_tools],[
666 ])dnl
667 wine_fn_config_tool [$1] [$2]])
669 dnl **** Append a file to the .gitignore list ****
671 dnl Usage: WINE_IGNORE_FILE(file,enable)
673 AC_DEFUN([WINE_IGNORE_FILE],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
674 m4_ifval([$2],[test "x$[$2]" = xno || ])wine_fn_append_file CONFIGURE_TARGETS $1])
676 dnl **** Add a message to the list displayed at the end ****
678 dnl Usage: WINE_NOTICE(notice)
679 dnl Usage: WINE_NOTICE_WITH(with_flag, test, notice)
680 dnl Usage: WINE_WARNING(warning)
681 dnl Usage: WINE_WARNING_WITH(with_flag, test, warning)
682 dnl Usage: WINE_PRINT_MESSAGES
684 AC_DEFUN([WINE_NOTICE],[AS_VAR_APPEND([wine_notices],["|$1"])])
685 AC_DEFUN([WINE_WARNING],[AS_VAR_APPEND([wine_warnings],["|$1"])])
687 AC_DEFUN([WINE_NOTICE_WITH],[AS_IF([$2],[case "x$with_$1" in
688   x)   WINE_NOTICE([$3]) ;;
689   xno) ;;
690   *)   AC_MSG_ERROR([$3
691 This is an error since --with-$1 was requested.]) ;;
692 esac])])
694 AC_DEFUN([WINE_WARNING_WITH],[AS_IF([$2],[case "x$with_$1" in
695   x)   WINE_WARNING([$3]) ;;
696   xno) ;;
697   *)   AC_MSG_ERROR([$3
698 This is an error since --with-$1 was requested.]) ;;
699 esac])])
701 AC_DEFUN([WINE_ERROR_WITH],[AS_IF([$2],[case "x$with_$1" in
702   xno) ;;
703   *)   AC_MSG_ERROR([$3
704 Use the --without-$1 option if you really want this.]) ;;
705 esac])])
707 AC_DEFUN([WINE_PRINT_MESSAGES],[ac_save_IFS="$IFS"
708 if test "x$wine_notices" != x; then
709     echo >&AS_MESSAGE_FD
710     IFS="|"
711     for msg in $wine_notices; do
712         IFS="$ac_save_IFS"
713         AS_VAR_IF([msg],[],,[AC_MSG_NOTICE([$msg])])
714     done
716 IFS="|"
717 for msg in $wine_warnings; do
718     IFS="$ac_save_IFS"
719     AS_VAR_IF([msg],[],,[echo >&2
720         AC_MSG_WARN([$msg])])
721 done
722 IFS="$ac_save_IFS"])
724 dnl Local Variables:
725 dnl compile-command: "autoreconf --warnings=all"
726 dnl End: