msvcrt: Implement memcpy in msvcrt instead of forwarding to ntdll.
[wine] / aclocal.m4
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.
24
25 dnl **** Get the ldd program name; used by WINE_GET_SONAME ****
26 dnl
27 dnl Usage: WINE_PATH_LDD
28 dnl
29 AC_DEFUN([WINE_PATH_LDD],[AC_PATH_PROG(LDD,ldd,true,/sbin:/usr/sbin:$PATH)])
30
31 dnl **** Extract the soname of a library ****
32 dnl
33 dnl Usage: WINE_CHECK_SONAME(library, function, [action-if-found, [action-if-not-found, [other_libraries, [pattern]]]])
34 dnl
35 AC_DEFUN([WINE_CHECK_SONAME],
36 [AC_REQUIRE([WINE_PATH_LDD])dnl
37 AS_VAR_PUSHDEF([ac_Lib],[ac_cv_lib_soname_$1])dnl
38 m4_pushdef([ac_lib_pattern],m4_default([$6],[lib$1]))dnl
39 AC_MSG_CHECKING([for -l$1])
40 AC_CACHE_VAL(ac_Lib,
41 [ac_check_soname_save_LIBS=$LIBS
42 LIBS="-l$1 $5 $LIBS"
43   AC_LINK_IFELSE([AC_LANG_CALL([], [$2])],
44   [case "$LIBEXT" in
45     dll) AS_VAR_SET(ac_Lib,[`$ac_cv_path_LDD conftest.exe | grep "$1" | sed -e "s/dll.*/dll/"';2,$d'`]) ;;
46     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'`]) ;;
48   esac])
49   LIBS=$ac_check_soname_save_LIBS])dnl
50 AS_IF([test "x]AS_VAR_GET(ac_Lib)[" = "x"],
51       [AC_MSG_RESULT([not found])
52        $4],
53       [AC_MSG_RESULT(AS_VAR_GET(ac_Lib))
54        AC_DEFINE_UNQUOTED(AS_TR_CPP(SONAME_LIB$1),["]AS_VAR_GET(ac_Lib)["],
55                           [Define to the soname of the lib$1 library.])
56        $3])dnl
57 m4_popdef([ac_lib_pattern])dnl
58 AS_VAR_POPDEF([ac_Lib])])
59
60 dnl **** Link C code with an assembly file ****
61 dnl
62 dnl Usage: WINE_TRY_ASM_LINK(asm-code,includes,function,[action-if-found,[action-if-not-found]])
63 dnl
64 AC_DEFUN([WINE_TRY_ASM_LINK],
65 [AC_LINK_IFELSE([AC_LANG_PROGRAM([[$2]],[[asm($1); $3]])],[$4],[$5])])
66
67 dnl **** Check if we can link an empty program with special CFLAGS ****
68 dnl
69 dnl Usage: WINE_TRY_CFLAGS(flags,[action-if-yes,[action-if-no]])
70 dnl
71 dnl The default action-if-yes is to append the flags to EXTRACFLAGS.
72 dnl
73 AC_DEFUN([WINE_TRY_CFLAGS],
74 [AS_VAR_PUSHDEF([ac_var], ac_cv_cflags_[[$1]])dnl
75 AC_CACHE_CHECK([whether the compiler supports $1], ac_var,
76 [ac_wine_try_cflags_saved=$CFLAGS
77 CFLAGS="$CFLAGS $1"
78 AC_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)])
80 CFLAGS=$ac_wine_try_cflags_saved])
81 AS_IF([test AS_VAR_GET(ac_var) = yes],
82       [m4_default([$2], [EXTRACFLAGS="$EXTRACFLAGS $1"])], [$3])dnl
83 AS_VAR_POPDEF([ac_var])])
84
85 dnl **** Check if we can link an empty shared lib (no main) with special CFLAGS ****
86 dnl
87 dnl Usage: WINE_TRY_SHLIB_FLAGS(flags,[action-if-yes,[action-if-no]])
88 dnl
89 AC_DEFUN([WINE_TRY_SHLIB_FLAGS],
90 [ac_wine_try_cflags_saved=$CFLAGS
91 CFLAGS="$CFLAGS $1"
92 AC_LINK_IFELSE([AC_LANG_SOURCE([void myfunc() {}])],[$2],[$3])
93 CFLAGS=$ac_wine_try_cflags_saved])
94
95 dnl **** Check whether we need to define a symbol on the compiler command line ****
96 dnl
97 dnl Usage: WINE_CHECK_DEFINE(name),[action-if-yes,[action-if-no]])
98 dnl
99 AC_DEFUN([WINE_CHECK_DEFINE],
100 [AS_VAR_PUSHDEF([ac_var],[ac_cv_cpp_def_$1])dnl
101 AC_CACHE_CHECK([whether we need to define $1],ac_var,
102     AC_EGREP_CPP(yes,[#ifndef $1
103 yes
104 #endif],
105     [AS_VAR_SET(ac_var,yes)],[AS_VAR_SET(ac_var,no)]))
106 AS_IF([test AS_VAR_GET(ac_var) = yes],
107       [CFLAGS="$CFLAGS -D$1"
108   LINTFLAGS="$LINTFLAGS -D$1"])dnl
109 AS_VAR_POPDEF([ac_var])])
110
111 dnl **** Check for functions with some extra libraries ****
112 dnl
113 dnl Usage: WINE_CHECK_LIB_FUNCS(funcs,libs,[action-if-found,[action-if-not-found]])
114 dnl
115 AC_DEFUN([WINE_CHECK_LIB_FUNCS],
116 [ac_wine_check_funcs_save_LIBS="$LIBS"
117 LIBS="$LIBS $2"
118 AC_CHECK_FUNCS([$1],[$3],[$4])
119 LIBS="$ac_wine_check_funcs_save_LIBS"])
120
121 dnl **** Check for a mingw program, trying the various mingw prefixes ****
122 dnl
123 dnl Usage: WINE_CHECK_MINGW_PROG(variable,prog,[value-if-not-found],[path])
124 dnl
125 AC_DEFUN([WINE_CHECK_MINGW_PROG],
126 [case "$host_cpu" in
127   i[[3456789]]86*)
128     ac_prefix_list="m4_foreach([ac_wine_prefix],[w64-mingw32, pc-mingw32, mingw32msvc, mingw32],
129                         m4_foreach([ac_wine_cpu],[i686,i586,i486,i386],[ac_wine_cpu-ac_wine_prefix-$2 ]))
130                         mingw32-$2" ;;
131   x86_64)
132     ac_prefix_list="m4_foreach([ac_wine_prefix],[pc-mingw32, w64-mingw32, mingw32msvc],
133                         m4_foreach([ac_wine_cpu],[x86_64,amd64],[ac_wine_cpu-ac_wine_prefix-$2 ]))" ;;
134   *)
135     ac_prefix_list="" ;;
136 esac
137 AC_CHECK_PROGS([$1],[$ac_prefix_list],[$3],[$4])])
138
139
140 dnl **** Define helper functions for creating config.status files ****
141 dnl
142 dnl Usage: AC_REQUIRE([WINE_CONFIG_HELPERS])
143 dnl
144 AC_DEFUN([WINE_CONFIG_HELPERS],
145 [ALL_MAKEFILE_DEPENDS="
146 # Rules automatically generated by configure
147
148 .INIT: Makefile
149 .MAKEFILEDEPS:
150 all: Makefile
151 Makefile: Makefile.in Make.vars.in Make.rules config.status
152         @./config.status Make.tmp Makefile"
153
154 ALL_POT_FILES=""
155 AC_SUBST(ALL_TEST_RESOURCES,"")
156
157 wine_fn_append_file ()
158 {
159     AS_VAR_APPEND($[1]," \\$as_nl       $[2]")
160 }
161
162 wine_fn_append_rule ()
163 {
164     AS_VAR_APPEND($[1],"$as_nl$[2]")
165 }
166
167 wine_fn_has_flag ()
168 {
169     expr ",$[2]," : ".*,$[1],.*" >/dev/null
170 }
171
172 wine_fn_all_dir_rules ()
173 {
174     ac_dir=$[1]
175     ac_alldeps=$[2]
176     ac_makedep="\$(MAKEDEP)"
177     ac_input=Make.vars.in:$ac_dir/Makefile.in
178     if test $ac_dir != tools
179     then
180         dnl makedep is in tools so tools makefile cannot depend on it
181         ac_alldeps="$[2] $ac_makedep"
182     else
183         ac_alldeps="$[2] include/config.h"
184     fi
185     case $[2] in
186       *.in) ac_input=$ac_input:$[2] ;;
187       *) ac_makedep="$[2] $ac_makedep" ;;
188     esac
189
190     wine_fn_append_file ALL_DIRS $ac_dir
191     wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
192 "__clean__: $ac_dir/__clean__
193 .PHONY: $ac_dir/__clean__
194 $ac_dir/__clean__: $ac_dir/Makefile
195         @cd $ac_dir && \$(MAKE) clean
196         \$(RM) $ac_dir/Makefile
197 $ac_dir/Makefile: $ac_dir/Makefile.in Make.vars.in config.status $ac_alldeps
198         @./config.status --file $ac_dir/Makefile:$ac_input && cd $ac_dir && \$(MAKE) depend
199 depend: $ac_dir/__depend__
200 .PHONY: $ac_dir/__depend__
201 $ac_dir/__depend__: $ac_makedep dummy
202         @./config.status --file $ac_dir/Makefile:$ac_input && cd $ac_dir && \$(MAKE) depend"
203 }
204
205 wine_fn_pot_rules ()
206 {
207     ac_dir=$[1]
208     ac_flags=$[2]
209
210     test "x$with_gettextpo" = xyes || return
211
212     if wine_fn_has_flag mc $ac_flags
213     then
214         wine_fn_append_file ALL_POT_FILES $ac_dir/msg.pot
215         wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
216 "$ac_dir/msg.pot: $ac_dir/Makefile dummy
217         @cd $ac_dir && \$(MAKE) msg.pot
218 $ac_dir/msg.pot: tools/wmc include"
219     fi
220     if wine_fn_has_flag po $ac_flags
221     then
222         wine_fn_append_file ALL_POT_FILES $ac_dir/rsrc.pot
223         wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
224 "$ac_dir/rsrc.pot: $ac_dir/Makefile dummy
225         @cd $ac_dir && \$(MAKE) rsrc.pot
226 $ac_dir/rsrc.pot: tools/wrc include"
227     fi
228 }
229
230 wine_fn_config_makefile ()
231 {
232     ac_dir=$[1]
233     ac_enable=$[2]
234     ac_flags=$[3]
235     ac_rules=$[4]
236     AS_VAR_IF([$ac_enable],[no],[return 0])
237
238     wine_fn_all_dir_rules $ac_dir ${ac_rules:-Make.rules}
239     wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
240 "all: $ac_dir
241 .PHONY: $ac_dir
242 $ac_dir: $ac_dir/Makefile dummy
243         @cd $ac_dir && \$(MAKE)"
244
245     wine_fn_has_flag install-lib $ac_flags || wine_fn_has_flag install-dev $ac_flags || return
246
247     wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
248 ".PHONY: $ac_dir/__install__ $ac_dir/__uninstall__
249 $ac_dir/__install__:: $ac_dir
250         @cd $ac_dir && \$(MAKE) install
251 $ac_dir/__uninstall__:: $ac_dir/Makefile
252         @cd $ac_dir && \$(MAKE) uninstall
253 install:: $ac_dir/__install__
254 __uninstall__: $ac_dir/__uninstall__"
255
256     if wine_fn_has_flag install-lib $ac_flags
257     then
258         wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
259 ".PHONY: $ac_dir/__install-lib__
260 $ac_dir/__install-lib__:: $ac_dir
261         @cd $ac_dir && \$(MAKE) install-lib
262 install-lib:: $ac_dir/__install-lib__"
263     fi
264
265     if wine_fn_has_flag install-dev $ac_flags
266     then
267         wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
268 ".PHONY: $ac_dir/__install-dev
269 $ac_dir/__install-dev__:: $ac_dir
270         @cd $ac_dir && \$(MAKE) install-dev
271 install-dev:: $ac_dir/__install-dev__"
272     fi
273 }
274
275 wine_fn_config_lib ()
276 {
277     ac_name=$[1]
278     ac_flags=$[2]
279     ac_dir=dlls/$ac_name
280     wine_fn_config_makefile $ac_dir enable_$ac_name "$ac_flags" dlls/Makeimplib.rules
281
282     if wine_fn_has_flag install-dev $ac_flags
283     then :
284     else
285         wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
286 ".PHONY: $ac_dir/__install__ $ac_dir/__uninstall__
287 $ac_dir/__install__:: $ac_dir \$(DESTDIR)\$(dlldir)
288         \$(INSTALL_DATA) $ac_dir/lib$ac_name.a \$(DESTDIR)\$(dlldir)/lib$ac_name.a
289 $ac_dir/__uninstall__::
290         \$(RM) \$(DESTDIR)\$(dlldir)/lib$ac_name.a
291 install install-dev:: $ac_dir/__install__
292 __uninstall__: $ac_dir/__uninstall__"
293     fi
294
295     wine_fn_append_rule ALL_MAKEFILE_DEPENDS "__builddeps__: $ac_dir"
296     wine_fn_append_rule ALL_MAKEFILE_DEPENDS "$ac_dir: tools/widl tools/winebuild tools/winegcc include"
297 }
298
299 wine_fn_config_dll ()
300 {
301     ac_name=$[1]
302     ac_dir=dlls/$ac_name
303     ac_enable=$[2]
304     ac_flags=$[3]
305     ac_implib=${4:-$ac_name}
306     ac_file=$ac_dir/lib$ac_implib
307     ac_dll=$ac_name
308     ac_deps="tools/widl tools/winebuild tools/winegcc include"
309     ac_implibflags=""
310
311     case $ac_name in
312       *16) ac_implibflags=" -m16" ;;
313       *.*) ;;
314       *)   ac_dll=$ac_dll.dll ;;
315     esac
316
317     wine_fn_config_makefile $ac_dir $ac_enable "$ac_flags" dlls/Makedll.rules
318
319     AS_VAR_IF([$ac_enable],[no],
320               dnl enable_win16 is special in that it disables import libs too
321               [test "$ac_enable" != enable_win16 || return 0
322                wine_fn_has_flag implib $ac_flags && wine_fn_all_dir_rules $ac_dir dlls/Makedll.rules],
323
324               [wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
325 "$ac_dir: __builddeps__
326 manpages htmlpages sgmlpages xmlpages:: $ac_dir/Makefile
327         @cd $ac_dir && \$(MAKE) \$[@]"
328
329         if wine_fn_has_flag install-lib $ac_flags
330         then :
331         else
332             wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
333 ".PHONY: $ac_dir/__install-lib__ $ac_dir/__uninstall__
334 install install-lib:: $ac_dir/__install-lib__
335 __uninstall__: $ac_dir/__uninstall__"
336             if test -n "$DLLEXT"
337             then
338                 wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
339 "$ac_dir/__install-lib__:: $ac_dir \$(DESTDIR)\$(dlldir) \$(DESTDIR)\$(fakedlldir)
340         \$(INSTALL_PROGRAM) $ac_dir/$ac_dll$DLLEXT \$(DESTDIR)\$(dlldir)/$ac_dll$DLLEXT
341         \$(INSTALL_DATA) $ac_dir/$ac_dll.fake \$(DESTDIR)\$(fakedlldir)/$ac_dll
342 $ac_dir/__uninstall__::
343         \$(RM) \$(DESTDIR)\$(dlldir)/$ac_dll$DLLEXT \$(DESTDIR)\$(fakedlldir)/$ac_dll"
344             else
345                 wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
346 "$ac_dir/__install-lib__:: $ac_dir \$(DESTDIR)\$(dlldir)
347         \$(INSTALL_PROGRAM) $ac_dir/$ac_dll \$(DESTDIR)\$(dlldir)/$ac_dll
348 $ac_dir/__uninstall__::
349         \$(RM) \$(DESTDIR)\$(dlldir)/$ac_dll"
350             fi
351         fi
352
353         wine_fn_pot_rules $ac_dir $ac_flags])
354
355     if wine_fn_has_flag staticimplib $ac_flags
356     then
357         wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
358 "__builddeps__: $ac_file.$IMPLIBEXT $ac_file.$STATIC_IMPLIBEXT
359 $ac_file.$IMPLIBEXT $ac_file.$STATIC_IMPLIBEXT $ac_file.cross.a: $ac_deps
360 $ac_file.def: $ac_dir/$ac_name.spec $ac_dir/Makefile
361         @cd $ac_dir && \$(MAKE) lib$ac_implib.def
362 $ac_file.$STATIC_IMPLIBEXT: $ac_dir/Makefile dummy
363         @cd $ac_dir && \$(MAKE) lib$ac_implib.$STATIC_IMPLIBEXT
364 .PHONY: $ac_dir/__install-dev__ $ac_dir/__uninstall__
365 $ac_dir/__install-dev__:: $ac_file.$IMPLIBEXT \$(DESTDIR)\$(dlldir)
366         \$(INSTALL_DATA) $ac_file.$IMPLIBEXT \$(DESTDIR)\$(dlldir)/lib$ac_implib.$IMPLIBEXT
367 $ac_dir/__uninstall__::
368         \$(RM) \$(DESTDIR)\$(dlldir)/lib$ac_implib.$IMPLIBEXT
369 install install-dev:: $ac_dir/__install-dev__
370 __uninstall__: $ac_dir/__uninstall__"
371
372         if test "$IMPLIBEXT" != "$STATIC_IMPLIBEXT"
373         then
374             wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
375 "$ac_dir/__install-dev__:: $ac_file.$STATIC_IMPLIBEXT \$(DESTDIR)\$(dlldir) __builddeps__
376         \$(INSTALL_DATA) $ac_file.$STATIC_IMPLIBEXT \$(DESTDIR)\$(dlldir)/lib$ac_implib.$STATIC_IMPLIBEXT
377 $ac_dir/__uninstall__::
378         \$(RM) \$(DESTDIR)\$(dlldir)/lib$ac_implib.$STATIC_IMPLIBEXT"
379         fi
380
381         if test "x$CROSSTEST_DISABLE" = x
382         then
383             wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
384 "__builddeps__: $ac_file.cross.a
385 $ac_file.cross.a: $ac_dir/Makefile dummy
386         @cd $ac_dir && \$(MAKE) lib$ac_implib.cross.a"
387         fi
388
389     elif wine_fn_has_flag implib $ac_flags
390     then
391         wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
392 "__builddeps__: $ac_file.$IMPLIBEXT
393 $ac_file.def: $ac_dir/$ac_name.spec $ac_dir/Makefile \$(WINEBUILD)
394         \$(WINEBUILD) \$(TARGETFLAGS)$ac_implibflags -w --def -o \$[@] --export \$(srcdir)/$ac_dir/$ac_name.spec
395 $ac_file.a: $ac_dir/$ac_name.spec $ac_dir/Makefile \$(WINEBUILD)
396         \$(WINEBUILD) \$(TARGETFLAGS)$ac_implibflags -w --implib -o \$[@] --export \$(srcdir)/$ac_dir/$ac_name.spec
397 .PHONY: $ac_dir/__install-dev__ $ac_dir/__uninstall__
398 $ac_dir/__install-dev__:: $ac_file.$IMPLIBEXT \$(DESTDIR)\$(dlldir)
399         \$(INSTALL_DATA) $ac_file.$IMPLIBEXT \$(DESTDIR)\$(dlldir)/lib$ac_implib.$IMPLIBEXT
400 $ac_dir/__uninstall__::
401         \$(RM) \$(DESTDIR)\$(dlldir)/lib$ac_implib.$IMPLIBEXT
402 install install-dev:: $ac_dir/__install-dev__
403 __uninstall__: $ac_dir/__uninstall__"
404         if test "x$CROSSTEST_DISABLE" = x
405         then
406             wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
407 "__builddeps__: $ac_file.cross.a
408 $ac_file.cross.a: $ac_dir/$ac_name.spec $ac_dir/Makefile \$(WINEBUILD)
409         \$(WINEBUILD) \$(CROSSTARGET:%=-b %)$ac_implibflags -w --implib -o \$[@] --export \$(srcdir)/$ac_dir/$ac_name.spec"
410         fi
411
412         if test "$ac_name" != "$ac_implib"
413         then
414             wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
415 "__builddeps__: dlls/lib$ac_implib.$IMPLIBEXT
416 dlls/lib$ac_implib.$IMPLIBEXT: $ac_file.$IMPLIBEXT
417         \$(RM) \$[@] && \$(LN_S) $ac_name/lib$ac_implib.$IMPLIBEXT \$[@]
418 clean::
419         \$(RM) dlls/lib$ac_implib.$IMPLIBEXT"
420             if test "x$CROSSTEST_DISABLE" = x
421             then
422                 wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
423 "__builddeps__: dlls/lib$ac_implib.cross.a
424 dlls/lib$ac_implib.cross.a: $ac_file.cross.a
425         \$(RM) \$[@] && \$(LN_S) $ac_name/lib$ac_implib.cross.a \$[@]"
426             fi
427         fi
428     fi
429 }
430
431 wine_fn_config_program ()
432 {
433     ac_name=$[1]
434     ac_dir=programs/$ac_name
435     ac_enable=$[2]
436     ac_flags=$[3]
437     ac_program=$ac_name
438
439     case $ac_name in
440       *.*) ;;
441       *)   ac_program=$ac_program.exe ;;
442     esac
443
444     wine_fn_config_makefile $ac_dir $ac_enable "$ac_flags" programs/Makeprog.rules
445
446     AS_VAR_IF([$ac_enable],[no],,[wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
447 "$ac_dir: __builddeps__"
448
449     wine_fn_pot_rules $ac_dir $ac_flags
450
451     wine_fn_has_flag install $ac_flags || return
452     wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
453 ".PHONY: $ac_dir/__install__ $ac_dir/__uninstall__
454 install install-lib:: $ac_dir/__install__
455 __uninstall__: $ac_dir/__uninstall__"
456
457     if test -n "$DLLEXT"
458     then
459         wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
460 "$ac_dir/__install__:: $ac_dir \$(DESTDIR)\$(dlldir) \$(DESTDIR)\$(fakedlldir)
461         \$(INSTALL_PROGRAM) $ac_dir/$ac_program$DLLEXT \$(DESTDIR)\$(dlldir)/$ac_program$DLLEXT
462         \$(INSTALL_DATA) $ac_dir/$ac_program.fake \$(DESTDIR)\$(fakedlldir)/$ac_program
463 $ac_dir/__uninstall__::
464         \$(RM) \$(DESTDIR)\$(dlldir)/$ac_program$DLLEXT \$(DESTDIR)\$(fakedlldir)/$ac_program"
465
466         if test "x$enable_tools" != xno && wine_fn_has_flag installbin $ac_flags
467         then
468             wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
469 "$ac_dir/__install__:: tools \$(DESTDIR)\$(bindir)
470         \$(INSTALL_SCRIPT) tools/wineapploader \$(DESTDIR)\$(bindir)/$ac_name
471 $ac_dir/__uninstall__::
472         \$(RM) \$(DESTDIR)\$(bindir)/$ac_name"
473         fi
474     else
475         wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
476 "$ac_dir/__install-lib__:: $ac_dir \$(DESTDIR)\$(dlldir)
477         \$(INSTALL_PROGRAM) $ac_dir/$ac_program \$(DESTDIR)\$(dlldir)/$ac_program
478 $ac_dir/__uninstall__::
479         \$(RM) \$(DESTDIR)\$(dlldir)/$ac_program"
480     fi
481
482     if test "x$enable_tools" != xno && wine_fn_has_flag manpage $ac_flags
483     then
484         wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
485 "$ac_dir/__install__:: $ac_dir \$(DESTDIR)\$(mandir)/man\$(prog_manext)
486         \$(INSTALL_DATA) $ac_dir/$ac_name.man \$(DESTDIR)\$(mandir)/man\$(prog_manext)/$ac_name.\$(prog_manext)
487 $ac_dir/__uninstall__::
488         \$(RM) \$(DESTDIR)\$(mandir)/man\$(prog_manext)/$ac_name.\$(prog_manext)"
489     fi])
490 }
491
492 wine_fn_config_test ()
493 {
494     ac_dir=$[1]
495     ac_name=$[2]
496     ac_flags=$[3]
497     wine_fn_append_file ALL_TEST_RESOURCES $ac_name.res
498     wine_fn_all_dir_rules $ac_dir Maketest.rules
499
500     AS_VAR_IF([enable_tests],[no],,[wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
501 "all: $ac_dir
502 .PHONY: $ac_dir
503 $ac_dir: $ac_dir/Makefile programs/winetest/Makefile __builddeps__ dummy
504         @cd $ac_dir && \$(MAKE)
505 programs/winetest: $ac_dir
506 check test: $ac_dir/__test__
507 .PHONY: $ac_dir/__test__
508 $ac_dir/__test__: dummy
509         @cd $ac_dir && \$(MAKE) test
510 testclean::
511         \$(RM) $ac_dir/*.ok"
512
513         if test "x$CROSSTEST_DISABLE" = x
514         then
515             wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
516 "crosstest: $ac_dir/__crosstest__
517 .PHONY: $ac_dir/__crosstest__
518 $ac_dir/__crosstest__: $ac_dir/Makefile __builddeps__ dummy
519         @cd $ac_dir && \$(MAKE) crosstest"
520         fi])
521 }
522
523 wine_fn_config_tool ()
524 {
525     ac_dir=$[1]
526     ac_flags=$[2]
527     AS_VAR_IF([enable_tools],[no],[return 0])
528
529     wine_fn_config_makefile $ac_dir enable_tools $ac_flags
530
531     wine_fn_append_rule ALL_MAKEFILE_DEPENDS "__tooldeps__: $ac_dir"
532     wine_fn_append_rule ALL_MAKEFILE_DEPENDS "$ac_dir: libs/port"
533     case $ac_dir in
534       tools/winebuild) wine_fn_append_rule ALL_MAKEFILE_DEPENDS "\$(WINEBUILD): $ac_dir" ;;
535     esac
536 }
537
538 wine_fn_config_makerules ()
539 {
540     ac_rules=$[1]
541     ac_deps=$[2]
542     wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
543 "$ac_rules: $ac_rules.in $ac_deps config.status
544         @./config.status $ac_rules
545 distclean::
546         \$(RM) $ac_rules"
547 }
548
549 wine_fn_config_symlink ()
550 {
551     ac_link=$[1]
552     wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
553 "$ac_link:
554         @./config.status $ac_link
555 distclean::
556         \$(RM) $ac_link"
557 }
558
559 if test "x$CROSSTEST_DISABLE" != x
560 then
561     wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
562 "crosstest:
563         @echo \"crosstest is not supported (mingw not installed?)\" && false"
564 fi])
565
566 dnl **** Define helper function to append a file to a makefile file list ****
567 dnl
568 dnl Usage: WINE_APPEND_FILE(var,file)
569 dnl
570 AC_DEFUN([WINE_APPEND_FILE],[AC_REQUIRE([WINE_CONFIG_HELPERS])wine_fn_append_file $1 "$2"])
571
572 dnl **** Define helper function to append a rule to a makefile command list ****
573 dnl
574 dnl Usage: WINE_APPEND_RULE(var,rule)
575 dnl
576 AC_DEFUN([WINE_APPEND_RULE],[AC_REQUIRE([WINE_CONFIG_HELPERS])wine_fn_append_rule $1 "$2"])
577
578 dnl **** Create nonexistent directories from config.status ****
579 dnl
580 dnl Usage: WINE_CONFIG_EXTRA_DIR(dirname)
581 dnl
582 AC_DEFUN([WINE_CONFIG_EXTRA_DIR],
583 [AC_CONFIG_COMMANDS([$1],[test -d "$1" || { AC_MSG_NOTICE([creating $1]); AS_MKDIR_P("$1"); }])])
584
585 dnl **** Create symlinks from config.status ****
586 dnl
587 dnl Usage: WINE_CONFIG_SYMLINK(name,target,enable)
588 dnl
589 AC_DEFUN([WINE_CONFIG_SYMLINK],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
590 m4_ifval([$3],[if test "x$[$3]" != xno; then
591 ])AC_CONFIG_LINKS([$1:]m4_default([$2],[$1]))dnl
592 m4_if([$2],,[test "$srcdir" = "." || ])wine_fn_config_symlink $1[]m4_ifval([$3],[
593 fi])])
594
595 dnl **** Create a make rules file from config.status ****
596 dnl
597 dnl Usage: WINE_CONFIG_MAKERULES(file,var,deps)
598 dnl
599 AC_DEFUN([WINE_CONFIG_MAKERULES],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
600 wine_fn_config_makerules $1 $3
601 $2=$1
602 AC_SUBST_FILE([$2])dnl
603 AC_CONFIG_FILES([$1])])
604
605 dnl **** Create a makefile from config.status ****
606 dnl
607 dnl Usage: WINE_CONFIG_MAKEFILE(file,enable,flags)
608 dnl
609 AC_DEFUN([WINE_CONFIG_MAKEFILE],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
610 AS_VAR_PUSHDEF([ac_enable],m4_default([$2],[enable_]$1))dnl
611 wine_fn_config_makefile [$1] ac_enable [$3]dnl
612 AS_VAR_POPDEF([ac_enable])])
613
614 dnl **** Create a dll makefile from config.status ****
615 dnl
616 dnl Usage: WINE_CONFIG_DLL(name,enable,flags,implib)
617 dnl
618 AC_DEFUN([WINE_CONFIG_DLL],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
619 AS_VAR_PUSHDEF([ac_enable],m4_default([$2],[enable_]$1))dnl
620 wine_fn_config_dll [$1] ac_enable [$3] [$4]dnl
621 AS_VAR_POPDEF([ac_enable])])
622
623 dnl **** Create a program makefile from config.status ****
624 dnl
625 dnl Usage: WINE_CONFIG_PROGRAM(name,enable,flags)
626 dnl
627 AC_DEFUN([WINE_CONFIG_PROGRAM],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
628 AS_VAR_PUSHDEF([ac_enable],m4_default([$2],[enable_]$1))dnl
629 wine_fn_config_program [$1] ac_enable [$3]dnl
630 AS_VAR_POPDEF([ac_enable])])
631
632 dnl **** Create a test makefile from config.status ****
633 dnl
634 dnl Usage: WINE_CONFIG_TEST(dir,flags)
635 dnl
636 AC_DEFUN([WINE_CONFIG_TEST],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
637 m4_pushdef([ac_suffix],m4_if(m4_substr([$1],0,9),[programs/],[.exe_test],[_test]))dnl
638 m4_pushdef([ac_name],[m4_bpatsubst([$1],[.*/\(.*\)/tests$],[\1])])dnl
639 wine_fn_config_test $1 ac_name[]ac_suffix [$2]dnl
640 m4_popdef([ac_suffix])dnl
641 m4_popdef([ac_name])])
642
643 dnl **** Create a static lib makefile from config.status ****
644 dnl
645 dnl Usage: WINE_CONFIG_LIB(name,flags)
646 dnl
647 AC_DEFUN([WINE_CONFIG_LIB],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
648 wine_fn_config_lib [$1] [$2]])
649
650 dnl **** Create a tool makefile from config.status ****
651 dnl
652 dnl Usage: WINE_CONFIG_TOOL(name,flags)
653 dnl
654 AC_DEFUN([WINE_CONFIG_TOOL],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
655 wine_fn_config_tool [$1] [$2]])
656
657 dnl **** Add a message to the list displayed at the end ****
658 dnl
659 dnl Usage: WINE_NOTICE(notice)
660 dnl Usage: WINE_NOTICE_WITH(with_flag, test, notice)
661 dnl Usage: WINE_WARNING(warning)
662 dnl Usage: WINE_WARNING_WITH(with_flag, test, warning)
663 dnl Usage: WINE_PRINT_MESSAGES
664 dnl
665 AC_DEFUN([WINE_NOTICE],[AS_VAR_APPEND([wine_notices],["|$1"])])
666 AC_DEFUN([WINE_WARNING],[AS_VAR_APPEND([wine_warnings],["|$1"])])
667
668 AC_DEFUN([WINE_NOTICE_WITH],[AS_IF([$2],[case "x$with_$1" in
669   x)   WINE_NOTICE([$3]) ;;
670   xno) ;;
671   *)   AC_MSG_ERROR([$3
672 This is an error since --with-$1 was requested.]) ;;
673 esac])])
674
675 AC_DEFUN([WINE_WARNING_WITH],[AS_IF([$2],[case "x$with_$1" in
676   x)   WINE_WARNING([$3]) ;;
677   xno) ;;
678   *)   AC_MSG_ERROR([$3
679 This is an error since --with-$1 was requested.]) ;;
680 esac])])
681
682 AC_DEFUN([WINE_ERROR_WITH],[AS_IF([$2],[case "x$with_$1" in
683   xno) ;;
684   *)   AC_MSG_ERROR([$3
685 Use the --without-$1 option if you really want this.]) ;;
686 esac])])
687
688 AC_DEFUN([WINE_PRINT_MESSAGES],[ac_save_IFS="$IFS"
689 if test "x$wine_notices != "x; then
690     echo >&AS_MESSAGE_FD
691     IFS="|"
692     for msg in $wine_notices; do
693         IFS="$ac_save_IFS"
694         if test -n "$msg"; then
695             AC_MSG_NOTICE([$msg])
696         fi
697     done
698 fi
699 IFS="|"
700 for msg in $wine_warnings; do
701     IFS="$ac_save_IFS"
702     if test -n "$msg"; then
703         echo >&2
704         AC_MSG_WARN([$msg])
705     fi
706 done
707 IFS="$ac_save_IFS"])
708
709 dnl Local Variables:
710 dnl compile-command: "autoreconf --warnings=all"
711 dnl End: