ntdll/tests: Fix compilation on systems that don't support nameless unions.
[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   x86_64)
131     ac_prefix_list="m4_foreach([ac_wine_prefix],[pc-mingw32, w64-mingw32, mingw32msvc],
132                         m4_foreach([ac_wine_cpu],[x86_64,amd64],[ac_wine_cpu-ac_wine_prefix-$2 ]))" ;;
133   *)
134     ac_prefix_list="" ;;
135 esac
136 AC_CHECK_PROGS([$1],[$ac_prefix_list],[$3],[$4])])
137
138
139 dnl **** Define helper functions for creating config.status files ****
140 dnl
141 dnl Usage: AC_REQUIRE([WINE_CONFIG_HELPERS])
142 dnl
143 AC_DEFUN([WINE_CONFIG_HELPERS],
144 [ALL_MAKEFILE_DEPENDS="
145 # Rules automatically generated by configure
146
147 .INIT: Makefile
148 .MAKEFILEDEPS:
149 all: Makefile
150 Makefile: Makefile.in Make.vars.in Make.rules config.status
151         @./config.status Make.tmp Makefile"
152
153 ALL_POT_FILES=""
154 AC_SUBST(ALL_TEST_RESOURCES,"")
155
156 wine_fn_append_file ()
157 {
158     AS_VAR_APPEND($[1]," \\$as_nl       $[2]")
159 }
160
161 wine_fn_append_rule ()
162 {
163     AS_VAR_APPEND($[1],"$as_nl$[2]")
164 }
165
166 wine_fn_has_flag ()
167 {
168     expr ",$[2]," : ".*,$[1],.*" >/dev/null
169 }
170
171 wine_fn_all_dir_rules ()
172 {
173     ac_dir=$[1]
174     ac_alldeps=$[2]
175     ac_makedep="\$(MAKEDEP)"
176     ac_input=Make.vars.in:$ac_dir/Makefile.in
177     if test $ac_dir != tools
178     then
179         dnl makedep is in tools so tools makefile cannot depend on it
180         ac_alldeps="$[2] $ac_makedep"
181     fi
182     case $[2] in
183       *.in) ac_input=$ac_input:$[2] ;;
184       *) ac_makedep="$[2] $ac_makedep" ;;
185     esac
186
187     wine_fn_append_file ALL_DIRS $ac_dir
188     wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
189 "__clean__: $ac_dir/__clean__
190 .PHONY: $ac_dir/__clean__
191 $ac_dir/__clean__: $ac_dir/Makefile
192         @cd $ac_dir && \$(MAKE) clean
193         \$(RM) $ac_dir/Makefile
194 $ac_dir/Makefile: $ac_dir/Makefile.in Make.vars.in config.status $ac_alldeps
195         @./config.status --file $ac_dir/Makefile:$ac_input && cd $ac_dir && \$(MAKE) depend
196 depend: $ac_dir/__depend__
197 .PHONY: $ac_dir/__depend__
198 $ac_dir/__depend__: $ac_makedep dummy
199         @./config.status --file $ac_dir/Makefile:$ac_input && cd $ac_dir && \$(MAKE) depend"
200 }
201
202 wine_fn_config_makefile ()
203 {
204     ac_dir=$[1]
205     ac_enable=$[2]
206     ac_flags=$[3]
207     ac_rules=$[4]
208     AS_VAR_IF([$ac_enable],[no],[return 0])
209
210     wine_fn_all_dir_rules $ac_dir ${ac_rules:-Make.rules}
211     wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
212 "all: $ac_dir
213 .PHONY: $ac_dir
214 $ac_dir: $ac_dir/Makefile dummy
215         @cd $ac_dir && \$(MAKE)"
216
217     wine_fn_has_flag install-lib $ac_flags || wine_fn_has_flag install-dev $ac_flags || return
218
219     wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
220 ".PHONY: $ac_dir/__install__ $ac_dir/__uninstall__
221 $ac_dir/__install__:: $ac_dir
222         @cd $ac_dir && \$(MAKE) install
223 $ac_dir/__uninstall__:: $ac_dir/Makefile
224         @cd $ac_dir && \$(MAKE) uninstall
225 install:: $ac_dir/__install__
226 __uninstall__: $ac_dir/__uninstall__"
227
228     if wine_fn_has_flag install-lib $ac_flags
229     then
230         wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
231 ".PHONY: $ac_dir/__install-lib__
232 $ac_dir/__install-lib__:: $ac_dir
233         @cd $ac_dir && \$(MAKE) install-lib
234 install-lib:: $ac_dir/__install-lib__"
235     fi
236
237     if wine_fn_has_flag install-dev $ac_flags
238     then
239         wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
240 ".PHONY: $ac_dir/__install-dev
241 $ac_dir/__install-dev__:: $ac_dir
242         @cd $ac_dir && \$(MAKE) install-dev
243 install-dev:: $ac_dir/__install-dev__"
244     fi
245 }
246
247 wine_fn_config_lib ()
248 {
249     ac_name=$[1]
250     ac_flags=$[2]
251     ac_dir=dlls/$ac_name
252     wine_fn_config_makefile $ac_dir enable_$ac_name "$ac_flags" dlls/Makeimplib.rules
253
254     if wine_fn_has_flag install-dev $ac_flags
255     then :
256     else
257         wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
258 ".PHONY: $ac_dir/__install__ $ac_dir/__uninstall__
259 $ac_dir/__install__:: $ac_dir \$(DESTDIR)\$(dlldir)
260         \$(INSTALL_DATA) $ac_dir/lib$ac_name.a \$(DESTDIR)\$(dlldir)/lib$ac_name.a
261 $ac_dir/__uninstall__::
262         \$(RM) \$(DESTDIR)\$(dlldir)/lib$ac_name.a
263 install install-dev:: $ac_dir/__install__
264 __uninstall__: $ac_dir/__uninstall__"
265     fi
266
267     wine_fn_append_rule ALL_MAKEFILE_DEPENDS "__builddeps__: $ac_dir"
268     wine_fn_append_rule ALL_MAKEFILE_DEPENDS "$ac_dir: tools/widl tools/winebuild tools/winegcc include"
269 }
270
271 wine_fn_config_dll ()
272 {
273     ac_name=$[1]
274     ac_dir=dlls/$ac_name
275     ac_enable=$[2]
276     ac_flags=$[3]
277     ac_implib=${4:-$ac_name}
278     ac_file=$ac_dir/lib$ac_implib
279     ac_dll=$ac_name
280     ac_deps="tools/widl tools/winebuild tools/winegcc include"
281     ac_implibflags=""
282
283     case $ac_name in
284       *16) ac_implibflags=" -m16" ;;
285       *.*) ;;
286       *)   ac_dll=$ac_dll.dll ;;
287     esac
288
289     wine_fn_config_makefile $ac_dir $ac_enable "$ac_flags" dlls/Makedll.rules
290
291     AS_VAR_IF([$ac_enable],[no],
292               dnl enable_win16 is special in that it disables import libs too
293               [test "$ac_enable" != enable_win16 || return 0
294                wine_fn_has_flag implib $ac_flags && wine_fn_all_dir_rules $ac_dir dlls/Makedll.rules],
295
296               [wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
297 "$ac_dir: __builddeps__
298 manpages htmlpages sgmlpages xmlpages:: $ac_dir/Makefile
299         @cd $ac_dir && \$(MAKE) \$[@]"
300
301         if wine_fn_has_flag install-lib $ac_flags
302         then :
303         else
304             wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
305 ".PHONY: $ac_dir/__install-lib__ $ac_dir/__uninstall__
306 install install-lib:: $ac_dir/__install-lib__
307 __uninstall__: $ac_dir/__uninstall__"
308             if test -n "$DLLEXT"
309             then
310                 wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
311 "$ac_dir/__install-lib__:: $ac_dir \$(DESTDIR)\$(dlldir) \$(DESTDIR)\$(fakedlldir)
312         \$(INSTALL_PROGRAM) $ac_dir/$ac_dll$DLLEXT \$(DESTDIR)\$(dlldir)/$ac_dll$DLLEXT
313         \$(INSTALL_DATA) $ac_dir/$ac_dll.fake \$(DESTDIR)\$(fakedlldir)/$ac_dll
314 $ac_dir/__uninstall__::
315         \$(RM) \$(DESTDIR)\$(dlldir)/$ac_dll$DLLEXT \$(DESTDIR)\$(fakedlldir)/$ac_dll"
316             else
317                 wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
318 "$ac_dir/__install-lib__:: $ac_dir \$(DESTDIR)\$(dlldir)
319         \$(INSTALL_PROGRAM) $ac_dir/$ac_dll \$(DESTDIR)\$(dlldir)/$ac_dll
320 $ac_dir/__uninstall__::
321         \$(RM) \$(DESTDIR)\$(dlldir)/$ac_dll"
322             fi
323         fi
324
325         if test "x$enable_maintainer_mode" = xyes
326         then
327             if wine_fn_has_flag mc $ac_flags
328             then
329                 wine_fn_append_file ALL_POT_FILES $ac_dir/msg.pot
330                 wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
331 "$ac_dir/msg.pot: $ac_dir"
332             fi
333             if wine_fn_has_flag po $ac_flags
334             then
335                 wine_fn_append_file ALL_POT_FILES $ac_dir/rsrc.pot
336                 wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
337 "$ac_dir/rsrc.pot: $ac_dir"
338             fi
339         fi])
340
341     if wine_fn_has_flag staticimplib $ac_flags
342     then
343         wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
344 "__builddeps__: $ac_file.$IMPLIBEXT $ac_file.$STATIC_IMPLIBEXT
345 $ac_file.$IMPLIBEXT $ac_file.$STATIC_IMPLIBEXT $ac_file.cross.a: $ac_deps
346 $ac_file.def: $ac_dir/$ac_name.spec $ac_dir/Makefile
347         @cd $ac_dir && \$(MAKE) lib$ac_implib.def
348 $ac_file.$STATIC_IMPLIBEXT: $ac_dir/Makefile dummy
349         @cd $ac_dir && \$(MAKE) lib$ac_implib.$STATIC_IMPLIBEXT
350 .PHONY: $ac_dir/__install-dev__ $ac_dir/__uninstall__
351 $ac_dir/__install-dev__:: $ac_file.$IMPLIBEXT \$(DESTDIR)\$(dlldir)
352         \$(INSTALL_DATA) $ac_file.$IMPLIBEXT \$(DESTDIR)\$(dlldir)/lib$ac_implib.$IMPLIBEXT
353 $ac_dir/__uninstall__::
354         \$(RM) \$(DESTDIR)\$(dlldir)/lib$ac_implib.$IMPLIBEXT
355 install install-dev:: $ac_dir/__install-dev__
356 __uninstall__: $ac_dir/__uninstall__"
357
358         if test "$IMPLIBEXT" != "$STATIC_IMPLIBEXT"
359         then
360             wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
361 "$ac_dir/__install-dev__:: $ac_file.$STATIC_IMPLIBEXT \$(DESTDIR)\$(dlldir) __builddeps__
362         \$(INSTALL_DATA) $ac_file.$STATIC_IMPLIBEXT \$(DESTDIR)\$(dlldir)/lib$ac_implib.$STATIC_IMPLIBEXT
363 $ac_dir/__uninstall__::
364         \$(RM) \$(DESTDIR)\$(dlldir)/lib$ac_implib.$STATIC_IMPLIBEXT"
365         fi
366
367         if test "x$CROSSTEST_DISABLE" = x
368         then
369             wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
370 "__builddeps__: $ac_file.cross.a
371 $ac_file.cross.a: $ac_dir/Makefile dummy
372         @cd $ac_dir && \$(MAKE) lib$ac_implib.cross.a"
373         fi
374
375     elif wine_fn_has_flag implib $ac_flags
376     then
377         wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
378 "__builddeps__: $ac_file.$IMPLIBEXT
379 $ac_file.def: $ac_dir/$ac_name.spec $ac_dir/Makefile \$(WINEBUILD)
380         \$(WINEBUILD) \$(TARGETFLAGS)$ac_implibflags -w --def -o \$[@] --export \$(srcdir)/$ac_dir/$ac_name.spec
381 $ac_file.a: $ac_dir/$ac_name.spec $ac_dir/Makefile \$(WINEBUILD)
382         \$(WINEBUILD) \$(TARGETFLAGS)$ac_implibflags -w --implib -o \$[@] --export \$(srcdir)/$ac_dir/$ac_name.spec
383 .PHONY: $ac_dir/__install-dev__ $ac_dir/__uninstall__
384 $ac_dir/__install-dev__:: $ac_file.$IMPLIBEXT \$(DESTDIR)\$(dlldir)
385         \$(INSTALL_DATA) $ac_file.$IMPLIBEXT \$(DESTDIR)\$(dlldir)/lib$ac_implib.$IMPLIBEXT
386 $ac_dir/__uninstall__::
387         \$(RM) \$(DESTDIR)\$(dlldir)/lib$ac_implib.$IMPLIBEXT
388 install install-dev:: $ac_dir/__install-dev__
389 __uninstall__: $ac_dir/__uninstall__"
390         if test "x$CROSSTEST_DISABLE" = x
391         then
392             wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
393 "__builddeps__: $ac_file.cross.a
394 $ac_file.cross.a: $ac_dir/$ac_name.spec $ac_dir/Makefile \$(WINEBUILD)
395         \$(WINEBUILD) \$(CROSSTARGET:%=-b %)$ac_implibflags -w --implib -o \$[@] --export \$(srcdir)/$ac_dir/$ac_name.spec"
396         fi
397
398         if test "$ac_name" != "$ac_implib"
399         then
400             wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
401 "__builddeps__: dlls/lib$ac_implib.$IMPLIBEXT
402 dlls/lib$ac_implib.$IMPLIBEXT: $ac_file.$IMPLIBEXT
403         \$(RM) \$[@] && \$(LN_S) $ac_name/lib$ac_implib.$IMPLIBEXT \$[@]
404 clean::
405         \$(RM) dlls/lib$ac_implib.$IMPLIBEXT"
406             if test "x$CROSSTEST_DISABLE" = x
407             then
408                 wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
409 "__builddeps__: dlls/lib$ac_implib.cross.a
410 dlls/lib$ac_implib.cross.a: $ac_file.cross.a
411         \$(RM) \$[@] && \$(LN_S) $ac_name/lib$ac_implib.cross.a \$[@]"
412             fi
413         fi
414     fi
415 }
416
417 wine_fn_config_program ()
418 {
419     ac_name=$[1]
420     ac_dir=programs/$ac_name
421     ac_enable=$[2]
422     ac_flags=$[3]
423     ac_program=$ac_name
424
425     case $ac_name in
426       *.*) ;;
427       *)   ac_program=$ac_program.exe ;;
428     esac
429
430     wine_fn_config_makefile $ac_dir $ac_enable "$ac_flags" programs/Makeprog.rules
431
432     AS_VAR_IF([$ac_enable],[no],,[wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
433 "$ac_dir: __builddeps__"
434
435     if test "x$enable_maintainer_mode" = xyes
436     then
437         if wine_fn_has_flag mc $ac_flags
438         then
439             wine_fn_append_file ALL_POT_FILES $ac_dir/msg.pot
440             wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
441 "$ac_dir/msg.pot: $ac_dir"
442         fi
443         if wine_fn_has_flag po $ac_flags
444         then
445             wine_fn_append_file ALL_POT_FILES $ac_dir/rsrc.pot
446             wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
447 "$ac_dir/rsrc.pot: $ac_dir"
448         fi
449     fi
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
483 wine_fn_config_test ()
484 {
485     ac_dir=$[1]
486     ac_name=$[2]
487     ac_flags=$[3]
488     wine_fn_append_file ALL_TEST_RESOURCES $ac_name.res
489     wine_fn_all_dir_rules $ac_dir Maketest.rules
490
491     AS_VAR_IF([enable_tests],[no],,[wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
492 "all: $ac_dir
493 .PHONY: $ac_dir
494 $ac_dir: $ac_dir/Makefile programs/winetest/Makefile __builddeps__ dummy
495         @cd $ac_dir && \$(MAKE)
496 programs/winetest: $ac_dir
497 check test: $ac_dir/__test__
498 .PHONY: $ac_dir/__test__
499 $ac_dir/__test__: dummy
500         @cd $ac_dir && \$(MAKE) test
501 testclean::
502         \$(RM) $ac_dir/*.ok"
503
504         if test "x$CROSSTEST_DISABLE" = x
505         then
506             wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
507 "crosstest: $ac_dir/__crosstest__
508 .PHONY: $ac_dir/__crosstest__
509 $ac_dir/__crosstest__: $ac_dir/Makefile __builddeps__ dummy
510         @cd $ac_dir && \$(MAKE) crosstest"
511         fi])
512 }
513
514 wine_fn_config_tool ()
515 {
516     ac_dir=$[1]
517     ac_flags=$[2]
518     AS_VAR_IF([enable_tools],[no],[return 0])
519
520     wine_fn_config_makefile $ac_dir enable_tools $ac_flags
521
522     wine_fn_append_rule ALL_MAKEFILE_DEPENDS "__tooldeps__: $ac_dir"
523     wine_fn_append_rule ALL_MAKEFILE_DEPENDS "$ac_dir: libs/port"
524     case $ac_dir in
525       tools/winebuild) wine_fn_append_rule ALL_MAKEFILE_DEPENDS "\$(WINEBUILD): $ac_dir" ;;
526     esac
527 }
528
529 wine_fn_config_makerules ()
530 {
531     ac_rules=$[1]
532     ac_deps=$[2]
533     wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
534 "$ac_rules: $ac_rules.in $ac_deps config.status
535         @./config.status $ac_rules
536 distclean::
537         \$(RM) $ac_rules"
538 }
539
540 wine_fn_config_symlink ()
541 {
542     ac_link=$[1]
543     wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
544 "$ac_link:
545         @./config.status $ac_link
546 distclean::
547         \$(RM) $ac_link"
548 }
549
550 if test "x$CROSSTEST_DISABLE" != x
551 then
552     wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
553 "crosstest:
554         @echo \"crosstest is not supported (mingw not installed?)\" && false"
555 fi])
556
557 dnl **** Define helper function to append a file to a makefile file list ****
558 dnl
559 dnl Usage: WINE_APPEND_FILE(var,file)
560 dnl
561 AC_DEFUN([WINE_APPEND_FILE],[AC_REQUIRE([WINE_CONFIG_HELPERS])wine_fn_append_file $1 "$2"])
562
563 dnl **** Define helper function to append a rule to a makefile command list ****
564 dnl
565 dnl Usage: WINE_APPEND_RULE(var,rule)
566 dnl
567 AC_DEFUN([WINE_APPEND_RULE],[AC_REQUIRE([WINE_CONFIG_HELPERS])wine_fn_append_rule $1 "$2"])
568
569 dnl **** Create nonexistent directories from config.status ****
570 dnl
571 dnl Usage: WINE_CONFIG_EXTRA_DIR(dirname)
572 dnl
573 AC_DEFUN([WINE_CONFIG_EXTRA_DIR],
574 [AC_CONFIG_COMMANDS([$1],[test -d "$1" || { AC_MSG_NOTICE([creating $1]); AS_MKDIR_P("$1"); }])])
575
576 dnl **** Create symlinks from config.status ****
577 dnl
578 dnl Usage: WINE_CONFIG_SYMLINK(name,target,enable)
579 dnl
580 AC_DEFUN([WINE_CONFIG_SYMLINK],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
581 m4_ifval([$3],[if test "x$[$3]" != xno; then
582 ])AC_CONFIG_LINKS([$1:]m4_default([$2],[$1]))dnl
583 m4_if([$2],,[test "$srcdir" = "." || ])wine_fn_config_symlink $1[]m4_ifval([$3],[
584 fi])])
585
586 dnl **** Create a make rules file from config.status ****
587 dnl
588 dnl Usage: WINE_CONFIG_MAKERULES(file,var,deps)
589 dnl
590 AC_DEFUN([WINE_CONFIG_MAKERULES],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
591 wine_fn_config_makerules $1 $3
592 $2=$1
593 AC_SUBST_FILE([$2])dnl
594 AC_CONFIG_FILES([$1])])
595
596 dnl **** Create a makefile from config.status ****
597 dnl
598 dnl Usage: WINE_CONFIG_MAKEFILE(file,enable,flags)
599 dnl
600 AC_DEFUN([WINE_CONFIG_MAKEFILE],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
601 AS_VAR_PUSHDEF([ac_enable],m4_default([$2],[enable_]$1))dnl
602 wine_fn_config_makefile [$1] ac_enable [$3]dnl
603 AS_VAR_POPDEF([ac_enable])])
604
605 dnl **** Create a dll makefile from config.status ****
606 dnl
607 dnl Usage: WINE_CONFIG_DLL(name,enable,flags,implib)
608 dnl
609 AC_DEFUN([WINE_CONFIG_DLL],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
610 AS_VAR_PUSHDEF([ac_enable],m4_default([$2],[enable_]$1))dnl
611 wine_fn_config_dll [$1] ac_enable [$3] [$4]dnl
612 AS_VAR_POPDEF([ac_enable])])
613
614 dnl **** Create a program makefile from config.status ****
615 dnl
616 dnl Usage: WINE_CONFIG_PROGRAM(name,enable,flags)
617 dnl
618 AC_DEFUN([WINE_CONFIG_PROGRAM],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
619 AS_VAR_PUSHDEF([ac_enable],m4_default([$2],[enable_]$1))dnl
620 wine_fn_config_program [$1] ac_enable [$3]dnl
621 AS_VAR_POPDEF([ac_enable])])
622
623 dnl **** Create a test makefile from config.status ****
624 dnl
625 dnl Usage: WINE_CONFIG_TEST(dir,flags)
626 dnl
627 AC_DEFUN([WINE_CONFIG_TEST],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
628 m4_pushdef([ac_suffix],m4_if(m4_substr([$1],0,9),[programs/],[.exe_test],[_test]))dnl
629 m4_pushdef([ac_name],[m4_bpatsubst([$1],[.*/\(.*\)/tests$],[\1])])dnl
630 wine_fn_config_test $1 ac_name[]ac_suffix [$2]dnl
631 m4_popdef([ac_suffix])dnl
632 m4_popdef([ac_name])])
633
634 dnl **** Create a static lib makefile from config.status ****
635 dnl
636 dnl Usage: WINE_CONFIG_LIB(name,flags)
637 dnl
638 AC_DEFUN([WINE_CONFIG_LIB],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
639 wine_fn_config_lib [$1] [$2]])
640
641 dnl **** Create a tool makefile from config.status ****
642 dnl
643 dnl Usage: WINE_CONFIG_TOOL(name,flags)
644 dnl
645 AC_DEFUN([WINE_CONFIG_TOOL],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
646 wine_fn_config_tool [$1] [$2]])
647
648 dnl **** Add a message to the list displayed at the end ****
649 dnl
650 dnl Usage: WINE_NOTICE(notice)
651 dnl Usage: WINE_NOTICE_WITH(with_flag, test, notice)
652 dnl Usage: WINE_WARNING(warning)
653 dnl Usage: WINE_WARNING_WITH(with_flag, test, warning)
654 dnl Usage: WINE_PRINT_MESSAGES
655 dnl
656 AC_DEFUN([WINE_NOTICE],[AS_VAR_APPEND([wine_notices],["|$1"])])
657 AC_DEFUN([WINE_WARNING],[AS_VAR_APPEND([wine_warnings],["|$1"])])
658
659 AC_DEFUN([WINE_NOTICE_WITH],[AS_IF([$2],[case "x$with_$1" in
660   x)   WINE_NOTICE([$3]) ;;
661   xno) ;;
662   *)   AC_MSG_ERROR([$3
663 This is an error since --with-$1 was requested.]) ;;
664 esac])])
665
666 AC_DEFUN([WINE_WARNING_WITH],[AS_IF([$2],[case "x$with_$1" in
667   x)   WINE_WARNING([$3]) ;;
668   xno) ;;
669   *)   AC_MSG_ERROR([$3
670 This is an error since --with-$1 was requested.]) ;;
671 esac])])
672
673 AC_DEFUN([WINE_ERROR_WITH],[AS_IF([$2],[case "x$with_$1" in
674   xno) ;;
675   *)   AC_MSG_ERROR([$3
676 Use the --without-$1 option if you really want this.]) ;;
677 esac])])
678
679 AC_DEFUN([WINE_PRINT_MESSAGES],[ac_save_IFS="$IFS"
680 if test "x$wine_notices != "x; then
681     echo >&AS_MESSAGE_FD
682     IFS="|"
683     for msg in $wine_notices; do
684         IFS="$ac_save_IFS"
685         if test -n "$msg"; then
686             AC_MSG_NOTICE([$msg])
687         fi
688     done
689 fi
690 IFS="|"
691 for msg in $wine_warnings; do
692     IFS="$ac_save_IFS"
693     if test -n "$msg"; then
694         echo >&2
695         AC_MSG_WARN([$msg])
696     fi
697 done
698 IFS="$ac_save_IFS"])
699
700 dnl Local Variables:
701 dnl compile-command: "autoreconf --warnings=all"
702 dnl End: