1 dnl Macros used to build the Wine configure script
3 dnl Copyright 2002 Alexandre Julliard
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.
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.
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
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
25 dnl WINE_CHECK_HOST_TOOL(VARIABLE, PROG-TO-CHECK-FOR, [VALUE-IF-NOT-FOUND], [PATH])
27 dnl Like AC_CHECK_TOOL but without the broken fallback to non-prefixed name
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 ****
40 dnl Usage: WINE_PATH_SONAME_TOOLS
41 dnl Usage: WINE_PATH_PKG_CONFIG
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 ****
53 dnl Usage: WINE_CHECK_SONAME(library, function, [action-if-found, [action-if-not-found, [other_libraries, [pattern]]]])
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])
61 [ac_check_soname_save_LIBS=$LIBS
63 AC_LINK_IFELSE([AC_LANG_CALL([], [$2])],
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'`])]) ;;
71 LIBS=$ac_check_soname_save_LIBS])dnl
72 AS_VAR_IF([ac_Lib],[],
73 [AC_MSG_RESULT([not found])
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.])
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 ****
84 dnl Usage: WINE_PACKAGE_FLAGS(var,pkg-name,[default-lib,[cflags-alternate,libs-alternate,[checks]]])
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
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
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
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"
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],
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 ]))
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 ]))" ;;
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
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 ()
210 */*) AS_VAR_APPEND([GITIGNORE],"$as_nl$[1]") ;;
211 \**) AS_VAR_APPEND([GITIGNORE],"$as_nl$[1]") ;;
212 *) AS_VAR_APPEND([GITIGNORE],"$as_nl/$[1]") ;;
216 wine_fn_append_rule ()
218 AS_ECHO("$[1]") >>$wine_rules_file
223 expr ",$ac_flags," : ".*,$[1],.*" >/dev/null
226 wine_fn_depend_rules ()
228 if wine_fn_has_flag config
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"
238 wine_fn_append_rule \
239 "$ac_dir/Makefile: $srcdir/$ac_dir/Makefile.in Makefile \$(MAKEDEP)
241 depend: $ac_dir/depend
242 .PHONY: $ac_dir/depend
243 $ac_dir/depend: \$(MAKEDEP) dummy
250 test "x$with_gettextpo" = xyes || return
252 if wine_fn_has_flag mc
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"
260 if wine_fn_has_flag po
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"
273 wine_fn_append_rule \
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
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"
302 if wine_fn_has_flag install-dev
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"
312 wine_fn_clean_rules ()
315 ac_extraclean="$ac_dir/Makefile"
316 test "$srcdir" = . && ac_extraclean="$ac_extraclean $ac_dir/.gitignore"
318 */tests) ac_extraclean="$ac_extraclean $ac_dir/testlist.c" ;;
321 if wine_fn_has_flag clean
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"
330 wine_fn_append_rule \
331 "__clean__: $ac_dir/clean
332 .PHONY: $ac_dir/clean
334 \$(RM) \$(CLEAN_FILES:%=$ac_dir/%) $ac_clean $ac_extraclean"
338 wine_fn_disabled_rules ()
341 ac_extraclean="$ac_dir/Makefile"
342 test "$srcdir" = . && ac_extraclean="$ac_extraclean $ac_dir/.gitignore"
344 wine_fn_append_rule \
345 "__clean__: $ac_dir/clean
346 .PHONY: $ac_dir/clean
348 \$(RM) \$(CLEAN_FILES:%=$ac_dir/%) $ac_clean $ac_extraclean"
351 wine_fn_config_makefile ()
357 AS_VAR_IF([$ac_enable],[no],[wine_fn_disabled_rules; return])
359 wine_fn_install_rules
363 wine_fn_config_lib ()
370 AS_VAR_IF([enable_tools],[no],,[ac_deps="tools/widl tools/winebuild tools/winegcc $ac_deps"])
374 wine_fn_append_rule \
375 ".PHONY: $ac_dir/install $ac_dir/uninstall
376 $ac_dir/install:: $ac_dir
377 \$(INSTALL_DATA) $ac_dir/lib$ac_name.a \$(DESTDIR)\$(dlldir)/lib$ac_name.a
379 \$(RM) \$(DESTDIR)\$(dlldir)/lib$ac_name.a
380 install install-dev:: $ac_dir/install
381 __uninstall__: $ac_dir/uninstall
382 __builddeps__: $ac_dir
386 wine_fn_config_dll ()
392 ac_implib=${4:-$ac_name}
393 ac_file=$ac_dir/lib$ac_implib
398 AS_VAR_IF([enable_tools],[no],,[ac_deps="tools/widl tools/winebuild tools/winegcc $ac_deps"])
400 *16) ac_implibflags=" -m16" ;;
402 *) ac_dll=$ac_dll.dll ;;
406 wine_fn_has_flag implib && ac_clean="$ac_clean $ac_file.$IMPLIBEXT"
407 wine_fn_has_flag mc && ac_clean="$ac_clean $ac_dir/msg.pot"
408 wine_fn_has_flag po && ac_clean="$ac_clean $ac_dir/rsrc.pot"
409 test -n "$DLLEXT" || ac_clean="$ac_clean $ac_dir/$ac_dll"
411 AS_VAR_IF([$ac_enable],[no],
412 dnl enable_win16 is special in that it disables import libs too
413 [if wine_fn_has_flag implib && test "$ac_enable" != enable_win16
416 wine_fn_clean_rules $ac_clean
418 wine_fn_disabled_rules $ac_clean
423 wine_fn_clean_rules $ac_clean
424 wine_fn_append_rule \
425 "$ac_dir: __builddeps__
426 manpages htmlpages sgmlpages xmlpages:: $ac_dir/Makefile
427 @cd $ac_dir && \$(MAKE) \$[@]
428 .PHONY: $ac_dir/install-lib $ac_dir/uninstall
429 install install-lib:: $ac_dir/install-lib
430 __uninstall__: $ac_dir/uninstall"
433 wine_fn_append_rule \
434 "$ac_dir/install-lib:: $ac_dir
435 \$(INSTALL_PROGRAM) $ac_dir/$ac_dll$DLLEXT \$(DESTDIR)\$(dlldir)/$DLLPREFIX$ac_dll$DLLEXT
436 \$(INSTALL_DATA) $ac_dir/$ac_dll.fake \$(DESTDIR)\$(fakedlldir)/$ac_dll
438 \$(RM) \$(DESTDIR)\$(dlldir)/$DLLPREFIX$ac_dll$DLLEXT \$(DESTDIR)\$(fakedlldir)/$ac_dll"
440 wine_fn_append_rule \
441 "$ac_dir/install-lib:: $ac_dir
442 \$(INSTALL_PROGRAM) $ac_dir/$ac_dll \$(DESTDIR)\$(dlldir)/$ac_dll
444 \$(RM) \$(DESTDIR)\$(dlldir)/$ac_dll"
449 if wine_fn_has_flag staticimplib
451 wine_fn_append_rule \
452 "__builddeps__: $ac_file.$IMPLIBEXT $ac_file.$STATIC_IMPLIBEXT
453 $ac_file.$IMPLIBEXT $ac_file.$STATIC_IMPLIBEXT $ac_file.cross.a: $ac_deps
454 $ac_file.def: $srcdir/$ac_dir/$ac_name.spec $ac_dir/Makefile \$(WINEBUILD)
455 \$(WINEBUILD) \$(TARGETFLAGS)$ac_implibflags -w --def -o \$[@] --export $srcdir/$ac_dir/$ac_name.spec
456 $ac_file.$STATIC_IMPLIBEXT: $ac_dir/Makefile dummy
457 @cd $ac_dir && \$(MAKE) lib$ac_implib.$STATIC_IMPLIBEXT
458 .PHONY: $ac_dir/install-dev $ac_dir/uninstall
459 $ac_dir/install-dev:: $ac_file.$IMPLIBEXT
460 \$(INSTALL_DATA) $ac_file.$IMPLIBEXT \$(DESTDIR)\$(dlldir)/lib$ac_implib.$IMPLIBEXT
462 \$(RM) \$(DESTDIR)\$(dlldir)/lib$ac_implib.$IMPLIBEXT
463 install install-dev:: $ac_dir/install-dev
464 __uninstall__: $ac_dir/uninstall"
466 if test "$IMPLIBEXT" != "$STATIC_IMPLIBEXT"
468 wine_fn_append_rule \
469 "$ac_dir/install-dev:: $ac_file.$STATIC_IMPLIBEXT __builddeps__
470 \$(INSTALL_DATA) $ac_file.$STATIC_IMPLIBEXT \$(DESTDIR)\$(dlldir)/lib$ac_implib.$STATIC_IMPLIBEXT
472 \$(RM) \$(DESTDIR)\$(dlldir)/lib$ac_implib.$STATIC_IMPLIBEXT"
475 if test -n "$CROSSTARGET" -a -z "$ac_implibflags"
477 wine_fn_append_rule \
478 "__builddeps__: $ac_file.cross.a
479 $ac_file.cross.a: $ac_dir/Makefile dummy
480 @cd $ac_dir && \$(MAKE) lib$ac_implib.cross.a"
483 elif wine_fn_has_flag implib
485 wine_fn_append_rule \
486 "__builddeps__: $ac_file.$IMPLIBEXT
487 $ac_file.def: $srcdir/$ac_dir/$ac_name.spec $ac_dir/Makefile \$(WINEBUILD)
488 \$(WINEBUILD) \$(TARGETFLAGS)$ac_implibflags -w --def -o \$[@] --export $srcdir/$ac_dir/$ac_name.spec
489 $ac_file.a: $srcdir/$ac_dir/$ac_name.spec $ac_dir/Makefile \$(WINEBUILD)
490 \$(WINEBUILD) \$(TARGETFLAGS)$ac_implibflags -w --implib -o \$[@] --export $srcdir/$ac_dir/$ac_name.spec
491 .PHONY: $ac_dir/install-dev $ac_dir/uninstall
492 $ac_dir/install-dev:: $ac_file.$IMPLIBEXT
493 \$(INSTALL_DATA) $ac_file.$IMPLIBEXT \$(DESTDIR)\$(dlldir)/lib$ac_implib.$IMPLIBEXT
495 \$(RM) \$(DESTDIR)\$(dlldir)/lib$ac_implib.$IMPLIBEXT
496 install install-dev:: $ac_dir/install-dev
497 __uninstall__: $ac_dir/uninstall"
498 if test -n "$CROSSTARGET" -a -z "$ac_implibflags"
500 wine_fn_append_rule \
501 "__builddeps__: $ac_file.cross.a
502 $ac_file.cross.a: $srcdir/$ac_dir/$ac_name.spec $ac_dir/Makefile \$(WINEBUILD)
503 \$(WINEBUILD) \$(CROSSTARGET:%=-b %)$ac_implibflags -w --implib -o \$[@] --export $srcdir/$ac_dir/$ac_name.spec"
506 if test "$ac_name" != "$ac_implib"
508 wine_fn_append_rule \
509 "__builddeps__: dlls/lib$ac_implib.$IMPLIBEXT
510 dlls/lib$ac_implib.$IMPLIBEXT: $ac_file.$IMPLIBEXT
511 \$(RM) \$[@] && \$(LN_S) $ac_name/lib$ac_implib.$IMPLIBEXT \$[@]
513 \$(RM) dlls/lib$ac_implib.$IMPLIBEXT"
514 wine_fn_ignore_file "dlls/lib$ac_implib.$IMPLIBEXT"
515 if test -n "$CROSSTARGET" -a -z "$ac_implibflags"
517 wine_fn_append_rule \
518 "__builddeps__: dlls/lib$ac_implib.cross.a
519 dlls/lib$ac_implib.cross.a: $ac_file.cross.a
520 \$(RM) \$[@] && \$(LN_S) $ac_name/lib$ac_implib.cross.a \$[@]
522 \$(RM) dlls/lib$ac_implib.cross.a"
523 wine_fn_ignore_file "dlls/lib$ac_implib.cross.a"
529 wine_fn_config_program ()
532 ac_dir=programs/$ac_name
539 *) ac_program=$ac_program.exe ;;
543 wine_fn_has_flag mc && ac_clean="$ac_clean $ac_dir/msg.pot"
544 wine_fn_has_flag po && ac_clean="$ac_clean $ac_dir/rsrc.pot"
545 wine_fn_has_flag manpage && ac_clean="$ac_clean $ac_dir/$ac_name.man"
546 test -n "$DLLEXT" || ac_clean="$ac_clean $ac_dir/$ac_program"
548 AS_VAR_IF([$ac_enable],[no],[wine_fn_disabled_rules $ac_clean; return])
551 wine_fn_clean_rules $ac_clean
552 wine_fn_append_rule "$ac_dir: __builddeps__"
555 wine_fn_has_flag install || return
556 wine_fn_append_rule \
557 ".PHONY: $ac_dir/install $ac_dir/uninstall
558 install install-lib:: $ac_dir/install
559 __uninstall__: $ac_dir/uninstall"
563 wine_fn_append_rule \
564 "$ac_dir/install:: $ac_dir
565 \$(INSTALL_PROGRAM) $ac_dir/$ac_program$DLLEXT \$(DESTDIR)\$(dlldir)/$DLLPREFIX$ac_program$DLLEXT
566 \$(INSTALL_DATA) $ac_dir/$ac_program.fake \$(DESTDIR)\$(fakedlldir)/$ac_program
568 \$(RM) \$(DESTDIR)\$(dlldir)/$DLLPREFIX$ac_program$DLLEXT \$(DESTDIR)\$(fakedlldir)/$ac_program"
570 if test -z "$with_wine64" && wine_fn_has_flag installbin
572 wine_fn_append_rule \
573 "$ac_dir/install:: __tooldeps__
574 \$(INSTALL_SCRIPT) \$(TOOLSDIR)/tools/wineapploader \$(DESTDIR)\$(bindir)/$ac_name
576 \$(RM) \$(DESTDIR)\$(bindir)/$ac_name"
579 wine_fn_append_rule \
580 "$ac_dir/install:: $ac_dir
581 \$(INSTALL_PROGRAM) $ac_dir/$ac_program \$(DESTDIR)\$(bindir)/$ac_program
583 \$(RM) \$(DESTDIR)\$(bindir)/$ac_program"
586 if test -z "$with_wine64" && wine_fn_has_flag manpage
588 wine_fn_append_rule \
589 "$ac_dir/install:: $ac_dir
590 \$(INSTALL_DATA) $ac_dir/$ac_name.man \$(DESTDIR)\$(mandir)/man\$(prog_manext)/$ac_name.\$(prog_manext)
592 \$(RM) \$(DESTDIR)\$(mandir)/man\$(prog_manext)/$ac_name.\$(prog_manext)"
596 wine_fn_config_test ()
603 test -n "$CROSSTARGET" && ac_clean=`expr $ac_dir/${ac_name} : "\\(.*\\)_test"`_crosstest.exe
604 test -n "$DLLEXT" || ac_clean="$ac_dir/${ac_name}.exe $ac_dir/${ac_name}-stripped.exe"
606 AS_VAR_IF([enable_tests],[no],[wine_fn_disabled_rules $ac_clean; return])
608 wine_fn_append_file ALL_TEST_RESOURCES $ac_name.res
610 wine_fn_clean_rules $ac_clean
612 wine_fn_append_rule \
613 "$ac_dir: programs/winetest/Makefile __builddeps__
614 programs/winetest: $ac_dir
615 check test: $ac_dir/test
618 @cd $ac_dir && \$(MAKE) test
622 if test -n "$CROSSTARGET"
624 wine_fn_append_rule \
625 "crosstest: $ac_dir/crosstest
626 .PHONY: $ac_dir/crosstest
627 $ac_dir/crosstest: $ac_dir/Makefile __builddeps__ dummy
628 @cd $ac_dir && \$(MAKE) crosstest"
632 wine_fn_config_tool ()
636 AS_VAR_IF([enable_tools],[no],[return])
639 wine_fn_install_rules
642 wine_fn_append_rule "__tooldeps__: $ac_dir"
643 wine_fn_append_rule "$ac_dir: libs/port"
645 tools/winebuild) wine_fn_append_rule "\$(WINEBUILD): $ac_dir" ;;
649 wine_fn_config_symlink ()
652 if test "x$[1]" = "x-d"
658 wine_fn_append_rule \
660 @./config.status \$[@]
663 for f in $ac_links; do wine_fn_ignore_file $f; done
664 test -n "$ac_linkdir" || return
665 wine_fn_append_rule "$ac_linkdir/Makefile $ac_linkdir/depend: $ac_links"
668 dnl **** Define helper function to append a file to a makefile file list ****
670 dnl Usage: WINE_APPEND_FILE(var,file)
672 AC_DEFUN([WINE_APPEND_FILE],[AC_REQUIRE([WINE_CONFIG_HELPERS])wine_fn_append_file $1 "$2"])
674 dnl **** Define helper function to append a rule to a makefile command list ****
676 dnl Usage: WINE_APPEND_RULE(rule)
678 AC_DEFUN([WINE_APPEND_RULE],[AC_REQUIRE([WINE_CONFIG_HELPERS])wine_fn_append_rule "$1"])
680 dnl **** Create symlinks from config.status ****
682 dnl Usage: WINE_CONFIG_SYMLINK(target,src,files,enable,srcfile)
684 AC_DEFUN([WINE_CONFIG_SYMLINK],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
685 m4_ifval([$4],[if test "x$[$4]" != xno; then
686 ])m4_foreach([f],[$3],
687 [AC_CONFIG_LINKS(m4_ifval([$1],[$1/])f[:]m4_ifval([$2],[$2/])m4_ifval([$5],[$5],f))])dnl
688 m4_if([$1],[$2],[test "$srcdir" = "." || ])dnl
689 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],[
693 dnl **** Create a makefile from config.status ****
695 dnl Usage: WINE_CONFIG_MAKEFILE(file,enable,flags)
697 AC_DEFUN([WINE_CONFIG_MAKEFILE],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
698 AS_VAR_PUSHDEF([ac_enable],m4_default([$2],[enable_]$1))dnl
699 m4_append_uniq([_AC_USER_OPTS],ac_enable,[
701 wine_fn_config_makefile [$1] ac_enable [$3]dnl
702 AS_VAR_POPDEF([ac_enable])])
704 dnl **** Create a dll makefile from config.status ****
706 dnl Usage: WINE_CONFIG_DLL(name,enable,flags,implib)
708 AC_DEFUN([WINE_CONFIG_DLL],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
709 AS_VAR_PUSHDEF([ac_enable],m4_default([$2],[enable_]$1))dnl
710 m4_append_uniq([_AC_USER_OPTS],ac_enable,[
712 wine_fn_config_dll [$1] ac_enable [$3] [$4]dnl
713 AS_VAR_POPDEF([ac_enable])])
715 dnl **** Create a program makefile from config.status ****
717 dnl Usage: WINE_CONFIG_PROGRAM(name,enable,flags)
719 AC_DEFUN([WINE_CONFIG_PROGRAM],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
720 AS_VAR_PUSHDEF([ac_enable],m4_default([$2],[enable_]$1))dnl
721 m4_append_uniq([_AC_USER_OPTS],ac_enable,[
723 wine_fn_config_program [$1] ac_enable [$3]dnl
724 AS_VAR_POPDEF([ac_enable])])
726 dnl **** Create a test makefile from config.status ****
728 dnl Usage: WINE_CONFIG_TEST(dir,flags)
730 AC_DEFUN([WINE_CONFIG_TEST],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
731 m4_pushdef([ac_suffix],m4_if(m4_substr([$1],0,9),[programs/],[.exe_test],[_test]))dnl
732 m4_pushdef([ac_name],[m4_bpatsubst([$1],[.*/\(.*\)/tests$],[\1])])dnl
733 wine_fn_config_test $1 ac_name[]ac_suffix [$2]dnl
734 m4_popdef([ac_suffix])dnl
735 m4_popdef([ac_name])])
737 dnl **** Create a static lib makefile from config.status ****
739 dnl Usage: WINE_CONFIG_LIB(name,flags)
741 AC_DEFUN([WINE_CONFIG_LIB],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
742 wine_fn_config_lib [$1] [$2]])
744 dnl **** Create a tool makefile from config.status ****
746 dnl Usage: WINE_CONFIG_TOOL(name,flags)
748 AC_DEFUN([WINE_CONFIG_TOOL],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
749 m4_append_uniq([_AC_USER_OPTS],[enable_tools],[
751 wine_fn_config_tool [$1] [$2]])
753 dnl **** Append a file to the .gitignore list ****
755 dnl Usage: WINE_IGNORE_FILE(file,enable)
757 AC_DEFUN([WINE_IGNORE_FILE],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
758 m4_ifval([$2],[test "x$[$2]" = xno || ])wine_fn_ignore_file $1])
760 dnl **** Add a message to the list displayed at the end ****
762 dnl Usage: WINE_NOTICE(notice)
763 dnl Usage: WINE_NOTICE_WITH(with_flag, test, notice)
764 dnl Usage: WINE_WARNING(warning)
765 dnl Usage: WINE_WARNING_WITH(with_flag, test, warning)
766 dnl Usage: WINE_PRINT_MESSAGES
768 AC_DEFUN([WINE_NOTICE],[AS_VAR_APPEND([wine_notices],["|$1"])])
769 AC_DEFUN([WINE_WARNING],[AS_VAR_APPEND([wine_warnings],["|$1"])])
771 AC_DEFUN([WINE_NOTICE_WITH],[AS_IF([$2],[case "x$with_$1" in
772 x) WINE_NOTICE([$3]) ;;
775 This is an error since --with-$1 was requested.]) ;;
778 AC_DEFUN([WINE_WARNING_WITH],[AS_IF([$2],[case "x$with_$1" in
779 x) WINE_WARNING([$3]) ;;
782 This is an error since --with-$1 was requested.]) ;;
785 AC_DEFUN([WINE_ERROR_WITH],[AS_IF([$2],[case "x$with_$1" in
788 Use the --without-$1 option if you really want this.]) ;;
791 AC_DEFUN([WINE_PRINT_MESSAGES],[ac_save_IFS="$IFS"
792 if test "x$wine_notices" != x; then
795 for msg in $wine_notices; do
797 AS_VAR_IF([msg],[],,[AC_MSG_NOTICE([$msg])])
801 for msg in $wine_warnings; do
803 AS_VAR_IF([msg],[],,[echo >&2
804 AC_MSG_WARN([$msg])])
809 dnl compile-command: "autoreconf --warnings=all"