aclocal.m4 23.6 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
AC_CHECK_TOOL(OTOOL,otool,otool)
46 47 48
AC_CHECK_TOOL(READELF,[readelf],true)])

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

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

82 83
dnl **** Get flags from pkg-config or alternate xxx-config program ****
dnl
84
dnl Usage: WINE_PACKAGE_FLAGS(var,pkg-name,[default-lib,[cflags-alternate,libs-alternate,[checks]]])
85 86 87
dnl
AC_DEFUN([WINE_PACKAGE_FLAGS],
[AC_REQUIRE([WINE_PATH_PKG_CONFIG])dnl
88 89 90
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
91 92 93
AS_VAR_IF([ac_cflags],[],
      [AS_VAR_SET_IF([PKG_CONFIG],
      [ac_cflags=`$PKG_CONFIG --cflags [$2] 2>/dev/null`])])
94
m4_ifval([$4],[test "$cross_compiling" = yes || ac_cflags=[$]{ac_cflags:-[$4]}])
95
AC_ARG_VAR(ac_libs, [Linker flags for $2, overriding pkg-config])dnl
96 97 98
AS_VAR_IF([ac_libs],[],
      [AS_VAR_SET_IF([PKG_CONFIG],
      [ac_libs=`$PKG_CONFIG --libs [$2] 2>/dev/null`])])
99
m4_ifval([$5],[test "$cross_compiling" = yes || ac_libs=[$]{ac_libs:-[$5]}])
100
m4_ifval([$3],[ac_libs=[$]{ac_libs:-"$3"}])
101 102
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
103 104 105 106
ac_save_CPPFLAGS=$CPPFLAGS
CPPFLAGS="$CPPFLAGS $ac_cflags"
$6
CPPFLAGS=$ac_save_CPPFLAGS
107 108
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'`
109 110
AS_VAR_POPDEF([ac_libs])dnl
AS_VAR_POPDEF([ac_cflags])])dnl
111

112 113 114 115 116
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],
117
[AC_LINK_IFELSE([AC_LANG_PROGRAM([[$2]],[[asm($1); $3]])],[$4],[$5])])
118 119 120 121 122

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
123 124
dnl The default action-if-yes is to append the flags to EXTRACFLAGS.
dnl
125
AC_DEFUN([WINE_TRY_CFLAGS],
126 127
[AS_VAR_PUSHDEF([ac_var], ac_cv_cflags_[[$1]])dnl
AC_CACHE_CHECK([whether the compiler supports $1], ac_var,
128 129
[ac_wine_try_cflags_saved=$CFLAGS
CFLAGS="$CFLAGS $1"
130
AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(int argc, char **argv) { return 0; }]])],
131
               [AS_VAR_SET(ac_var,yes)], [AS_VAR_SET(ac_var,no)])
132
CFLAGS=$ac_wine_try_cflags_saved])
133
AS_VAR_IF([ac_var],[yes],[m4_default([$2], [EXTRACFLAGS="$EXTRACFLAGS $1"])], [$3])dnl
134
AS_VAR_POPDEF([ac_var])])
135

136 137 138 139 140 141 142
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"
143
AC_LINK_IFELSE([AC_LANG_SOURCE([void myfunc() {}])],[$2],[$3])
144 145
CFLAGS=$ac_wine_try_cflags_saved])

146 147 148 149 150 151 152 153 154 155 156
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)]))
157
AS_VAR_IF([ac_var],[yes],
158 159 160 161
      [CFLAGS="$CFLAGS -D$1"
  LINTFLAGS="$LINTFLAGS -D$1"])dnl
AS_VAR_POPDEF([ac_var])])

162 163 164 165 166 167 168 169 170 171
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"])

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


195 196 197 198 199
dnl **** Define helper functions for creating config.status files ****
dnl
dnl Usage: AC_REQUIRE([WINE_CONFIG_HELPERS])
dnl
AC_DEFUN([WINE_CONFIG_HELPERS],
200 201
[wine_rules_file=conf$$rules.make
rm -f $wine_rules_file
202
AC_SUBST(SUBDIRS,"")
203
AC_SUBST(DISABLED_SUBDIRS,"")
204
AC_SUBST(CONFIGURE_TARGETS,"")
205
AC_SUBST(ALL_TEST_RESOURCES,"")
206 207

wine_fn_append_file ()
208 209 210
{
    AS_VAR_APPEND($[1]," \\$as_nl	$[2]")
}
211

212 213
wine_fn_append_rule ()
{
214
    AS_ECHO("$[1]") >>$wine_rules_file
215 216
}

217 218
wine_fn_has_flag ()
{
219
    expr ",$ac_flags," : ".*,$[1],.*" >/dev/null
220 221
}

222
wine_fn_all_rules ()
223
{
224
    wine_fn_append_file SUBDIRS $ac_dir
225
    wine_fn_append_rule \
226 227
"all: $ac_dir
.PHONY: $ac_dir
228
$ac_dir: dummy
229
	@cd $ac_dir && \$(MAKE)"
230 231 232 233
}

wine_fn_install_rules ()
{
234
    wine_fn_has_flag install-lib || wine_fn_has_flag install-dev || return
235

236
    wine_fn_append_rule \
237 238
".PHONY: $ac_dir/install $ac_dir/uninstall
$ac_dir/install:: $ac_dir
239
	@cd $ac_dir && \$(MAKE) install
240
$ac_dir/uninstall::
241
	@cd $ac_dir && \$(MAKE) uninstall
242 243
install:: $ac_dir/install
__uninstall__: $ac_dir/uninstall"
244

245
    if wine_fn_has_flag install-lib
246
    then
247
        wine_fn_append_rule \
248 249
".PHONY: $ac_dir/install-lib
$ac_dir/install-lib:: $ac_dir
250
	@cd $ac_dir && \$(MAKE) install-lib
251
install-lib:: $ac_dir/install-lib"
252 253
    fi

254
    if wine_fn_has_flag install-dev
255
    then
256
        wine_fn_append_rule \
257 258
".PHONY: $ac_dir/install-dev
$ac_dir/install-dev:: $ac_dir
259
	@cd $ac_dir && \$(MAKE) install-dev
260
install-dev:: $ac_dir/install-dev"
261
    fi
262 263
}

264 265 266 267
wine_fn_clean_rules ()
{
    ac_clean=$[@]

268
    if wine_fn_has_flag clean
269 270
    then
        wine_fn_append_rule \
271 272
"$ac_dir/clean: dummy
	@cd $ac_dir && \$(MAKE) clean"
273 274
    else
        wine_fn_append_rule \
275 276 277 278
"$ac_dir/clean: dummy
	\$(RM) \$(CLEAN_FILES:%=$ac_dir/%) $ac_clean"
    fi
        wine_fn_append_rule \
279
"__clean__: $ac_dir/clean
280
.PHONY: $ac_dir/clean"
281 282
}

283 284 285 286
wine_fn_disabled_rules ()
{
    ac_clean=$[@]

287 288
    wine_fn_append_file SUBDIRS $ac_dir
    wine_fn_append_file DISABLED_SUBDIRS $ac_dir
289 290 291 292
    wine_fn_append_rule \
"__clean__: $ac_dir/clean
.PHONY: $ac_dir/clean
$ac_dir/clean: dummy
293
	\$(RM) \$(CLEAN_FILES:%=$ac_dir/%) $ac_clean"
294 295
}

296 297 298 299 300 301
wine_fn_config_makefile ()
{
    ac_dir=$[1]
    ac_enable=$[2]
    ac_flags=$[3]

302 303 304 305
    case $ac_dir in
    dnl These are created as symlinks for wow64 builds
    fonts|server) test -z "$with_wine64" || return ;;
    esac
306 307 308 309
    AS_VAR_IF([$ac_enable],[no],[wine_fn_disabled_rules; return])
    wine_fn_all_rules
    wine_fn_install_rules
    wine_fn_clean_rules
310 311
}

312 313 314
wine_fn_config_lib ()
{
    ac_name=$[1]
315
    ac_flags=$[2]
316
    ac_dir=dlls/$ac_name
317
    ac_deps="include"
318

319
    AS_VAR_IF([enable_tools],[no],,[ac_deps="tools/widl tools/winebuild tools/winegcc $ac_deps"])
320
    wine_fn_all_rules
321
    wine_fn_clean_rules
322

323
    wine_fn_append_rule \
324
".PHONY: $ac_dir/install $ac_dir/uninstall
325
$ac_dir/install:: $ac_dir
326
	\$(INSTALL_DATA) $ac_dir/lib$ac_name.a \$(DESTDIR)\$(dlldir)/lib$ac_name.a
327
$ac_dir/uninstall::
328
	\$(RM) \$(DESTDIR)\$(dlldir)/lib$ac_name.a
329 330
install install-dev:: $ac_dir/install
__uninstall__: $ac_dir/uninstall
331
__builddeps__: $ac_dir
332
$ac_dir: $ac_deps"
333 334
}

335 336
wine_fn_config_dll ()
{
337 338
    ac_name=$[1]
    ac_dir=dlls/$ac_name
339
    ac_enable=$[2]
340
    ac_flags=$[3]
341
    ac_implib=${4:-$ac_name}
342
    ac_file=$ac_dir/lib$ac_implib
343
    ac_dll=$ac_name
344
    ac_deps="include"
345 346
    ac_implibflags=""

347
    AS_VAR_IF([enable_tools],[no],,[ac_deps="tools/widl tools/winebuild tools/winegcc $ac_deps"])
348
    case $ac_name in
349
      *16) ac_implibflags=" -m16" ;;
350 351
      *.*) ;;
      *)   ac_dll=$ac_dll.dll ;;
352
    esac
353

354
    ac_clean=
355
    wine_fn_has_flag implib && ac_clean="$ac_clean $ac_file.$IMPLIBEXT"
356
    test -n "$DLLEXT" || ac_clean="$ac_clean $ac_dir/$ac_dll"
357

358 359
    AS_VAR_IF([$ac_enable],[no],
              dnl enable_win16 is special in that it disables import libs too
360
              [if test "$ac_enable" != enable_win16
361
               then
362
                   wine_fn_clean_rules $ac_clean
363 364
                   wine_fn_append_file SUBDIRS $ac_dir
                   wine_fn_append_file DISABLED_SUBDIRS $ac_dir
365
               else
366
                   wine_fn_disabled_rules $ac_clean
367 368 369
                   return
               fi],

370
              [wine_fn_all_rules
371
               wine_fn_clean_rules $ac_clean
372
               wine_fn_append_rule \
373
"$ac_dir: __builddeps__
374
manpages htmlpages sgmlpages xmlpages::
375
	@cd $ac_dir && \$(MAKE) \$[@]
376 377 378
.PHONY: $ac_dir/install-lib $ac_dir/uninstall
install install-lib:: $ac_dir/install-lib
__uninstall__: $ac_dir/uninstall"
379 380 381
                if test -n "$DLLEXT"
                then
                    wine_fn_append_rule \
382
"$ac_dir/install-lib:: $ac_dir
383
	\$(INSTALL_PROGRAM) $ac_dir/$ac_dll$DLLEXT \$(DESTDIR)\$(dlldir)/$ac_dll$DLLEXT
384
	\$(INSTALL_DATA) $ac_dir/$ac_dll.fake \$(DESTDIR)\$(fakedlldir)/$ac_dll
385
$ac_dir/uninstall::
386
	\$(RM) \$(DESTDIR)\$(dlldir)/$ac_dll$DLLEXT \$(DESTDIR)\$(fakedlldir)/$ac_dll"
387 388
                else
                    wine_fn_append_rule \
389
"$ac_dir/install-lib:: $ac_dir
390
	\$(INSTALL_PROGRAM) $ac_dir/$ac_dll \$(DESTDIR)\$(dlldir)/$ac_dll
391
$ac_dir/uninstall::
392
	\$(RM) \$(DESTDIR)\$(dlldir)/$ac_dll"
393
                fi])
394

395
    if wine_fn_has_flag staticimplib
396
    then
397
        wine_fn_append_rule \
398
"__builddeps__: $ac_file.$IMPLIBEXT $ac_file.$STATIC_IMPLIBEXT
399
$ac_file.$STATIC_IMPLIBEXT $ac_file.cross.a: $ac_deps
400
$ac_file.def: $srcdir/$ac_dir/$ac_name.spec \$(WINEBUILD)
401
	\$(WINEBUILD) \$(TARGETFLAGS)$ac_implibflags -w --def -o \$[@] --export $srcdir/$ac_dir/$ac_name.spec
402
$ac_file.$STATIC_IMPLIBEXT: dummy
403
	@cd $ac_dir && \$(MAKE) lib$ac_implib.$STATIC_IMPLIBEXT
404
.PHONY: $ac_dir/install-dev $ac_dir/uninstall
405
$ac_dir/install-dev:: $ac_file.$IMPLIBEXT
406
	\$(INSTALL_DATA) $ac_file.$IMPLIBEXT \$(DESTDIR)\$(dlldir)/lib$ac_implib.$IMPLIBEXT
407
$ac_dir/uninstall::
408
	\$(RM) \$(DESTDIR)\$(dlldir)/lib$ac_implib.$IMPLIBEXT
409 410
install install-dev:: $ac_dir/install-dev
__uninstall__: $ac_dir/uninstall"
411 412 413

        if test "$IMPLIBEXT" != "$STATIC_IMPLIBEXT"
        then
414
            wine_fn_append_rule \
415
"$ac_dir/install-dev:: $ac_file.$STATIC_IMPLIBEXT __builddeps__
416
	\$(INSTALL_DATA) $ac_file.$STATIC_IMPLIBEXT \$(DESTDIR)\$(dlldir)/lib$ac_implib.$STATIC_IMPLIBEXT
417
$ac_dir/uninstall::
418 419 420
	\$(RM) \$(DESTDIR)\$(dlldir)/lib$ac_implib.$STATIC_IMPLIBEXT"
        fi

421
        if test -n "$CROSSTARGET" -a -z "$ac_implibflags"
422
        then
423
            wine_fn_append_rule \
424
"__builddeps__: $ac_file.cross.a
425
$ac_file.cross.a: dummy
426
	@cd $ac_dir && \$(MAKE) lib$ac_implib.cross.a"
427 428
        fi

429
    elif wine_fn_has_flag implib
430
    then
431
        wine_fn_append_rule \
432
"__builddeps__: $ac_file.$IMPLIBEXT
433
$ac_file.def: $srcdir/$ac_dir/$ac_name.spec \$(WINEBUILD)
434
	\$(WINEBUILD) \$(TARGETFLAGS)$ac_implibflags -w --def -o \$[@] --export $srcdir/$ac_dir/$ac_name.spec
435
$ac_file.a: $srcdir/$ac_dir/$ac_name.spec \$(WINEBUILD)
436
	\$(WINEBUILD) \$(TARGETFLAGS)$ac_implibflags -w --implib -o \$[@] --export $srcdir/$ac_dir/$ac_name.spec
437
.PHONY: $ac_dir/install-dev $ac_dir/uninstall
438
$ac_dir/install-dev:: $ac_file.$IMPLIBEXT
439
	\$(INSTALL_DATA) $ac_file.$IMPLIBEXT \$(DESTDIR)\$(dlldir)/lib$ac_implib.$IMPLIBEXT
440
$ac_dir/uninstall::
441
	\$(RM) \$(DESTDIR)\$(dlldir)/lib$ac_implib.$IMPLIBEXT
442 443
install install-dev:: $ac_dir/install-dev
__uninstall__: $ac_dir/uninstall"
444
        if test -n "$CROSSTARGET" -a -z "$ac_implibflags"
445
        then
446
            wine_fn_append_rule \
447
"__builddeps__: $ac_file.cross.a
448
$ac_file.cross.a: $srcdir/$ac_dir/$ac_name.spec \$(WINEBUILD)
449
	\$(WINEBUILD) \$(CROSSTARGET:%=-b %)$ac_implibflags -w --implib -o \$[@] --export $srcdir/$ac_dir/$ac_name.spec"
450
        fi
451 452 453 454 455
    fi
}

wine_fn_config_program ()
{
456 457
    ac_name=$[1]
    ac_dir=programs/$ac_name
458
    ac_enable=$[2]
459
    ac_flags=$[3]
460 461 462 463 464 465 466
    ac_program=$ac_name

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

467
    ac_clean=
468
    wine_fn_has_flag manpage && ac_clean="$ac_clean $ac_dir/$ac_name.man"
469
    test -n "$DLLEXT" || ac_clean="$ac_clean $ac_dir/$ac_program"
470

471
    AS_VAR_IF([$ac_enable],[no],[wine_fn_disabled_rules $ac_clean; return])
472

473
    wine_fn_all_rules
474
    wine_fn_clean_rules $ac_clean
475
    wine_fn_append_rule "$ac_dir: __builddeps__"
476

477
    wine_fn_has_flag install || return
478
    wine_fn_append_rule \
479 480 481
".PHONY: $ac_dir/install $ac_dir/uninstall
install install-lib:: $ac_dir/install
__uninstall__: $ac_dir/uninstall"
482 483

    if test -n "$DLLEXT"
484
    then
485
        wine_fn_append_rule \
486
"$ac_dir/install:: $ac_dir
487
	\$(INSTALL_PROGRAM) $ac_dir/$ac_program$DLLEXT \$(DESTDIR)\$(dlldir)/$ac_program$DLLEXT
488
	\$(INSTALL_DATA) $ac_dir/$ac_program.fake \$(DESTDIR)\$(fakedlldir)/$ac_program
489
$ac_dir/uninstall::
490
	\$(RM) \$(DESTDIR)\$(dlldir)/$ac_program$DLLEXT \$(DESTDIR)\$(fakedlldir)/$ac_program"
491

492
        if test -z "$with_wine64" && wine_fn_has_flag installbin
493
        then
494
            wine_fn_append_rule \
495
"$ac_dir/install:: __tooldeps__
496
	\$(INSTALL_SCRIPT) \$(TOOLSDIR)/tools/wineapploader \$(DESTDIR)\$(bindir)/$ac_name
497
$ac_dir/uninstall::
498
	\$(RM) \$(DESTDIR)\$(bindir)/$ac_name"
499 500
        fi
    else
501
        wine_fn_append_rule \
502
"$ac_dir/install:: $ac_dir
503
	\$(INSTALL_PROGRAM) $ac_dir/$ac_program \$(DESTDIR)\$(bindir)/$ac_program
504
$ac_dir/uninstall::
505
	\$(RM) \$(DESTDIR)\$(bindir)/$ac_program"
506 507
    fi

508
    if test -z "$with_wine64" && wine_fn_has_flag manpage
509
    then
510
        wine_fn_append_rule \
511
"$ac_dir/install:: $ac_dir
512
	\$(INSTALL_DATA) $ac_dir/$ac_name.man \$(DESTDIR)\$(mandir)/man\$(prog_manext)/$ac_name.\$(prog_manext)
513
$ac_dir/uninstall::
514
	\$(RM) \$(DESTDIR)\$(mandir)/man\$(prog_manext)/$ac_name.\$(prog_manext)"
515
    fi
516 517
}

518 519 520 521
wine_fn_config_test ()
{
    ac_dir=$[1]
    ac_name=$[2]
522
    ac_flags=$[3]
523 524

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

528
    AS_VAR_IF([enable_tests],[no],[wine_fn_disabled_rules $ac_clean; return])
529

530
    wine_fn_append_file ALL_TEST_RESOURCES $ac_name.res
531
    wine_fn_all_rules
532
    wine_fn_clean_rules $ac_clean
533

534
    wine_fn_append_rule \
535
"$ac_dir: __builddeps__
536
programs/winetest: $ac_dir
537 538 539
check test: $ac_dir/test
.PHONY: $ac_dir/test
$ac_dir/test: dummy
540 541
	@cd $ac_dir && \$(MAKE) test
testclean::
542 543
	\$(RM) $ac_dir/*.ok"

544
        if test -n "$CROSSTARGET"
545
        then
546
            wine_fn_append_rule \
547 548
"crosstest: $ac_dir/crosstest
.PHONY: $ac_dir/crosstest
549
$ac_dir/crosstest: __builddeps__ dummy
550
	@cd $ac_dir && \$(MAKE) crosstest"
551
        fi
552 553 554 555 556
}

wine_fn_config_tool ()
{
    ac_dir=$[1]
557
    ac_flags=$[2]
558
    AS_VAR_IF([enable_tools],[no],[wine_fn_append_file DISABLED_SUBDIRS $ac_dir; return])
559

560 561 562
    wine_fn_all_rules
    wine_fn_install_rules
    wine_fn_clean_rules
563

564 565
    wine_fn_append_rule "__tooldeps__: $ac_dir"
    wine_fn_append_rule "$ac_dir: libs/port"
566
    case $ac_dir in
567
      tools/winebuild) wine_fn_append_rule "\$(WINEBUILD): $ac_dir" ;;
568
    esac
569 570 571 572
}

wine_fn_config_symlink ()
{
573 574 575 576 577 578 579
    ac_linkdir=
    if test "x$[1]" = "x-d"
    then
        ac_linkdir=$[2]
        shift; shift
    fi
    ac_links=$[@]
580
    wine_fn_append_rule \
581
"$ac_links:
582 583
	@./config.status \$[@]"
    for f in $ac_links; do wine_fn_append_file CONFIGURE_TARGETS $f; done
584
    test -n "$ac_linkdir" || return
585
    wine_fn_append_rule "$ac_linkdir/depend: $ac_links"
586
}])
587 588 589 590 591 592 593 594 595

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
596
dnl Usage: WINE_APPEND_RULE(rule)
597
dnl
598
AC_DEFUN([WINE_APPEND_RULE],[AC_REQUIRE([WINE_CONFIG_HELPERS])wine_fn_append_rule "$1"])
599

600 601
dnl **** Create symlinks from config.status ****
dnl
602
dnl Usage: WINE_CONFIG_SYMLINK(target,src,files,enable,srcfile)
603
dnl
604
AC_DEFUN([WINE_CONFIG_SYMLINK],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
605 606 607 608 609 610 611
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
])])
612

613 614
dnl **** Create a makefile from config.status ****
dnl
615
dnl Usage: WINE_CONFIG_MAKEFILE(file,enable,flags)
616
dnl
617
AC_DEFUN([WINE_CONFIG_MAKEFILE],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
618
AS_VAR_PUSHDEF([ac_enable],m4_default([$2],[enable_]$1))dnl
619 620
m4_append_uniq([_AC_USER_OPTS],ac_enable,[
])dnl
621
wine_fn_config_makefile [$1] ac_enable [$3]dnl
622
AS_VAR_POPDEF([ac_enable])])
623

624 625
dnl **** Create a dll makefile from config.status ****
dnl
626
dnl Usage: WINE_CONFIG_DLL(name,enable,flags,implib)
627
dnl
628
AC_DEFUN([WINE_CONFIG_DLL],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
629
AS_VAR_PUSHDEF([ac_enable],m4_default([$2],[enable_]$1))dnl
630 631
m4_append_uniq([_AC_USER_OPTS],ac_enable,[
])dnl
632
wine_fn_config_dll [$1] ac_enable [$3] [$4]dnl
633
AS_VAR_POPDEF([ac_enable])])
634 635 636

dnl **** Create a program makefile from config.status ****
dnl
637
dnl Usage: WINE_CONFIG_PROGRAM(name,enable,flags)
638
dnl
639
AC_DEFUN([WINE_CONFIG_PROGRAM],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
640
AS_VAR_PUSHDEF([ac_enable],m4_default([$2],[enable_]$1))dnl
641 642
m4_append_uniq([_AC_USER_OPTS],ac_enable,[
])dnl
643
wine_fn_config_program [$1] ac_enable [$3]dnl
644
AS_VAR_POPDEF([ac_enable])])
645 646 647

dnl **** Create a test makefile from config.status ****
dnl
648
dnl Usage: WINE_CONFIG_TEST(dir,flags)
649
dnl
650 651 652
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
653
wine_fn_config_test $1 ac_name[]ac_suffix [$2]dnl
654
m4_popdef([ac_suffix])dnl
655
m4_popdef([ac_name])])
656 657 658

dnl **** Create a static lib makefile from config.status ****
dnl
659
dnl Usage: WINE_CONFIG_LIB(name,flags)
660
dnl
661
AC_DEFUN([WINE_CONFIG_LIB],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
662
wine_fn_config_lib [$1] [$2]])
663

664 665
dnl **** Create a tool makefile from config.status ****
dnl
666
dnl Usage: WINE_CONFIG_TOOL(name,flags)
667 668
dnl
AC_DEFUN([WINE_CONFIG_TOOL],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
669 670
m4_append_uniq([_AC_USER_OPTS],[enable_tools],[
])dnl
671
wine_fn_config_tool [$1] [$2]])
672

673 674 675 676 677
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
678
m4_ifval([$2],[test "x$[$2]" = xno || ])wine_fn_append_file CONFIGURE_TARGETS $1])
679

680 681 682 683
dnl **** Add a message to the list displayed at the end ****
dnl
dnl Usage: WINE_NOTICE(notice)
dnl Usage: WINE_WARNING(warning)
684 685 686
dnl Usage: WINE_NOTICE_WITH(with_flag, test, notice, enable)
dnl Usage: WINE_WARNING_WITH(with_flag, test, warning, enable)
dnl Usage: WINE_ERROR_WITH(with_flag, test, error, enable)
687 688
dnl Usage: WINE_PRINT_MESSAGES
dnl
689 690
AC_DEFUN([WINE_NOTICE],[AS_VAR_APPEND([wine_notices],["|$1"])])
AC_DEFUN([WINE_WARNING],[AS_VAR_APPEND([wine_warnings],["|$1"])])
691 692 693 694 695 696

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.]) ;;
697 698
esac
m4_ifval([$4],[$4=${$4:-no}])])])
699 700 701 702 703 704

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.]) ;;
705 706
esac
m4_ifval([$4],[$4=${$4:-no}])])])
707

708 709 710 711
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.]) ;;
712 713
esac
m4_ifval([$4],[$4=${$4:-no}])])])
714

715
AC_DEFUN([WINE_PRINT_MESSAGES],[ac_save_IFS="$IFS"
716
if test "x$wine_notices" != x; then
717
    echo >&AS_MESSAGE_FD
718
    IFS="|"
719
    for msg in $wine_notices; do
720
        IFS="$ac_save_IFS"
721
        AS_VAR_IF([msg],[],,[AC_MSG_NOTICE([$msg])])
722 723
    done
fi
724
IFS="|"
725
for msg in $wine_warnings; do
726
    IFS="$ac_save_IFS"
727
    AS_VAR_IF([msg],[],,[echo >&2
728
        AC_MSG_WARN([$msg])])
729 730 731
done
IFS="$ac_save_IFS"])

732 733 734
dnl Local Variables:
dnl compile-command: "autoreconf --warnings=all"
dnl End: