blob: 1735fd0c3dd9532e9bb1092a63d627bb733376f5 [file] [log] [blame]
Alexandre Julliard67e8dc62002-05-20 18:29:58 +00001dnl Macros used to build the Wine configure script
2dnl
3dnl Copyright 2002 Alexandre Julliard
4dnl
5dnl This library is free software; you can redistribute it and/or
6dnl modify it under the terms of the GNU Lesser General Public
7dnl License as published by the Free Software Foundation; either
8dnl version 2.1 of the License, or (at your option) any later version.
9dnl
10dnl This library is distributed in the hope that it will be useful,
11dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
12dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13dnl Lesser General Public License for more details.
14dnl
15dnl You should have received a copy of the GNU Lesser General Public
16dnl License along with this library; if not, write to the Free Software
Jonathan Ernst360a3f92006-05-18 14:49:52 +020017dnl Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
Alexandre Julliard67e8dc62002-05-20 18:29:58 +000018dnl
Alexandre Julliard1d8d0172002-08-02 19:34:21 +000019dnl As a special exception to the GNU Lesser General Public License,
20dnl if you distribute this file as part of a program that contains a
21dnl configuration script generated by Autoconf, you may include it
22dnl under the same distribution terms that you use for the rest of
23dnl that program.
Alexandre Julliard67e8dc62002-05-20 18:29:58 +000024
25dnl **** Get the ldd program name; used by WINE_GET_SONAME ****
26dnl
27dnl Usage: WINE_PATH_LDD
28dnl
29AC_DEFUN([WINE_PATH_LDD],[AC_PATH_PROG(LDD,ldd,true,/sbin:/usr/sbin:$PATH)])
30
31dnl **** Extract the soname of a library ****
32dnl
Alexandre Julliard66afa982007-07-02 17:02:51 +020033dnl Usage: WINE_CHECK_SONAME(library, function, [action-if-found, [action-if-not-found, [other_libraries, [pattern]]]])
Alexandre Julliard67e8dc62002-05-20 18:29:58 +000034dnl
Alexandre Julliard66afa982007-07-02 17:02:51 +020035AC_DEFUN([WINE_CHECK_SONAME],
Alexandre Julliard30de3e82006-03-10 21:24:05 +010036[AC_REQUIRE([WINE_PATH_LDD])dnl
37AS_VAR_PUSHDEF([ac_Lib],[ac_cv_lib_soname_$1])dnl
Alexandre Julliard66afa982007-07-02 17:02:51 +020038m4_pushdef([ac_lib_pattern],m4_default([$6],[lib$1]))dnl
39AC_MSG_CHECKING([for -l$1])
Alexandre Julliard446befb2007-07-02 13:41:36 +020040AC_CACHE_VAL(ac_Lib,
Alexandre Julliard66afa982007-07-02 17:02:51 +020041[ac_check_soname_save_LIBS=$LIBS
42LIBS="-l$1 $5 $LIBS"
Alexandre Julliard67e8dc62002-05-20 18:29:58 +000043 AC_LINK_IFELSE([AC_LANG_CALL([], [$2])],
Alexandre Julliardbdbffd92006-08-07 21:41:55 +020044 [case "$LIBEXT" in
Alexandre Goujon2b05c842010-03-01 21:39:39 +010045 dll) AS_VAR_SET(ac_Lib,[`$ac_cv_path_LDD conftest.exe | grep "$1" | sed -e "s/dll.*/dll/"';2,$d'`]) ;;
Alexandre Julliard66afa982007-07-02 17:02:51 +020046 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'`]) ;;
Alexandre Julliard446befb2007-07-02 13:41:36 +020048 esac])
Alexandre Julliard66afa982007-07-02 17:02:51 +020049 LIBS=$ac_check_soname_save_LIBS])dnl
Alexandre Julliard446befb2007-07-02 13:41:36 +020050AS_IF([test "x]AS_VAR_GET(ac_Lib)[" = "x"],
Alexandre Julliard66afa982007-07-02 17:02:51 +020051 [AC_MSG_RESULT([not found])
52 $4],
Alexandre Julliard446befb2007-07-02 13:41:36 +020053 [AC_MSG_RESULT(AS_VAR_GET(ac_Lib))
54 AC_DEFINE_UNQUOTED(AS_TR_CPP(SONAME_LIB$1),["]AS_VAR_GET(ac_Lib)["],
Alexandre Julliard66afa982007-07-02 17:02:51 +020055 [Define to the soname of the lib$1 library.])
56 $3])dnl
57m4_popdef([ac_lib_pattern])dnl
Alexandre Julliard30de3e82006-03-10 21:24:05 +010058AS_VAR_POPDEF([ac_Lib])])
Alexandre Julliard67e8dc62002-05-20 18:29:58 +000059
Alexandre Julliard67e8dc62002-05-20 18:29:58 +000060dnl **** Link C code with an assembly file ****
61dnl
62dnl Usage: WINE_TRY_ASM_LINK(asm-code,includes,function,[action-if-found,[action-if-not-found]])
63dnl
64AC_DEFUN([WINE_TRY_ASM_LINK],
Alexandre Julliardad356de2007-06-08 20:23:16 +020065[AC_LINK_IFELSE(AC_LANG_PROGRAM([[$2]],[[asm($1); $3]]),[$4],[$5])])
Alexandre Julliard67e8dc62002-05-20 18:29:58 +000066
67dnl **** Check if we can link an empty program with special CFLAGS ****
68dnl
69dnl Usage: WINE_TRY_CFLAGS(flags,[action-if-yes,[action-if-no]])
70dnl
Alexandre Julliard182d1502006-08-25 13:22:33 +020071dnl The default action-if-yes is to append the flags to EXTRACFLAGS.
72dnl
Alexandre Julliard67e8dc62002-05-20 18:29:58 +000073AC_DEFUN([WINE_TRY_CFLAGS],
Alexandre Julliard182d1502006-08-25 13:22:33 +020074[AS_VAR_PUSHDEF([ac_var], ac_cv_cflags_[[$1]])dnl
75AC_CACHE_CHECK([whether the compiler supports $1], ac_var,
Alexandre Julliard67e8dc62002-05-20 18:29:58 +000076[ac_wine_try_cflags_saved=$CFLAGS
77CFLAGS="$CFLAGS $1"
Yann Droneaud5d3eacd2010-03-04 11:43:17 +010078AC_LINK_IFELSE(AC_LANG_SOURCE([[int main(int argc, char **argv) { return 0; }]]),
Alexandre Julliard295806f2009-10-07 13:46:06 +020079 [AS_VAR_SET(ac_var,yes)], [AS_VAR_SET(ac_var,no)])
Alexandre Julliard67e8dc62002-05-20 18:29:58 +000080CFLAGS=$ac_wine_try_cflags_saved])
Alexandre Julliard182d1502006-08-25 13:22:33 +020081AS_IF([test AS_VAR_GET(ac_var) = yes],
82 [m4_default([$2], [EXTRACFLAGS="$EXTRACFLAGS $1"])], [$3])dnl
83AS_VAR_POPDEF([ac_var])])
Alexandre Julliard67e8dc62002-05-20 18:29:58 +000084
Warren Baird421e8b92004-09-22 19:17:55 +000085dnl **** Check if we can link an empty shared lib (no main) with special CFLAGS ****
86dnl
87dnl Usage: WINE_TRY_SHLIB_FLAGS(flags,[action-if-yes,[action-if-no]])
88dnl
89AC_DEFUN([WINE_TRY_SHLIB_FLAGS],
90[ac_wine_try_cflags_saved=$CFLAGS
91CFLAGS="$CFLAGS $1"
92AC_LINK_IFELSE([void myfunc() {}],[$2],[$3])
93CFLAGS=$ac_wine_try_cflags_saved])
94
Alexandre Julliard05783b52002-12-11 00:21:55 +000095dnl **** Check whether we need to define a symbol on the compiler command line ****
96dnl
97dnl Usage: WINE_CHECK_DEFINE(name),[action-if-yes,[action-if-no]])
98dnl
99AC_DEFUN([WINE_CHECK_DEFINE],
100[AS_VAR_PUSHDEF([ac_var],[ac_cv_cpp_def_$1])dnl
101AC_CACHE_CHECK([whether we need to define $1],ac_var,
102 AC_EGREP_CPP(yes,[#ifndef $1
103yes
104#endif],
105 [AS_VAR_SET(ac_var,yes)],[AS_VAR_SET(ac_var,no)]))
106AS_IF([test AS_VAR_GET(ac_var) = yes],
107 [CFLAGS="$CFLAGS -D$1"
108 LINTFLAGS="$LINTFLAGS -D$1"])dnl
109AS_VAR_POPDEF([ac_var])])
110
Alexandre Julliard2d1a6272006-02-11 20:54:06 +0100111dnl **** Check for functions with some extra libraries ****
112dnl
113dnl Usage: WINE_CHECK_LIB_FUNCS(funcs,libs,[action-if-found,[action-if-not-found]])
114dnl
115AC_DEFUN([WINE_CHECK_LIB_FUNCS],
116[ac_wine_check_funcs_save_LIBS="$LIBS"
117LIBS="$LIBS $2"
118AC_CHECK_FUNCS([$1],[$3],[$4])
119LIBS="$ac_wine_check_funcs_save_LIBS"])
120
Alexandre Julliardeae0dc22007-01-01 13:14:21 +0100121dnl **** Check for a mingw program, trying the various mingw prefixes ****
122dnl
123dnl Usage: WINE_CHECK_MINGW_PROG(variable,prog,[value-if-not-found],[path])
124dnl
125AC_DEFUN([WINE_CHECK_MINGW_PROG],
Alexandre Julliarda91fb212009-12-07 15:36:09 +0100126[case "$host_cpu" in
127 i[[3456789]]86*)
128 ac_prefix_list="m4_foreach([ac_wine_prefix],[pc-mingw32, mingw32msvc, mingw32],
129 m4_foreach([ac_wine_cpu],[i686,i586,i486,i386],[ac_wine_cpu-ac_wine_prefix-$2 ]))" ;;
130 x86_64)
131 ac_prefix_list="m4_foreach([ac_wine_prefix],[pc-mingw32,w64-mingw32],[x86_64-ac_wine_prefix-$2 ])" ;;
132 *)
133 ac_prefix_list="" ;;
134esac
135AC_CHECK_PROGS([$1],[$ac_prefix_list],[$3],[$4])])
Alexandre Julliardeae0dc22007-01-01 13:14:21 +0100136
137
Alexandre Julliard2de10c42010-02-11 23:23:45 +0100138dnl **** Define helper functions for creating config.status files ****
139dnl
140dnl Usage: AC_REQUIRE([WINE_CONFIG_HELPERS])
141dnl
142AC_DEFUN([WINE_CONFIG_HELPERS],
Alexandre Julliard39b4ba22010-03-25 22:13:03 +0100143[ALL_MAKEFILE_DEPENDS="
144# Rules automatically generated by configure
145
146.INIT: Makefile
147.BEGIN: Makefile
148.MAKEFILEDEPS:
Alexandre Julliardabfb11e2010-03-25 22:12:49 +0100149Makefile: Makefile.in Make.rules config.status
Alexandre Julliard39b4ba22010-03-25 22:13:03 +0100150 @./config.status Make.tmp Makefile"
Alexandre Julliard7d831152010-03-20 15:07:45 +0100151
Alexandre Julliardabfb11e2010-03-25 22:12:49 +0100152AC_SUBST(ALL_WINETEST_DEPENDS,["# Test binaries"])
Alexandre Julliard7d831152010-03-20 15:07:45 +0100153AC_SUBST(ALL_TEST_BINARIES,"")
Alexandre Julliard7d831152010-03-20 15:07:45 +0100154
155wine_fn_append_file ()
Alexandre Julliard2de10c42010-02-11 23:23:45 +0100156{
157 AS_VAR_APPEND($[1]," \\$as_nl $[2]")
158}
Alexandre Julliardfc7f1c72010-02-23 14:24:57 +0100159
Alexandre Julliard2de10c42010-02-11 23:23:45 +0100160wine_fn_append_rule ()
161{
162 AS_VAR_APPEND($[1],"$as_nl$[2]")
Alexandre Julliardfc7f1c72010-02-23 14:24:57 +0100163}
164
Alexandre Julliard943cd732010-03-25 21:52:56 +0100165wine_fn_all_dir_rules ()
166{
167 wine_fn_append_file ALL_DIRS $[1]
168 wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
Alexandre Julliard3cc14dc2010-03-25 22:12:12 +0100169"__clean__ .PHONY: $[1]/__clean__
170$[1]/__clean__: $[1]/Makefile
171 @cd $[1] && \$(MAKE) clean
172 \$(RM) $[1]/Makefile
Alexandre Julliard18e53132010-03-25 22:00:00 +0100173$[1]/Makefile: $[1]/Makefile.in config.status $[2]
174 @./config.status --file $[1]/Makefile && cd $[1] && \$(MAKE) depend
175depend .PHONY: $[1]/__depend__
176$[1]/__depend__: \$(MAKEDEP) dummy
Alexandre Julliard943cd732010-03-25 21:52:56 +0100177 @./config.status --file $[1]/Makefile && cd $[1] && \$(MAKE) depend"
178}
179
Alexandre Julliardfc7f1c72010-02-23 14:24:57 +0100180wine_fn_config_makefile ()
181{
182 ac_dir=$[1]
Alexandre Julliard03642412010-03-20 15:24:22 +0100183 ac_enable=$[2]
Alexandre Julliard943cd732010-03-25 21:52:56 +0100184 wine_fn_all_dir_rules $ac_dir "Make.rules \$(MAKEDEP)"
Alexandre Julliarde84063b2010-03-25 21:46:41 +0100185
186 AS_VAR_IF([$ac_enable],[no],,[wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
Alexandre Julliard6c90aea2010-03-25 21:47:29 +0100187"all .PHONY: $ac_dir
188$ac_dir: $ac_dir/Makefile dummy
189 @cd $ac_dir && \$(MAKE)
Alexandre Julliarde84063b2010-03-25 21:46:41 +0100190install:: $ac_dir
191 @cd $ac_dir && \$(MAKE) install
192install-lib:: $ac_dir
193 @cd $ac_dir && \$(MAKE) install-lib
194install-dev:: $ac_dir
195 @cd $ac_dir && \$(MAKE) install-dev
196uninstall:: $ac_dir/Makefile
197 @cd $ac_dir && \$(MAKE) uninstall"])
Alexandre Julliardfc7f1c72010-02-23 14:24:57 +0100198}
199
200wine_fn_config_lib ()
201{
202 ac_name=$[1]
Alexandre Julliardb8fb1d52010-03-20 14:50:53 +0100203 ac_dir=dlls/$ac_name
Alexandre Julliard943cd732010-03-25 21:52:56 +0100204 wine_fn_all_dir_rules $ac_dir "dlls/Makeimplib.rules \$(MAKEDEP)"
Alexandre Julliardfc7f1c72010-02-23 14:24:57 +0100205 wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
Alexandre Julliardc2c3c212010-03-25 11:13:07 +0100206"all __builddeps__: $ac_dir
Alexandre Julliarde55ff7f2010-03-25 11:02:52 +0100207__buildcrossdeps__: $ac_dir/lib$ac_name.cross.a
Alexandre Julliardc2c3c212010-03-25 11:13:07 +0100208$ac_dir $ac_dir/lib$ac_name.cross.a: $ac_dir/Makefile tools/widl tools/winebuild tools/winegcc include
Alexandre Julliard6c90aea2010-03-25 21:47:29 +0100209$ac_dir: dummy
210 @cd $ac_dir && \$(MAKE)
Alexandre Julliardc2c3c212010-03-25 11:13:07 +0100211$ac_dir/lib$ac_name.cross.a: dummy
Alexandre Julliardb8fb1d52010-03-20 14:50:53 +0100212 @cd $ac_dir && \$(MAKE) lib$ac_name.cross.a
Alexandre Julliardc2c3c212010-03-25 11:13:07 +0100213install install-dev:: $ac_dir
214 @cd $ac_dir && \$(MAKE) install
215uninstall:: $ac_dir/Makefile
216 @cd $ac_dir && \$(MAKE) uninstall"
Alexandre Julliardfc7f1c72010-02-23 14:24:57 +0100217}
218
Alexandre Julliard50231942010-03-16 22:00:02 +0100219wine_fn_config_dll ()
220{
221 ac_dir=$[1]
Alexandre Julliard5cdd8412010-03-20 14:52:44 +0100222 ac_enable=$[2]
223 ac_implib=$[3]
224 ac_implibsrc=$[4]
Alexandre Julliard50231942010-03-16 22:00:02 +0100225 ac_file="dlls/$ac_dir/lib$ac_implib"
226 ac_deps="tools/widl tools/winebuild tools/winegcc include"
227
Alexandre Julliard943cd732010-03-25 21:52:56 +0100228 wine_fn_all_dir_rules dlls/$ac_dir "dlls/Makedll.rules \$(MAKEDEP)"
Alexandre Julliard82b743f2010-03-25 11:15:32 +0100229
Alexandre Julliard5cdd8412010-03-20 14:52:44 +0100230 AS_VAR_IF([$ac_enable],[no],
231 dnl enable_win16 is special in that it disables import libs too
232 [test "$ac_enable" != enable_win16 || return 0],
Alexandre Julliard60a05ad2010-03-25 12:05:44 +0100233 [wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
Alexandre Julliard6c90aea2010-03-25 21:47:29 +0100234"all .PHONY: dlls/$ac_dir
235dlls/$ac_dir: dlls/$ac_dir/Makefile __builddeps__ dummy
236 @cd dlls/$ac_dir && \$(MAKE)
Alexandre Julliard82b743f2010-03-25 11:15:32 +0100237install:: dlls/$ac_dir/Makefile __builddeps__
238 @cd dlls/$ac_dir && \$(MAKE) install
239install-lib:: dlls/$ac_dir/Makefile __builddeps__
240 @cd dlls/$ac_dir && \$(MAKE) install-lib
Alexandre Julliard60a05ad2010-03-25 12:05:44 +0100241uninstall manpages htmlpages sgmlpages xmlpages:: dlls/$ac_dir/Makefile
242 @cd dlls/$ac_dir && \$(MAKE) \$[@]"])
Alexandre Julliard50231942010-03-16 22:00:02 +0100243
244 if test -n "$ac_implibsrc"
245 then
246 wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
Alexandre Julliarde55ff7f2010-03-25 11:02:52 +0100247"__builddeps__: $ac_file.$IMPLIBEXT $ac_file.$STATIC_IMPLIBEXT
248__buildcrossdeps__: $ac_file.cross.a
249$ac_file.$IMPLIBEXT $ac_file.$STATIC_IMPLIBEXT $ac_file.cross.a: $ac_deps
Alexandre Julliard50231942010-03-16 22:00:02 +0100250$ac_file.def: dlls/$ac_dir/$ac_dir.spec dlls/$ac_dir/Makefile
251 @cd dlls/$ac_dir && \$(MAKE) \`basename \$[@]\`
252$ac_file.$STATIC_IMPLIBEXT $ac_file.cross.a: dlls/$ac_dir/Makefile dummy
Alexandre Julliard82b743f2010-03-25 11:15:32 +0100253 @cd dlls/$ac_dir && \$(MAKE) \`basename \$[@]\`
254install-dev:: dlls/$ac_dir/Makefile __builddeps__
255 @cd dlls/$ac_dir && \$(MAKE) install-dev"
Alexandre Julliard50231942010-03-16 22:00:02 +0100256 elif test -n "$ac_implib"
257 then
258 wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
Alexandre Julliarde55ff7f2010-03-25 11:02:52 +0100259"__builddeps__: $ac_file.$IMPLIBEXT
260__buildcrossdeps__: $ac_file.cross.a
261$ac_file.$IMPLIBEXT $ac_file.cross.a: dlls/$ac_dir/$ac_dir.spec dlls/$ac_dir/Makefile $ac_deps
Alexandre Julliard82b743f2010-03-25 11:15:32 +0100262 @cd dlls/$ac_dir && \$(MAKE) \`basename \$[@]\`
263install-dev:: dlls/$ac_dir/Makefile __builddeps__
264 @cd dlls/$ac_dir && \$(MAKE) install-dev"
Alexandre Julliard50231942010-03-16 22:00:02 +0100265
266 if test "$ac_dir" != "$ac_implib"
267 then
268 wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
Alexandre Julliarde55ff7f2010-03-25 11:02:52 +0100269"__builddeps__: dlls/lib$ac_implib.$IMPLIBEXT
270__buildcrossdeps__: dlls/lib$ac_implib.cross.a
271dlls/lib$ac_implib.$IMPLIBEXT: $ac_file.$IMPLIBEXT
Alexandre Julliard50231942010-03-16 22:00:02 +0100272 \$(RM) \$[@] && \$(LN_S) $ac_dir/lib$ac_implib.$IMPLIBEXT \$[@]
273dlls/lib$ac_implib.cross.a: $ac_file.cross.a
274 \$(RM) \$[@] && \$(LN_S) $ac_dir/lib$ac_implib.cross.a \$[@]
275clean::
276 \$(RM) dlls/lib$ac_implib.$IMPLIBEXT"
277 fi
278 fi
279}
280
281wine_fn_config_program ()
282{
283 ac_dir=$[1]
Alexandre Julliardd394e042010-03-20 14:53:39 +0100284 ac_enable=$[2]
285 ac_install=$[3]
Alexandre Julliard943cd732010-03-25 21:52:56 +0100286 wine_fn_all_dir_rules programs/$ac_dir "programs/Makeprog.rules \$(MAKEDEP)"
Alexandre Julliardd7b387d2010-03-25 11:11:34 +0100287
288 AS_VAR_IF([$ac_enable],[no],,[wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
Alexandre Julliard6c90aea2010-03-25 21:47:29 +0100289"all .PHONY: programs/$ac_dir
290programs/$ac_dir: programs/$ac_dir/Makefile __builddeps__ dummy
291 @cd programs/$ac_dir && \$(MAKE)"
292
Alexandre Julliard2fb30212010-03-26 09:24:33 +0100293 test -n "$ac_install" || return
294 wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
Alexandre Julliardd7b387d2010-03-25 11:11:34 +0100295"install install-lib:: programs/$ac_dir/Makefile __builddeps__
296 @cd programs/$ac_dir && \$(MAKE) install
297uninstall:: programs/$ac_dir/Makefile
298 @cd programs/$ac_dir && \$(MAKE) uninstall"
Alexandre Julliard2fb30212010-03-26 09:24:33 +0100299 if test "$ac_install" = installbin -a -n "$DLLEXT" -a -z "$WOW64_DISABLE"
300 then
301 wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
302"install install-lib:: programs \$(DESTDIR)\$(bindir)
303 \$(INSTALL_SCRIPT) programs/wineapploader \$(DESTDIR)\$(bindir)/$ac_dir
304uninstall::
305 \$(RM) \$(DESTDIR)\$(bindir)/$ac_dir"
Alexandre Julliardd7b387d2010-03-25 11:11:34 +0100306 fi])
Alexandre Julliard50231942010-03-16 22:00:02 +0100307}
308
Alexandre Julliardfc7f1c72010-02-23 14:24:57 +0100309wine_fn_config_test ()
310{
311 ac_dir=$[1]
312 ac_name=$[2]
313 wine_fn_append_file ALL_TEST_BINARIES $ac_name.exe
314 wine_fn_append_rule ALL_WINETEST_DEPENDS \
315"$ac_name.exe: \$(TOPOBJDIR)/$ac_dir/$ac_name.exe$DLLEXT
316 cp \$(TOPOBJDIR)/$ac_dir/$ac_name.exe$DLLEXT \$[@] && \$(STRIP) \$[@]
317$ac_name.rc:
318 echo \"$ac_name.exe TESTRES \\\"$ac_name.exe\\\"\" >\$[@] || (\$(RM) \$[@] && false)
319$ac_name.res: $ac_name.rc $ac_name.exe"
Alexandre Julliard943cd732010-03-25 21:52:56 +0100320 wine_fn_all_dir_rules $ac_dir "Maketest.rules \$(MAKEDEP)"
Alexandre Julliard44cff7e2010-03-25 11:06:37 +0100321
322 AS_VAR_IF([enable_tests],[no],,[wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
Alexandre Julliard6c90aea2010-03-25 21:47:29 +0100323"all programs/winetest .PHONY: $ac_dir
324$ac_dir: $ac_dir/Makefile __builddeps__ dummy
325 @cd $ac_dir && \$(MAKE)
Alexandre Julliardeab7efd2010-03-25 21:42:54 +0100326crosstest .PHONY: $ac_dir/__crosstest__
327$ac_dir/__crosstest__: $ac_dir/Makefile __buildcrossdeps__ dummy
Alexandre Julliard44cff7e2010-03-25 11:06:37 +0100328 @cd $ac_dir && \$(MAKE) crosstest
Alexandre Julliardeab7efd2010-03-25 21:42:54 +0100329test .PHONY: $ac_dir/__test__
330$ac_dir/__test__: dummy
Alexandre Julliard44cff7e2010-03-25 11:06:37 +0100331 @cd $ac_dir && \$(MAKE) test
332testclean::
333 \$(RM) $ac_dir/*.ok"])
Alexandre Julliardd81a8f82010-03-20 15:02:56 +0100334}
335
336wine_fn_config_tool ()
337{
338 ac_dir=$[1]
339 ac_deps="Make.rules"
340 if test "$ac_dir" != tools
341 then
342 dnl makedep is in tools so tools makefile cannot depend on it
343 ac_deps="$ac_deps \$(MAKEDEP)"
344 fi
Alexandre Julliard943cd732010-03-25 21:52:56 +0100345 wine_fn_all_dir_rules $ac_dir "$ac_deps"
Alexandre Julliard6dbe7a02010-03-25 11:51:24 +0100346
347 AS_VAR_IF([enable_tools],[no],,[case $ac_dir in
348 dnl tools directory has both install-lib and install-dev
349 tools) wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
350"install:: $ac_dir
351 @cd $ac_dir && \$(MAKE) install
352install-lib:: $ac_dir
353 @cd $ac_dir && \$(MAKE) install-lib
354install-dev:: $ac_dir
355 @cd $ac_dir && \$(MAKE) install-dev" ;;
356 *) wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
357"install install-dev:: $ac_dir
358 @cd $ac_dir && \$(MAKE) install" ;;
359 esac
360 wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
361"uninstall:: $ac_dir/Makefile
362 @cd $ac_dir && \$(MAKE) uninstall
Alexandre Julliard6c90aea2010-03-25 21:47:29 +0100363all __tooldeps__ .PHONY: $ac_dir
364$ac_dir: $ac_dir/Makefile libs/port dummy
365 @cd $ac_dir && \$(MAKE)"])
Alexandre Julliardabfb11e2010-03-25 22:12:49 +0100366}
367
368wine_fn_config_makerules ()
369{
370 ac_rules=$[1]
371 ac_deps=$[2]
372 wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
373"$ac_rules: $ac_rules.in $ac_deps config.status
374 @./config.status $ac_rules
375distclean::
376 \$(RM) $ac_rules"
377}
378
379wine_fn_config_symlink ()
380{
381 ac_link=$[1]
382 wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
383"$ac_link:
384 @./config.status $ac_link
385distclean::
386 \$(RM) $ac_link"
Alexandre Julliard2de10c42010-02-11 23:23:45 +0100387}])
388
389dnl **** Define helper function to append a file to a makefile file list ****
390dnl
391dnl Usage: WINE_APPEND_FILE(var,file)
392dnl
393AC_DEFUN([WINE_APPEND_FILE],[AC_REQUIRE([WINE_CONFIG_HELPERS])wine_fn_append_file $1 "$2"])
394
395dnl **** Define helper function to append a rule to a makefile command list ****
396dnl
397dnl Usage: WINE_APPEND_RULE(var,rule)
398dnl
399AC_DEFUN([WINE_APPEND_RULE],[AC_REQUIRE([WINE_CONFIG_HELPERS])wine_fn_append_rule $1 "$2"])
400
Francois Gouget4d801b62005-02-10 19:19:35 +0000401dnl **** Create nonexistent directories from config.status ****
Alexandre Julliard67e8dc62002-05-20 18:29:58 +0000402dnl
403dnl Usage: WINE_CONFIG_EXTRA_DIR(dirname)
404dnl
405AC_DEFUN([WINE_CONFIG_EXTRA_DIR],
Alexandre Julliarda1c253e2010-02-11 20:26:35 +0100406[AC_CONFIG_COMMANDS([$1],[test -d "$1" || { AC_MSG_NOTICE([creating $1]); AS_MKDIR_P("$1"); }])])
Alexandre Julliard446befb2007-07-02 13:41:36 +0200407
Alexandre Julliard7d020c92010-02-03 13:12:12 +0100408dnl **** Create symlinks from config.status ****
409dnl
410dnl Usage: WINE_CONFIG_SYMLINK(name,target)
411dnl
Alexandre Julliard2de10c42010-02-11 23:23:45 +0100412AC_DEFUN([WINE_CONFIG_SYMLINK],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
413AC_CONFIG_LINKS([$1:]m4_default([$2],[$1]))dnl
Alexandre Julliardabfb11e2010-03-25 22:12:49 +0100414m4_if([$2],,[test "$srcdir" = "." || ])wine_fn_config_symlink $1])
Alexandre Julliard7d020c92010-02-03 13:12:12 +0100415
Alexandre Julliarda360e932008-08-20 16:02:37 +0200416dnl **** Create a make rules file from config.status ****
417dnl
418dnl Usage: WINE_CONFIG_MAKERULES(file,var,deps)
419dnl
Alexandre Julliard7d831152010-03-20 15:07:45 +0100420AC_DEFUN([WINE_CONFIG_MAKERULES],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
Alexandre Julliardabfb11e2010-03-25 22:12:49 +0100421wine_fn_config_makerules $1 $3
Alexandre Julliarda360e932008-08-20 16:02:37 +0200422$2=$1
423AC_SUBST_FILE([$2])dnl
424AC_CONFIG_FILES([$1])])
425
426dnl **** Create a makefile from config.status ****
427dnl
Alexandre Julliard03642412010-03-20 15:24:22 +0100428dnl Usage: WINE_CONFIG_MAKEFILE(file,enable)
Alexandre Julliarda360e932008-08-20 16:02:37 +0200429dnl
Alexandre Julliardfc7f1c72010-02-23 14:24:57 +0100430AC_DEFUN([WINE_CONFIG_MAKEFILE],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
Alexandre Julliard03642412010-03-20 15:24:22 +0100431AS_VAR_PUSHDEF([ac_enable],m4_default([$2],[enable_]$1))dnl
432wine_fn_config_makefile [$1] ac_enable[]dnl
433AS_VAR_POPDEF([ac_enable])])
Alexandre Julliarda360e932008-08-20 16:02:37 +0200434
Alexandre Julliardaa6c4d42010-01-23 14:15:43 +0100435dnl **** Create a dll makefile from config.status ****
436dnl
Alexandre Julliard950a0f82010-01-26 21:10:14 +0100437dnl Usage: WINE_CONFIG_DLL(name,enable,implib,implibsrc)
Alexandre Julliardaa6c4d42010-01-23 14:15:43 +0100438dnl
Alexandre Julliard50231942010-03-16 22:00:02 +0100439AC_DEFUN([WINE_CONFIG_DLL],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
Alexandre Julliard5cdd8412010-03-20 14:52:44 +0100440AS_VAR_PUSHDEF([ac_enable],m4_default([$2],[enable_]$1))dnl
441wine_fn_config_dll [$1] ac_enable [$3] m4_ifval([$4],["$4"])dnl
442AS_VAR_POPDEF([ac_enable])])
Alexandre Julliardaa6c4d42010-01-23 14:15:43 +0100443
444dnl **** Create a program makefile from config.status ****
445dnl
Alexandre Julliardd394e042010-03-20 14:53:39 +0100446dnl Usage: WINE_CONFIG_PROGRAM(name,install,enable)
Alexandre Julliardaa6c4d42010-01-23 14:15:43 +0100447dnl
Alexandre Julliard50231942010-03-16 22:00:02 +0100448AC_DEFUN([WINE_CONFIG_PROGRAM],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
Alexandre Julliardd394e042010-03-20 14:53:39 +0100449AS_VAR_PUSHDEF([ac_enable],m4_default([$3],[enable_]$1))dnl
450wine_fn_config_program [$1] ac_enable [$2]dnl
451AS_VAR_POPDEF([ac_enable])])
Alexandre Julliardaa6c4d42010-01-23 14:15:43 +0100452
453dnl **** Create a test makefile from config.status ****
454dnl
455dnl Usage: WINE_CONFIG_TEST(dir)
456dnl
Alexandre Julliardfc7f1c72010-02-23 14:24:57 +0100457AC_DEFUN([WINE_CONFIG_TEST],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
458m4_pushdef([ac_suffix],m4_if(m4_substr([$1],0,9),[programs/],[.exe_test],[_test]))dnl
459m4_pushdef([ac_name],[m4_bpatsubst([$1],[.*/\(.*\)/tests$],[\1])])dnl
Alexandre Julliarddc3afa12010-03-20 14:51:52 +0100460wine_fn_config_test $1 ac_name[]ac_suffix[]dnl
Alexandre Julliard4435e992010-02-10 11:24:00 +0100461m4_popdef([ac_suffix])dnl
Alexandre Julliardd5addea2010-02-08 21:27:54 +0100462m4_popdef([ac_name])])
Alexandre Julliardaa6c4d42010-01-23 14:15:43 +0100463
464dnl **** Create a static lib makefile from config.status ****
465dnl
466dnl Usage: WINE_CONFIG_LIB(name)
467dnl
Alexandre Julliardfc7f1c72010-02-23 14:24:57 +0100468AC_DEFUN([WINE_CONFIG_LIB],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
Alexandre Julliardb8fb1d52010-03-20 14:50:53 +0100469wine_fn_config_lib $1])
Alexandre Julliardaa6c4d42010-01-23 14:15:43 +0100470
Alexandre Julliardd81a8f82010-03-20 15:02:56 +0100471dnl **** Create a tool makefile from config.status ****
472dnl
473dnl Usage: WINE_CONFIG_TOOL(name)
474dnl
475AC_DEFUN([WINE_CONFIG_TOOL],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
476wine_fn_config_tool $1])
477
Alexandre Julliard8d8c5c62007-07-10 15:05:40 +0200478dnl **** Add a message to the list displayed at the end ****
479dnl
480dnl Usage: WINE_NOTICE(notice)
Alexandre Julliarda41f0f12008-01-07 14:51:44 +0100481dnl Usage: WINE_NOTICE_WITH(with_flag, test, notice)
Alexandre Julliard8d8c5c62007-07-10 15:05:40 +0200482dnl Usage: WINE_WARNING(warning)
Alexandre Julliarda41f0f12008-01-07 14:51:44 +0100483dnl Usage: WINE_WARNING_WITH(with_flag, test, warning)
Alexandre Julliard8d8c5c62007-07-10 15:05:40 +0200484dnl Usage: WINE_PRINT_MESSAGES
485dnl
Alexandre Julliard0dc503b2010-02-11 20:25:47 +0100486AC_DEFUN([WINE_NOTICE],[AS_VAR_APPEND([wine_notices],["|$1"])])
487AC_DEFUN([WINE_WARNING],[AS_VAR_APPEND([wine_warnings],["|$1"])])
Alexandre Julliarda41f0f12008-01-07 14:51:44 +0100488
489AC_DEFUN([WINE_NOTICE_WITH],[AS_IF([$2],[case "x$with_$1" in
490 x) WINE_NOTICE([$3]) ;;
491 xno) ;;
492 *) AC_MSG_ERROR([$3
493This is an error since --with-$1 was requested.]) ;;
494esac])])
495
496AC_DEFUN([WINE_WARNING_WITH],[AS_IF([$2],[case "x$with_$1" in
497 x) WINE_WARNING([$3]) ;;
498 xno) ;;
499 *) AC_MSG_ERROR([$3
500This is an error since --with-$1 was requested.]) ;;
501esac])])
Alexandre Julliard8d8c5c62007-07-10 15:05:40 +0200502
Alexandre Julliard76adea12008-05-21 14:48:33 +0200503AC_DEFUN([WINE_ERROR_WITH],[AS_IF([$2],[case "x$with_$1" in
504 xno) ;;
505 *) AC_MSG_ERROR([$3
506Use the --without-$1 option if you really want this.]) ;;
507esac])])
508
Alexandre Julliard8d8c5c62007-07-10 15:05:40 +0200509AC_DEFUN([WINE_PRINT_MESSAGES],[ac_save_IFS="$IFS"
Alexandre Julliarda41f0f12008-01-07 14:51:44 +0100510if test "x$wine_notices != "x; then
511 echo >&AS_MESSAGE_FD
Rafał Mużyło4736c992008-10-20 21:43:21 +0200512 IFS="|"
Alexandre Julliard8d8c5c62007-07-10 15:05:40 +0200513 for msg in $wine_notices; do
Rafał Mużyło4736c992008-10-20 21:43:21 +0200514 IFS="$ac_save_IFS"
Alexandre Julliard8d8c5c62007-07-10 15:05:40 +0200515 if test -n "$msg"; then
Alexandre Julliard8d8c5c62007-07-10 15:05:40 +0200516 AC_MSG_NOTICE([$msg])
517 fi
518 done
519fi
Rafał Mużyło4736c992008-10-20 21:43:21 +0200520IFS="|"
Alexandre Julliard8d8c5c62007-07-10 15:05:40 +0200521for msg in $wine_warnings; do
Rafał Mużyło4736c992008-10-20 21:43:21 +0200522 IFS="$ac_save_IFS"
Alexandre Julliard8d8c5c62007-07-10 15:05:40 +0200523 if test -n "$msg"; then
524 echo >&2
525 AC_MSG_WARN([$msg])
526 fi
527done
528IFS="$ac_save_IFS"])
529
Alexandre Julliard446befb2007-07-02 13:41:36 +0200530dnl Local Variables:
531dnl compile-command: "autoreconf --warnings=all"
532dnl End: