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 307
    case $ac_dir in
        */tests) ac_extraclean="$ac_extraclean $ac_dir/testlist.c" ;;
    esac
308

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

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

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

339 340 341 342 343 344
wine_fn_config_makefile ()
{
    ac_dir=$[1]
    ac_enable=$[2]
    ac_flags=$[3]

345 346 347 348
    AS_VAR_IF([$ac_enable],[no],[wine_fn_disabled_rules; return])
    wine_fn_all_rules
    wine_fn_install_rules
    wine_fn_clean_rules
349 350
}

351 352 353
wine_fn_config_lib ()
{
    ac_name=$[1]
354
    ac_flags=$[2]
355
    ac_dir=dlls/$ac_name
356
    ac_deps="include"
357

358
    AS_VAR_IF([enable_tools],[no],,[ac_deps="tools/widl tools/winebuild tools/winegcc $ac_deps"])
359
    wine_fn_all_rules
360
    wine_fn_clean_rules
361

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

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

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

393
    ac_clean=
394 395 396
    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"
397
    test -n "$DLLEXT" || ac_clean="$ac_clean $ac_dir/$ac_dll"
398

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

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

435
                wine_fn_pot_rules])
436

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

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

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

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

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

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

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

530
    ac_clean=
531 532 533
    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"
534
    test -n "$DLLEXT" || ac_clean="$ac_clean $ac_dir/$ac_program"
535

536
    AS_VAR_IF([$ac_enable],[no],[wine_fn_disabled_rules $ac_clean; return])
537

538
    wine_fn_all_rules
539
    wine_fn_clean_rules $ac_clean
540
    wine_fn_append_rule "$ac_dir: __builddeps__"
541
    wine_fn_pot_rules
542

543
    wine_fn_has_flag install || return
544
    wine_fn_append_rule \
545 546 547
".PHONY: $ac_dir/install $ac_dir/uninstall
install install-lib:: $ac_dir/install
__uninstall__: $ac_dir/uninstall"
548 549

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

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

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

584 585 586 587
wine_fn_config_test ()
{
    ac_dir=$[1]
    ac_name=$[2]
588
    ac_flags=$[3]
589 590

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

594
    AS_VAR_IF([enable_tests],[no],[wine_fn_disabled_rules $ac_clean; return])
595

596
    wine_fn_append_file ALL_TEST_RESOURCES $ac_name.res
597
    wine_fn_all_rules
598
    wine_fn_clean_rules $ac_clean
599

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

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

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

626 627 628
    wine_fn_all_rules
    wine_fn_install_rules
    wine_fn_clean_rules
629

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

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

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
664
dnl Usage: WINE_APPEND_RULE(rule)
665
dnl
666
AC_DEFUN([WINE_APPEND_RULE],[AC_REQUIRE([WINE_CONFIG_HELPERS])wine_fn_append_rule "$1"])
667

668 669
dnl **** Create symlinks from config.status ****
dnl
670
dnl Usage: WINE_CONFIG_SYMLINK(target,src,files,enable,srcfile)
671
dnl
672
AC_DEFUN([WINE_CONFIG_SYMLINK],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
673 674 675 676 677 678 679
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
])])
680

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

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

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

dnl **** Create a test makefile from config.status ****
dnl
716
dnl Usage: WINE_CONFIG_TEST(dir,flags)
717
dnl
718 719 720
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
721
wine_fn_config_test $1 ac_name[]ac_suffix [$2]dnl
722
m4_popdef([ac_suffix])dnl
723
m4_popdef([ac_name])])
724 725 726

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

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

741 742 743 744 745 746 747
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])

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

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])])
772

773 774 775 776 777 778
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])])

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

796 797 798
dnl Local Variables:
dnl compile-command: "autoreconf --warnings=all"
dnl End: