aclocal.m4 23.2 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

dnl **** Get the ldd program name; used by WINE_GET_SONAME ****
dnl
dnl Usage: WINE_PATH_LDD
dnl
AC_DEFUN([WINE_PATH_LDD],[AC_PATH_PROG(LDD,ldd,true,/sbin:/usr/sbin:$PATH)])

dnl **** Extract the soname of a library ****
dnl
33
dnl Usage: WINE_CHECK_SONAME(library, function, [action-if-found, [action-if-not-found, [other_libraries, [pattern]]]])
34
dnl
35
AC_DEFUN([WINE_CHECK_SONAME],
36 37
[AC_REQUIRE([WINE_PATH_LDD])dnl
AS_VAR_PUSHDEF([ac_Lib],[ac_cv_lib_soname_$1])dnl
38 39
m4_pushdef([ac_lib_pattern],m4_default([$6],[lib$1]))dnl
AC_MSG_CHECKING([for -l$1])
40
AC_CACHE_VAL(ac_Lib,
41 42
[ac_check_soname_save_LIBS=$LIBS
LIBS="-l$1 $5 $LIBS"
43
  AC_LINK_IFELSE([AC_LANG_CALL([], [$2])],
44
  [case "$LIBEXT" in
45
    dll) AS_VAR_SET(ac_Lib,[`$ac_cv_path_LDD conftest.exe | grep "$1" | sed -e "s/dll.*/dll/"';2,$d'`]) ;;
46 47
    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'`]) ;;
    *) AS_VAR_SET(ac_Lib,[`$ac_cv_path_LDD conftest$ac_exeext | grep "ac_lib_pattern\\.$LIBEXT" | sed -e "s/^.*\(ac_lib_pattern\.$LIBEXT[[^	 ]]*\).*$/\1/"';2,$d'`]) ;;
48
  esac])
49
  LIBS=$ac_check_soname_save_LIBS])dnl
50
AS_IF([test "x]AS_VAR_GET(ac_Lib)[" = "x"],
51 52
      [AC_MSG_RESULT([not found])
       $4],
53 54
      [AC_MSG_RESULT(AS_VAR_GET(ac_Lib))
       AC_DEFINE_UNQUOTED(AS_TR_CPP(SONAME_LIB$1),["]AS_VAR_GET(ac_Lib)["],
55 56 57
                          [Define to the soname of the lib$1 library.])
       $3])dnl
m4_popdef([ac_lib_pattern])dnl
58
AS_VAR_POPDEF([ac_Lib])])
59 60 61 62 63 64

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],
65
[AC_LINK_IFELSE([AC_LANG_PROGRAM([[$2]],[[asm($1); $3]])],[$4],[$5])])
66 67 68 69 70

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
71 72
dnl The default action-if-yes is to append the flags to EXTRACFLAGS.
dnl
73
AC_DEFUN([WINE_TRY_CFLAGS],
74 75
[AS_VAR_PUSHDEF([ac_var], ac_cv_cflags_[[$1]])dnl
AC_CACHE_CHECK([whether the compiler supports $1], ac_var,
76 77
[ac_wine_try_cflags_saved=$CFLAGS
CFLAGS="$CFLAGS $1"
78
AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(int argc, char **argv) { return 0; }]])],
79
               [AS_VAR_SET(ac_var,yes)], [AS_VAR_SET(ac_var,no)])
80
CFLAGS=$ac_wine_try_cflags_saved])
81 82 83
AS_IF([test AS_VAR_GET(ac_var) = yes],
      [m4_default([$2], [EXTRACFLAGS="$EXTRACFLAGS $1"])], [$3])dnl
AS_VAR_POPDEF([ac_var])])
84

85 86 87 88 89 90 91
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"
92
AC_LINK_IFELSE([AC_LANG_SOURCE([void myfunc() {}])],[$2],[$3])
93 94
CFLAGS=$ac_wine_try_cflags_saved])

95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110
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])])

111 112 113 114 115 116 117 118 119 120
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"])

121 122 123 124 125
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],
126 127
[case "$host_cpu" in
  i[[3456789]]86*)
128
    ac_prefix_list="m4_foreach([ac_wine_prefix],[w64-mingw32, pc-mingw32, mingw32msvc, mingw32],
129 130
                        m4_foreach([ac_wine_cpu],[i686,i586,i486,i386],[ac_wine_cpu-ac_wine_prefix-$2 ]))
                        mingw32-$2" ;;
131
  x86_64)
132 133
    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 ]))" ;;
134 135 136 137
  *)
    ac_prefix_list="" ;;
esac
AC_CHECK_PROGS([$1],[$ac_prefix_list],[$3],[$4])])
138 139


140 141 142 143 144
dnl **** Define helper functions for creating config.status files ****
dnl
dnl Usage: AC_REQUIRE([WINE_CONFIG_HELPERS])
dnl
AC_DEFUN([WINE_CONFIG_HELPERS],
145 146 147 148 149
[ALL_MAKEFILE_DEPENDS="
# Rules automatically generated by configure

.INIT: Makefile
.MAKEFILEDEPS:
150
all: Makefile
151
Makefile: Makefile.in Make.vars.in Make.rules config.status
152
	@./config.status Make.tmp Makefile"
153

154
ALL_POT_FILES=""
155
AC_SUBST(ALL_TEST_RESOURCES,"")
156 157

wine_fn_append_file ()
158 159 160
{
    AS_VAR_APPEND($[1]," \\$as_nl	$[2]")
}
161

162 163 164
wine_fn_append_rule ()
{
    AS_VAR_APPEND($[1],"$as_nl$[2]")
165 166
}

167 168 169 170 171
wine_fn_has_flag ()
{
    expr ",$[2]," : ".*,$[1],.*" >/dev/null
}

172 173
wine_fn_all_dir_rules ()
{
174 175
    ac_dir=$[1]
    ac_alldeps=$[2]
176 177
    ac_makedep="\$(MAKEDEP)"
    ac_input=Make.vars.in:$ac_dir/Makefile.in
178
    if test $ac_dir != tools
179 180
    then
        dnl makedep is in tools so tools makefile cannot depend on it
181
        ac_alldeps="$[2] $ac_makedep"
182
    fi
183 184 185 186
    case $[2] in
      *.in) ac_input=$ac_input:$[2] ;;
      *) ac_makedep="$[2] $ac_makedep" ;;
    esac
187

188
    wine_fn_append_file ALL_DIRS $ac_dir
189
    wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
190 191 192 193 194 195
"__clean__: $ac_dir/__clean__
.PHONY: $ac_dir/__clean__
$ac_dir/__clean__: $ac_dir/Makefile
	@cd $ac_dir && \$(MAKE) clean
	\$(RM) $ac_dir/Makefile
$ac_dir/Makefile: $ac_dir/Makefile.in Make.vars.in config.status $ac_alldeps
196
	@./config.status --file $ac_dir/Makefile:$ac_input && cd $ac_dir && \$(MAKE) depend
197 198
depend: $ac_dir/__depend__
.PHONY: $ac_dir/__depend__
199 200
$ac_dir/__depend__: $ac_makedep dummy
	@./config.status --file $ac_dir/Makefile:$ac_input && cd $ac_dir && \$(MAKE) depend"
201 202
}

203 204 205 206 207
wine_fn_pot_rules ()
{
    ac_dir=$[1]
    ac_flags=$[2]

208
    test "x$with_gettextpo" = xyes || return
209 210 211 212 213 214 215 216 217 218 219 220 221 222 223

    if wine_fn_has_flag mc $ac_flags
    then
        wine_fn_append_file ALL_POT_FILES $ac_dir/msg.pot
        wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
"$ac_dir/msg.pot: $ac_dir/Makefile dummy
	@cd $ac_dir && \$(MAKE) msg.pot
$ac_dir/msg.pot: tools/wmc include"
    fi
    if wine_fn_has_flag po $ac_flags
    then
        wine_fn_append_file ALL_POT_FILES $ac_dir/rsrc.pot
        wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
"$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
224
$ac_dir/rsrc.pot: tools/wrc include"
225 226 227
    fi
}

228 229 230
wine_fn_config_makefile ()
{
    ac_dir=$[1]
231
    ac_enable=$[2]
232
    ac_flags=$[3]
233
    ac_rules=$[4]
234
    AS_VAR_IF([$ac_enable],[no],[return 0])
235

236
    wine_fn_all_dir_rules $ac_dir ${ac_rules:-Make.rules}
237
    wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
238 239
"all: $ac_dir
.PHONY: $ac_dir
240
$ac_dir: $ac_dir/Makefile dummy
241 242 243 244 245
	@cd $ac_dir && \$(MAKE)"

    wine_fn_has_flag install-lib $ac_flags || wine_fn_has_flag install-dev $ac_flags || return

    wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
246 247
".PHONY: $ac_dir/__install__ $ac_dir/__uninstall__
$ac_dir/__install__:: $ac_dir
248
	@cd $ac_dir && \$(MAKE) install
249 250 251 252
$ac_dir/__uninstall__:: $ac_dir/Makefile
	@cd $ac_dir && \$(MAKE) uninstall
install:: $ac_dir/__install__
__uninstall__: $ac_dir/__uninstall__"
253 254 255 256

    if wine_fn_has_flag install-lib $ac_flags
    then
        wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
257 258 259 260
".PHONY: $ac_dir/__install-lib__
$ac_dir/__install-lib__:: $ac_dir
	@cd $ac_dir && \$(MAKE) install-lib
install-lib:: $ac_dir/__install-lib__"
261 262 263 264 265
    fi

    if wine_fn_has_flag install-dev $ac_flags
    then
        wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
266 267 268 269
".PHONY: $ac_dir/__install-dev
$ac_dir/__install-dev__:: $ac_dir
	@cd $ac_dir && \$(MAKE) install-dev
install-dev:: $ac_dir/__install-dev__"
270
    fi
271 272 273 274 275
}

wine_fn_config_lib ()
{
    ac_name=$[1]
276
    ac_flags=$[2]
277
    ac_dir=dlls/$ac_name
278 279 280 281 282 283 284 285 286 287 288 289 290 291 292
    wine_fn_config_makefile $ac_dir enable_$ac_name "$ac_flags" dlls/Makeimplib.rules

    if wine_fn_has_flag install-dev $ac_flags
    then :
    else
        wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
".PHONY: $ac_dir/__install__ $ac_dir/__uninstall__
$ac_dir/__install__:: $ac_dir \$(DESTDIR)\$(dlldir)
	\$(INSTALL_DATA) $ac_dir/lib$ac_name.a \$(DESTDIR)\$(dlldir)/lib$ac_name.a
$ac_dir/__uninstall__::
	\$(RM) \$(DESTDIR)\$(dlldir)/lib$ac_name.a
install install-dev:: $ac_dir/__install__
__uninstall__: $ac_dir/__uninstall__"
    fi

293 294
    wine_fn_append_rule ALL_MAKEFILE_DEPENDS "__builddeps__: $ac_dir"
    wine_fn_append_rule ALL_MAKEFILE_DEPENDS "$ac_dir: tools/widl tools/winebuild tools/winegcc include"
295 296
}

297 298
wine_fn_config_dll ()
{
299 300
    ac_name=$[1]
    ac_dir=dlls/$ac_name
301
    ac_enable=$[2]
302
    ac_flags=$[3]
303
    ac_implib=${4:-$ac_name}
304
    ac_file=$ac_dir/lib$ac_implib
305
    ac_dll=$ac_name
306
    ac_deps="tools/widl tools/winebuild tools/winegcc include"
307 308
    ac_implibflags=""

309
    case $ac_name in
310
      *16) ac_implibflags=" -m16" ;;
311 312
      *.*) ;;
      *)   ac_dll=$ac_dll.dll ;;
313
    esac
314

315
    wine_fn_config_makefile $ac_dir $ac_enable "$ac_flags" dlls/Makedll.rules
316

317 318
    AS_VAR_IF([$ac_enable],[no],
              dnl enable_win16 is special in that it disables import libs too
319 320 321
              [test "$ac_enable" != enable_win16 || return 0
               wine_fn_has_flag implib $ac_flags && wine_fn_all_dir_rules $ac_dir dlls/Makedll.rules],

322
              [wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
323
"$ac_dir: __builddeps__
324
manpages htmlpages sgmlpages xmlpages:: $ac_dir/Makefile
325 326
	@cd $ac_dir && \$(MAKE) \$[@]"

327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350
        if wine_fn_has_flag install-lib $ac_flags
        then :
        else
            wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
".PHONY: $ac_dir/__install-lib__ $ac_dir/__uninstall__
install install-lib:: $ac_dir/__install-lib__
__uninstall__: $ac_dir/__uninstall__"
            if test -n "$DLLEXT"
            then
                wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
"$ac_dir/__install-lib__:: $ac_dir \$(DESTDIR)\$(dlldir) \$(DESTDIR)\$(fakedlldir)
	\$(INSTALL_PROGRAM) $ac_dir/$ac_dll$DLLEXT \$(DESTDIR)\$(dlldir)/$ac_dll$DLLEXT
	\$(INSTALL_DATA) $ac_dir/$ac_dll.fake \$(DESTDIR)\$(fakedlldir)/$ac_dll
$ac_dir/__uninstall__::
	\$(RM) \$(DESTDIR)\$(dlldir)/$ac_dll$DLLEXT \$(DESTDIR)\$(fakedlldir)/$ac_dll"
            else
                wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
"$ac_dir/__install-lib__:: $ac_dir \$(DESTDIR)\$(dlldir)
	\$(INSTALL_PROGRAM) $ac_dir/$ac_dll \$(DESTDIR)\$(dlldir)/$ac_dll
$ac_dir/__uninstall__::
	\$(RM) \$(DESTDIR)\$(dlldir)/$ac_dll"
            fi
        fi

351
        wine_fn_pot_rules $ac_dir $ac_flags])
352

353
    if wine_fn_has_flag staticimplib $ac_flags
354 355
    then
        wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
356 357
"__builddeps__: $ac_file.$IMPLIBEXT $ac_file.$STATIC_IMPLIBEXT
$ac_file.$IMPLIBEXT $ac_file.$STATIC_IMPLIBEXT $ac_file.cross.a: $ac_deps
358 359 360 361
$ac_file.def: $ac_dir/$ac_name.spec $ac_dir/Makefile
	@cd $ac_dir && \$(MAKE) lib$ac_implib.def
$ac_file.$STATIC_IMPLIBEXT: $ac_dir/Makefile dummy
	@cd $ac_dir && \$(MAKE) lib$ac_implib.$STATIC_IMPLIBEXT
362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378
.PHONY: $ac_dir/__install-dev__ $ac_dir/__uninstall__
$ac_dir/__install-dev__:: $ac_file.$IMPLIBEXT \$(DESTDIR)\$(dlldir)
	\$(INSTALL_DATA) $ac_file.$IMPLIBEXT \$(DESTDIR)\$(dlldir)/lib$ac_implib.$IMPLIBEXT
$ac_dir/__uninstall__::
	\$(RM) \$(DESTDIR)\$(dlldir)/lib$ac_implib.$IMPLIBEXT
install install-dev:: $ac_dir/__install-dev__
__uninstall__: $ac_dir/__uninstall__"

        if test "$IMPLIBEXT" != "$STATIC_IMPLIBEXT"
        then
            wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
"$ac_dir/__install-dev__:: $ac_file.$STATIC_IMPLIBEXT \$(DESTDIR)\$(dlldir) __builddeps__
	\$(INSTALL_DATA) $ac_file.$STATIC_IMPLIBEXT \$(DESTDIR)\$(dlldir)/lib$ac_implib.$STATIC_IMPLIBEXT
$ac_dir/__uninstall__::
	\$(RM) \$(DESTDIR)\$(dlldir)/lib$ac_implib.$STATIC_IMPLIBEXT"
        fi

379 380 381 382
        if test "x$CROSSTEST_DISABLE" = x
        then
            wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
"__builddeps__: $ac_file.cross.a
383 384
$ac_file.cross.a: $ac_dir/Makefile dummy
	@cd $ac_dir && \$(MAKE) lib$ac_implib.cross.a"
385 386
        fi

387
    elif wine_fn_has_flag implib $ac_flags
388 389
    then
        wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
390
"__builddeps__: $ac_file.$IMPLIBEXT
391 392 393 394
$ac_file.def: $ac_dir/$ac_name.spec $ac_dir/Makefile \$(WINEBUILD)
	\$(WINEBUILD) \$(TARGETFLAGS)$ac_implibflags -w --def -o \$[@] --export \$(srcdir)/$ac_dir/$ac_name.spec
$ac_file.a: $ac_dir/$ac_name.spec $ac_dir/Makefile \$(WINEBUILD)
	\$(WINEBUILD) \$(TARGETFLAGS)$ac_implibflags -w --implib -o \$[@] --export \$(srcdir)/$ac_dir/$ac_name.spec
395 396 397 398 399 400 401
.PHONY: $ac_dir/__install-dev__ $ac_dir/__uninstall__
$ac_dir/__install-dev__:: $ac_file.$IMPLIBEXT \$(DESTDIR)\$(dlldir)
	\$(INSTALL_DATA) $ac_file.$IMPLIBEXT \$(DESTDIR)\$(dlldir)/lib$ac_implib.$IMPLIBEXT
$ac_dir/__uninstall__::
	\$(RM) \$(DESTDIR)\$(dlldir)/lib$ac_implib.$IMPLIBEXT
install install-dev:: $ac_dir/__install-dev__
__uninstall__: $ac_dir/__uninstall__"
402 403 404 405
        if test "x$CROSSTEST_DISABLE" = x
        then
            wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
"__builddeps__: $ac_file.cross.a
406 407
$ac_file.cross.a: $ac_dir/$ac_name.spec $ac_dir/Makefile \$(WINEBUILD)
	\$(WINEBUILD) \$(CROSSTARGET:%=-b %)$ac_implibflags -w --implib -o \$[@] --export \$(srcdir)/$ac_dir/$ac_name.spec"
408
        fi
409

410
        if test "$ac_name" != "$ac_implib"
411 412
        then
            wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
413 414
"__builddeps__: dlls/lib$ac_implib.$IMPLIBEXT
dlls/lib$ac_implib.$IMPLIBEXT: $ac_file.$IMPLIBEXT
415
	\$(RM) \$[@] && \$(LN_S) $ac_name/lib$ac_implib.$IMPLIBEXT \$[@]
416 417
clean::
	\$(RM) dlls/lib$ac_implib.$IMPLIBEXT"
418 419 420 421 422
            if test "x$CROSSTEST_DISABLE" = x
            then
                wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
"__builddeps__: dlls/lib$ac_implib.cross.a
dlls/lib$ac_implib.cross.a: $ac_file.cross.a
423
	\$(RM) \$[@] && \$(LN_S) $ac_name/lib$ac_implib.cross.a \$[@]"
424
            fi
425 426 427 428 429 430
        fi
    fi
}

wine_fn_config_program ()
{
431 432
    ac_name=$[1]
    ac_dir=programs/$ac_name
433
    ac_enable=$[2]
434
    ac_flags=$[3]
435 436 437 438 439 440 441 442
    ac_program=$ac_name

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

    wine_fn_config_makefile $ac_dir $ac_enable "$ac_flags" programs/Makeprog.rules
443 444

    AS_VAR_IF([$ac_enable],[no],,[wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
445
"$ac_dir: __builddeps__"
446

447
    wine_fn_pot_rules $ac_dir $ac_flags
448

449
    wine_fn_has_flag install $ac_flags || return
450
    wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
451 452 453
".PHONY: $ac_dir/__install__ $ac_dir/__uninstall__
install install-lib:: $ac_dir/__install__
__uninstall__: $ac_dir/__uninstall__"
454 455

    if test -n "$DLLEXT"
456 457
    then
        wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
458 459 460 461 462 463 464 465 466
"$ac_dir/__install__:: $ac_dir \$(DESTDIR)\$(dlldir) \$(DESTDIR)\$(fakedlldir)
	\$(INSTALL_PROGRAM) $ac_dir/$ac_program$DLLEXT \$(DESTDIR)\$(dlldir)/$ac_program$DLLEXT
	\$(INSTALL_DATA) $ac_dir/$ac_program.fake \$(DESTDIR)\$(fakedlldir)/$ac_program
$ac_dir/__uninstall__::
	\$(RM) \$(DESTDIR)\$(dlldir)/$ac_program$DLLEXT \$(DESTDIR)\$(fakedlldir)/$ac_program"

        if test "x$enable_tools" != xno && wine_fn_has_flag installbin $ac_flags
        then
            wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
467
"$ac_dir/__install__:: tools \$(DESTDIR)\$(bindir)
468
	\$(INSTALL_SCRIPT) tools/wineapploader \$(DESTDIR)\$(bindir)/$ac_name
469
$ac_dir/__uninstall__::
470
	\$(RM) \$(DESTDIR)\$(bindir)/$ac_name"
471 472 473 474 475 476 477
        fi
    else
        wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
"$ac_dir/__install-lib__:: $ac_dir \$(DESTDIR)\$(dlldir)
	\$(INSTALL_PROGRAM) $ac_dir/$ac_program \$(DESTDIR)\$(dlldir)/$ac_program
$ac_dir/__uninstall__::
	\$(RM) \$(DESTDIR)\$(dlldir)/$ac_program"
478 479 480 481 482 483 484 485 486
    fi

    if test "x$enable_tools" != xno && wine_fn_has_flag manpage $ac_flags
    then
        wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
"$ac_dir/__install__:: $ac_dir \$(DESTDIR)\$(mandir)/man\$(prog_manext)
	\$(INSTALL_DATA) $ac_dir/$ac_name.man \$(DESTDIR)\$(mandir)/man\$(prog_manext)/$ac_name.\$(prog_manext)
$ac_dir/__uninstall__::
	\$(RM) \$(DESTDIR)\$(mandir)/man\$(prog_manext)/$ac_name.\$(prog_manext)"
487
    fi])
488 489
}

490 491 492 493
wine_fn_config_test ()
{
    ac_dir=$[1]
    ac_name=$[2]
494
    ac_flags=$[3]
495
    wine_fn_append_file ALL_TEST_RESOURCES $ac_name.res
496
    wine_fn_all_dir_rules $ac_dir Maketest.rules
497 498

    AS_VAR_IF([enable_tests],[no],,[wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
499
"all: $ac_dir
500
.PHONY: $ac_dir
501
$ac_dir: $ac_dir/Makefile programs/winetest/Makefile __builddeps__ dummy
502
	@cd $ac_dir && \$(MAKE)
503
programs/winetest: $ac_dir
504
check test: $ac_dir/__test__
505
.PHONY: $ac_dir/__test__
506
$ac_dir/__test__: dummy
507 508
	@cd $ac_dir && \$(MAKE) test
testclean::
509 510 511 512 513 514 515 516 517 518
	\$(RM) $ac_dir/*.ok"

        if test "x$CROSSTEST_DISABLE" = x
        then
            wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
"crosstest: $ac_dir/__crosstest__
.PHONY: $ac_dir/__crosstest__
$ac_dir/__crosstest__: $ac_dir/Makefile __builddeps__ dummy
	@cd $ac_dir && \$(MAKE) crosstest"
        fi])
519 520 521 522 523
}

wine_fn_config_tool ()
{
    ac_dir=$[1]
524
    ac_flags=$[2]
525 526
    AS_VAR_IF([enable_tools],[no],[return 0])

527
    wine_fn_config_makefile $ac_dir enable_tools $ac_flags
528

529 530
    wine_fn_append_rule ALL_MAKEFILE_DEPENDS "__tooldeps__: $ac_dir"
    wine_fn_append_rule ALL_MAKEFILE_DEPENDS "$ac_dir: libs/port"
531 532 533
    case $ac_dir in
      tools/winebuild) wine_fn_append_rule ALL_MAKEFILE_DEPENDS "\$(WINEBUILD): $ac_dir" ;;
    esac
534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554
}

wine_fn_config_makerules ()
{
    ac_rules=$[1]
    ac_deps=$[2]
    wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
"$ac_rules: $ac_rules.in $ac_deps config.status
	@./config.status $ac_rules
distclean::
	\$(RM) $ac_rules"
}

wine_fn_config_symlink ()
{
    ac_link=$[1]
    wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
"$ac_link:
	@./config.status $ac_link
distclean::
	\$(RM) $ac_link"
555 556 557 558 559 560 561 562
}

if test "x$CROSSTEST_DISABLE" != x
then
    wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
"crosstest:
	@echo \"crosstest is not supported (mingw not installed?)\" && false"
fi])
563 564 565 566 567 568 569 570 571 572 573 574 575

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

576
dnl **** Create nonexistent directories from config.status ****
577 578 579 580
dnl
dnl Usage: WINE_CONFIG_EXTRA_DIR(dirname)
dnl
AC_DEFUN([WINE_CONFIG_EXTRA_DIR],
581
[AC_CONFIG_COMMANDS([$1],[test -d "$1" || { AC_MSG_NOTICE([creating $1]); AS_MKDIR_P("$1"); }])])
582

583 584
dnl **** Create symlinks from config.status ****
dnl
585
dnl Usage: WINE_CONFIG_SYMLINK(name,target,enable)
586
dnl
587
AC_DEFUN([WINE_CONFIG_SYMLINK],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
588 589 590 591
m4_ifval([$3],[if test "x$[$3]" != xno; then
])AC_CONFIG_LINKS([$1:]m4_default([$2],[$1]))dnl
m4_if([$2],,[test "$srcdir" = "." || ])wine_fn_config_symlink $1[]m4_ifval([$3],[
fi])])
592

593 594 595 596
dnl **** Create a make rules file from config.status ****
dnl
dnl Usage: WINE_CONFIG_MAKERULES(file,var,deps)
dnl
597
AC_DEFUN([WINE_CONFIG_MAKERULES],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
598
wine_fn_config_makerules $1 $3
599 600 601 602 603 604
$2=$1
AC_SUBST_FILE([$2])dnl
AC_CONFIG_FILES([$1])])

dnl **** Create a makefile from config.status ****
dnl
605
dnl Usage: WINE_CONFIG_MAKEFILE(file,enable,flags)
606
dnl
607
AC_DEFUN([WINE_CONFIG_MAKEFILE],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
608
AS_VAR_PUSHDEF([ac_enable],m4_default([$2],[enable_]$1))dnl
609
wine_fn_config_makefile [$1] ac_enable [$3]dnl
610
AS_VAR_POPDEF([ac_enable])])
611

612 613
dnl **** Create a dll makefile from config.status ****
dnl
614
dnl Usage: WINE_CONFIG_DLL(name,enable,flags,implib)
615
dnl
616
AC_DEFUN([WINE_CONFIG_DLL],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
617
AS_VAR_PUSHDEF([ac_enable],m4_default([$2],[enable_]$1))dnl
618
wine_fn_config_dll [$1] ac_enable [$3] [$4]dnl
619
AS_VAR_POPDEF([ac_enable])])
620 621 622

dnl **** Create a program makefile from config.status ****
dnl
623
dnl Usage: WINE_CONFIG_PROGRAM(name,enable,flags)
624
dnl
625
AC_DEFUN([WINE_CONFIG_PROGRAM],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
626 627
AS_VAR_PUSHDEF([ac_enable],m4_default([$2],[enable_]$1))dnl
wine_fn_config_program [$1] ac_enable [$3]dnl
628
AS_VAR_POPDEF([ac_enable])])
629 630 631

dnl **** Create a test makefile from config.status ****
dnl
632
dnl Usage: WINE_CONFIG_TEST(dir,flags)
633
dnl
634 635 636
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
637
wine_fn_config_test $1 ac_name[]ac_suffix [$2]dnl
638
m4_popdef([ac_suffix])dnl
639
m4_popdef([ac_name])])
640 641 642

dnl **** Create a static lib makefile from config.status ****
dnl
643
dnl Usage: WINE_CONFIG_LIB(name,flags)
644
dnl
645
AC_DEFUN([WINE_CONFIG_LIB],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
646
wine_fn_config_lib [$1] [$2]])
647

648 649
dnl **** Create a tool makefile from config.status ****
dnl
650
dnl Usage: WINE_CONFIG_TOOL(name,flags)
651 652
dnl
AC_DEFUN([WINE_CONFIG_TOOL],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
653
wine_fn_config_tool [$1] [$2]])
654

655 656 657
dnl **** Add a message to the list displayed at the end ****
dnl
dnl Usage: WINE_NOTICE(notice)
658
dnl Usage: WINE_NOTICE_WITH(with_flag, test, notice)
659
dnl Usage: WINE_WARNING(warning)
660
dnl Usage: WINE_WARNING_WITH(with_flag, test, warning)
661 662
dnl Usage: WINE_PRINT_MESSAGES
dnl
663 664
AC_DEFUN([WINE_NOTICE],[AS_VAR_APPEND([wine_notices],["|$1"])])
AC_DEFUN([WINE_WARNING],[AS_VAR_APPEND([wine_warnings],["|$1"])])
665 666 667 668 669 670 671 672 673 674 675 676 677 678

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

680 681 682 683 684 685
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])])

686
AC_DEFUN([WINE_PRINT_MESSAGES],[ac_save_IFS="$IFS"
687 688
if test "x$wine_notices != "x; then
    echo >&AS_MESSAGE_FD
689
    IFS="|"
690
    for msg in $wine_notices; do
691
        IFS="$ac_save_IFS"
692 693 694 695 696
        if test -n "$msg"; then
            AC_MSG_NOTICE([$msg])
        fi
    done
fi
697
IFS="|"
698
for msg in $wine_warnings; do
699
    IFS="$ac_save_IFS"
700 701 702 703 704 705 706
    if test -n "$msg"; then
        echo >&2
        AC_MSG_WARN([$msg])
    fi
done
IFS="$ac_save_IFS"])

707 708 709
dnl Local Variables:
dnl compile-command: "autoreconf --warnings=all"
dnl End: