aclocal.m4 25.9 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 30 31 32 33 34 35 36 37 38 39
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],
[if test -n "$ac_tool_prefix"; then
  AC_CHECK_PROG([$1],[${ac_tool_prefix}$2],[${ac_tool_prefix}$2],,[$4])
fi
if test -n "$ac_cv_prog_$1"; then
  $1="$ac_cv_prog_$1"
elif test "$cross_compiling" != yes; then
  unset ac_cv_prog_$1
  AC_CHECK_PROG([$1],[$2],[$2],[$3],[$4])
fi])

40
dnl **** Initialize the programs used by other checks ****
41
dnl
42
dnl Usage: WINE_PATH_SONAME_TOOLS
43
dnl Usage: WINE_PATH_PKG_CONFIG
44
dnl
45 46
AC_DEFUN([WINE_PATH_SONAME_TOOLS],
[AC_PATH_PROG(LDD,ldd,true,/sbin:/usr/sbin:$PATH)
47 48 49
AC_CHECK_TOOL(READELF,[readelf],true)])

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

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

83 84
dnl **** Get flags from pkg-config or alternate xxx-config program ****
dnl
85
dnl Usage: WINE_PACKAGE_FLAGS(var,pkg-name,[default-lib,[cflags-alternate,libs-alternate,[checks]]])
86 87 88
dnl
AC_DEFUN([WINE_PACKAGE_FLAGS],
[AC_REQUIRE([WINE_PATH_PKG_CONFIG])dnl
89 90 91 92
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
AS_IF([test -n "$ac_cflags"],[],
93
      [test -n "$PKG_CONFIG"],
94
      [ac_cflags=`$PKG_CONFIG --cflags [$2] 2>/dev/null`])
95
m4_ifval([$4],[test "$cross_compiling" = yes || ac_cflags=[$]{ac_cflags:-[$4]}])
96 97
AC_ARG_VAR(ac_libs, [Linker flags for $2, overriding pkg-config])dnl
AS_IF([test -n "$ac_libs"],[],
98
      [test -n "$PKG_CONFIG"],
99
      [ac_libs=`$PKG_CONFIG --libs [$2] 2>/dev/null`])
100
m4_ifval([$5],[test "$cross_compiling" = yes || ac_libs=[$]{ac_libs:-[$5]}])
101 102 103 104 105
m4_ifval([$3],[ac_libs=[$]{ac_libs:-"$3"}])
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 133 134
AS_IF([test AS_VAR_GET(ac_var) = yes],
      [m4_default([$2], [EXTRACFLAGS="$EXTRACFLAGS $1"])], [$3])dnl
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 157 158 159 160 161
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)]))
AS_IF([test AS_VAR_GET(ac_var) = yes],
      [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
AC_SUBST(ALL_TEST_RESOURCES,"")
200 201

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

206 207
wine_fn_append_rule ()
{
208
    AS_ECHO("$[1]") >>$wine_rules_file
209 210
}

211 212
wine_fn_has_flag ()
{
213
    expr ",$ac_flags," : ".*,$[1],.*" >/dev/null
214 215
}

216
wine_fn_depend_rules ()
217
{
218
    ac_alldeps=$[1]
219 220
    ac_makedep="\$(MAKEDEP)"
    ac_input=Make.vars.in:$ac_dir/Makefile.in
221 222 223
    case $[1] in
      *.in) ac_input=$ac_input:$[1] ;;
      *) ac_makedep="$[1] $ac_makedep" ;;
224
    esac
225

226
    wine_fn_append_rule \
227
"$ac_dir/Makefile: $ac_dir/Makefile.in Make.vars.in config.status $ac_alldeps \$(MAKEDEP)
228
	@./config.status --file $ac_dir/Makefile:$ac_input && cd $ac_dir && \$(MAKE) depend
229 230 231
depend: $ac_dir/depend
.PHONY: $ac_dir/depend
$ac_dir/depend: $ac_makedep dummy
232
	@./config.status --file $ac_dir/Makefile:$ac_input && cd $ac_dir && \$(MAKE) depend"
233 234
}

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

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

257
wine_fn_all_rules ()
258
{
259
    ac_rules=$[1]
260

261
    wine_fn_depend_rules ${ac_rules:-Make.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 304
wine_fn_clean_rules ()
{
    ac_clean=$[@]

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

320 321 322 323 324 325 326 327 328
wine_fn_disabled_rules ()
{
    ac_clean=$[@]

    wine_fn_append_rule \
"clean::
	\$(RM) \$(CLEAN_FILES:%=$ac_dir/%) $ac_clean $ac_dir/Makefile"
}

329 330 331 332 333 334
wine_fn_config_makefile ()
{
    ac_dir=$[1]
    ac_enable=$[2]
    ac_flags=$[3]

335 336 337 338
    AS_VAR_IF([$ac_enable],[no],[wine_fn_disabled_rules; return])
    wine_fn_all_rules
    wine_fn_install_rules
    wine_fn_clean_rules
339 340
}

341 342 343
wine_fn_config_lib ()
{
    ac_name=$[1]
344
    ac_flags=$[2]
345
    ac_dir=dlls/$ac_name
346
    ac_deps="include"
347

348
    AS_VAR_IF([enable_tools],[no],,[ac_deps="tools/widl tools/winebuild tools/winegcc $ac_deps"])
349
    wine_fn_all_rules Make.rules.in
350
    wine_fn_clean_rules
351

352
    wine_fn_append_rule \
353 354
".PHONY: $ac_dir/install $ac_dir/uninstall
$ac_dir/install:: $ac_dir \$(DESTDIR)\$(dlldir)
355
	\$(INSTALL_DATA) $ac_dir/lib$ac_name.a \$(DESTDIR)\$(dlldir)/lib$ac_name.a
356
$ac_dir/uninstall::
357
	\$(RM) \$(DESTDIR)\$(dlldir)/lib$ac_name.a
358 359
install install-dev:: $ac_dir/install
__uninstall__: $ac_dir/uninstall
360
__builddeps__: $ac_dir
361
$ac_dir: $ac_deps"
362 363
}

364 365
wine_fn_config_dll ()
{
366 367
    ac_name=$[1]
    ac_dir=dlls/$ac_name
368
    ac_enable=$[2]
369
    ac_flags=$[3]
370
    ac_implib=${4:-$ac_name}
371
    ac_file=$ac_dir/lib$ac_implib
372
    ac_dll=$ac_name
373
    ac_deps="include"
374 375
    ac_implibflags=""

376
    AS_VAR_IF([enable_tools],[no],,[ac_deps="tools/widl tools/winebuild tools/winegcc $ac_deps"])
377
    case $ac_name in
378
      *16) ac_implibflags=" -m16" ;;
379 380
      *.*) ;;
      *)   ac_dll=$ac_dll.dll ;;
381
    esac
382

383
    ac_clean=
384 385 386
    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"
387
    test -n "$DLLEXT" || ac_clean="$ac_clean $ac_dir/$ac_dll"
388

389 390
    AS_VAR_IF([$ac_enable],[no],
              dnl enable_win16 is special in that it disables import libs too
391
              [if wine_fn_has_flag implib && test "$ac_enable" != enable_win16
392
               then
393
                   wine_fn_depend_rules Make.rules.in
394
                   wine_fn_clean_rules $ac_clean
395
               else
396
                   wine_fn_disabled_rules $ac_clean
397 398 399
                   return
               fi],

400
              [wine_fn_all_rules Make.rules.in
401
               wine_fn_clean_rules $ac_clean
402
               wine_fn_append_rule \
403
"$ac_dir: __builddeps__
404
manpages htmlpages sgmlpages xmlpages:: $ac_dir/Makefile
405
	@cd $ac_dir && \$(MAKE) \$[@]
406 407 408
.PHONY: $ac_dir/install-lib $ac_dir/uninstall
install install-lib:: $ac_dir/install-lib
__uninstall__: $ac_dir/uninstall"
409 410 411
                if test -n "$DLLEXT"
                then
                    wine_fn_append_rule \
412
"$ac_dir/install-lib:: $ac_dir \$(DESTDIR)\$(dlldir) \$(DESTDIR)\$(fakedlldir)
413
	\$(INSTALL_PROGRAM) $ac_dir/$ac_dll$DLLEXT \$(DESTDIR)\$(dlldir)/$DLLPREFIX$ac_dll$DLLEXT
414
	\$(INSTALL_DATA) $ac_dir/$ac_dll.fake \$(DESTDIR)\$(fakedlldir)/$ac_dll
415
$ac_dir/uninstall::
416
	\$(RM) \$(DESTDIR)\$(dlldir)/$DLLPREFIX$ac_dll$DLLEXT \$(DESTDIR)\$(fakedlldir)/$ac_dll"
417 418
                else
                    wine_fn_append_rule \
419
"$ac_dir/install-lib:: $ac_dir \$(DESTDIR)\$(dlldir)
420
	\$(INSTALL_PROGRAM) $ac_dir/$ac_dll \$(DESTDIR)\$(dlldir)/$ac_dll
421
$ac_dir/uninstall::
422
	\$(RM) \$(DESTDIR)\$(dlldir)/$ac_dll"
423
                fi
424

425
                wine_fn_pot_rules])
426

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

        if test "$IMPLIBEXT" != "$STATIC_IMPLIBEXT"
        then
446
            wine_fn_append_rule \
447
"$ac_dir/install-dev:: $ac_file.$STATIC_IMPLIBEXT \$(DESTDIR)\$(dlldir) __builddeps__
448
	\$(INSTALL_DATA) $ac_file.$STATIC_IMPLIBEXT \$(DESTDIR)\$(dlldir)/lib$ac_implib.$STATIC_IMPLIBEXT
449
$ac_dir/uninstall::
450 451 452
	\$(RM) \$(DESTDIR)\$(dlldir)/lib$ac_implib.$STATIC_IMPLIBEXT"
        fi

453
        if test -n "$CROSSTARGET"
454
        then
455
            wine_fn_append_rule \
456
"__builddeps__: $ac_file.cross.a
457 458
$ac_file.cross.a: $ac_dir/Makefile dummy
	@cd $ac_dir && \$(MAKE) lib$ac_implib.cross.a"
459 460
        fi

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

484
        if test "$ac_name" != "$ac_implib"
485
        then
486
            wine_fn_append_rule \
487 488
"__builddeps__: dlls/lib$ac_implib.$IMPLIBEXT
dlls/lib$ac_implib.$IMPLIBEXT: $ac_file.$IMPLIBEXT
489
	\$(RM) \$[@] && \$(LN_S) $ac_name/lib$ac_implib.$IMPLIBEXT \$[@]
490 491
clean::
	\$(RM) dlls/lib$ac_implib.$IMPLIBEXT"
492
            if test -n "$CROSSTARGET"
493
            then
494
                wine_fn_append_rule \
495 496
"__builddeps__: dlls/lib$ac_implib.cross.a
dlls/lib$ac_implib.cross.a: $ac_file.cross.a
497 498 499
	\$(RM) \$[@] && \$(LN_S) $ac_name/lib$ac_implib.cross.a \$[@]
clean::
	\$(RM) dlls/lib$ac_implib.cross.a"
500
            fi
501 502 503 504 505 506
        fi
    fi
}

wine_fn_config_program ()
{
507 508
    ac_name=$[1]
    ac_dir=programs/$ac_name
509
    ac_enable=$[2]
510
    ac_flags=$[3]
511 512 513 514 515 516 517
    ac_program=$ac_name

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

518
    ac_clean=
519 520 521
    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"
522
    test -n "$DLLEXT" || ac_clean="$ac_clean $ac_dir/$ac_program"
523

524
    AS_VAR_IF([$ac_enable],[no],[wine_fn_disabled_rules $ac_clean; return])
525

526
    wine_fn_all_rules Make.rules.in
527
    wine_fn_clean_rules $ac_clean
528
    wine_fn_append_rule "$ac_dir: __builddeps__"
529
    wine_fn_pot_rules
530

531
    wine_fn_has_flag install || return
532
    wine_fn_append_rule \
533 534 535
".PHONY: $ac_dir/install $ac_dir/uninstall
install install-lib:: $ac_dir/install
__uninstall__: $ac_dir/uninstall"
536 537

    if test -n "$DLLEXT"
538
    then
539
        wine_fn_append_rule \
540
"$ac_dir/install:: $ac_dir \$(DESTDIR)\$(dlldir) \$(DESTDIR)\$(fakedlldir)
541
	\$(INSTALL_PROGRAM) $ac_dir/$ac_program$DLLEXT \$(DESTDIR)\$(dlldir)/$DLLPREFIX$ac_program$DLLEXT
542
	\$(INSTALL_DATA) $ac_dir/$ac_program.fake \$(DESTDIR)\$(fakedlldir)/$ac_program
543
$ac_dir/uninstall::
544
	\$(RM) \$(DESTDIR)\$(dlldir)/$DLLPREFIX$ac_program$DLLEXT \$(DESTDIR)\$(fakedlldir)/$ac_program"
545

546
        if test -z "$with_wine64" && wine_fn_has_flag installbin
547
        then
548
            wine_fn_append_rule \
549
"$ac_dir/install:: __tooldeps__ \$(DESTDIR)\$(bindir)
550
	\$(INSTALL_SCRIPT) \$(TOOLSDIR)/tools/wineapploader \$(DESTDIR)\$(bindir)/$ac_name
551
$ac_dir/uninstall::
552
	\$(RM) \$(DESTDIR)\$(bindir)/$ac_name"
553 554
        fi
    else
555
        wine_fn_append_rule \
556
"$ac_dir/install:: $ac_dir \$(DESTDIR)\$(bindir)
557
	\$(INSTALL_PROGRAM) $ac_dir/$ac_program \$(DESTDIR)\$(bindir)/$ac_program
558
$ac_dir/uninstall::
559
	\$(RM) \$(DESTDIR)\$(bindir)/$ac_program"
560 561
    fi

562
    if test -z "$with_wine64" && wine_fn_has_flag manpage
563
    then
564
        wine_fn_append_rule \
565
"$ac_dir/install:: $ac_dir \$(DESTDIR)\$(mandir)/man\$(prog_manext)
566
	\$(INSTALL_DATA) $ac_dir/$ac_name.man \$(DESTDIR)\$(mandir)/man\$(prog_manext)/$ac_name.\$(prog_manext)
567
$ac_dir/uninstall::
568
	\$(RM) \$(DESTDIR)\$(mandir)/man\$(prog_manext)/$ac_name.\$(prog_manext)"
569
    fi
570 571
}

572 573 574 575
wine_fn_config_test ()
{
    ac_dir=$[1]
    ac_name=$[2]
576
    ac_flags=$[3]
577 578

    ac_clean=
579
    test -n "$CROSSTARGET" && ac_clean=`expr $ac_dir/${ac_name} : "\\(.*\\)_test"`_crosstest.exe
580
    test -n "$DLLEXT" || ac_clean="$ac_dir/${ac_name}.exe $ac_dir/${ac_name}-stripped.exe"
581 582
    ac_clean="$ac_clean $ac_dir/testlist.c"

583
    AS_VAR_IF([enable_tests],[no],[wine_fn_disabled_rules $ac_clean; return])
584

585
    wine_fn_append_file ALL_TEST_RESOURCES $ac_name.res
586
    wine_fn_all_rules Make.rules.in
587
    wine_fn_clean_rules $ac_clean
588

589 590
    wine_fn_append_rule \
"$ac_dir: programs/winetest/Makefile __builddeps__
591
programs/winetest: $ac_dir
592 593 594
check test: $ac_dir/test
.PHONY: $ac_dir/test
$ac_dir/test: dummy
595 596
	@cd $ac_dir && \$(MAKE) test
testclean::
597 598
	\$(RM) $ac_dir/*.ok"

599
        if test -n "$CROSSTARGET"
600
        then
601
            wine_fn_append_rule \
602 603 604
"crosstest: $ac_dir/crosstest
.PHONY: $ac_dir/crosstest
$ac_dir/crosstest: $ac_dir/Makefile __builddeps__ dummy
605
	@cd $ac_dir && \$(MAKE) crosstest"
606
        fi
607 608 609 610 611
}

wine_fn_config_tool ()
{
    ac_dir=$[1]
612
    ac_flags=$[2]
613
    AS_VAR_IF([enable_tools],[no],[return])
614

615 616 617
    wine_fn_all_rules
    wine_fn_install_rules
    wine_fn_clean_rules
618

619 620
    wine_fn_append_rule "__tooldeps__: $ac_dir"
    wine_fn_append_rule "$ac_dir: libs/port"
621
    case $ac_dir in
622
      tools/winebuild) wine_fn_append_rule "\$(WINEBUILD): $ac_dir" ;;
623
    esac
624 625 626 627 628 629
}

wine_fn_config_makerules ()
{
    ac_rules=$[1]
    ac_deps=$[2]
630
    wine_fn_append_rule \
631 632 633 634 635 636 637 638
"$ac_rules: $ac_rules.in $ac_deps config.status
	@./config.status $ac_rules
distclean::
	\$(RM) $ac_rules"
}

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 651
	\$(RM) $ac_links"
    test -n "$ac_linkdir" || return
652
    wine_fn_append_rule "$ac_linkdir/Makefile $ac_linkdir/depend: $ac_links"
653 654
}

655
if test -z "$CROSSTARGET"
656
then
657
    wine_fn_append_rule \
658 659 660
"crosstest:
	@echo \"crosstest is not supported (mingw not installed?)\" && false"
fi])
661 662 663 664 665 666 667 668 669

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
670
dnl Usage: WINE_APPEND_RULE(rule)
671
dnl
672
AC_DEFUN([WINE_APPEND_RULE],[AC_REQUIRE([WINE_CONFIG_HELPERS])wine_fn_append_rule "$1"])
673

674
dnl **** Create nonexistent directories from config.status ****
675 676 677 678
dnl
dnl Usage: WINE_CONFIG_EXTRA_DIR(dirname)
dnl
AC_DEFUN([WINE_CONFIG_EXTRA_DIR],
679
[AC_CONFIG_COMMANDS([$1],[test -d "$1" || { AC_MSG_NOTICE([creating $1]); AS_MKDIR_P("$1"); }])])
680

681 682
dnl **** Create symlinks from config.status ****
dnl
683
dnl Usage: WINE_CONFIG_SYMLINK(target,src,files,enable,srcfile)
684
dnl
685
AC_DEFUN([WINE_CONFIG_SYMLINK],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
686 687 688 689 690 691 692
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
])])
693

694 695 696 697
dnl **** Create a make rules file from config.status ****
dnl
dnl Usage: WINE_CONFIG_MAKERULES(file,var,deps)
dnl
698
AC_DEFUN([WINE_CONFIG_MAKERULES],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
699
wine_fn_config_makerules $1 $3
700 701 702 703 704 705
$2=$1
AC_SUBST_FILE([$2])dnl
AC_CONFIG_FILES([$1])])

dnl **** Create a makefile from config.status ****
dnl
706
dnl Usage: WINE_CONFIG_MAKEFILE(file,enable,flags)
707
dnl
708
AC_DEFUN([WINE_CONFIG_MAKEFILE],[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_makefile [$1] ac_enable [$3]dnl
713
AS_VAR_POPDEF([ac_enable])])
714

715 716
dnl **** Create a dll makefile from config.status ****
dnl
717
dnl Usage: WINE_CONFIG_DLL(name,enable,flags,implib)
718
dnl
719
AC_DEFUN([WINE_CONFIG_DLL],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
720
AS_VAR_PUSHDEF([ac_enable],m4_default([$2],[enable_]$1))dnl
721 722
m4_append_uniq([_AC_USER_OPTS],ac_enable,[
])dnl
723
wine_fn_config_dll [$1] ac_enable [$3] [$4]dnl
724
AS_VAR_POPDEF([ac_enable])])
725 726 727

dnl **** Create a program makefile from config.status ****
dnl
728
dnl Usage: WINE_CONFIG_PROGRAM(name,enable,flags)
729
dnl
730
AC_DEFUN([WINE_CONFIG_PROGRAM],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
731
AS_VAR_PUSHDEF([ac_enable],m4_default([$2],[enable_]$1))dnl
732 733
m4_append_uniq([_AC_USER_OPTS],ac_enable,[
])dnl
734
wine_fn_config_program [$1] ac_enable [$3]dnl
735
AS_VAR_POPDEF([ac_enable])])
736 737 738

dnl **** Create a test makefile from config.status ****
dnl
739
dnl Usage: WINE_CONFIG_TEST(dir,flags)
740
dnl
741 742 743
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
744
wine_fn_config_test $1 ac_name[]ac_suffix [$2]dnl
745
m4_popdef([ac_suffix])dnl
746
m4_popdef([ac_name])])
747 748 749

dnl **** Create a static lib makefile from config.status ****
dnl
750
dnl Usage: WINE_CONFIG_LIB(name,flags)
751
dnl
752
AC_DEFUN([WINE_CONFIG_LIB],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
753
wine_fn_config_lib [$1] [$2]])
754

755 756
dnl **** Create a tool makefile from config.status ****
dnl
757
dnl Usage: WINE_CONFIG_TOOL(name,flags)
758 759
dnl
AC_DEFUN([WINE_CONFIG_TOOL],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
760 761
m4_append_uniq([_AC_USER_OPTS],[enable_tools],[
])dnl
762
wine_fn_config_tool [$1] [$2]])
763

764 765 766
dnl **** Add a message to the list displayed at the end ****
dnl
dnl Usage: WINE_NOTICE(notice)
767
dnl Usage: WINE_NOTICE_WITH(with_flag, test, notice)
768
dnl Usage: WINE_WARNING(warning)
769
dnl Usage: WINE_WARNING_WITH(with_flag, test, warning)
770 771
dnl Usage: WINE_PRINT_MESSAGES
dnl
772 773
AC_DEFUN([WINE_NOTICE],[AS_VAR_APPEND([wine_notices],["|$1"])])
AC_DEFUN([WINE_WARNING],[AS_VAR_APPEND([wine_warnings],["|$1"])])
774 775 776 777 778 779 780 781 782 783 784 785 786 787

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

789 790 791 792 793 794
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])])

795
AC_DEFUN([WINE_PRINT_MESSAGES],[ac_save_IFS="$IFS"
796 797
if test "x$wine_notices != "x; then
    echo >&AS_MESSAGE_FD
798
    IFS="|"
799
    for msg in $wine_notices; do
800
        IFS="$ac_save_IFS"
801 802 803 804 805
        if test -n "$msg"; then
            AC_MSG_NOTICE([$msg])
        fi
    done
fi
806
IFS="|"
807
for msg in $wine_warnings; do
808
    IFS="$ac_save_IFS"
809 810 811 812 813 814 815
    if test -n "$msg"; then
        echo >&2
        AC_MSG_WARN([$msg])
    fi
done
IFS="$ac_save_IFS"])

816 817 818
dnl Local Variables:
dnl compile-command: "autoreconf --warnings=all"
dnl End: