makefiles: Automatically create all directories that contain a target file.
[wine.git] / aclocal.m4
blob4171f47ccba8d8bbf58cc274f6a5bbfd7ea223a4
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 GITIGNORE="# Automatically generated by configure; DO NOT EDIT!!"
203 AC_SUBST(SUBDIRS,"")
204 AC_SUBST(ALL_TEST_RESOURCES,"")
206 wine_fn_append_file ()
208     AS_VAR_APPEND($[1]," \\$as_nl       $[2]")
211 wine_fn_ignore_file ()
213     case "$[1]" in
214       */*) AS_VAR_APPEND([GITIGNORE],"$as_nl$[1]") ;;
215       \**) AS_VAR_APPEND([GITIGNORE],"$as_nl$[1]") ;;
216       *)   AS_VAR_APPEND([GITIGNORE],"$as_nl/$[1]") ;;
217     esac
220 wine_fn_append_rule ()
222     AS_ECHO("$[1]") >>$wine_rules_file
225 wine_fn_has_flag ()
227     expr ",$ac_flags," : ".*,$[1],.*" >/dev/null
230 wine_fn_depend_rules ()
232     wine_fn_append_file SUBDIRS $ac_dir
235 wine_fn_all_rules ()
237     wine_fn_depend_rules
238     wine_fn_append_rule \
239 "all: $ac_dir
240 .PHONY: $ac_dir
241 $ac_dir: dummy
242         @cd $ac_dir && \$(MAKE)"
245 wine_fn_install_rules ()
247     wine_fn_has_flag install-lib || wine_fn_has_flag install-dev || return
249     wine_fn_append_rule \
250 ".PHONY: $ac_dir/install $ac_dir/uninstall
251 $ac_dir/install:: $ac_dir
252         @cd $ac_dir && \$(MAKE) install
253 $ac_dir/uninstall::
254         @cd $ac_dir && \$(MAKE) uninstall
255 install:: $ac_dir/install
256 __uninstall__: $ac_dir/uninstall"
258     if wine_fn_has_flag install-lib
259     then
260         wine_fn_append_rule \
261 ".PHONY: $ac_dir/install-lib
262 $ac_dir/install-lib:: $ac_dir
263         @cd $ac_dir && \$(MAKE) install-lib
264 install-lib:: $ac_dir/install-lib"
265     fi
267     if wine_fn_has_flag install-dev
268     then
269         wine_fn_append_rule \
270 ".PHONY: $ac_dir/install-dev
271 $ac_dir/install-dev:: $ac_dir
272         @cd $ac_dir && \$(MAKE) install-dev
273 install-dev:: $ac_dir/install-dev"
274     fi
277 wine_fn_clean_rules ()
279     ac_clean=$[@]
281     if wine_fn_has_flag clean
282     then
283         wine_fn_append_rule \
284 "$ac_dir/clean: dummy
285         @cd $ac_dir && \$(MAKE) clean"
286     else
287         wine_fn_append_rule \
288 "$ac_dir/clean: dummy
289         \$(RM) \$(CLEAN_FILES:%=$ac_dir/%) $ac_clean"
290     fi
291         wine_fn_append_rule \
292 "__clean__: $ac_dir/clean
293 .PHONY: $ac_dir/clean"
296 wine_fn_disabled_rules ()
298     ac_clean=$[@]
300     wine_fn_append_rule \
301 "__clean__: $ac_dir/clean
302 .PHONY: $ac_dir/clean
303 $ac_dir/clean: dummy
304         \$(RM) \$(CLEAN_FILES:%=$ac_dir/%) $ac_clean"
307 wine_fn_config_makefile ()
309     ac_dir=$[1]
310     ac_enable=$[2]
311     ac_flags=$[3]
313     AS_VAR_IF([$ac_enable],[no],[wine_fn_disabled_rules; return])
314     wine_fn_all_rules
315     wine_fn_install_rules
316     wine_fn_clean_rules
319 wine_fn_config_lib ()
321     ac_name=$[1]
322     ac_flags=$[2]
323     ac_dir=dlls/$ac_name
324     ac_deps="include"
326     AS_VAR_IF([enable_tools],[no],,[ac_deps="tools/widl tools/winebuild tools/winegcc $ac_deps"])
327     wine_fn_all_rules
328     wine_fn_clean_rules
330     wine_fn_append_rule \
331 ".PHONY: $ac_dir/install $ac_dir/uninstall
332 $ac_dir/install:: $ac_dir
333         \$(INSTALL_DATA) $ac_dir/lib$ac_name.a \$(DESTDIR)\$(dlldir)/lib$ac_name.a
334 $ac_dir/uninstall::
335         \$(RM) \$(DESTDIR)\$(dlldir)/lib$ac_name.a
336 install install-dev:: $ac_dir/install
337 __uninstall__: $ac_dir/uninstall
338 __builddeps__: $ac_dir
339 $ac_dir: $ac_deps"
342 wine_fn_config_dll ()
344     ac_name=$[1]
345     ac_dir=dlls/$ac_name
346     ac_enable=$[2]
347     ac_flags=$[3]
348     ac_implib=${4:-$ac_name}
349     ac_file=$ac_dir/lib$ac_implib
350     ac_dll=$ac_name
351     ac_deps="include"
352     ac_implibflags=""
354     AS_VAR_IF([enable_tools],[no],,[ac_deps="tools/widl tools/winebuild tools/winegcc $ac_deps"])
355     case $ac_name in
356       *16) ac_implibflags=" -m16" ;;
357       *.*) ;;
358       *)   ac_dll=$ac_dll.dll ;;
359     esac
361     ac_clean=
362     wine_fn_has_flag implib && ac_clean="$ac_clean $ac_file.$IMPLIBEXT"
363     test -n "$DLLEXT" || ac_clean="$ac_clean $ac_dir/$ac_dll"
365     AS_VAR_IF([$ac_enable],[no],
366               dnl enable_win16 is special in that it disables import libs too
367               [if test "$ac_enable" != enable_win16
368                then
369                    wine_fn_depend_rules
370                    wine_fn_clean_rules $ac_clean
371                else
372                    wine_fn_disabled_rules $ac_clean
373                    return
374                fi],
376               [wine_fn_all_rules
377                wine_fn_clean_rules $ac_clean
378                wine_fn_append_rule \
379 "$ac_dir: __builddeps__
380 manpages htmlpages sgmlpages xmlpages::
381         @cd $ac_dir && \$(MAKE) \$[@]
382 .PHONY: $ac_dir/install-lib $ac_dir/uninstall
383 install install-lib:: $ac_dir/install-lib
384 __uninstall__: $ac_dir/uninstall"
385                 if test -n "$DLLEXT"
386                 then
387                     wine_fn_append_rule \
388 "$ac_dir/install-lib:: $ac_dir
389         \$(INSTALL_PROGRAM) $ac_dir/$ac_dll$DLLEXT \$(DESTDIR)\$(dlldir)/$ac_dll$DLLEXT
390         \$(INSTALL_DATA) $ac_dir/$ac_dll.fake \$(DESTDIR)\$(fakedlldir)/$ac_dll
391 $ac_dir/uninstall::
392         \$(RM) \$(DESTDIR)\$(dlldir)/$ac_dll$DLLEXT \$(DESTDIR)\$(fakedlldir)/$ac_dll"
393                 else
394                     wine_fn_append_rule \
395 "$ac_dir/install-lib:: $ac_dir
396         \$(INSTALL_PROGRAM) $ac_dir/$ac_dll \$(DESTDIR)\$(dlldir)/$ac_dll
397 $ac_dir/uninstall::
398         \$(RM) \$(DESTDIR)\$(dlldir)/$ac_dll"
399                 fi])
401     if wine_fn_has_flag staticimplib
402     then
403         wine_fn_append_rule \
404 "__builddeps__: $ac_file.$IMPLIBEXT $ac_file.$STATIC_IMPLIBEXT
405 $ac_file.$STATIC_IMPLIBEXT $ac_file.cross.a: $ac_deps
406 $ac_file.def: $srcdir/$ac_dir/$ac_name.spec \$(WINEBUILD)
407         \$(WINEBUILD) \$(TARGETFLAGS)$ac_implibflags -w --def -o \$[@] --export $srcdir/$ac_dir/$ac_name.spec
408 $ac_file.$STATIC_IMPLIBEXT: dummy
409         @cd $ac_dir && \$(MAKE) lib$ac_implib.$STATIC_IMPLIBEXT
410 .PHONY: $ac_dir/install-dev $ac_dir/uninstall
411 $ac_dir/install-dev:: $ac_file.$IMPLIBEXT
412         \$(INSTALL_DATA) $ac_file.$IMPLIBEXT \$(DESTDIR)\$(dlldir)/lib$ac_implib.$IMPLIBEXT
413 $ac_dir/uninstall::
414         \$(RM) \$(DESTDIR)\$(dlldir)/lib$ac_implib.$IMPLIBEXT
415 install install-dev:: $ac_dir/install-dev
416 __uninstall__: $ac_dir/uninstall"
418         if test "$IMPLIBEXT" != "$STATIC_IMPLIBEXT"
419         then
420             wine_fn_append_rule \
421 "$ac_dir/install-dev:: $ac_file.$STATIC_IMPLIBEXT __builddeps__
422         \$(INSTALL_DATA) $ac_file.$STATIC_IMPLIBEXT \$(DESTDIR)\$(dlldir)/lib$ac_implib.$STATIC_IMPLIBEXT
423 $ac_dir/uninstall::
424         \$(RM) \$(DESTDIR)\$(dlldir)/lib$ac_implib.$STATIC_IMPLIBEXT"
425         fi
427         if test -n "$CROSSTARGET" -a -z "$ac_implibflags"
428         then
429             wine_fn_append_rule \
430 "__builddeps__: $ac_file.cross.a
431 $ac_file.cross.a: dummy
432         @cd $ac_dir && \$(MAKE) lib$ac_implib.cross.a"
433         fi
435     elif wine_fn_has_flag implib
436     then
437         wine_fn_append_rule \
438 "__builddeps__: $ac_file.$IMPLIBEXT
439 $ac_file.def: $srcdir/$ac_dir/$ac_name.spec \$(WINEBUILD)
440         \$(WINEBUILD) \$(TARGETFLAGS)$ac_implibflags -w --def -o \$[@] --export $srcdir/$ac_dir/$ac_name.spec
441 $ac_file.a: $srcdir/$ac_dir/$ac_name.spec \$(WINEBUILD)
442         \$(WINEBUILD) \$(TARGETFLAGS)$ac_implibflags -w --implib -o \$[@] --export $srcdir/$ac_dir/$ac_name.spec
443 .PHONY: $ac_dir/install-dev $ac_dir/uninstall
444 $ac_dir/install-dev:: $ac_file.$IMPLIBEXT
445         \$(INSTALL_DATA) $ac_file.$IMPLIBEXT \$(DESTDIR)\$(dlldir)/lib$ac_implib.$IMPLIBEXT
446 $ac_dir/uninstall::
447         \$(RM) \$(DESTDIR)\$(dlldir)/lib$ac_implib.$IMPLIBEXT
448 install install-dev:: $ac_dir/install-dev
449 __uninstall__: $ac_dir/uninstall"
450         if test -n "$CROSSTARGET" -a -z "$ac_implibflags"
451         then
452             wine_fn_append_rule \
453 "__builddeps__: $ac_file.cross.a
454 $ac_file.cross.a: $srcdir/$ac_dir/$ac_name.spec \$(WINEBUILD)
455         \$(WINEBUILD) \$(CROSSTARGET:%=-b %)$ac_implibflags -w --implib -o \$[@] --export $srcdir/$ac_dir/$ac_name.spec"
456         fi
458         if test "$ac_name" != "$ac_implib"
459         then
460             wine_fn_append_rule \
461 "__builddeps__: dlls/lib$ac_implib.$IMPLIBEXT
462 dlls/lib$ac_implib.$IMPLIBEXT: $ac_file.$IMPLIBEXT
463         \$(RM) \$[@] && \$(LN_S) $ac_name/lib$ac_implib.$IMPLIBEXT \$[@]
464 clean::
465         \$(RM) dlls/lib$ac_implib.$IMPLIBEXT"
466             wine_fn_ignore_file "dlls/lib$ac_implib.$IMPLIBEXT"
467             if test -n "$CROSSTARGET" -a -z "$ac_implibflags"
468             then
469                 wine_fn_append_rule \
470 "__builddeps__: dlls/lib$ac_implib.cross.a
471 dlls/lib$ac_implib.cross.a: $ac_file.cross.a
472         \$(RM) \$[@] && \$(LN_S) $ac_name/lib$ac_implib.cross.a \$[@]
473 clean::
474         \$(RM) dlls/lib$ac_implib.cross.a"
475                 wine_fn_ignore_file "dlls/lib$ac_implib.cross.a"
476             fi
477         fi
478     fi
481 wine_fn_config_program ()
483     ac_name=$[1]
484     ac_dir=programs/$ac_name
485     ac_enable=$[2]
486     ac_flags=$[3]
487     ac_program=$ac_name
489     case $ac_name in
490       *.*) ;;
491       *)   ac_program=$ac_program.exe ;;
492     esac
494     ac_clean=
495     wine_fn_has_flag manpage && ac_clean="$ac_clean $ac_dir/$ac_name.man"
496     test -n "$DLLEXT" || ac_clean="$ac_clean $ac_dir/$ac_program"
498     AS_VAR_IF([$ac_enable],[no],[wine_fn_disabled_rules $ac_clean; return])
500     wine_fn_all_rules
501     wine_fn_clean_rules $ac_clean
502     wine_fn_append_rule "$ac_dir: __builddeps__"
504     wine_fn_has_flag install || return
505     wine_fn_append_rule \
506 ".PHONY: $ac_dir/install $ac_dir/uninstall
507 install install-lib:: $ac_dir/install
508 __uninstall__: $ac_dir/uninstall"
510     if test -n "$DLLEXT"
511     then
512         wine_fn_append_rule \
513 "$ac_dir/install:: $ac_dir
514         \$(INSTALL_PROGRAM) $ac_dir/$ac_program$DLLEXT \$(DESTDIR)\$(dlldir)/$ac_program$DLLEXT
515         \$(INSTALL_DATA) $ac_dir/$ac_program.fake \$(DESTDIR)\$(fakedlldir)/$ac_program
516 $ac_dir/uninstall::
517         \$(RM) \$(DESTDIR)\$(dlldir)/$ac_program$DLLEXT \$(DESTDIR)\$(fakedlldir)/$ac_program"
519         if test -z "$with_wine64" && wine_fn_has_flag installbin
520         then
521             wine_fn_append_rule \
522 "$ac_dir/install:: __tooldeps__
523         \$(INSTALL_SCRIPT) \$(TOOLSDIR)/tools/wineapploader \$(DESTDIR)\$(bindir)/$ac_name
524 $ac_dir/uninstall::
525         \$(RM) \$(DESTDIR)\$(bindir)/$ac_name"
526         fi
527     else
528         wine_fn_append_rule \
529 "$ac_dir/install:: $ac_dir
530         \$(INSTALL_PROGRAM) $ac_dir/$ac_program \$(DESTDIR)\$(bindir)/$ac_program
531 $ac_dir/uninstall::
532         \$(RM) \$(DESTDIR)\$(bindir)/$ac_program"
533     fi
535     if test -z "$with_wine64" && wine_fn_has_flag manpage
536     then
537         wine_fn_append_rule \
538 "$ac_dir/install:: $ac_dir
539         \$(INSTALL_DATA) $ac_dir/$ac_name.man \$(DESTDIR)\$(mandir)/man\$(prog_manext)/$ac_name.\$(prog_manext)
540 $ac_dir/uninstall::
541         \$(RM) \$(DESTDIR)\$(mandir)/man\$(prog_manext)/$ac_name.\$(prog_manext)"
542     fi
545 wine_fn_config_test ()
547     ac_dir=$[1]
548     ac_name=$[2]
549     ac_flags=$[3]
551     ac_clean=
552     test -n "$CROSSTARGET" && ac_clean=`expr $ac_dir/${ac_name} : "\\(.*\\)_test"`_crosstest.exe
553     test -n "$DLLEXT" || ac_clean="$ac_dir/${ac_name}.exe $ac_dir/${ac_name}-stripped.exe"
555     AS_VAR_IF([enable_tests],[no],[wine_fn_disabled_rules $ac_clean; return])
557     wine_fn_append_file ALL_TEST_RESOURCES $ac_name.res
558     wine_fn_all_rules
559     wine_fn_clean_rules $ac_clean
561     wine_fn_append_rule \
562 "$ac_dir: __builddeps__
563 programs/winetest: $ac_dir
564 check test: $ac_dir/test
565 .PHONY: $ac_dir/test
566 $ac_dir/test: dummy
567         @cd $ac_dir && \$(MAKE) test
568 testclean::
569         \$(RM) $ac_dir/*.ok"
571         if test -n "$CROSSTARGET"
572         then
573             wine_fn_append_rule \
574 "crosstest: $ac_dir/crosstest
575 .PHONY: $ac_dir/crosstest
576 $ac_dir/crosstest: __builddeps__ dummy
577         @cd $ac_dir && \$(MAKE) crosstest"
578         fi
581 wine_fn_config_tool ()
583     ac_dir=$[1]
584     ac_flags=$[2]
585     AS_VAR_IF([enable_tools],[no],[return])
587     wine_fn_all_rules
588     wine_fn_install_rules
589     wine_fn_clean_rules
591     wine_fn_append_rule "__tooldeps__: $ac_dir"
592     wine_fn_append_rule "$ac_dir: libs/port"
593     case $ac_dir in
594       tools/winebuild) wine_fn_append_rule "\$(WINEBUILD): $ac_dir" ;;
595     esac
598 wine_fn_config_symlink ()
600     ac_linkdir=
601     if test "x$[1]" = "x-d"
602     then
603         ac_linkdir=$[2]
604         shift; shift
605     fi
606     ac_links=$[@]
607     wine_fn_append_rule \
608 "$ac_links:
609         @./config.status \$[@]
610 distclean::
611         \$(RM) $ac_links"
612     for f in $ac_links; do wine_fn_ignore_file $f; done
613     test -n "$ac_linkdir" || return
614     wine_fn_append_rule "$ac_linkdir/depend: $ac_links"
617 dnl **** Define helper function to append a file to a makefile file list ****
619 dnl Usage: WINE_APPEND_FILE(var,file)
621 AC_DEFUN([WINE_APPEND_FILE],[AC_REQUIRE([WINE_CONFIG_HELPERS])wine_fn_append_file $1 "$2"])
623 dnl **** Define helper function to append a rule to a makefile command list ****
625 dnl Usage: WINE_APPEND_RULE(rule)
627 AC_DEFUN([WINE_APPEND_RULE],[AC_REQUIRE([WINE_CONFIG_HELPERS])wine_fn_append_rule "$1"])
629 dnl **** Create symlinks from config.status ****
631 dnl Usage: WINE_CONFIG_SYMLINK(target,src,files,enable,srcfile)
633 AC_DEFUN([WINE_CONFIG_SYMLINK],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
634 m4_ifval([$4],[if test "x$[$4]" != xno; then
635 ])m4_foreach([f],[$3],
636 [AC_CONFIG_LINKS(m4_ifval([$1],[$1/])f[:]m4_ifval([$2],[$2/])m4_ifval([$5],[$5],f))])dnl
637 m4_if([$1],[$2],[test "$srcdir" = "." || ])dnl
638 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],[
639 fi])[]dnl
640 ])])
642 dnl **** Create a makefile from config.status ****
644 dnl Usage: WINE_CONFIG_MAKEFILE(file,enable,flags)
646 AC_DEFUN([WINE_CONFIG_MAKEFILE],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
647 AS_VAR_PUSHDEF([ac_enable],m4_default([$2],[enable_]$1))dnl
648 m4_append_uniq([_AC_USER_OPTS],ac_enable,[
649 ])dnl
650 wine_fn_config_makefile [$1] ac_enable [$3]dnl
651 AS_VAR_POPDEF([ac_enable])])
653 dnl **** Create a dll makefile from config.status ****
655 dnl Usage: WINE_CONFIG_DLL(name,enable,flags,implib)
657 AC_DEFUN([WINE_CONFIG_DLL],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
658 AS_VAR_PUSHDEF([ac_enable],m4_default([$2],[enable_]$1))dnl
659 m4_append_uniq([_AC_USER_OPTS],ac_enable,[
660 ])dnl
661 wine_fn_config_dll [$1] ac_enable [$3] [$4]dnl
662 AS_VAR_POPDEF([ac_enable])])
664 dnl **** Create a program makefile from config.status ****
666 dnl Usage: WINE_CONFIG_PROGRAM(name,enable,flags)
668 AC_DEFUN([WINE_CONFIG_PROGRAM],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
669 AS_VAR_PUSHDEF([ac_enable],m4_default([$2],[enable_]$1))dnl
670 m4_append_uniq([_AC_USER_OPTS],ac_enable,[
671 ])dnl
672 wine_fn_config_program [$1] ac_enable [$3]dnl
673 AS_VAR_POPDEF([ac_enable])])
675 dnl **** Create a test makefile from config.status ****
677 dnl Usage: WINE_CONFIG_TEST(dir,flags)
679 AC_DEFUN([WINE_CONFIG_TEST],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
680 m4_pushdef([ac_suffix],m4_if(m4_substr([$1],0,9),[programs/],[.exe_test],[_test]))dnl
681 m4_pushdef([ac_name],[m4_bpatsubst([$1],[.*/\(.*\)/tests$],[\1])])dnl
682 wine_fn_config_test $1 ac_name[]ac_suffix [$2]dnl
683 m4_popdef([ac_suffix])dnl
684 m4_popdef([ac_name])])
686 dnl **** Create a static lib makefile from config.status ****
688 dnl Usage: WINE_CONFIG_LIB(name,flags)
690 AC_DEFUN([WINE_CONFIG_LIB],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
691 wine_fn_config_lib [$1] [$2]])
693 dnl **** Create a tool makefile from config.status ****
695 dnl Usage: WINE_CONFIG_TOOL(name,flags)
697 AC_DEFUN([WINE_CONFIG_TOOL],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
698 m4_append_uniq([_AC_USER_OPTS],[enable_tools],[
699 ])dnl
700 wine_fn_config_tool [$1] [$2]])
702 dnl **** Append a file to the .gitignore list ****
704 dnl Usage: WINE_IGNORE_FILE(file,enable)
706 AC_DEFUN([WINE_IGNORE_FILE],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
707 m4_ifval([$2],[test "x$[$2]" = xno || ])wine_fn_ignore_file $1])
709 dnl **** Add a message to the list displayed at the end ****
711 dnl Usage: WINE_NOTICE(notice)
712 dnl Usage: WINE_NOTICE_WITH(with_flag, test, notice)
713 dnl Usage: WINE_WARNING(warning)
714 dnl Usage: WINE_WARNING_WITH(with_flag, test, warning)
715 dnl Usage: WINE_PRINT_MESSAGES
717 AC_DEFUN([WINE_NOTICE],[AS_VAR_APPEND([wine_notices],["|$1"])])
718 AC_DEFUN([WINE_WARNING],[AS_VAR_APPEND([wine_warnings],["|$1"])])
720 AC_DEFUN([WINE_NOTICE_WITH],[AS_IF([$2],[case "x$with_$1" in
721   x)   WINE_NOTICE([$3]) ;;
722   xno) ;;
723   *)   AC_MSG_ERROR([$3
724 This is an error since --with-$1 was requested.]) ;;
725 esac])])
727 AC_DEFUN([WINE_WARNING_WITH],[AS_IF([$2],[case "x$with_$1" in
728   x)   WINE_WARNING([$3]) ;;
729   xno) ;;
730   *)   AC_MSG_ERROR([$3
731 This is an error since --with-$1 was requested.]) ;;
732 esac])])
734 AC_DEFUN([WINE_ERROR_WITH],[AS_IF([$2],[case "x$with_$1" in
735   xno) ;;
736   *)   AC_MSG_ERROR([$3
737 Use the --without-$1 option if you really want this.]) ;;
738 esac])])
740 AC_DEFUN([WINE_PRINT_MESSAGES],[ac_save_IFS="$IFS"
741 if test "x$wine_notices" != x; then
742     echo >&AS_MESSAGE_FD
743     IFS="|"
744     for msg in $wine_notices; do
745         IFS="$ac_save_IFS"
746         AS_VAR_IF([msg],[],,[AC_MSG_NOTICE([$msg])])
747     done
749 IFS="|"
750 for msg in $wine_warnings; do
751     IFS="$ac_save_IFS"
752     AS_VAR_IF([msg],[],,[echo >&2
753         AC_MSG_WARN([$msg])])
754 done
755 IFS="$ac_save_IFS"])
757 dnl Local Variables:
758 dnl compile-command: "autoreconf --warnings=all"
759 dnl End: