makefiles: Expand srcdir directly into the top-level makefile.
[wine.git] / aclocal.m4
blob14b6f53dc31aa0e991b2a8092cf2b66ad50cfb1e
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 [if test -n "$ac_tool_prefix"; then
31   AC_CHECK_PROG([$1],[${ac_tool_prefix}$2],[${ac_tool_prefix}$2],,[$4])
33 if test -n "$ac_cv_prog_$1"; then
34   $1="$ac_cv_prog_$1"
35 elif test "$cross_compiling" != yes; then
36   unset ac_cv_prog_$1
37   AC_CHECK_PROG([$1],[$2],[$2],[$3],[$4])
38 fi])
40 dnl **** Initialize the programs used by other checks ****
41 dnl
42 dnl Usage: WINE_PATH_SONAME_TOOLS
43 dnl Usage: WINE_PATH_PKG_CONFIG
44 dnl
45 AC_DEFUN([WINE_PATH_SONAME_TOOLS],
46 [AC_PATH_PROG(LDD,ldd,true,/sbin:/usr/sbin:$PATH)
47 AC_CHECK_TOOL(READELF,[readelf],true)])
49 AC_DEFUN([WINE_PATH_PKG_CONFIG],
50 [WINE_CHECK_HOST_TOOL(PKG_CONFIG,[pkg-config])])
52 dnl **** Extract the soname of a library ****
53 dnl
54 dnl Usage: WINE_CHECK_SONAME(library, function, [action-if-found, [action-if-not-found, [other_libraries, [pattern]]]])
55 dnl
56 AC_DEFUN([WINE_CHECK_SONAME],
57 [AC_REQUIRE([WINE_PATH_SONAME_TOOLS])dnl
58 AS_VAR_PUSHDEF([ac_Lib],[ac_cv_lib_soname_$1])dnl
59 m4_pushdef([ac_lib_pattern],m4_default([$6],[lib$1]))dnl
60 AC_MSG_CHECKING([for -l$1])
61 AC_CACHE_VAL(ac_Lib,
62 [ac_check_soname_save_LIBS=$LIBS
63 LIBS="-l$1 $5 $LIBS"
64   AC_LINK_IFELSE([AC_LANG_CALL([], [$2])],
65   [case "$LIBEXT" in
66     dll) AS_VAR_SET(ac_Lib,[`$ac_cv_path_LDD conftest.exe | grep "$1" | sed -e "s/dll.*/dll/"';2,$d'`]) ;;
67     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'`]) ;;
68     *) 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'`])
69        AS_IF([test "x]AS_VAR_GET(ac_Lib)[" = x],
70              [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   esac])
72   LIBS=$ac_check_soname_save_LIBS])dnl
73 AS_IF([test "x]AS_VAR_GET(ac_Lib)[" = "x"],
74       [AC_MSG_RESULT([not found])
75        $4],
76       [AC_MSG_RESULT(AS_VAR_GET(ac_Lib))
77        AC_DEFINE_UNQUOTED(AS_TR_CPP(SONAME_LIB$1),["]AS_VAR_GET(ac_Lib)["],
78                           [Define to the soname of the lib$1 library.])
79        $3])dnl
80 m4_popdef([ac_lib_pattern])dnl
81 AS_VAR_POPDEF([ac_Lib])])
83 dnl **** Get flags from pkg-config or alternate xxx-config program ****
84 dnl
85 dnl Usage: WINE_PACKAGE_FLAGS(var,pkg-name,[default-lib,[cflags-alternate,libs-alternate,[checks]]])
86 dnl
87 AC_DEFUN([WINE_PACKAGE_FLAGS],
88 [AC_REQUIRE([WINE_PATH_PKG_CONFIG])dnl
89 AS_VAR_PUSHDEF([ac_cflags],[[$1]_CFLAGS])dnl
90 AS_VAR_PUSHDEF([ac_libs],[[$1]_LIBS])dnl
91 AC_ARG_VAR(ac_cflags, [C compiler flags for $2, overriding pkg-config])dnl
92 AS_IF([test -n "$ac_cflags"],[],
93       [test -n "$PKG_CONFIG"],
94       [ac_cflags=`$PKG_CONFIG --cflags [$2] 2>/dev/null`])
95 m4_ifval([$4],[test "$cross_compiling" = yes || ac_cflags=[$]{ac_cflags:-[$4]}])
96 AC_ARG_VAR(ac_libs, [Linker flags for $2, overriding pkg-config])dnl
97 AS_IF([test -n "$ac_libs"],[],
98       [test -n "$PKG_CONFIG"],
99       [ac_libs=`$PKG_CONFIG --libs [$2] 2>/dev/null`])
100 m4_ifval([$5],[test "$cross_compiling" = yes || ac_libs=[$]{ac_libs:-[$5]}])
101 m4_ifval([$3],[ac_libs=[$]{ac_libs:-"$3"}])
102 ac_save_CPPFLAGS=$CPPFLAGS
103 CPPFLAGS="$CPPFLAGS $ac_cflags"
105 CPPFLAGS=$ac_save_CPPFLAGS
106 test -z "$ac_cflags" || ac_cflags=`echo " $ac_cflags" | sed 's/ -I\([[^/]]\)/ -I\$(top_builddir)\/\1/g'`
107 test -z "$ac_libs" || ac_libs=`echo " $ac_libs" | sed 's/ -L\([[^/]]\)/ -L\$(top_builddir)\/\1/g'`
108 AS_VAR_POPDEF([ac_libs])dnl
109 AS_VAR_POPDEF([ac_cflags])])dnl
111 dnl **** Link C code with an assembly file ****
113 dnl Usage: WINE_TRY_ASM_LINK(asm-code,includes,function,[action-if-found,[action-if-not-found]])
115 AC_DEFUN([WINE_TRY_ASM_LINK],
116 [AC_LINK_IFELSE([AC_LANG_PROGRAM([[$2]],[[asm($1); $3]])],[$4],[$5])])
118 dnl **** Check if we can link an empty program with special CFLAGS ****
120 dnl Usage: WINE_TRY_CFLAGS(flags,[action-if-yes,[action-if-no]])
122 dnl The default action-if-yes is to append the flags to EXTRACFLAGS.
124 AC_DEFUN([WINE_TRY_CFLAGS],
125 [AS_VAR_PUSHDEF([ac_var], ac_cv_cflags_[[$1]])dnl
126 AC_CACHE_CHECK([whether the compiler supports $1], ac_var,
127 [ac_wine_try_cflags_saved=$CFLAGS
128 CFLAGS="$CFLAGS $1"
129 AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(int argc, char **argv) { return 0; }]])],
130                [AS_VAR_SET(ac_var,yes)], [AS_VAR_SET(ac_var,no)])
131 CFLAGS=$ac_wine_try_cflags_saved])
132 AS_IF([test AS_VAR_GET(ac_var) = yes],
133       [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_IF([test AS_VAR_GET(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 AC_SUBST(ALL_TEST_RESOURCES,"")
201 wine_fn_append_file ()
203     AS_VAR_APPEND($[1]," \\$as_nl       $[2]")
206 wine_fn_append_rule ()
208     AS_ECHO("$[1]") >>$wine_rules_file
211 wine_fn_has_flag ()
213     expr ",$ac_flags," : ".*,$[1],.*" >/dev/null
216 wine_fn_depend_rules ()
218     ac_alldeps=$[1]
219     ac_makedep="\$(MAKEDEP)"
220     ac_input=Make.vars.in:$ac_dir/Makefile.in
221     if test $ac_dir != tools
222     then
223         dnl makedep is in tools so tools makefile cannot depend on it
224         ac_alldeps="$[1] $ac_makedep"
225     else
226         ac_alldeps="$[1] include/config.h"
227     fi
228     case $[1] in
229       *.in) ac_input=$ac_input:$[1] ;;
230       *) ac_makedep="$[1] $ac_makedep" ;;
231     esac
233     wine_fn_append_rule \
234 "$ac_dir/Makefile: $ac_dir/Makefile.in Make.vars.in config.status $ac_alldeps
235         @./config.status --file $ac_dir/Makefile:$ac_input && cd $ac_dir && \$(MAKE) depend
236 depend: $ac_dir/depend
237 .PHONY: $ac_dir/depend
238 $ac_dir/depend: $ac_makedep dummy
239         @./config.status --file $ac_dir/Makefile:$ac_input && cd $ac_dir && \$(MAKE) depend"
242 wine_fn_pot_rules ()
244     test "x$with_gettextpo" = xyes || return
246     if wine_fn_has_flag mc
247     then
248         wine_fn_append_file ALL_POT_FILES $ac_dir/msg.pot
249         wine_fn_append_rule \
250 "$ac_dir/msg.pot: $ac_dir/Makefile dummy
251         @cd $ac_dir && \$(MAKE) msg.pot
252 $ac_dir/msg.pot: tools/wmc include"
253     fi
254     if wine_fn_has_flag po
255     then
256         wine_fn_append_file ALL_POT_FILES $ac_dir/rsrc.pot
257         wine_fn_append_rule \
258 "$ac_dir/rsrc.pot: $ac_dir/Makefile dummy
259         @cd $ac_dir && \$(MAKE) rsrc.pot
260 $ac_dir/rsrc.pot: tools/wrc include"
261     fi
264 wine_fn_all_rules ()
266     ac_rules=$[1]
268     wine_fn_depend_rules ${ac_rules:-Make.rules}
269     wine_fn_append_rule \
270 "all: $ac_dir
271 .PHONY: $ac_dir
272 $ac_dir: $ac_dir/Makefile dummy
273         @cd $ac_dir && \$(MAKE)"
276 wine_fn_install_rules ()
278     wine_fn_has_flag install-lib || wine_fn_has_flag install-dev || return
280     wine_fn_append_rule \
281 ".PHONY: $ac_dir/install $ac_dir/uninstall
282 $ac_dir/install:: $ac_dir
283         @cd $ac_dir && \$(MAKE) install
284 $ac_dir/uninstall:: $ac_dir/Makefile
285         @cd $ac_dir && \$(MAKE) uninstall
286 install:: $ac_dir/install
287 __uninstall__: $ac_dir/uninstall"
289     if wine_fn_has_flag install-lib
290     then
291         wine_fn_append_rule \
292 ".PHONY: $ac_dir/install-lib
293 $ac_dir/install-lib:: $ac_dir
294         @cd $ac_dir && \$(MAKE) install-lib
295 install-lib:: $ac_dir/install-lib"
296     fi
298     if wine_fn_has_flag install-dev
299     then
300         wine_fn_append_rule \
301 ".PHONY: $ac_dir/install-dev
302 $ac_dir/install-dev:: $ac_dir
303         @cd $ac_dir && \$(MAKE) install-dev
304 install-dev:: $ac_dir/install-dev"
305     fi
308 wine_fn_clean_rules ()
310     ac_clean=$[@]
312     if wine_fn_has_flag clean
313     then
314         wine_fn_append_rule \
315 "__clean__: $ac_dir/clean
316 .PHONY: $ac_dir/clean
317 $ac_dir/clean: $ac_dir/Makefile
318         @cd $ac_dir && \$(MAKE) clean
319         \$(RM) $ac_dir/Makefile"
320     else
321         wine_fn_append_rule \
322 "clean::
323         \$(RM) \$(CLEAN_FILES:%=$ac_dir/%) $ac_clean $ac_dir/Makefile"
324     fi
327 wine_fn_disabled_rules ()
329     ac_clean=$[@]
331     wine_fn_append_rule \
332 "clean::
333         \$(RM) \$(CLEAN_FILES:%=$ac_dir/%) $ac_clean $ac_dir/Makefile"
336 wine_fn_config_makefile ()
338     ac_dir=$[1]
339     ac_enable=$[2]
340     ac_flags=$[3]
342     AS_VAR_IF([$ac_enable],[no],[wine_fn_disabled_rules; return])
343     wine_fn_all_rules
344     wine_fn_install_rules
345     wine_fn_clean_rules
348 wine_fn_config_lib ()
350     ac_name=$[1]
351     ac_flags=$[2]
352     ac_dir=dlls/$ac_name
354     wine_fn_all_rules Make.rules.in
355     wine_fn_clean_rules
357     wine_fn_append_rule \
358 ".PHONY: $ac_dir/install $ac_dir/uninstall
359 $ac_dir/install:: $ac_dir \$(DESTDIR)\$(dlldir)
360         \$(INSTALL_DATA) $ac_dir/lib$ac_name.a \$(DESTDIR)\$(dlldir)/lib$ac_name.a
361 $ac_dir/uninstall::
362         \$(RM) \$(DESTDIR)\$(dlldir)/lib$ac_name.a
363 install install-dev:: $ac_dir/install
364 __uninstall__: $ac_dir/uninstall
365 __builddeps__: $ac_dir
366 $ac_dir: tools/widl tools/winebuild tools/winegcc include"
369 wine_fn_config_dll ()
371     ac_name=$[1]
372     ac_dir=dlls/$ac_name
373     ac_enable=$[2]
374     ac_flags=$[3]
375     ac_implib=${4:-$ac_name}
376     ac_file=$ac_dir/lib$ac_implib
377     ac_dll=$ac_name
378     ac_deps="tools/widl tools/winebuild tools/winegcc include"
379     ac_implibflags=""
381     case $ac_name in
382       *16) ac_implibflags=" -m16" ;;
383       *.*) ;;
384       *)   ac_dll=$ac_dll.dll ;;
385     esac
387     ac_clean=
388     wine_fn_has_flag implib && ac_clean="$ac_clean $ac_file.$IMPLIBEXT"
389     wine_fn_has_flag mc && ac_clean="$ac_clean $ac_dir/msg.pot"
390     wine_fn_has_flag po && ac_clean="$ac_clean $ac_dir/rsrc.pot"
392     AS_VAR_IF([$ac_enable],[no],
393               dnl enable_win16 is special in that it disables import libs too
394               [if wine_fn_has_flag implib && test "$ac_enable" != enable_win16
395                then
396                    wine_fn_depend_rules Make.rules.in
397                    wine_fn_clean_rules $ac_clean
398                else
399                    wine_fn_disabled_rules $ac_clean
400                    return
401                fi],
403               [wine_fn_all_rules Make.rules.in
404                wine_fn_clean_rules $ac_clean
405                wine_fn_append_rule \
406 "$ac_dir: __builddeps__
407 manpages htmlpages sgmlpages xmlpages:: $ac_dir/Makefile
408         @cd $ac_dir && \$(MAKE) \$[@]
409 .PHONY: $ac_dir/install-lib $ac_dir/uninstall
410 install install-lib:: $ac_dir/install-lib
411 __uninstall__: $ac_dir/uninstall"
412                 if test -n "$DLLEXT"
413                 then
414                     wine_fn_append_rule \
415 "$ac_dir/install-lib:: $ac_dir \$(DESTDIR)\$(dlldir) \$(DESTDIR)\$(fakedlldir)
416         \$(INSTALL_PROGRAM) $ac_dir/$ac_dll$DLLEXT \$(DESTDIR)\$(dlldir)/$DLLPREFIX$ac_dll$DLLEXT
417         \$(INSTALL_DATA) $ac_dir/$ac_dll.fake \$(DESTDIR)\$(fakedlldir)/$ac_dll
418 $ac_dir/uninstall::
419         \$(RM) \$(DESTDIR)\$(dlldir)/$DLLPREFIX$ac_dll$DLLEXT \$(DESTDIR)\$(fakedlldir)/$ac_dll"
420                 else
421                     wine_fn_append_rule \
422 "$ac_dir/install-lib:: $ac_dir \$(DESTDIR)\$(dlldir)
423         \$(INSTALL_PROGRAM) $ac_dir/$ac_dll \$(DESTDIR)\$(dlldir)/$ac_dll
424 $ac_dir/uninstall::
425         \$(RM) \$(DESTDIR)\$(dlldir)/$ac_dll"
426                 fi
428                 wine_fn_pot_rules])
430     if wine_fn_has_flag staticimplib
431     then
432         wine_fn_append_rule \
433 "__builddeps__: $ac_file.$IMPLIBEXT $ac_file.$STATIC_IMPLIBEXT
434 $ac_file.$IMPLIBEXT $ac_file.$STATIC_IMPLIBEXT $ac_file.cross.a: $ac_deps
435 $ac_file.def: $ac_dir/$ac_name.spec $ac_dir/Makefile \$(WINEBUILD)
436         \$(WINEBUILD) \$(TARGETFLAGS)$ac_implibflags -w --def -o \$[@] --export $srcdir/$ac_dir/$ac_name.spec
437 $ac_file.$STATIC_IMPLIBEXT: $ac_dir/Makefile dummy
438         @cd $ac_dir && \$(MAKE) lib$ac_implib.$STATIC_IMPLIBEXT
439 .PHONY: $ac_dir/install-dev $ac_dir/uninstall
440 $ac_dir/install-dev:: $ac_file.$IMPLIBEXT \$(DESTDIR)\$(dlldir)
441         \$(INSTALL_DATA) $ac_file.$IMPLIBEXT \$(DESTDIR)\$(dlldir)/lib$ac_implib.$IMPLIBEXT
442 $ac_dir/uninstall::
443         \$(RM) \$(DESTDIR)\$(dlldir)/lib$ac_implib.$IMPLIBEXT
444 install install-dev:: $ac_dir/install-dev
445 __uninstall__: $ac_dir/uninstall"
447         if test "$IMPLIBEXT" != "$STATIC_IMPLIBEXT"
448         then
449             wine_fn_append_rule \
450 "$ac_dir/install-dev:: $ac_file.$STATIC_IMPLIBEXT \$(DESTDIR)\$(dlldir) __builddeps__
451         \$(INSTALL_DATA) $ac_file.$STATIC_IMPLIBEXT \$(DESTDIR)\$(dlldir)/lib$ac_implib.$STATIC_IMPLIBEXT
452 $ac_dir/uninstall::
453         \$(RM) \$(DESTDIR)\$(dlldir)/lib$ac_implib.$STATIC_IMPLIBEXT"
454         fi
456         if test -n "$CROSSTARGET"
457         then
458             wine_fn_append_rule \
459 "__builddeps__: $ac_file.cross.a
460 $ac_file.cross.a: $ac_dir/Makefile dummy
461         @cd $ac_dir && \$(MAKE) lib$ac_implib.cross.a"
462         fi
464     elif wine_fn_has_flag implib
465     then
466         wine_fn_append_rule \
467 "__builddeps__: $ac_file.$IMPLIBEXT
468 $ac_file.def: $ac_dir/$ac_name.spec $ac_dir/Makefile \$(WINEBUILD)
469         \$(WINEBUILD) \$(TARGETFLAGS)$ac_implibflags -w --def -o \$[@] --export $srcdir/$ac_dir/$ac_name.spec
470 $ac_file.a: $ac_dir/$ac_name.spec $ac_dir/Makefile \$(WINEBUILD)
471         \$(WINEBUILD) \$(TARGETFLAGS)$ac_implibflags -w --implib -o \$[@] --export $srcdir/$ac_dir/$ac_name.spec
472 .PHONY: $ac_dir/install-dev $ac_dir/uninstall
473 $ac_dir/install-dev:: $ac_file.$IMPLIBEXT \$(DESTDIR)\$(dlldir)
474         \$(INSTALL_DATA) $ac_file.$IMPLIBEXT \$(DESTDIR)\$(dlldir)/lib$ac_implib.$IMPLIBEXT
475 $ac_dir/uninstall::
476         \$(RM) \$(DESTDIR)\$(dlldir)/lib$ac_implib.$IMPLIBEXT
477 install install-dev:: $ac_dir/install-dev
478 __uninstall__: $ac_dir/uninstall"
479         if test -n "$CROSSTARGET"
480         then
481             wine_fn_append_rule \
482 "__builddeps__: $ac_file.cross.a
483 $ac_file.cross.a: $ac_dir/$ac_name.spec $ac_dir/Makefile \$(WINEBUILD)
484         \$(WINEBUILD) \$(CROSSTARGET:%=-b %)$ac_implibflags -w --implib -o \$[@] --export $srcdir/$ac_dir/$ac_name.spec"
485         fi
487         if test "$ac_name" != "$ac_implib"
488         then
489             wine_fn_append_rule \
490 "__builddeps__: dlls/lib$ac_implib.$IMPLIBEXT
491 dlls/lib$ac_implib.$IMPLIBEXT: $ac_file.$IMPLIBEXT
492         \$(RM) \$[@] && \$(LN_S) $ac_name/lib$ac_implib.$IMPLIBEXT \$[@]
493 clean::
494         \$(RM) dlls/lib$ac_implib.$IMPLIBEXT"
495             if test -n "$CROSSTARGET"
496             then
497                 wine_fn_append_rule \
498 "__builddeps__: dlls/lib$ac_implib.cross.a
499 dlls/lib$ac_implib.cross.a: $ac_file.cross.a
500         \$(RM) \$[@] && \$(LN_S) $ac_name/lib$ac_implib.cross.a \$[@]"
501             fi
502         fi
503     fi
506 wine_fn_config_program ()
508     ac_name=$[1]
509     ac_dir=programs/$ac_name
510     ac_enable=$[2]
511     ac_flags=$[3]
512     ac_program=$ac_name
514     case $ac_name in
515       *.*) ;;
516       *)   ac_program=$ac_program.exe ;;
517     esac
519     ac_clean=
520     wine_fn_has_flag mc && ac_clean="$ac_clean $ac_dir/msg.pot"
521     wine_fn_has_flag po && ac_clean="$ac_clean $ac_dir/rsrc.pot"
522     wine_fn_has_flag manpage && ac_clean="$ac_clean $ac_dir/$ac_name.man"
523     test -n "$DLLEXT" || ac_clean="$ac_clean $ac_dir/$ac_program"
525     AS_VAR_IF([$ac_enable],[no],[wine_fn_disabled_rules $ac_clean; return])
527     wine_fn_all_rules Make.rules.in
528     wine_fn_clean_rules $ac_clean
529     wine_fn_append_rule "$ac_dir: __builddeps__"
530     wine_fn_pot_rules
532     wine_fn_has_flag install || return
533     wine_fn_append_rule \
534 ".PHONY: $ac_dir/install $ac_dir/uninstall
535 install install-lib:: $ac_dir/install
536 __uninstall__: $ac_dir/uninstall"
538     if test -n "$DLLEXT"
539     then
540         wine_fn_append_rule \
541 "$ac_dir/install:: $ac_dir \$(DESTDIR)\$(dlldir) \$(DESTDIR)\$(fakedlldir)
542         \$(INSTALL_PROGRAM) $ac_dir/$ac_program$DLLEXT \$(DESTDIR)\$(dlldir)/$DLLPREFIX$ac_program$DLLEXT
543         \$(INSTALL_DATA) $ac_dir/$ac_program.fake \$(DESTDIR)\$(fakedlldir)/$ac_program
544 $ac_dir/uninstall::
545         \$(RM) \$(DESTDIR)\$(dlldir)/$DLLPREFIX$ac_program$DLLEXT \$(DESTDIR)\$(fakedlldir)/$ac_program"
547         if test -z "$with_wine64" && wine_fn_has_flag installbin
548         then
549             wine_fn_append_rule \
550 "$ac_dir/install:: __tooldeps__ \$(DESTDIR)\$(bindir)
551         \$(INSTALL_SCRIPT) \$(TOOLSDIR)/tools/wineapploader \$(DESTDIR)\$(bindir)/$ac_name
552 $ac_dir/uninstall::
553         \$(RM) \$(DESTDIR)\$(bindir)/$ac_name"
554         fi
555     else
556         wine_fn_append_rule \
557 "$ac_dir/install:: $ac_dir \$(DESTDIR)\$(bindir)
558         \$(INSTALL_PROGRAM) $ac_dir/$ac_program \$(DESTDIR)\$(bindir)/$ac_program
559 $ac_dir/uninstall::
560         \$(RM) \$(DESTDIR)\$(bindir)/$ac_program"
561     fi
563     if test -z "$with_wine64" && wine_fn_has_flag manpage
564     then
565         wine_fn_append_rule \
566 "$ac_dir/install:: $ac_dir \$(DESTDIR)\$(mandir)/man\$(prog_manext)
567         \$(INSTALL_DATA) $ac_dir/$ac_name.man \$(DESTDIR)\$(mandir)/man\$(prog_manext)/$ac_name.\$(prog_manext)
568 $ac_dir/uninstall::
569         \$(RM) \$(DESTDIR)\$(mandir)/man\$(prog_manext)/$ac_name.\$(prog_manext)"
570     fi
573 wine_fn_config_test ()
575     ac_dir=$[1]
576     ac_name=$[2]
577     ac_flags=$[3]
579     ac_clean=
580     test -n "$CROSSTARGET" && ac_clean=`expr $ac_dir/${ac_name} : "\\(.*\\)_test"`_crosstest.exe
581     test -n "$DLLEXT" || ac_clean=$ac_dir/${ac_name}.exe
582     ac_clean="$ac_clean $ac_dir/testlist.c"
584     AS_VAR_IF([enable_tests],[no],[wine_fn_disabled_rules $ac_clean; return])
586     wine_fn_append_file ALL_TEST_RESOURCES $ac_name.res
587     wine_fn_all_rules Make.rules.in
588     wine_fn_clean_rules $ac_clean
590     wine_fn_append_rule \
591 "$ac_dir: programs/winetest/Makefile __builddeps__
592 programs/winetest: $ac_dir
593 check test: $ac_dir/test
594 .PHONY: $ac_dir/test
595 $ac_dir/test: dummy
596         @cd $ac_dir && \$(MAKE) test
597 testclean::
598         \$(RM) $ac_dir/*.ok"
600         if test -n "$CROSSTARGET"
601         then
602             wine_fn_append_rule \
603 "crosstest: $ac_dir/crosstest
604 .PHONY: $ac_dir/crosstest
605 $ac_dir/crosstest: $ac_dir/Makefile __builddeps__ dummy
606         @cd $ac_dir && \$(MAKE) crosstest"
607         fi
610 wine_fn_config_tool ()
612     ac_dir=$[1]
613     ac_flags=$[2]
614     AS_VAR_IF([enable_tools],[no],[return])
616     wine_fn_all_rules
617     wine_fn_install_rules
618     wine_fn_clean_rules
620     wine_fn_append_rule "__tooldeps__: $ac_dir"
621     wine_fn_append_rule "$ac_dir: libs/port"
622     case $ac_dir in
623       tools/winebuild) wine_fn_append_rule "\$(WINEBUILD): $ac_dir" ;;
624     esac
627 wine_fn_config_makerules ()
629     ac_rules=$[1]
630     ac_deps=$[2]
631     wine_fn_append_rule \
632 "$ac_rules: $ac_rules.in $ac_deps config.status
633         @./config.status $ac_rules
634 distclean::
635         \$(RM) $ac_rules"
638 wine_fn_config_symlink ()
640     ac_linkdir=
641     if test "x$[1]" = "x-d"
642     then
643         ac_linkdir=$[2]
644         shift; shift
645     fi
646     ac_links=$[@]
647     wine_fn_append_rule \
648 "$ac_links:
649         @./config.status \$[@]
650 distclean::
651         \$(RM) $ac_links"
652     test -n "$ac_linkdir" || return
653     wine_fn_append_rule "$ac_linkdir/Makefile $ac_linkdir/depend: $ac_links"
656 if test -z "$CROSSTARGET"
657 then
658     wine_fn_append_rule \
659 "crosstest:
660         @echo \"crosstest is not supported (mingw not installed?)\" && false"
661 fi])
663 dnl **** Define helper function to append a file to a makefile file list ****
665 dnl Usage: WINE_APPEND_FILE(var,file)
667 AC_DEFUN([WINE_APPEND_FILE],[AC_REQUIRE([WINE_CONFIG_HELPERS])wine_fn_append_file $1 "$2"])
669 dnl **** Define helper function to append a rule to a makefile command list ****
671 dnl Usage: WINE_APPEND_RULE(rule)
673 AC_DEFUN([WINE_APPEND_RULE],[AC_REQUIRE([WINE_CONFIG_HELPERS])wine_fn_append_rule "$1"])
675 dnl **** Create nonexistent directories from config.status ****
677 dnl Usage: WINE_CONFIG_EXTRA_DIR(dirname)
679 AC_DEFUN([WINE_CONFIG_EXTRA_DIR],
680 [AC_CONFIG_COMMANDS([$1],[test -d "$1" || { AC_MSG_NOTICE([creating $1]); AS_MKDIR_P("$1"); }])dnl
681 wine_fn_append_rule \
682 "clean::
683         \$(RM) \$(CLEAN_FILES:%=[$1]/%)"])
685 dnl **** Create symlinks from config.status ****
687 dnl Usage: WINE_CONFIG_SYMLINK(target,src,files,enable,srcfile)
689 AC_DEFUN([WINE_CONFIG_SYMLINK],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
690 m4_ifval([$4],[if test "x$[$4]" != xno; then
691 ])m4_foreach([f],[$3],
692 [AC_CONFIG_LINKS(m4_ifval([$1],[$1/])f[:]m4_ifval([$2],[$2/])m4_ifval([$5],[$5],f))])dnl
693 m4_if([$1],[$2],[test "$srcdir" = "." || ])dnl
694 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],[
695 fi])[]dnl
696 ])])
698 dnl **** Create a make rules file from config.status ****
700 dnl Usage: WINE_CONFIG_MAKERULES(file,var,deps)
702 AC_DEFUN([WINE_CONFIG_MAKERULES],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
703 wine_fn_config_makerules $1 $3
704 $2=$1
705 AC_SUBST_FILE([$2])dnl
706 AC_CONFIG_FILES([$1])])
708 dnl **** Create a makefile from config.status ****
710 dnl Usage: WINE_CONFIG_MAKEFILE(file,enable,flags)
712 AC_DEFUN([WINE_CONFIG_MAKEFILE],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
713 AS_VAR_PUSHDEF([ac_enable],m4_default([$2],[enable_]$1))dnl
714 m4_append_uniq([_AC_USER_OPTS],ac_enable,[
715 ])dnl
716 wine_fn_config_makefile [$1] ac_enable [$3]dnl
717 AS_VAR_POPDEF([ac_enable])])
719 dnl **** Create a dll makefile from config.status ****
721 dnl Usage: WINE_CONFIG_DLL(name,enable,flags,implib)
723 AC_DEFUN([WINE_CONFIG_DLL],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
724 AS_VAR_PUSHDEF([ac_enable],m4_default([$2],[enable_]$1))dnl
725 m4_append_uniq([_AC_USER_OPTS],ac_enable,[
726 ])dnl
727 wine_fn_config_dll [$1] ac_enable [$3] [$4]dnl
728 AS_VAR_POPDEF([ac_enable])])
730 dnl **** Create a program makefile from config.status ****
732 dnl Usage: WINE_CONFIG_PROGRAM(name,enable,flags)
734 AC_DEFUN([WINE_CONFIG_PROGRAM],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
735 AS_VAR_PUSHDEF([ac_enable],m4_default([$2],[enable_]$1))dnl
736 m4_append_uniq([_AC_USER_OPTS],ac_enable,[
737 ])dnl
738 wine_fn_config_program [$1] ac_enable [$3]dnl
739 AS_VAR_POPDEF([ac_enable])])
741 dnl **** Create a test makefile from config.status ****
743 dnl Usage: WINE_CONFIG_TEST(dir,flags)
745 AC_DEFUN([WINE_CONFIG_TEST],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
746 m4_pushdef([ac_suffix],m4_if(m4_substr([$1],0,9),[programs/],[.exe_test],[_test]))dnl
747 m4_pushdef([ac_name],[m4_bpatsubst([$1],[.*/\(.*\)/tests$],[\1])])dnl
748 wine_fn_config_test $1 ac_name[]ac_suffix [$2]dnl
749 m4_popdef([ac_suffix])dnl
750 m4_popdef([ac_name])])
752 dnl **** Create a static lib makefile from config.status ****
754 dnl Usage: WINE_CONFIG_LIB(name,flags)
756 AC_DEFUN([WINE_CONFIG_LIB],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
757 wine_fn_config_lib [$1] [$2]])
759 dnl **** Create a tool makefile from config.status ****
761 dnl Usage: WINE_CONFIG_TOOL(name,flags)
763 AC_DEFUN([WINE_CONFIG_TOOL],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
764 m4_append_uniq([_AC_USER_OPTS],[enable_tools],[
765 ])dnl
766 wine_fn_config_tool [$1] [$2]])
768 dnl **** Add a message to the list displayed at the end ****
770 dnl Usage: WINE_NOTICE(notice)
771 dnl Usage: WINE_NOTICE_WITH(with_flag, test, notice)
772 dnl Usage: WINE_WARNING(warning)
773 dnl Usage: WINE_WARNING_WITH(with_flag, test, warning)
774 dnl Usage: WINE_PRINT_MESSAGES
776 AC_DEFUN([WINE_NOTICE],[AS_VAR_APPEND([wine_notices],["|$1"])])
777 AC_DEFUN([WINE_WARNING],[AS_VAR_APPEND([wine_warnings],["|$1"])])
779 AC_DEFUN([WINE_NOTICE_WITH],[AS_IF([$2],[case "x$with_$1" in
780   x)   WINE_NOTICE([$3]) ;;
781   xno) ;;
782   *)   AC_MSG_ERROR([$3
783 This is an error since --with-$1 was requested.]) ;;
784 esac])])
786 AC_DEFUN([WINE_WARNING_WITH],[AS_IF([$2],[case "x$with_$1" in
787   x)   WINE_WARNING([$3]) ;;
788   xno) ;;
789   *)   AC_MSG_ERROR([$3
790 This is an error since --with-$1 was requested.]) ;;
791 esac])])
793 AC_DEFUN([WINE_ERROR_WITH],[AS_IF([$2],[case "x$with_$1" in
794   xno) ;;
795   *)   AC_MSG_ERROR([$3
796 Use the --without-$1 option if you really want this.]) ;;
797 esac])])
799 AC_DEFUN([WINE_PRINT_MESSAGES],[ac_save_IFS="$IFS"
800 if test "x$wine_notices != "x; then
801     echo >&AS_MESSAGE_FD
802     IFS="|"
803     for msg in $wine_notices; do
804         IFS="$ac_save_IFS"
805         if test -n "$msg"; then
806             AC_MSG_NOTICE([$msg])
807         fi
808     done
810 IFS="|"
811 for msg in $wine_warnings; do
812     IFS="$ac_save_IFS"
813     if test -n "$msg"; then
814         echo >&2
815         AC_MSG_WARN([$msg])
816     fi
817 done
818 IFS="$ac_save_IFS"])
820 dnl Local Variables:
821 dnl compile-command: "autoreconf --warnings=all"
822 dnl End: