aclocal.m4 25.7 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
dnl Macros used to build the Wine configure script
dnl
dnl Copyright 2002 Alexandre Julliard
dnl
dnl This library is free software; you can redistribute it and/or
dnl modify it under the terms of the GNU Lesser General Public
dnl License as published by the Free Software Foundation; either
dnl version 2.1 of the License, or (at your option) any later version.
dnl
dnl This library is distributed in the hope that it will be useful,
dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
dnl Lesser General Public License for more details.
dnl
dnl You should have received a copy of the GNU Lesser General Public
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 20 21 22 23
dnl As a special exception to the GNU Lesser General Public License,
dnl if you distribute this file as part of a program that contains a
dnl configuration script generated by Autoconf, you may include it
dnl under the same distribution terms that you use for the rest of
dnl that program.
24

25 26 27 28 29
dnl WINE_CHECK_HOST_TOOL(VARIABLE, PROG-TO-CHECK-FOR, [VALUE-IF-NOT-FOUND], [PATH])
dnl
dnl Like AC_CHECK_TOOL but without the broken fallback to non-prefixed name
dnl
AC_DEFUN([WINE_CHECK_HOST_TOOL],
30 31 32 33 34 35 36
[AS_VAR_SET_IF([ac_tool_prefix],
  AC_CHECK_PROG([$1],[${ac_tool_prefix}$2],[${ac_tool_prefix}$2],,[$4]))
AS_VAR_IF([ac_cv_prog_$1],[],
  [AS_VAR_IF([cross_compiling],[yes],[],
    [AS_UNSET([ac_cv_prog_$1])
     AC_CHECK_PROG([$1],[$2],[$2],[$3],[$4])])],
[AS_VAR_COPY([$1],[ac_cv_prog_$1])])])
37

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 44
AC_DEFUN([WINE_PATH_SONAME_TOOLS],
[AC_PATH_PROG(LDD,ldd,true,/sbin:/usr/sbin:$PATH)
45 46 47
AC_CHECK_TOOL(READELF,[readelf],true)])

AC_DEFUN([WINE_PATH_PKG_CONFIG],
48
[WINE_CHECK_HOST_TOOL(PKG_CONFIG,[pkg-config])])
49 50 51

dnl **** Extract the soname of a library ****
dnl
52
dnl Usage: WINE_CHECK_SONAME(library, function, [action-if-found, [action-if-not-found, [other_libraries, [pattern]]]])
53
dnl
54
AC_DEFUN([WINE_CHECK_SONAME],
55
[AC_REQUIRE([WINE_PATH_SONAME_TOOLS])dnl
56
AS_VAR_PUSHDEF([ac_Lib],[ac_cv_lib_soname_$1])dnl
57 58
m4_pushdef([ac_lib_pattern],m4_default([$6],[lib$1]))dnl
AC_MSG_CHECKING([for -l$1])
59
AC_CACHE_VAL(ac_Lib,
60 61
[ac_check_soname_save_LIBS=$LIBS
LIBS="-l$1 $5 $LIBS"
62
  AC_LINK_IFELSE([AC_LANG_CALL([], [$2])],
63
  [case "$LIBEXT" in
64
    dll) AS_VAR_SET(ac_Lib,[`$ac_cv_path_LDD conftest.exe | grep "$1" | sed -e "s/dll.*/dll/"';2,$d'`]) ;;
65
    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'`]) ;;
66
    *) 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'`])
67
       AS_VAR_IF([ac_Lib],[],
68
             [AS_VAR_SET(ac_Lib,[`$LDD conftest$ac_exeext | grep "ac_lib_pattern\\.$LIBEXT" | sed -e "s/^.*\(ac_lib_pattern\.$LIBEXT[[^	 ]]*\).*$/\1/"';2,$d'`])]) ;;
69
  esac])
70
  LIBS=$ac_check_soname_save_LIBS])dnl
71
AS_VAR_IF([ac_Lib],[],
72 73
      [AC_MSG_RESULT([not found])
       $4],
74 75
      [AC_MSG_RESULT(AS_VAR_GET(ac_Lib))
       AC_DEFINE_UNQUOTED(AS_TR_CPP(SONAME_LIB$1),["]AS_VAR_GET(ac_Lib)["],
76 77 78
                          [Define to the soname of the lib$1 library.])
       $3])dnl
m4_popdef([ac_lib_pattern])dnl
79
AS_VAR_POPDEF([ac_Lib])])
80

81 82
dnl **** Get flags from pkg-config or alternate xxx-config program ****
dnl
83
dnl Usage: WINE_PACKAGE_FLAGS(var,pkg-name,[default-lib,[cflags-alternate,libs-alternate,[checks]]])
84 85 86
dnl
AC_DEFUN([WINE_PACKAGE_FLAGS],
[AC_REQUIRE([WINE_PATH_PKG_CONFIG])dnl
87 88 89
AS_VAR_PUSHDEF([ac_cflags],[[$1]_CFLAGS])dnl
AS_VAR_PUSHDEF([ac_libs],[[$1]_LIBS])dnl
AC_ARG_VAR(ac_cflags, [C compiler flags for $2, overriding pkg-config])dnl
90 91 92
AS_VAR_IF([ac_cflags],[],
      [AS_VAR_SET_IF([PKG_CONFIG],
      [ac_cflags=`$PKG_CONFIG --cflags [$2] 2>/dev/null`])])
93
m4_ifval([$4],[test "$cross_compiling" = yes || ac_cflags=[$]{ac_cflags:-[$4]}])
94
AC_ARG_VAR(ac_libs, [Linker flags for $2, overriding pkg-config])dnl
95 96 97
AS_VAR_IF([ac_libs],[],
      [AS_VAR_SET_IF([PKG_CONFIG],
      [ac_libs=`$PKG_CONFIG --libs [$2] 2>/dev/null`])])
98
m4_ifval([$5],[test "$cross_compiling" = yes || ac_libs=[$]{ac_libs:-[$5]}])
99
m4_ifval([$3],[ac_libs=[$]{ac_libs:-"$3"}])
100 101
AS_ECHO(["$as_me:${as_lineno-$LINENO}: $2 cflags: $ac_cflags"]) >&AS_MESSAGE_LOG_FD
AS_ECHO(["$as_me:${as_lineno-$LINENO}: $2 libs: $ac_libs"]) >&AS_MESSAGE_LOG_FD
102 103 104 105
ac_save_CPPFLAGS=$CPPFLAGS
CPPFLAGS="$CPPFLAGS $ac_cflags"
$6
CPPFLAGS=$ac_save_CPPFLAGS
106 107
test -z "$ac_cflags" || ac_cflags=`echo " $ac_cflags" | sed 's/ -I\([[^/]]\)/ -I\$(top_builddir)\/\1/g'`
test -z "$ac_libs" || ac_libs=`echo " $ac_libs" | sed 's/ -L\([[^/]]\)/ -L\$(top_builddir)\/\1/g'`
108 109
AS_VAR_POPDEF([ac_libs])dnl
AS_VAR_POPDEF([ac_cflags])])dnl
110

111 112 113 114 115
dnl **** Link C code with an assembly file ****
dnl
dnl Usage: WINE_TRY_ASM_LINK(asm-code,includes,function,[action-if-found,[action-if-not-found]])
dnl
AC_DEFUN([WINE_TRY_ASM_LINK],
116
[AC_LINK_IFELSE([AC_LANG_PROGRAM([[$2]],[[asm($1); $3]])],[$4],[$5])])
117 118 119 120 121

dnl **** Check if we can link an empty program with special CFLAGS ****
dnl
dnl Usage: WINE_TRY_CFLAGS(flags,[action-if-yes,[action-if-no]])
dnl
122 123
dnl The default action-if-yes is to append the flags to EXTRACFLAGS.
dnl
124
AC_DEFUN([WINE_TRY_CFLAGS],
125 126
[AS_VAR_PUSHDEF([ac_var], ac_cv_cflags_[[$1]])dnl
AC_CACHE_CHECK([whether the compiler supports $1], ac_var,
127 128
[ac_wine_try_cflags_saved=$CFLAGS
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_VAR_IF([ac_var],[yes],[m4_default([$2], [EXTRACFLAGS="$EXTRACFLAGS $1"])], [$3])dnl
133
AS_VAR_POPDEF([ac_var])])
134

135 136 137 138 139 140 141
dnl **** Check if we can link an empty shared lib (no main) with special CFLAGS ****
dnl
dnl Usage: WINE_TRY_SHLIB_FLAGS(flags,[action-if-yes,[action-if-no]])
dnl
AC_DEFUN([WINE_TRY_SHLIB_FLAGS],
[ac_wine_try_cflags_saved=$CFLAGS
CFLAGS="$CFLAGS $1"
142
AC_LINK_IFELSE([AC_LANG_SOURCE([void myfunc() {}])],[$2],[$3])
143 144
CFLAGS=$ac_wine_try_cflags_saved])

145 146 147 148 149 150 151 152 153 154 155
dnl **** Check whether we need to define a symbol on the compiler command line ****
dnl
dnl Usage: WINE_CHECK_DEFINE(name),[action-if-yes,[action-if-no]])
dnl
AC_DEFUN([WINE_CHECK_DEFINE],
[AS_VAR_PUSHDEF([ac_var],[ac_cv_cpp_def_$1])dnl
AC_CACHE_CHECK([whether we need to define $1],ac_var,
    AC_EGREP_CPP(yes,[#ifndef $1
yes
#endif],
    [AS_VAR_SET(ac_var,yes)],[AS_VAR_SET(ac_var,no)]))
156
AS_VAR_IF([ac_var],[yes],
157 158 159 160
      [CFLAGS="$CFLAGS -D$1"
  LINTFLAGS="$LINTFLAGS -D$1"])dnl
AS_VAR_POPDEF([ac_var])])

161 162 163 164 165 166 167 168 169 170
dnl **** Check for functions with some extra libraries ****
dnl
dnl Usage: WINE_CHECK_LIB_FUNCS(funcs,libs,[action-if-found,[action-if-not-found]])
dnl
AC_DEFUN([WINE_CHECK_LIB_FUNCS],
[ac_wine_check_funcs_save_LIBS="$LIBS"
LIBS="$LIBS $2"
AC_CHECK_FUNCS([$1],[$3],[$4])
LIBS="$ac_wine_check_funcs_save_LIBS"])

171 172 173 174 175
dnl **** Check for a mingw program, trying the various mingw prefixes ****
dnl
dnl Usage: WINE_CHECK_MINGW_PROG(variable,prog,[value-if-not-found],[path])
dnl
AC_DEFUN([WINE_CHECK_MINGW_PROG],
176 177
[case "$host_cpu" in
  i[[3456789]]86*)
178
    ac_prefix_list="m4_foreach([ac_wine_prefix],[w64-mingw32, pc-mingw32, mingw32msvc, mingw32],
179 180
                        m4_foreach([ac_wine_cpu],[i686,i586,i486,i386],[ac_wine_cpu-ac_wine_prefix-$2 ]))
                        mingw32-$2" ;;
181
  x86_64)
182 183
    ac_prefix_list="m4_foreach([ac_wine_prefix],[pc-mingw32, w64-mingw32, mingw32msvc],
                        m4_foreach([ac_wine_cpu],[x86_64,amd64],[ac_wine_cpu-ac_wine_prefix-$2 ]))" ;;
184 185 186 187
  *)
    ac_prefix_list="" ;;
esac
AC_CHECK_PROGS([$1],[$ac_prefix_list],[$3],[$4])])
188 189


190 191 192 193 194
dnl **** Define helper functions for creating config.status files ****
dnl
dnl Usage: AC_REQUIRE([WINE_CONFIG_HELPERS])
dnl
AC_DEFUN([WINE_CONFIG_HELPERS],
195 196
[wine_rules_file=conf$$rules.make
rm -f $wine_rules_file
197
ALL_POT_FILES=""
198
GITIGNORE="# Automatically generated by configure; DO NOT EDIT!!"
199
AC_SUBST(ALL_TEST_RESOURCES,"")
200 201

wine_fn_append_file ()
202 203 204
{
    AS_VAR_APPEND($[1]," \\$as_nl	$[2]")
}
205

206 207 208 209 210 211 212 213 214
wine_fn_ignore_file ()
{
    case "$[1]" in
      */*) AS_VAR_APPEND([GITIGNORE],"$as_nl$[1]") ;;
      \**) AS_VAR_APPEND([GITIGNORE],"$as_nl$[1]") ;;
      *)   AS_VAR_APPEND([GITIGNORE],"$as_nl/$[1]") ;;
    esac
}

215 216
wine_fn_append_rule ()
{
217
    AS_ECHO("$[1]") >>$wine_rules_file
218 219
}

220 221
wine_fn_has_flag ()
{
222
    expr ",$ac_flags," : ".*,$[1],.*" >/dev/null
223 224
}

225
wine_fn_depend_rules ()
226
{
227
    wine_fn_append_rule \
228
"$ac_dir/Makefile: $srcdir/$ac_dir/Makefile.in $srcdir/Make.vars.in config.status \$(MAKEDEP)
229
	@./config.status --file $ac_dir/Makefile:Make.vars.in:$ac_dir/Makefile.in && \$(MAKEDEP) $ac_dir
230 231
depend: $ac_dir/depend
.PHONY: $ac_dir/depend
232
$ac_dir/depend: \$(MAKEDEP) dummy
233
	@./config.status --file $ac_dir/Makefile:Make.vars.in:$ac_dir/Makefile.in && \$(MAKEDEP) $ac_dir"
234 235
}

236 237
wine_fn_pot_rules ()
{
238
    test "x$with_gettextpo" = xyes || return
239

240
    if wine_fn_has_flag mc
241 242
    then
        wine_fn_append_file ALL_POT_FILES $ac_dir/msg.pot
243
        wine_fn_append_rule \
244 245 246 247
"$ac_dir/msg.pot: $ac_dir/Makefile dummy
	@cd $ac_dir && \$(MAKE) msg.pot
$ac_dir/msg.pot: tools/wmc include"
    fi
248
    if wine_fn_has_flag po
249 250
    then
        wine_fn_append_file ALL_POT_FILES $ac_dir/rsrc.pot
251
        wine_fn_append_rule \
252 253
"$ac_dir/rsrc.pot: $ac_dir/Makefile dummy
	@cd $ac_dir && \$(MAKE) rsrc.pot
Rafał Mużyło's avatar
Rafał Mużyło committed
254
$ac_dir/rsrc.pot: tools/wrc include"
255 256 257
    fi
}

258
wine_fn_all_rules ()
259
{
260
    wine_fn_depend_rules
261
    wine_fn_append_rule \
262 263
"all: $ac_dir
.PHONY: $ac_dir
264
$ac_dir: $ac_dir/Makefile dummy
265
	@cd $ac_dir && \$(MAKE)"
266 267 268 269
}

wine_fn_install_rules ()
{
270
    wine_fn_has_flag install-lib || wine_fn_has_flag install-dev || return
271

272
    wine_fn_append_rule \
273 274
".PHONY: $ac_dir/install $ac_dir/uninstall
$ac_dir/install:: $ac_dir
275
	@cd $ac_dir && \$(MAKE) install
276
$ac_dir/uninstall:: $ac_dir/Makefile
277
	@cd $ac_dir && \$(MAKE) uninstall
278 279
install:: $ac_dir/install
__uninstall__: $ac_dir/uninstall"
280

281
    if wine_fn_has_flag install-lib
282
    then
283
        wine_fn_append_rule \
284 285
".PHONY: $ac_dir/install-lib
$ac_dir/install-lib:: $ac_dir
286
	@cd $ac_dir && \$(MAKE) install-lib
287
install-lib:: $ac_dir/install-lib"
288 289
    fi

290
    if wine_fn_has_flag install-dev
291
    then
292
        wine_fn_append_rule \
293 294
".PHONY: $ac_dir/install-dev
$ac_dir/install-dev:: $ac_dir
295
	@cd $ac_dir && \$(MAKE) install-dev
296
install-dev:: $ac_dir/install-dev"
297
    fi
298 299
}

300 301 302
wine_fn_clean_rules ()
{
    ac_clean=$[@]
303 304
    ac_extraclean="$ac_dir/Makefile"
    test "$srcdir" = . && ac_extraclean="$ac_extraclean $ac_dir/.gitignore"
305

306
    if wine_fn_has_flag clean
307 308
    then
        wine_fn_append_rule \
309 310 311
"__clean__: $ac_dir/clean
.PHONY: $ac_dir/clean
$ac_dir/clean: $ac_dir/Makefile
312
	@cd $ac_dir && \$(MAKE) clean
313
	\$(RM) $ac_extraclean"
314 315
    else
        wine_fn_append_rule \
316 317 318
"__clean__: $ac_dir/clean
.PHONY: $ac_dir/clean
$ac_dir/clean: dummy
319
	\$(RM) \$(CLEAN_FILES:%=$ac_dir/%) $ac_clean $ac_extraclean"
320 321 322
    fi
}

323 324 325
wine_fn_disabled_rules ()
{
    ac_clean=$[@]
326 327
    ac_extraclean="$ac_dir/Makefile"
    test "$srcdir" = . && ac_extraclean="$ac_extraclean $ac_dir/.gitignore"
328 329

    wine_fn_append_rule \
330 331 332
"__clean__: $ac_dir/clean
.PHONY: $ac_dir/clean
$ac_dir/clean: dummy
333
	\$(RM) \$(CLEAN_FILES:%=$ac_dir/%) $ac_clean $ac_extraclean"
334 335
}

336 337 338 339 340 341
wine_fn_config_makefile ()
{
    ac_dir=$[1]
    ac_enable=$[2]
    ac_flags=$[3]

342 343 344 345
    AS_VAR_IF([$ac_enable],[no],[wine_fn_disabled_rules; return])
    wine_fn_all_rules
    wine_fn_install_rules
    wine_fn_clean_rules
346 347
}

348 349 350
wine_fn_config_lib ()
{
    ac_name=$[1]
351
    ac_flags=$[2]
352
    ac_dir=dlls/$ac_name
353
    ac_deps="include"
354

355
    AS_VAR_IF([enable_tools],[no],,[ac_deps="tools/widl tools/winebuild tools/winegcc $ac_deps"])
356
    wine_fn_all_rules
357
    wine_fn_clean_rules
358

359
    wine_fn_append_rule \
360
".PHONY: $ac_dir/install $ac_dir/uninstall
361
$ac_dir/install:: $ac_dir
362
	\$(INSTALL_DATA) $ac_dir/lib$ac_name.a \$(DESTDIR)\$(dlldir)/lib$ac_name.a
363
$ac_dir/uninstall::
364
	\$(RM) \$(DESTDIR)\$(dlldir)/lib$ac_name.a
365 366
install install-dev:: $ac_dir/install
__uninstall__: $ac_dir/uninstall
367
__builddeps__: $ac_dir
368
$ac_dir: $ac_deps"
369 370
}

371 372
wine_fn_config_dll ()
{
373 374
    ac_name=$[1]
    ac_dir=dlls/$ac_name
375
    ac_enable=$[2]
376
    ac_flags=$[3]
377
    ac_implib=${4:-$ac_name}
378
    ac_file=$ac_dir/lib$ac_implib
379
    ac_dll=$ac_name
380
    ac_deps="include"
381 382
    ac_implibflags=""

383
    AS_VAR_IF([enable_tools],[no],,[ac_deps="tools/widl tools/winebuild tools/winegcc $ac_deps"])
384
    case $ac_name in
385
      *16) ac_implibflags=" -m16" ;;
386 387
      *.*) ;;
      *)   ac_dll=$ac_dll.dll ;;
388
    esac
389

390
    ac_clean=
391 392 393
    wine_fn_has_flag implib && ac_clean="$ac_clean $ac_file.$IMPLIBEXT"
    wine_fn_has_flag mc && ac_clean="$ac_clean $ac_dir/msg.pot"
    wine_fn_has_flag po && ac_clean="$ac_clean $ac_dir/rsrc.pot"
394
    test -n "$DLLEXT" || ac_clean="$ac_clean $ac_dir/$ac_dll"
395

396 397
    AS_VAR_IF([$ac_enable],[no],
              dnl enable_win16 is special in that it disables import libs too
398
              [if wine_fn_has_flag implib && test "$ac_enable" != enable_win16
399
               then
400
                   wine_fn_depend_rules
401
                   wine_fn_clean_rules $ac_clean
402
               else
403
                   wine_fn_disabled_rules $ac_clean
404 405 406
                   return
               fi],

407
              [wine_fn_all_rules
408
               wine_fn_clean_rules $ac_clean
409
               wine_fn_append_rule \
410
"$ac_dir: __builddeps__
411
manpages htmlpages sgmlpages xmlpages:: $ac_dir/Makefile
412
	@cd $ac_dir && \$(MAKE) \$[@]
413 414 415
.PHONY: $ac_dir/install-lib $ac_dir/uninstall
install install-lib:: $ac_dir/install-lib
__uninstall__: $ac_dir/uninstall"
416 417 418
                if test -n "$DLLEXT"
                then
                    wine_fn_append_rule \
419
"$ac_dir/install-lib:: $ac_dir
420
	\$(INSTALL_PROGRAM) $ac_dir/$ac_dll$DLLEXT \$(DESTDIR)\$(dlldir)/$DLLPREFIX$ac_dll$DLLEXT
421
	\$(INSTALL_DATA) $ac_dir/$ac_dll.fake \$(DESTDIR)\$(fakedlldir)/$ac_dll
422
$ac_dir/uninstall::
423
	\$(RM) \$(DESTDIR)\$(dlldir)/$DLLPREFIX$ac_dll$DLLEXT \$(DESTDIR)\$(fakedlldir)/$ac_dll"
424 425
                else
                    wine_fn_append_rule \
426
"$ac_dir/install-lib:: $ac_dir
427
	\$(INSTALL_PROGRAM) $ac_dir/$ac_dll \$(DESTDIR)\$(dlldir)/$ac_dll
428
$ac_dir/uninstall::
429
	\$(RM) \$(DESTDIR)\$(dlldir)/$ac_dll"
430
                fi
431

432
                wine_fn_pot_rules])
433

434
    if wine_fn_has_flag staticimplib
435
    then
436
        wine_fn_append_rule \
437 438
"__builddeps__: $ac_file.$IMPLIBEXT $ac_file.$STATIC_IMPLIBEXT
$ac_file.$IMPLIBEXT $ac_file.$STATIC_IMPLIBEXT $ac_file.cross.a: $ac_deps
439
$ac_file.def: $srcdir/$ac_dir/$ac_name.spec $ac_dir/Makefile \$(WINEBUILD)
440
	\$(WINEBUILD) \$(TARGETFLAGS)$ac_implibflags -w --def -o \$[@] --export $srcdir/$ac_dir/$ac_name.spec
441 442
$ac_file.$STATIC_IMPLIBEXT: $ac_dir/Makefile dummy
	@cd $ac_dir && \$(MAKE) lib$ac_implib.$STATIC_IMPLIBEXT
443
.PHONY: $ac_dir/install-dev $ac_dir/uninstall
444
$ac_dir/install-dev:: $ac_file.$IMPLIBEXT
445
	\$(INSTALL_DATA) $ac_file.$IMPLIBEXT \$(DESTDIR)\$(dlldir)/lib$ac_implib.$IMPLIBEXT
446
$ac_dir/uninstall::
447
	\$(RM) \$(DESTDIR)\$(dlldir)/lib$ac_implib.$IMPLIBEXT
448 449
install install-dev:: $ac_dir/install-dev
__uninstall__: $ac_dir/uninstall"
450 451 452

        if test "$IMPLIBEXT" != "$STATIC_IMPLIBEXT"
        then
453
            wine_fn_append_rule \
454
"$ac_dir/install-dev:: $ac_file.$STATIC_IMPLIBEXT __builddeps__
455
	\$(INSTALL_DATA) $ac_file.$STATIC_IMPLIBEXT \$(DESTDIR)\$(dlldir)/lib$ac_implib.$STATIC_IMPLIBEXT
456
$ac_dir/uninstall::
457 458 459
	\$(RM) \$(DESTDIR)\$(dlldir)/lib$ac_implib.$STATIC_IMPLIBEXT"
        fi

460
        if test -n "$CROSSTARGET" -a -z "$ac_implibflags"
461
        then
462
            wine_fn_append_rule \
463
"__builddeps__: $ac_file.cross.a
464 465
$ac_file.cross.a: $ac_dir/Makefile dummy
	@cd $ac_dir && \$(MAKE) lib$ac_implib.cross.a"
466 467
        fi

468
    elif wine_fn_has_flag implib
469
    then
470
        wine_fn_append_rule \
471
"__builddeps__: $ac_file.$IMPLIBEXT
472
$ac_file.def: $srcdir/$ac_dir/$ac_name.spec $ac_dir/Makefile \$(WINEBUILD)
473
	\$(WINEBUILD) \$(TARGETFLAGS)$ac_implibflags -w --def -o \$[@] --export $srcdir/$ac_dir/$ac_name.spec
474
$ac_file.a: $srcdir/$ac_dir/$ac_name.spec $ac_dir/Makefile \$(WINEBUILD)
475
	\$(WINEBUILD) \$(TARGETFLAGS)$ac_implibflags -w --implib -o \$[@] --export $srcdir/$ac_dir/$ac_name.spec
476
.PHONY: $ac_dir/install-dev $ac_dir/uninstall
477
$ac_dir/install-dev:: $ac_file.$IMPLIBEXT
478
	\$(INSTALL_DATA) $ac_file.$IMPLIBEXT \$(DESTDIR)\$(dlldir)/lib$ac_implib.$IMPLIBEXT
479
$ac_dir/uninstall::
480
	\$(RM) \$(DESTDIR)\$(dlldir)/lib$ac_implib.$IMPLIBEXT
481 482
install install-dev:: $ac_dir/install-dev
__uninstall__: $ac_dir/uninstall"
483
        if test -n "$CROSSTARGET" -a -z "$ac_implibflags"
484
        then
485
            wine_fn_append_rule \
486
"__builddeps__: $ac_file.cross.a
487
$ac_file.cross.a: $srcdir/$ac_dir/$ac_name.spec $ac_dir/Makefile \$(WINEBUILD)
488
	\$(WINEBUILD) \$(CROSSTARGET:%=-b %)$ac_implibflags -w --implib -o \$[@] --export $srcdir/$ac_dir/$ac_name.spec"
489
        fi
490

491
        if test "$ac_name" != "$ac_implib"
492
        then
493
            wine_fn_append_rule \
494 495
"__builddeps__: dlls/lib$ac_implib.$IMPLIBEXT
dlls/lib$ac_implib.$IMPLIBEXT: $ac_file.$IMPLIBEXT
496
	\$(RM) \$[@] && \$(LN_S) $ac_name/lib$ac_implib.$IMPLIBEXT \$[@]
497 498
clean::
	\$(RM) dlls/lib$ac_implib.$IMPLIBEXT"
499
            wine_fn_ignore_file "dlls/lib$ac_implib.$IMPLIBEXT"
500
            if test -n "$CROSSTARGET" -a -z "$ac_implibflags"
501
            then
502
                wine_fn_append_rule \
503 504
"__builddeps__: dlls/lib$ac_implib.cross.a
dlls/lib$ac_implib.cross.a: $ac_file.cross.a
505 506 507
	\$(RM) \$[@] && \$(LN_S) $ac_name/lib$ac_implib.cross.a \$[@]
clean::
	\$(RM) dlls/lib$ac_implib.cross.a"
508
                wine_fn_ignore_file "dlls/lib$ac_implib.cross.a"
509
            fi
510 511 512 513 514 515
        fi
    fi
}

wine_fn_config_program ()
{
516 517
    ac_name=$[1]
    ac_dir=programs/$ac_name
518
    ac_enable=$[2]
519
    ac_flags=$[3]
520 521 522 523 524 525 526
    ac_program=$ac_name

    case $ac_name in
      *.*) ;;
      *)   ac_program=$ac_program.exe ;;
    esac

527
    ac_clean=
528 529 530
    wine_fn_has_flag mc && ac_clean="$ac_clean $ac_dir/msg.pot"
    wine_fn_has_flag po && ac_clean="$ac_clean $ac_dir/rsrc.pot"
    wine_fn_has_flag manpage && ac_clean="$ac_clean $ac_dir/$ac_name.man"
531
    test -n "$DLLEXT" || ac_clean="$ac_clean $ac_dir/$ac_program"
532

533
    AS_VAR_IF([$ac_enable],[no],[wine_fn_disabled_rules $ac_clean; return])
534

535
    wine_fn_all_rules
536
    wine_fn_clean_rules $ac_clean
537
    wine_fn_append_rule "$ac_dir: __builddeps__"
538
    wine_fn_pot_rules
539

540
    wine_fn_has_flag install || return
541
    wine_fn_append_rule \
542 543 544
".PHONY: $ac_dir/install $ac_dir/uninstall
install install-lib:: $ac_dir/install
__uninstall__: $ac_dir/uninstall"
545 546

    if test -n "$DLLEXT"
547
    then
548
        wine_fn_append_rule \
549
"$ac_dir/install:: $ac_dir
550
	\$(INSTALL_PROGRAM) $ac_dir/$ac_program$DLLEXT \$(DESTDIR)\$(dlldir)/$DLLPREFIX$ac_program$DLLEXT
551
	\$(INSTALL_DATA) $ac_dir/$ac_program.fake \$(DESTDIR)\$(fakedlldir)/$ac_program
552
$ac_dir/uninstall::
553
	\$(RM) \$(DESTDIR)\$(dlldir)/$DLLPREFIX$ac_program$DLLEXT \$(DESTDIR)\$(fakedlldir)/$ac_program"
554

555
        if test -z "$with_wine64" && wine_fn_has_flag installbin
556
        then
557
            wine_fn_append_rule \
558
"$ac_dir/install:: __tooldeps__
559
	\$(INSTALL_SCRIPT) \$(TOOLSDIR)/tools/wineapploader \$(DESTDIR)\$(bindir)/$ac_name
560
$ac_dir/uninstall::
561
	\$(RM) \$(DESTDIR)\$(bindir)/$ac_name"
562 563
        fi
    else
564
        wine_fn_append_rule \
565
"$ac_dir/install:: $ac_dir
566
	\$(INSTALL_PROGRAM) $ac_dir/$ac_program \$(DESTDIR)\$(bindir)/$ac_program
567
$ac_dir/uninstall::
568
	\$(RM) \$(DESTDIR)\$(bindir)/$ac_program"
569 570
    fi

571
    if test -z "$with_wine64" && wine_fn_has_flag manpage
572
    then
573
        wine_fn_append_rule \
574
"$ac_dir/install:: $ac_dir
575
	\$(INSTALL_DATA) $ac_dir/$ac_name.man \$(DESTDIR)\$(mandir)/man\$(prog_manext)/$ac_name.\$(prog_manext)
576
$ac_dir/uninstall::
577
	\$(RM) \$(DESTDIR)\$(mandir)/man\$(prog_manext)/$ac_name.\$(prog_manext)"
578
    fi
579 580
}

581 582 583 584
wine_fn_config_test ()
{
    ac_dir=$[1]
    ac_name=$[2]
585
    ac_flags=$[3]
586 587

    ac_clean=
588
    test -n "$CROSSTARGET" && ac_clean=`expr $ac_dir/${ac_name} : "\\(.*\\)_test"`_crosstest.exe
589
    test -n "$DLLEXT" || ac_clean="$ac_dir/${ac_name}.exe $ac_dir/${ac_name}-stripped.exe"
590 591
    ac_clean="$ac_clean $ac_dir/testlist.c"

592
    AS_VAR_IF([enable_tests],[no],[wine_fn_disabled_rules $ac_clean; return])
593

594
    wine_fn_append_file ALL_TEST_RESOURCES $ac_name.res
595
    wine_fn_all_rules
596
    wine_fn_clean_rules $ac_clean
597

598 599
    wine_fn_append_rule \
"$ac_dir: programs/winetest/Makefile __builddeps__
600
programs/winetest: $ac_dir
601 602 603
check test: $ac_dir/test
.PHONY: $ac_dir/test
$ac_dir/test: dummy
604 605
	@cd $ac_dir && \$(MAKE) test
testclean::
606 607
	\$(RM) $ac_dir/*.ok"

608
        if test -n "$CROSSTARGET"
609
        then
610
            wine_fn_append_rule \
611 612 613
"crosstest: $ac_dir/crosstest
.PHONY: $ac_dir/crosstest
$ac_dir/crosstest: $ac_dir/Makefile __builddeps__ dummy
614
	@cd $ac_dir && \$(MAKE) crosstest"
615
        fi
616 617 618 619 620
}

wine_fn_config_tool ()
{
    ac_dir=$[1]
621
    ac_flags=$[2]
622
    AS_VAR_IF([enable_tools],[no],[return])
623

624 625 626
    wine_fn_all_rules
    wine_fn_install_rules
    wine_fn_clean_rules
627

628 629
    wine_fn_append_rule "__tooldeps__: $ac_dir"
    wine_fn_append_rule "$ac_dir: libs/port"
630
    case $ac_dir in
631
      tools/winebuild) wine_fn_append_rule "\$(WINEBUILD): $ac_dir" ;;
632
    esac
633 634 635 636
}

wine_fn_config_symlink ()
{
637 638 639 640 641 642 643
    ac_linkdir=
    if test "x$[1]" = "x-d"
    then
        ac_linkdir=$[2]
        shift; shift
    fi
    ac_links=$[@]
644
    wine_fn_append_rule \
645 646
"$ac_links:
	@./config.status \$[@]
647
distclean::
648
	\$(RM) $ac_links"
649
    for f in $ac_links; do wine_fn_ignore_file $f; done
650
    test -n "$ac_linkdir" || return
651
    wine_fn_append_rule "$ac_linkdir/Makefile $ac_linkdir/depend: $ac_links"
652
}])
653 654 655 656 657 658 659 660 661

dnl **** Define helper function to append a file to a makefile file list ****
dnl
dnl Usage: WINE_APPEND_FILE(var,file)
dnl
AC_DEFUN([WINE_APPEND_FILE],[AC_REQUIRE([WINE_CONFIG_HELPERS])wine_fn_append_file $1 "$2"])

dnl **** Define helper function to append a rule to a makefile command list ****
dnl
662
dnl Usage: WINE_APPEND_RULE(rule)
663
dnl
664
AC_DEFUN([WINE_APPEND_RULE],[AC_REQUIRE([WINE_CONFIG_HELPERS])wine_fn_append_rule "$1"])
665

666 667
dnl **** Create symlinks from config.status ****
dnl
668
dnl Usage: WINE_CONFIG_SYMLINK(target,src,files,enable,srcfile)
669
dnl
670
AC_DEFUN([WINE_CONFIG_SYMLINK],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
671 672 673 674 675 676 677
m4_ifval([$4],[if test "x$[$4]" != xno; then
])m4_foreach([f],[$3],
[AC_CONFIG_LINKS(m4_ifval([$1],[$1/])f[:]m4_ifval([$2],[$2/])m4_ifval([$5],[$5],f))])dnl
m4_if([$1],[$2],[test "$srcdir" = "." || ])dnl
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],[
fi])[]dnl
])])
678

679 680
dnl **** Create a makefile from config.status ****
dnl
681
dnl Usage: WINE_CONFIG_MAKEFILE(file,enable,flags)
682
dnl
683
AC_DEFUN([WINE_CONFIG_MAKEFILE],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
684
AS_VAR_PUSHDEF([ac_enable],m4_default([$2],[enable_]$1))dnl
685 686
m4_append_uniq([_AC_USER_OPTS],ac_enable,[
])dnl
687
wine_fn_config_makefile [$1] ac_enable [$3]dnl
688
AS_VAR_POPDEF([ac_enable])])
689

690 691
dnl **** Create a dll makefile from config.status ****
dnl
692
dnl Usage: WINE_CONFIG_DLL(name,enable,flags,implib)
693
dnl
694
AC_DEFUN([WINE_CONFIG_DLL],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
695
AS_VAR_PUSHDEF([ac_enable],m4_default([$2],[enable_]$1))dnl
696 697
m4_append_uniq([_AC_USER_OPTS],ac_enable,[
])dnl
698
wine_fn_config_dll [$1] ac_enable [$3] [$4]dnl
699
AS_VAR_POPDEF([ac_enable])])
700 701 702

dnl **** Create a program makefile from config.status ****
dnl
703
dnl Usage: WINE_CONFIG_PROGRAM(name,enable,flags)
704
dnl
705
AC_DEFUN([WINE_CONFIG_PROGRAM],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
706
AS_VAR_PUSHDEF([ac_enable],m4_default([$2],[enable_]$1))dnl
707 708
m4_append_uniq([_AC_USER_OPTS],ac_enable,[
])dnl
709
wine_fn_config_program [$1] ac_enable [$3]dnl
710
AS_VAR_POPDEF([ac_enable])])
711 712 713

dnl **** Create a test makefile from config.status ****
dnl
714
dnl Usage: WINE_CONFIG_TEST(dir,flags)
715
dnl
716 717 718
AC_DEFUN([WINE_CONFIG_TEST],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
m4_pushdef([ac_suffix],m4_if(m4_substr([$1],0,9),[programs/],[.exe_test],[_test]))dnl
m4_pushdef([ac_name],[m4_bpatsubst([$1],[.*/\(.*\)/tests$],[\1])])dnl
719
wine_fn_config_test $1 ac_name[]ac_suffix [$2]dnl
720
m4_popdef([ac_suffix])dnl
721
m4_popdef([ac_name])])
722 723 724

dnl **** Create a static lib makefile from config.status ****
dnl
725
dnl Usage: WINE_CONFIG_LIB(name,flags)
726
dnl
727
AC_DEFUN([WINE_CONFIG_LIB],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
728
wine_fn_config_lib [$1] [$2]])
729

730 731
dnl **** Create a tool makefile from config.status ****
dnl
732
dnl Usage: WINE_CONFIG_TOOL(name,flags)
733 734
dnl
AC_DEFUN([WINE_CONFIG_TOOL],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
735 736
m4_append_uniq([_AC_USER_OPTS],[enable_tools],[
])dnl
737
wine_fn_config_tool [$1] [$2]])
738

739 740 741 742 743 744 745
dnl **** Append a file to the .gitignore list ****
dnl
dnl Usage: WINE_IGNORE_FILE(file,enable)
dnl
AC_DEFUN([WINE_IGNORE_FILE],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
m4_ifval([$2],[test "x$[$2]" = xno || ])wine_fn_ignore_file $1])

746 747 748
dnl **** Add a message to the list displayed at the end ****
dnl
dnl Usage: WINE_NOTICE(notice)
749
dnl Usage: WINE_NOTICE_WITH(with_flag, test, notice)
750
dnl Usage: WINE_WARNING(warning)
751
dnl Usage: WINE_WARNING_WITH(with_flag, test, warning)
752 753
dnl Usage: WINE_PRINT_MESSAGES
dnl
754 755
AC_DEFUN([WINE_NOTICE],[AS_VAR_APPEND([wine_notices],["|$1"])])
AC_DEFUN([WINE_WARNING],[AS_VAR_APPEND([wine_warnings],["|$1"])])
756 757 758 759 760 761 762 763 764 765 766 767 768 769

AC_DEFUN([WINE_NOTICE_WITH],[AS_IF([$2],[case "x$with_$1" in
  x)   WINE_NOTICE([$3]) ;;
  xno) ;;
  *)   AC_MSG_ERROR([$3
This is an error since --with-$1 was requested.]) ;;
esac])])

AC_DEFUN([WINE_WARNING_WITH],[AS_IF([$2],[case "x$with_$1" in
  x)   WINE_WARNING([$3]) ;;
  xno) ;;
  *)   AC_MSG_ERROR([$3
This is an error since --with-$1 was requested.]) ;;
esac])])
770

771 772 773 774 775 776
AC_DEFUN([WINE_ERROR_WITH],[AS_IF([$2],[case "x$with_$1" in
  xno) ;;
  *)   AC_MSG_ERROR([$3
Use the --without-$1 option if you really want this.]) ;;
esac])])

777
AC_DEFUN([WINE_PRINT_MESSAGES],[ac_save_IFS="$IFS"
778 779
if test "x$wine_notices != "x; then
    echo >&AS_MESSAGE_FD
780
    IFS="|"
781
    for msg in $wine_notices; do
782
        IFS="$ac_save_IFS"
783
        AS_VAR_SET_IF([msg],[AC_MSG_NOTICE([$msg])])
784 785
    done
fi
786
IFS="|"
787
for msg in $wine_warnings; do
788
    IFS="$ac_save_IFS"
789 790
    AS_VAR_SET_IF([msg],[echo >&2
        AC_MSG_WARN([$msg])])
791 792 793
done
IFS="$ac_save_IFS"])

794 795 796
dnl Local Variables:
dnl compile-command: "autoreconf --warnings=all"
dnl End: