aclocal.m4 25.8 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 174 175 176
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],
177 178
[case "$host_cpu" in
  i[[3456789]]86*)
179
    ac_prefix_list="m4_foreach([ac_wine_prefix],[w64-mingw32, pc-mingw32, mingw32msvc, mingw32],
180 181
                        m4_foreach([ac_wine_cpu],[i686,i586,i486,i386],[ac_wine_cpu-ac_wine_prefix-$2 ]))
                        mingw32-$2" ;;
182
  x86_64)
183 184
    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 ]))" ;;
185 186 187 188
  *)
    ac_prefix_list="" ;;
esac
AC_CHECK_PROGS([$1],[$ac_prefix_list],[$3],[$4])])
189 190


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

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

207 208 209 210 211 212 213 214 215
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
}

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

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

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

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

241
    if wine_fn_has_flag mc
242 243
    then
        wine_fn_append_file ALL_POT_FILES $ac_dir/msg.pot
244
        wine_fn_append_rule \
245 246 247 248
"$ac_dir/msg.pot: $ac_dir/Makefile dummy
	@cd $ac_dir && \$(MAKE) msg.pot
$ac_dir/msg.pot: tools/wmc include"
    fi
249
    if wine_fn_has_flag po
250 251
    then
        wine_fn_append_file ALL_POT_FILES $ac_dir/rsrc.pot
252
        wine_fn_append_rule \
253 254
"$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
255
$ac_dir/rsrc.pot: tools/wrc include"
256 257 258
    fi
}

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

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

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

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

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

301 302 303
wine_fn_clean_rules ()
{
    ac_clean=$[@]
304 305
    ac_extraclean="$ac_dir/Makefile"
    test "$srcdir" = . && ac_extraclean="$ac_extraclean $ac_dir/.gitignore"
306 307 308
    case $ac_dir in
        */tests) ac_extraclean="$ac_extraclean $ac_dir/testlist.c" ;;
    esac
309

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

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

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

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

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

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

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

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

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

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

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

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

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

436
                wine_fn_pot_rules])
437

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

627 628 629
    wine_fn_all_rules
    wine_fn_install_rules
    wine_fn_clean_rules
630

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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