makefiles: Generate rules for installing wine.inf.
[wine.git] / aclocal.m4
blob8e047b55aa7d83ab872654441ce02b4b9f619b66
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,prog,[value-if-not-found],[path])
176 AC_DEFUN([WINE_CHECK_MINGW_PROG],
177 [case "$host_cpu" in
178   i[[3456789]]86*)
179     ac_prefix_list="m4_foreach([ac_wine_prefix],[w64-mingw32, pc-mingw32, mingw32msvc, mingw32],
180                         m4_foreach([ac_wine_cpu],[i686,i586,i486,i386],[ac_wine_cpu-ac_wine_prefix-$2 ]))
181                         mingw32-$2" ;;
182   x86_64)
183     ac_prefix_list="m4_foreach([ac_wine_prefix],[pc-mingw32, w64-mingw32, mingw32msvc],
184                         m4_foreach([ac_wine_cpu],[x86_64,amd64],[ac_wine_cpu-ac_wine_prefix-$2 ]))" ;;
185   *)
186     ac_prefix_list="" ;;
187 esac
188 AC_CHECK_PROGS([$1],[$ac_prefix_list],[$3],[$4])])
191 dnl **** Define helper functions for creating config.status files ****
193 dnl Usage: AC_REQUIRE([WINE_CONFIG_HELPERS])
195 AC_DEFUN([WINE_CONFIG_HELPERS],
196 [wine_rules_file=conf$$rules.make
197 rm -f $wine_rules_file
198 ALL_POT_FILES=""
199 GITIGNORE="# Automatically generated by configure; DO NOT EDIT!!"
200 AC_SUBST(ALL_TEST_RESOURCES,"")
202 wine_fn_append_file ()
204     AS_VAR_APPEND($[1]," \\$as_nl       $[2]")
207 wine_fn_ignore_file ()
209     case "$[1]" in
210       */*) AS_VAR_APPEND([GITIGNORE],"$as_nl$[1]") ;;
211       \**) AS_VAR_APPEND([GITIGNORE],"$as_nl$[1]") ;;
212       *)   AS_VAR_APPEND([GITIGNORE],"$as_nl/$[1]") ;;
213     esac
216 wine_fn_append_rule ()
218     AS_ECHO("$[1]") >>$wine_rules_file
221 wine_fn_has_flag ()
223     expr ",$ac_flags," : ".*,$[1],.*" >/dev/null
226 wine_fn_depend_rules ()
228     if wine_fn_has_flag config
229     then
230         wine_fn_append_rule \
231 "$ac_dir/Makefile: $srcdir/$ac_dir/Makefile.in Makefile config.status \$(MAKEDEP)
232         @./config.status --file $ac_dir/Makefile && \$(MAKEDEP) -iMakefile $ac_dir
233 depend: $ac_dir/depend
234 .PHONY: $ac_dir/depend
235 $ac_dir/depend: \$(MAKEDEP) dummy
236         @./config.status --file $ac_dir/Makefile && \$(MAKEDEP) -iMakefile $ac_dir"
237     else
238         wine_fn_append_rule \
239 "$ac_dir/Makefile: $srcdir/$ac_dir/Makefile.in Makefile \$(MAKEDEP)
240         \$(MAKEDEP) $ac_dir
241 depend: $ac_dir/depend
242 .PHONY: $ac_dir/depend
243 $ac_dir/depend: \$(MAKEDEP) dummy
244         \$(MAKEDEP) $ac_dir"
245     fi
248 wine_fn_pot_rules ()
250     test "x$with_gettextpo" = xyes || return
252     if wine_fn_has_flag mc
253     then
254         wine_fn_append_file ALL_POT_FILES $ac_dir/msg.pot
255         wine_fn_append_rule \
256 "$ac_dir/msg.pot: $ac_dir/Makefile dummy
257         @cd $ac_dir && \$(MAKE) msg.pot
258 $ac_dir/msg.pot: tools/wmc include"
259     fi
260     if wine_fn_has_flag po
261     then
262         wine_fn_append_file ALL_POT_FILES $ac_dir/rsrc.pot
263         wine_fn_append_rule \
264 "$ac_dir/rsrc.pot: $ac_dir/Makefile dummy
265         @cd $ac_dir && \$(MAKE) rsrc.pot
266 $ac_dir/rsrc.pot: tools/wrc include"
267     fi
270 wine_fn_all_rules ()
272     wine_fn_depend_rules
273     wine_fn_append_rule \
274 "all: $ac_dir
275 .PHONY: $ac_dir
276 $ac_dir: $ac_dir/Makefile dummy
277         @cd $ac_dir && \$(MAKE)"
280 wine_fn_install_rules ()
282     wine_fn_has_flag install-lib || wine_fn_has_flag install-dev || return
284     wine_fn_append_rule \
285 ".PHONY: $ac_dir/install $ac_dir/uninstall
286 $ac_dir/install:: $ac_dir
287         @cd $ac_dir && \$(MAKE) install
288 $ac_dir/uninstall:: $ac_dir/Makefile
289         @cd $ac_dir && \$(MAKE) uninstall
290 install:: $ac_dir/install
291 __uninstall__: $ac_dir/uninstall"
293     if wine_fn_has_flag install-lib
294     then
295         wine_fn_append_rule \
296 ".PHONY: $ac_dir/install-lib
297 $ac_dir/install-lib:: $ac_dir
298         @cd $ac_dir && \$(MAKE) install-lib
299 install-lib:: $ac_dir/install-lib"
300     fi
302     if wine_fn_has_flag install-dev
303     then
304         wine_fn_append_rule \
305 ".PHONY: $ac_dir/install-dev
306 $ac_dir/install-dev:: $ac_dir
307         @cd $ac_dir && \$(MAKE) install-dev
308 install-dev:: $ac_dir/install-dev"
309     fi
312 wine_fn_clean_rules ()
314     ac_clean=$[@]
315     ac_extraclean="$ac_dir/Makefile"
316     test "$srcdir" = . && ac_extraclean="$ac_extraclean $ac_dir/.gitignore"
317     case $ac_dir in
318         */tests) ac_extraclean="$ac_extraclean $ac_dir/testlist.c" ;;
319     esac
321     if wine_fn_has_flag clean
322     then
323         wine_fn_append_rule \
324 "__clean__: $ac_dir/clean
325 .PHONY: $ac_dir/clean
326 $ac_dir/clean: $ac_dir/Makefile
327         @cd $ac_dir && \$(MAKE) clean
328         \$(RM) $ac_extraclean"
329     else
330         wine_fn_append_rule \
331 "__clean__: $ac_dir/clean
332 .PHONY: $ac_dir/clean
333 $ac_dir/clean: dummy
334         \$(RM) \$(CLEAN_FILES:%=$ac_dir/%) $ac_clean $ac_extraclean"
335     fi
338 wine_fn_disabled_rules ()
340     ac_clean=$[@]
341     ac_extraclean="$ac_dir/Makefile"
342     test "$srcdir" = . && ac_extraclean="$ac_extraclean $ac_dir/.gitignore"
344     wine_fn_depend_rules
345     wine_fn_clean_rules $ac_clean
346     wine_fn_pot_rules
349 wine_fn_config_makefile ()
351     ac_dir=$[1]
352     ac_enable=$[2]
353     ac_flags=$[3]
355     AS_VAR_IF([$ac_enable],[no],[wine_fn_disabled_rules; return])
356     wine_fn_all_rules
357     wine_fn_install_rules
358     wine_fn_clean_rules
361 wine_fn_config_lib ()
363     ac_name=$[1]
364     ac_flags=$[2]
365     ac_dir=dlls/$ac_name
366     ac_deps="include"
368     AS_VAR_IF([enable_tools],[no],,[ac_deps="tools/widl tools/winebuild tools/winegcc $ac_deps"])
369     wine_fn_all_rules
370     wine_fn_clean_rules
372     wine_fn_append_rule \
373 ".PHONY: $ac_dir/install $ac_dir/uninstall
374 $ac_dir/install:: $ac_dir
375         \$(INSTALL_DATA) $ac_dir/lib$ac_name.a \$(DESTDIR)\$(dlldir)/lib$ac_name.a
376 $ac_dir/uninstall::
377         \$(RM) \$(DESTDIR)\$(dlldir)/lib$ac_name.a
378 install install-dev:: $ac_dir/install
379 __uninstall__: $ac_dir/uninstall
380 __builddeps__: $ac_dir
381 $ac_dir: $ac_deps"
384 wine_fn_config_dll ()
386     ac_name=$[1]
387     ac_dir=dlls/$ac_name
388     ac_enable=$[2]
389     ac_flags=$[3]
390     ac_implib=${4:-$ac_name}
391     ac_file=$ac_dir/lib$ac_implib
392     ac_dll=$ac_name
393     ac_deps="include"
394     ac_implibflags=""
396     AS_VAR_IF([enable_tools],[no],,[ac_deps="tools/widl tools/winebuild tools/winegcc $ac_deps"])
397     case $ac_name in
398       *16) ac_implibflags=" -m16" ;;
399       *.*) ;;
400       *)   ac_dll=$ac_dll.dll ;;
401     esac
403     ac_clean=
404     wine_fn_has_flag implib && ac_clean="$ac_clean $ac_file.$IMPLIBEXT"
405     wine_fn_has_flag mc && ac_clean="$ac_clean $ac_dir/msg.pot"
406     wine_fn_has_flag po && ac_clean="$ac_clean $ac_dir/rsrc.pot"
407     test -n "$DLLEXT" || ac_clean="$ac_clean $ac_dir/$ac_dll"
409     AS_VAR_IF([$ac_enable],[no],
410               dnl enable_win16 is special in that it disables import libs too
411               [if wine_fn_has_flag implib && test "$ac_enable" != enable_win16
412                then
413                    wine_fn_depend_rules
414                    wine_fn_clean_rules $ac_clean
415                    wine_fn_pot_rules
416                else
417                    wine_fn_disabled_rules $ac_clean
418                    return
419                fi],
421               [wine_fn_all_rules
422                wine_fn_clean_rules $ac_clean
423                wine_fn_append_rule \
424 "$ac_dir: __builddeps__
425 manpages htmlpages sgmlpages xmlpages:: $ac_dir/Makefile
426         @cd $ac_dir && \$(MAKE) \$[@]
427 .PHONY: $ac_dir/install-lib $ac_dir/uninstall
428 install install-lib:: $ac_dir/install-lib
429 __uninstall__: $ac_dir/uninstall"
430                 if test -n "$DLLEXT"
431                 then
432                     wine_fn_append_rule \
433 "$ac_dir/install-lib:: $ac_dir
434         \$(INSTALL_PROGRAM) $ac_dir/$ac_dll$DLLEXT \$(DESTDIR)\$(dlldir)/$ac_dll$DLLEXT
435         \$(INSTALL_DATA) $ac_dir/$ac_dll.fake \$(DESTDIR)\$(fakedlldir)/$ac_dll
436 $ac_dir/uninstall::
437         \$(RM) \$(DESTDIR)\$(dlldir)/$ac_dll$DLLEXT \$(DESTDIR)\$(fakedlldir)/$ac_dll"
438                 else
439                     wine_fn_append_rule \
440 "$ac_dir/install-lib:: $ac_dir
441         \$(INSTALL_PROGRAM) $ac_dir/$ac_dll \$(DESTDIR)\$(dlldir)/$ac_dll
442 $ac_dir/uninstall::
443         \$(RM) \$(DESTDIR)\$(dlldir)/$ac_dll"
444                 fi
446                 wine_fn_pot_rules])
448     if wine_fn_has_flag staticimplib
449     then
450         wine_fn_append_rule \
451 "__builddeps__: $ac_file.$IMPLIBEXT $ac_file.$STATIC_IMPLIBEXT
452 $ac_file.$IMPLIBEXT $ac_file.$STATIC_IMPLIBEXT $ac_file.cross.a: $ac_deps
453 $ac_file.def: $srcdir/$ac_dir/$ac_name.spec $ac_dir/Makefile \$(WINEBUILD)
454         \$(WINEBUILD) \$(TARGETFLAGS)$ac_implibflags -w --def -o \$[@] --export $srcdir/$ac_dir/$ac_name.spec
455 $ac_file.$STATIC_IMPLIBEXT: $ac_dir/Makefile dummy
456         @cd $ac_dir && \$(MAKE) lib$ac_implib.$STATIC_IMPLIBEXT
457 .PHONY: $ac_dir/install-dev $ac_dir/uninstall
458 $ac_dir/install-dev:: $ac_file.$IMPLIBEXT
459         \$(INSTALL_DATA) $ac_file.$IMPLIBEXT \$(DESTDIR)\$(dlldir)/lib$ac_implib.$IMPLIBEXT
460 $ac_dir/uninstall::
461         \$(RM) \$(DESTDIR)\$(dlldir)/lib$ac_implib.$IMPLIBEXT
462 install install-dev:: $ac_dir/install-dev
463 __uninstall__: $ac_dir/uninstall"
465         if test "$IMPLIBEXT" != "$STATIC_IMPLIBEXT"
466         then
467             wine_fn_append_rule \
468 "$ac_dir/install-dev:: $ac_file.$STATIC_IMPLIBEXT __builddeps__
469         \$(INSTALL_DATA) $ac_file.$STATIC_IMPLIBEXT \$(DESTDIR)\$(dlldir)/lib$ac_implib.$STATIC_IMPLIBEXT
470 $ac_dir/uninstall::
471         \$(RM) \$(DESTDIR)\$(dlldir)/lib$ac_implib.$STATIC_IMPLIBEXT"
472         fi
474         if test -n "$CROSSTARGET" -a -z "$ac_implibflags"
475         then
476             wine_fn_append_rule \
477 "__builddeps__: $ac_file.cross.a
478 $ac_file.cross.a: $ac_dir/Makefile dummy
479         @cd $ac_dir && \$(MAKE) lib$ac_implib.cross.a"
480         fi
482     elif wine_fn_has_flag implib
483     then
484         wine_fn_append_rule \
485 "__builddeps__: $ac_file.$IMPLIBEXT
486 $ac_file.def: $srcdir/$ac_dir/$ac_name.spec $ac_dir/Makefile \$(WINEBUILD)
487         \$(WINEBUILD) \$(TARGETFLAGS)$ac_implibflags -w --def -o \$[@] --export $srcdir/$ac_dir/$ac_name.spec
488 $ac_file.a: $srcdir/$ac_dir/$ac_name.spec $ac_dir/Makefile \$(WINEBUILD)
489         \$(WINEBUILD) \$(TARGETFLAGS)$ac_implibflags -w --implib -o \$[@] --export $srcdir/$ac_dir/$ac_name.spec
490 .PHONY: $ac_dir/install-dev $ac_dir/uninstall
491 $ac_dir/install-dev:: $ac_file.$IMPLIBEXT
492         \$(INSTALL_DATA) $ac_file.$IMPLIBEXT \$(DESTDIR)\$(dlldir)/lib$ac_implib.$IMPLIBEXT
493 $ac_dir/uninstall::
494         \$(RM) \$(DESTDIR)\$(dlldir)/lib$ac_implib.$IMPLIBEXT
495 install install-dev:: $ac_dir/install-dev
496 __uninstall__: $ac_dir/uninstall"
497         if test -n "$CROSSTARGET" -a -z "$ac_implibflags"
498         then
499             wine_fn_append_rule \
500 "__builddeps__: $ac_file.cross.a
501 $ac_file.cross.a: $srcdir/$ac_dir/$ac_name.spec $ac_dir/Makefile \$(WINEBUILD)
502         \$(WINEBUILD) \$(CROSSTARGET:%=-b %)$ac_implibflags -w --implib -o \$[@] --export $srcdir/$ac_dir/$ac_name.spec"
503         fi
505         if test "$ac_name" != "$ac_implib"
506         then
507             wine_fn_append_rule \
508 "__builddeps__: dlls/lib$ac_implib.$IMPLIBEXT
509 dlls/lib$ac_implib.$IMPLIBEXT: $ac_file.$IMPLIBEXT
510         \$(RM) \$[@] && \$(LN_S) $ac_name/lib$ac_implib.$IMPLIBEXT \$[@]
511 clean::
512         \$(RM) dlls/lib$ac_implib.$IMPLIBEXT"
513             wine_fn_ignore_file "dlls/lib$ac_implib.$IMPLIBEXT"
514             if test -n "$CROSSTARGET" -a -z "$ac_implibflags"
515             then
516                 wine_fn_append_rule \
517 "__builddeps__: dlls/lib$ac_implib.cross.a
518 dlls/lib$ac_implib.cross.a: $ac_file.cross.a
519         \$(RM) \$[@] && \$(LN_S) $ac_name/lib$ac_implib.cross.a \$[@]
520 clean::
521         \$(RM) dlls/lib$ac_implib.cross.a"
522                 wine_fn_ignore_file "dlls/lib$ac_implib.cross.a"
523             fi
524         fi
525     fi
528 wine_fn_config_program ()
530     ac_name=$[1]
531     ac_dir=programs/$ac_name
532     ac_enable=$[2]
533     ac_flags=$[3]
534     ac_program=$ac_name
536     case $ac_name in
537       *.*) ;;
538       *)   ac_program=$ac_program.exe ;;
539     esac
541     ac_clean=
542     wine_fn_has_flag mc && ac_clean="$ac_clean $ac_dir/msg.pot"
543     wine_fn_has_flag po && ac_clean="$ac_clean $ac_dir/rsrc.pot"
544     wine_fn_has_flag manpage && ac_clean="$ac_clean $ac_dir/$ac_name.man"
545     test -n "$DLLEXT" || ac_clean="$ac_clean $ac_dir/$ac_program"
547     AS_VAR_IF([$ac_enable],[no],[wine_fn_disabled_rules $ac_clean; return])
549     wine_fn_all_rules
550     wine_fn_clean_rules $ac_clean
551     wine_fn_append_rule "$ac_dir: __builddeps__"
552     wine_fn_pot_rules
554     wine_fn_has_flag install || return
555     wine_fn_append_rule \
556 ".PHONY: $ac_dir/install $ac_dir/uninstall
557 install install-lib:: $ac_dir/install
558 __uninstall__: $ac_dir/uninstall"
560     if test -n "$DLLEXT"
561     then
562         wine_fn_append_rule \
563 "$ac_dir/install:: $ac_dir
564         \$(INSTALL_PROGRAM) $ac_dir/$ac_program$DLLEXT \$(DESTDIR)\$(dlldir)/$ac_program$DLLEXT
565         \$(INSTALL_DATA) $ac_dir/$ac_program.fake \$(DESTDIR)\$(fakedlldir)/$ac_program
566 $ac_dir/uninstall::
567         \$(RM) \$(DESTDIR)\$(dlldir)/$ac_program$DLLEXT \$(DESTDIR)\$(fakedlldir)/$ac_program"
569         if test -z "$with_wine64" && wine_fn_has_flag installbin
570         then
571             wine_fn_append_rule \
572 "$ac_dir/install:: __tooldeps__
573         \$(INSTALL_SCRIPT) \$(TOOLSDIR)/tools/wineapploader \$(DESTDIR)\$(bindir)/$ac_name
574 $ac_dir/uninstall::
575         \$(RM) \$(DESTDIR)\$(bindir)/$ac_name"
576         fi
577     else
578         wine_fn_append_rule \
579 "$ac_dir/install:: $ac_dir
580         \$(INSTALL_PROGRAM) $ac_dir/$ac_program \$(DESTDIR)\$(bindir)/$ac_program
581 $ac_dir/uninstall::
582         \$(RM) \$(DESTDIR)\$(bindir)/$ac_program"
583     fi
585     if test -z "$with_wine64" && wine_fn_has_flag manpage
586     then
587         wine_fn_append_rule \
588 "$ac_dir/install:: $ac_dir
589         \$(INSTALL_DATA) $ac_dir/$ac_name.man \$(DESTDIR)\$(mandir)/man\$(prog_manext)/$ac_name.\$(prog_manext)
590 $ac_dir/uninstall::
591         \$(RM) \$(DESTDIR)\$(mandir)/man\$(prog_manext)/$ac_name.\$(prog_manext)"
592     fi
595 wine_fn_config_test ()
597     ac_dir=$[1]
598     ac_name=$[2]
599     ac_flags=$[3]
601     ac_clean=
602     test -n "$CROSSTARGET" && ac_clean=`expr $ac_dir/${ac_name} : "\\(.*\\)_test"`_crosstest.exe
603     test -n "$DLLEXT" || ac_clean="$ac_dir/${ac_name}.exe $ac_dir/${ac_name}-stripped.exe"
605     AS_VAR_IF([enable_tests],[no],[wine_fn_disabled_rules $ac_clean; return])
607     wine_fn_append_file ALL_TEST_RESOURCES $ac_name.res
608     wine_fn_all_rules
609     wine_fn_clean_rules $ac_clean
611     wine_fn_append_rule \
612 "$ac_dir: programs/winetest/Makefile __builddeps__
613 programs/winetest: $ac_dir
614 check test: $ac_dir/test
615 .PHONY: $ac_dir/test
616 $ac_dir/test: dummy
617         @cd $ac_dir && \$(MAKE) test
618 testclean::
619         \$(RM) $ac_dir/*.ok"
621         if test -n "$CROSSTARGET"
622         then
623             wine_fn_append_rule \
624 "crosstest: $ac_dir/crosstest
625 .PHONY: $ac_dir/crosstest
626 $ac_dir/crosstest: $ac_dir/Makefile __builddeps__ dummy
627         @cd $ac_dir && \$(MAKE) crosstest"
628         fi
631 wine_fn_config_tool ()
633     ac_dir=$[1]
634     ac_flags=$[2]
635     AS_VAR_IF([enable_tools],[no],[return])
637     wine_fn_all_rules
638     wine_fn_install_rules
639     wine_fn_clean_rules
641     wine_fn_append_rule "__tooldeps__: $ac_dir"
642     wine_fn_append_rule "$ac_dir: libs/port"
643     case $ac_dir in
644       tools/winebuild) wine_fn_append_rule "\$(WINEBUILD): $ac_dir" ;;
645     esac
648 wine_fn_config_symlink ()
650     ac_linkdir=
651     if test "x$[1]" = "x-d"
652     then
653         ac_linkdir=$[2]
654         shift; shift
655     fi
656     ac_links=$[@]
657     wine_fn_append_rule \
658 "$ac_links:
659         @./config.status \$[@]
660 distclean::
661         \$(RM) $ac_links"
662     for f in $ac_links; do wine_fn_ignore_file $f; done
663     test -n "$ac_linkdir" || return
664     wine_fn_append_rule "$ac_linkdir/Makefile $ac_linkdir/depend: $ac_links"
667 dnl **** Define helper function to append a file to a makefile file list ****
669 dnl Usage: WINE_APPEND_FILE(var,file)
671 AC_DEFUN([WINE_APPEND_FILE],[AC_REQUIRE([WINE_CONFIG_HELPERS])wine_fn_append_file $1 "$2"])
673 dnl **** Define helper function to append a rule to a makefile command list ****
675 dnl Usage: WINE_APPEND_RULE(rule)
677 AC_DEFUN([WINE_APPEND_RULE],[AC_REQUIRE([WINE_CONFIG_HELPERS])wine_fn_append_rule "$1"])
679 dnl **** Create symlinks from config.status ****
681 dnl Usage: WINE_CONFIG_SYMLINK(target,src,files,enable,srcfile)
683 AC_DEFUN([WINE_CONFIG_SYMLINK],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
684 m4_ifval([$4],[if test "x$[$4]" != xno; then
685 ])m4_foreach([f],[$3],
686 [AC_CONFIG_LINKS(m4_ifval([$1],[$1/])f[:]m4_ifval([$2],[$2/])m4_ifval([$5],[$5],f))])dnl
687 m4_if([$1],[$2],[test "$srcdir" = "." || ])dnl
688 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],[
689 fi])[]dnl
690 ])])
692 dnl **** Create a makefile from config.status ****
694 dnl Usage: WINE_CONFIG_MAKEFILE(file,enable,flags)
696 AC_DEFUN([WINE_CONFIG_MAKEFILE],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
697 AS_VAR_PUSHDEF([ac_enable],m4_default([$2],[enable_]$1))dnl
698 m4_append_uniq([_AC_USER_OPTS],ac_enable,[
699 ])dnl
700 wine_fn_config_makefile [$1] ac_enable [$3]dnl
701 AS_VAR_POPDEF([ac_enable])])
703 dnl **** Create a dll makefile from config.status ****
705 dnl Usage: WINE_CONFIG_DLL(name,enable,flags,implib)
707 AC_DEFUN([WINE_CONFIG_DLL],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
708 AS_VAR_PUSHDEF([ac_enable],m4_default([$2],[enable_]$1))dnl
709 m4_append_uniq([_AC_USER_OPTS],ac_enable,[
710 ])dnl
711 wine_fn_config_dll [$1] ac_enable [$3] [$4]dnl
712 AS_VAR_POPDEF([ac_enable])])
714 dnl **** Create a program makefile from config.status ****
716 dnl Usage: WINE_CONFIG_PROGRAM(name,enable,flags)
718 AC_DEFUN([WINE_CONFIG_PROGRAM],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
719 AS_VAR_PUSHDEF([ac_enable],m4_default([$2],[enable_]$1))dnl
720 m4_append_uniq([_AC_USER_OPTS],ac_enable,[
721 ])dnl
722 wine_fn_config_program [$1] ac_enable [$3]dnl
723 AS_VAR_POPDEF([ac_enable])])
725 dnl **** Create a test makefile from config.status ****
727 dnl Usage: WINE_CONFIG_TEST(dir,flags)
729 AC_DEFUN([WINE_CONFIG_TEST],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
730 m4_pushdef([ac_suffix],m4_if(m4_substr([$1],0,9),[programs/],[.exe_test],[_test]))dnl
731 m4_pushdef([ac_name],[m4_bpatsubst([$1],[.*/\(.*\)/tests$],[\1])])dnl
732 wine_fn_config_test $1 ac_name[]ac_suffix [$2]dnl
733 m4_popdef([ac_suffix])dnl
734 m4_popdef([ac_name])])
736 dnl **** Create a static lib makefile from config.status ****
738 dnl Usage: WINE_CONFIG_LIB(name,flags)
740 AC_DEFUN([WINE_CONFIG_LIB],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
741 wine_fn_config_lib [$1] [$2]])
743 dnl **** Create a tool makefile from config.status ****
745 dnl Usage: WINE_CONFIG_TOOL(name,flags)
747 AC_DEFUN([WINE_CONFIG_TOOL],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
748 m4_append_uniq([_AC_USER_OPTS],[enable_tools],[
749 ])dnl
750 wine_fn_config_tool [$1] [$2]])
752 dnl **** Append a file to the .gitignore list ****
754 dnl Usage: WINE_IGNORE_FILE(file,enable)
756 AC_DEFUN([WINE_IGNORE_FILE],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
757 m4_ifval([$2],[test "x$[$2]" = xno || ])wine_fn_ignore_file $1])
759 dnl **** Add a message to the list displayed at the end ****
761 dnl Usage: WINE_NOTICE(notice)
762 dnl Usage: WINE_NOTICE_WITH(with_flag, test, notice)
763 dnl Usage: WINE_WARNING(warning)
764 dnl Usage: WINE_WARNING_WITH(with_flag, test, warning)
765 dnl Usage: WINE_PRINT_MESSAGES
767 AC_DEFUN([WINE_NOTICE],[AS_VAR_APPEND([wine_notices],["|$1"])])
768 AC_DEFUN([WINE_WARNING],[AS_VAR_APPEND([wine_warnings],["|$1"])])
770 AC_DEFUN([WINE_NOTICE_WITH],[AS_IF([$2],[case "x$with_$1" in
771   x)   WINE_NOTICE([$3]) ;;
772   xno) ;;
773   *)   AC_MSG_ERROR([$3
774 This is an error since --with-$1 was requested.]) ;;
775 esac])])
777 AC_DEFUN([WINE_WARNING_WITH],[AS_IF([$2],[case "x$with_$1" in
778   x)   WINE_WARNING([$3]) ;;
779   xno) ;;
780   *)   AC_MSG_ERROR([$3
781 This is an error since --with-$1 was requested.]) ;;
782 esac])])
784 AC_DEFUN([WINE_ERROR_WITH],[AS_IF([$2],[case "x$with_$1" in
785   xno) ;;
786   *)   AC_MSG_ERROR([$3
787 Use the --without-$1 option if you really want this.]) ;;
788 esac])])
790 AC_DEFUN([WINE_PRINT_MESSAGES],[ac_save_IFS="$IFS"
791 if test "x$wine_notices" != x; then
792     echo >&AS_MESSAGE_FD
793     IFS="|"
794     for msg in $wine_notices; do
795         IFS="$ac_save_IFS"
796         AS_VAR_IF([msg],[],,[AC_MSG_NOTICE([$msg])])
797     done
799 IFS="|"
800 for msg in $wine_warnings; do
801     IFS="$ac_save_IFS"
802     AS_VAR_IF([msg],[],,[echo >&2
803         AC_MSG_WARN([$msg])])
804 done
805 IFS="$ac_save_IFS"])
807 dnl Local Variables:
808 dnl compile-command: "autoreconf --warnings=all"
809 dnl End: