libwine: Don't include backwards compatibility functions on Android.
[wine.git] / aclocal.m4
blob41eb7f6717acbde74c0ae07850bfd1d800cceb90
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     case $ac_dir in
303     dnl These are created as symlinks for wow64 builds
304     fonts|server) test -z "$with_wine64" || return ;;
305     esac
306     AS_VAR_IF([$ac_enable],[no],[wine_fn_disabled_rules; return])
307     wine_fn_all_rules
308     wine_fn_install_rules
309     wine_fn_clean_rules
312 wine_fn_config_lib ()
314     ac_name=$[1]
315     ac_flags=$[2]
316     ac_dir=dlls/$ac_name
317     ac_deps="include"
319     AS_VAR_IF([enable_tools],[no],,[ac_deps="tools/widl tools/winebuild tools/winegcc $ac_deps"])
320     wine_fn_all_rules
321     wine_fn_clean_rules
323     wine_fn_append_rule \
324 ".PHONY: $ac_dir/install $ac_dir/uninstall
325 $ac_dir/install:: $ac_dir
326         \$(INSTALL_DATA) $ac_dir/lib$ac_name.a \$(DESTDIR)\$(dlldir)/lib$ac_name.a
327 $ac_dir/uninstall::
328         \$(RM) \$(DESTDIR)\$(dlldir)/lib$ac_name.a
329 install install-dev:: $ac_dir/install
330 __uninstall__: $ac_dir/uninstall
331 __builddeps__: $ac_dir
332 $ac_dir: $ac_deps"
335 wine_fn_config_dll ()
337     ac_name=$[1]
338     ac_dir=dlls/$ac_name
339     ac_enable=$[2]
340     ac_flags=$[3]
341     ac_implib=${4:-$ac_name}
342     ac_file=$ac_dir/lib$ac_implib
343     ac_dll=$ac_name
344     ac_deps="include"
345     ac_implibflags=""
347     AS_VAR_IF([enable_tools],[no],,[ac_deps="tools/widl tools/winebuild tools/winegcc $ac_deps"])
348     case $ac_name in
349       *16) ac_implibflags=" -m16" ;;
350       *.*) ;;
351       *)   ac_dll=$ac_dll.dll ;;
352     esac
354     ac_clean=
355     wine_fn_has_flag implib && ac_clean="$ac_clean $ac_file.$IMPLIBEXT"
356     test -n "$DLLEXT" || ac_clean="$ac_clean $ac_dir/$ac_dll"
358     AS_VAR_IF([$ac_enable],[no],
359               dnl enable_win16 is special in that it disables import libs too
360               [if test "$ac_enable" != enable_win16
361                then
362                    wine_fn_clean_rules $ac_clean
363                    wine_fn_append_file SUBDIRS $ac_dir
364                    wine_fn_append_file DISABLED_SUBDIRS $ac_dir
365                else
366                    wine_fn_disabled_rules $ac_clean
367                    return
368                fi],
370               [wine_fn_all_rules
371                wine_fn_clean_rules $ac_clean
372                wine_fn_append_rule \
373 "$ac_dir: __builddeps__
374 manpages htmlpages sgmlpages xmlpages::
375         @cd $ac_dir && \$(MAKE) \$[@]
376 .PHONY: $ac_dir/install-lib $ac_dir/uninstall
377 install install-lib:: $ac_dir/install-lib
378 __uninstall__: $ac_dir/uninstall"
379                 if test -n "$DLLEXT"
380                 then
381                     wine_fn_append_rule \
382 "$ac_dir/install-lib:: $ac_dir
383         \$(INSTALL_PROGRAM) $ac_dir/$ac_dll$DLLEXT \$(DESTDIR)\$(dlldir)/$ac_dll$DLLEXT
384         \$(INSTALL_DATA) $ac_dir/$ac_dll.fake \$(DESTDIR)\$(fakedlldir)/$ac_dll
385 $ac_dir/uninstall::
386         \$(RM) \$(DESTDIR)\$(dlldir)/$ac_dll$DLLEXT \$(DESTDIR)\$(fakedlldir)/$ac_dll"
387                 else
388                     wine_fn_append_rule \
389 "$ac_dir/install-lib:: $ac_dir
390         \$(INSTALL_PROGRAM) $ac_dir/$ac_dll \$(DESTDIR)\$(dlldir)/$ac_dll
391 $ac_dir/uninstall::
392         \$(RM) \$(DESTDIR)\$(dlldir)/$ac_dll"
393                 fi])
395     if wine_fn_has_flag staticimplib
396     then
397         wine_fn_append_rule \
398 "__builddeps__: $ac_file.$IMPLIBEXT $ac_file.$STATIC_IMPLIBEXT
399 $ac_file.$STATIC_IMPLIBEXT $ac_file.cross.a: $ac_deps
400 $ac_file.def: $srcdir/$ac_dir/$ac_name.spec \$(WINEBUILD)
401         \$(WINEBUILD) \$(TARGETFLAGS)$ac_implibflags -w --def -o \$[@] --export $srcdir/$ac_dir/$ac_name.spec
402 $ac_file.$STATIC_IMPLIBEXT: dummy
403         @cd $ac_dir && \$(MAKE) lib$ac_implib.$STATIC_IMPLIBEXT
404 .PHONY: $ac_dir/install-dev $ac_dir/uninstall
405 $ac_dir/install-dev:: $ac_file.$IMPLIBEXT
406         \$(INSTALL_DATA) $ac_file.$IMPLIBEXT \$(DESTDIR)\$(dlldir)/lib$ac_implib.$IMPLIBEXT
407 $ac_dir/uninstall::
408         \$(RM) \$(DESTDIR)\$(dlldir)/lib$ac_implib.$IMPLIBEXT
409 install install-dev:: $ac_dir/install-dev
410 __uninstall__: $ac_dir/uninstall"
412         if test "$IMPLIBEXT" != "$STATIC_IMPLIBEXT"
413         then
414             wine_fn_append_rule \
415 "$ac_dir/install-dev:: $ac_file.$STATIC_IMPLIBEXT __builddeps__
416         \$(INSTALL_DATA) $ac_file.$STATIC_IMPLIBEXT \$(DESTDIR)\$(dlldir)/lib$ac_implib.$STATIC_IMPLIBEXT
417 $ac_dir/uninstall::
418         \$(RM) \$(DESTDIR)\$(dlldir)/lib$ac_implib.$STATIC_IMPLIBEXT"
419         fi
421         if test -n "$CROSSTARGET" -a -z "$ac_implibflags"
422         then
423             wine_fn_append_rule \
424 "__builddeps__: $ac_file.cross.a
425 $ac_file.cross.a: dummy
426         @cd $ac_dir && \$(MAKE) lib$ac_implib.cross.a"
427         fi
429     elif wine_fn_has_flag implib
430     then
431         wine_fn_append_rule \
432 "__builddeps__: $ac_file.$IMPLIBEXT
433 $ac_file.def: $srcdir/$ac_dir/$ac_name.spec \$(WINEBUILD)
434         \$(WINEBUILD) \$(TARGETFLAGS)$ac_implibflags -w --def -o \$[@] --export $srcdir/$ac_dir/$ac_name.spec
435 $ac_file.a: $srcdir/$ac_dir/$ac_name.spec \$(WINEBUILD)
436         \$(WINEBUILD) \$(TARGETFLAGS)$ac_implibflags -w --implib -o \$[@] --export $srcdir/$ac_dir/$ac_name.spec
437 .PHONY: $ac_dir/install-dev $ac_dir/uninstall
438 $ac_dir/install-dev:: $ac_file.$IMPLIBEXT
439         \$(INSTALL_DATA) $ac_file.$IMPLIBEXT \$(DESTDIR)\$(dlldir)/lib$ac_implib.$IMPLIBEXT
440 $ac_dir/uninstall::
441         \$(RM) \$(DESTDIR)\$(dlldir)/lib$ac_implib.$IMPLIBEXT
442 install install-dev:: $ac_dir/install-dev
443 __uninstall__: $ac_dir/uninstall"
444         if test -n "$CROSSTARGET" -a -z "$ac_implibflags"
445         then
446             wine_fn_append_rule \
447 "__builddeps__: $ac_file.cross.a
448 $ac_file.cross.a: $srcdir/$ac_dir/$ac_name.spec \$(WINEBUILD)
449         \$(WINEBUILD) \$(CROSSTARGET:%=-b %)$ac_implibflags -w --implib -o \$[@] --export $srcdir/$ac_dir/$ac_name.spec"
450         fi
451     fi
454 wine_fn_config_program ()
456     ac_name=$[1]
457     ac_dir=programs/$ac_name
458     ac_enable=$[2]
459     ac_flags=$[3]
460     ac_program=$ac_name
462     case $ac_name in
463       *.*) ;;
464       *)   ac_program=$ac_program.exe ;;
465     esac
467     ac_clean=
468     wine_fn_has_flag manpage && ac_clean="$ac_clean $ac_dir/$ac_name.man"
469     test -n "$DLLEXT" || ac_clean="$ac_clean $ac_dir/$ac_program"
471     AS_VAR_IF([$ac_enable],[no],[wine_fn_disabled_rules $ac_clean; return])
473     wine_fn_all_rules
474     wine_fn_clean_rules $ac_clean
475     wine_fn_append_rule "$ac_dir: __builddeps__"
477     wine_fn_has_flag install || return
478     wine_fn_append_rule \
479 ".PHONY: $ac_dir/install $ac_dir/uninstall
480 install install-lib:: $ac_dir/install
481 __uninstall__: $ac_dir/uninstall"
483     if test -n "$DLLEXT"
484     then
485         wine_fn_append_rule \
486 "$ac_dir/install:: $ac_dir
487         \$(INSTALL_PROGRAM) $ac_dir/$ac_program$DLLEXT \$(DESTDIR)\$(dlldir)/$ac_program$DLLEXT
488         \$(INSTALL_DATA) $ac_dir/$ac_program.fake \$(DESTDIR)\$(fakedlldir)/$ac_program
489 $ac_dir/uninstall::
490         \$(RM) \$(DESTDIR)\$(dlldir)/$ac_program$DLLEXT \$(DESTDIR)\$(fakedlldir)/$ac_program"
492         if test -z "$with_wine64" && wine_fn_has_flag installbin
493         then
494             wine_fn_append_rule \
495 "$ac_dir/install:: __tooldeps__
496         \$(INSTALL_SCRIPT) \$(TOOLSDIR)/tools/wineapploader \$(DESTDIR)\$(bindir)/$ac_name
497 $ac_dir/uninstall::
498         \$(RM) \$(DESTDIR)\$(bindir)/$ac_name"
499         fi
500     else
501         wine_fn_append_rule \
502 "$ac_dir/install:: $ac_dir
503         \$(INSTALL_PROGRAM) $ac_dir/$ac_program \$(DESTDIR)\$(bindir)/$ac_program
504 $ac_dir/uninstall::
505         \$(RM) \$(DESTDIR)\$(bindir)/$ac_program"
506     fi
508     if test -z "$with_wine64" && wine_fn_has_flag manpage
509     then
510         wine_fn_append_rule \
511 "$ac_dir/install:: $ac_dir
512         \$(INSTALL_DATA) $ac_dir/$ac_name.man \$(DESTDIR)\$(mandir)/man\$(prog_manext)/$ac_name.\$(prog_manext)
513 $ac_dir/uninstall::
514         \$(RM) \$(DESTDIR)\$(mandir)/man\$(prog_manext)/$ac_name.\$(prog_manext)"
515     fi
518 wine_fn_config_test ()
520     ac_dir=$[1]
521     ac_name=$[2]
522     ac_flags=$[3]
524     ac_clean=
525     test -n "$CROSSTARGET" && ac_clean=`expr $ac_dir/${ac_name} : "\\(.*\\)_test"`_crosstest.exe
526     test -n "$DLLEXT" || ac_clean="$ac_dir/${ac_name}.exe $ac_dir/${ac_name}-stripped.exe"
528     AS_VAR_IF([enable_tests],[no],[wine_fn_disabled_rules $ac_clean; return])
530     wine_fn_append_file ALL_TEST_RESOURCES $ac_name.res
531     wine_fn_all_rules
532     wine_fn_clean_rules $ac_clean
534     wine_fn_append_rule \
535 "$ac_dir: __builddeps__
536 programs/winetest: $ac_dir
537 check test: $ac_dir/test
538 .PHONY: $ac_dir/test
539 $ac_dir/test: dummy
540         @cd $ac_dir && \$(MAKE) test
541 testclean::
542         \$(RM) $ac_dir/*.ok"
544         if test -n "$CROSSTARGET"
545         then
546             wine_fn_append_rule \
547 "crosstest: $ac_dir/crosstest
548 .PHONY: $ac_dir/crosstest
549 $ac_dir/crosstest: __builddeps__ dummy
550         @cd $ac_dir && \$(MAKE) crosstest"
551         fi
554 wine_fn_config_tool ()
556     ac_dir=$[1]
557     ac_flags=$[2]
558     AS_VAR_IF([enable_tools],[no],[wine_fn_append_file DISABLED_SUBDIRS $ac_dir; return])
560     wine_fn_all_rules
561     wine_fn_install_rules
562     wine_fn_clean_rules
564     wine_fn_append_rule "__tooldeps__: $ac_dir"
565     wine_fn_append_rule "$ac_dir: libs/port"
566     case $ac_dir in
567       tools/winebuild) wine_fn_append_rule "\$(WINEBUILD): $ac_dir" ;;
568     esac
571 wine_fn_config_symlink ()
573     ac_linkdir=
574     if test "x$[1]" = "x-d"
575     then
576         ac_linkdir=$[2]
577         shift; shift
578     fi
579     ac_links=$[@]
580     wine_fn_append_rule \
581 "$ac_links:
582         @./config.status \$[@]"
583     for f in $ac_links; do wine_fn_append_file CONFIGURE_TARGETS $f; done
584     test -n "$ac_linkdir" || return
585     wine_fn_append_rule "$ac_linkdir/depend: $ac_links"
588 dnl **** Define helper function to append a file to a makefile file list ****
590 dnl Usage: WINE_APPEND_FILE(var,file)
592 AC_DEFUN([WINE_APPEND_FILE],[AC_REQUIRE([WINE_CONFIG_HELPERS])wine_fn_append_file $1 "$2"])
594 dnl **** Define helper function to append a rule to a makefile command list ****
596 dnl Usage: WINE_APPEND_RULE(rule)
598 AC_DEFUN([WINE_APPEND_RULE],[AC_REQUIRE([WINE_CONFIG_HELPERS])wine_fn_append_rule "$1"])
600 dnl **** Create symlinks from config.status ****
602 dnl Usage: WINE_CONFIG_SYMLINK(target,src,files,enable,srcfile)
604 AC_DEFUN([WINE_CONFIG_SYMLINK],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
605 m4_ifval([$4],[if test "x$[$4]" != xno; then
606 ])m4_foreach([f],[$3],
607 [AC_CONFIG_LINKS(m4_ifval([$1],[$1/])f[:]m4_ifval([$2],[$2/])m4_ifval([$5],[$5],f))])dnl
608 m4_if([$1],[$2],[test "$srcdir" = "." || ])dnl
609 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],[
610 fi])[]dnl
611 ])])
613 dnl **** Create a makefile from config.status ****
615 dnl Usage: WINE_CONFIG_MAKEFILE(file,enable,flags)
617 AC_DEFUN([WINE_CONFIG_MAKEFILE],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
618 AS_VAR_PUSHDEF([ac_enable],m4_default([$2],[enable_]$1))dnl
619 m4_append_uniq([_AC_USER_OPTS],ac_enable,[
620 ])dnl
621 wine_fn_config_makefile [$1] ac_enable [$3]dnl
622 AS_VAR_POPDEF([ac_enable])])
624 dnl **** Create a dll makefile from config.status ****
626 dnl Usage: WINE_CONFIG_DLL(name,enable,flags,implib)
628 AC_DEFUN([WINE_CONFIG_DLL],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
629 AS_VAR_PUSHDEF([ac_enable],m4_default([$2],[enable_]$1))dnl
630 m4_append_uniq([_AC_USER_OPTS],ac_enable,[
631 ])dnl
632 wine_fn_config_dll [$1] ac_enable [$3] [$4]dnl
633 AS_VAR_POPDEF([ac_enable])])
635 dnl **** Create a program makefile from config.status ****
637 dnl Usage: WINE_CONFIG_PROGRAM(name,enable,flags)
639 AC_DEFUN([WINE_CONFIG_PROGRAM],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
640 AS_VAR_PUSHDEF([ac_enable],m4_default([$2],[enable_]$1))dnl
641 m4_append_uniq([_AC_USER_OPTS],ac_enable,[
642 ])dnl
643 wine_fn_config_program [$1] ac_enable [$3]dnl
644 AS_VAR_POPDEF([ac_enable])])
646 dnl **** Create a test makefile from config.status ****
648 dnl Usage: WINE_CONFIG_TEST(dir,flags)
650 AC_DEFUN([WINE_CONFIG_TEST],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
651 m4_pushdef([ac_suffix],m4_if(m4_substr([$1],0,9),[programs/],[.exe_test],[_test]))dnl
652 m4_pushdef([ac_name],[m4_bpatsubst([$1],[.*/\(.*\)/tests$],[\1])])dnl
653 wine_fn_config_test $1 ac_name[]ac_suffix [$2]dnl
654 m4_popdef([ac_suffix])dnl
655 m4_popdef([ac_name])])
657 dnl **** Create a static lib makefile from config.status ****
659 dnl Usage: WINE_CONFIG_LIB(name,flags)
661 AC_DEFUN([WINE_CONFIG_LIB],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
662 wine_fn_config_lib [$1] [$2]])
664 dnl **** Create a tool makefile from config.status ****
666 dnl Usage: WINE_CONFIG_TOOL(name,flags)
668 AC_DEFUN([WINE_CONFIG_TOOL],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
669 m4_append_uniq([_AC_USER_OPTS],[enable_tools],[
670 ])dnl
671 wine_fn_config_tool [$1] [$2]])
673 dnl **** Append a file to the .gitignore list ****
675 dnl Usage: WINE_IGNORE_FILE(file,enable)
677 AC_DEFUN([WINE_IGNORE_FILE],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
678 m4_ifval([$2],[test "x$[$2]" = xno || ])wine_fn_append_file CONFIGURE_TARGETS $1])
680 dnl **** Add a message to the list displayed at the end ****
682 dnl Usage: WINE_NOTICE(notice)
683 dnl Usage: WINE_WARNING(warning)
684 dnl Usage: WINE_NOTICE_WITH(with_flag, test, notice, enable)
685 dnl Usage: WINE_WARNING_WITH(with_flag, test, warning, enable)
686 dnl Usage: WINE_ERROR_WITH(with_flag, test, error, enable)
687 dnl Usage: WINE_PRINT_MESSAGES
689 AC_DEFUN([WINE_NOTICE],[AS_VAR_APPEND([wine_notices],["|$1"])])
690 AC_DEFUN([WINE_WARNING],[AS_VAR_APPEND([wine_warnings],["|$1"])])
692 AC_DEFUN([WINE_NOTICE_WITH],[AS_IF([$2],[case "x$with_$1" in
693   x)   WINE_NOTICE([$3]) ;;
694   xno) ;;
695   *)   AC_MSG_ERROR([$3
696 This is an error since --with-$1 was requested.]) ;;
697 esac
698 m4_ifval([$4],[$4=${$4:-no}])])])
700 AC_DEFUN([WINE_WARNING_WITH],[AS_IF([$2],[case "x$with_$1" in
701   x)   WINE_WARNING([$3]) ;;
702   xno) ;;
703   *)   AC_MSG_ERROR([$3
704 This is an error since --with-$1 was requested.]) ;;
705 esac
706 m4_ifval([$4],[$4=${$4:-no}])])])
708 AC_DEFUN([WINE_ERROR_WITH],[AS_IF([$2],[case "x$with_$1" in
709   xno) ;;
710   *)   AC_MSG_ERROR([$3
711 Use the --without-$1 option if you really want this.]) ;;
712 esac
713 m4_ifval([$4],[$4=${$4:-no}])])])
715 AC_DEFUN([WINE_PRINT_MESSAGES],[ac_save_IFS="$IFS"
716 if test "x$wine_notices" != x; then
717     echo >&AS_MESSAGE_FD
718     IFS="|"
719     for msg in $wine_notices; do
720         IFS="$ac_save_IFS"
721         AS_VAR_IF([msg],[],,[AC_MSG_NOTICE([$msg])])
722     done
724 IFS="|"
725 for msg in $wine_warnings; do
726     IFS="$ac_save_IFS"
727     AS_VAR_IF([msg],[],,[echo >&2
728         AC_MSG_WARN([$msg])])
729 done
730 IFS="$ac_save_IFS"])
732 dnl Local Variables:
733 dnl compile-command: "autoreconf --warnings=all"
734 dnl End: