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