diff --git a/Makefile.in b/Makefile.in index 04c7dd0eb0..a5cbbaf48e 100644 --- a/Makefile.in +++ b/Makefile.in @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.13.4 from Makefile.am. +# Makefile.in generated by automake 1.14.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. @@ -478,8 +478,8 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) $(am__aclocal_m4_deps): config.h: stamp-h1 - @if test ! -f $@; then rm -f stamp-h1; else :; fi - @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi + @test -f $@ || rm -f stamp-h1 + @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1 stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status @rm -f stamp-h1 @@ -692,10 +692,16 @@ dist-xz: distdir $(am__post_remove_distdir) dist-tarZ: distdir + @echo WARNING: "Support for shar distribution archives is" \ + "deprecated." >&2 + @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__post_remove_distdir) dist-shar: distdir + @echo WARNING: "Support for distribution archives compressed with" \ + "legacy program 'compress' is deprecated." >&2 + @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz $(am__post_remove_distdir) @@ -737,9 +743,10 @@ distcheck: dist && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && am__cwd=`pwd` \ && $(am__cd) $(distdir)/_build \ - && ../configure --srcdir=.. --prefix="$$dc_install_base" \ + && ../configure \ $(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \ + --srcdir=.. --prefix="$$dc_install_base" \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ diff --git a/acceptance-tests/Makefile.in.REMOVED.git-id b/acceptance-tests/Makefile.in.REMOVED.git-id index bae9d852b6..0f53963e7d 100644 --- a/acceptance-tests/Makefile.in.REMOVED.git-id +++ b/acceptance-tests/Makefile.in.REMOVED.git-id @@ -1 +1 @@ -e59629639b73555931e60aa95d850ac5dd3e4a5e \ No newline at end of file +24a4c4858927915808d8266273160d32e9ac9e4d \ No newline at end of file diff --git a/aclocal.m4 b/aclocal.m4 index a7f77d725a..ae4bfc4914 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -1,4 +1,4 @@ -# generated automatically by aclocal 1.13.4 -*- Autoconf -*- +# generated automatically by aclocal 1.14.1 -*- Autoconf -*- # Copyright (C) 1996-2013 Free Software Foundation, Inc. @@ -32,10 +32,10 @@ To do so, use the procedure documented by the package, typically 'autoreconf'.]) # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], -[am__api_version='1.13' +[am__api_version='1.14' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. -m4_if([$1], [1.13.4], [], +m4_if([$1], [1.14.1], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) @@ -51,7 +51,7 @@ m4_define([_AM_AUTOCONF_VERSION], []) # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], -[AM_AUTOMAKE_VERSION([1.13.4])dnl +[AM_AUTOMAKE_VERSION([1.14.1])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) @@ -438,6 +438,12 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], # This macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. +dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. +m4_define([AC_PROG_CC], +m4_defn([AC_PROG_CC]) +[_AM_PROG_CC_C_O +]) + # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- @@ -546,7 +552,48 @@ dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. AC_CONFIG_COMMANDS_PRE(dnl [m4_provide_if([_AM_COMPILER_EXEEXT], [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl -]) + +# POSIX will say in a future version that running "rm -f" with no argument +# is OK; and we want to be able to make that assumption in our Makefile +# recipes. So use an aggressive probe to check that the usage we want is +# actually supported "in the wild" to an acceptable degree. +# See automake bug#10828. +# To make any issue more visible, cause the running configure to be aborted +# by default if the 'rm' program in use doesn't match our expectations; the +# user can still override this though. +if rm -f && rm -fr && rm -rf; then : OK; else + cat >&2 <<'END' +Oops! + +Your 'rm' program seems unable to run without file operands specified +on the command line, even when the '-f' option is present. This is contrary +to the behaviour of most rm programs out there, and not conforming with +the upcoming POSIX standard: + +Please tell bug-automake@gnu.org about your system, including the value +of your $PATH and any error possibly output before this message. This +can help us improve future automake versions. + +END + if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then + echo 'Configuration will proceed anyway, since you have set the' >&2 + echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 + echo >&2 + else + cat >&2 <<'END' +Aborting the configuration process, to ensure you take notice of the issue. + +You can download and install GNU coreutils to get an 'rm' implementation +that behaves properly: . + +If you want to complete the configuration process using your problematic +'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM +to "yes", and re-run configure. + +END + AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) + fi +fi]) dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further @@ -554,7 +601,6 @@ dnl mangled by Autoconf and run in a shell conditional statement. m4_define([_AC_COMPILER_EXEEXT], m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) - # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. @@ -702,38 +748,6 @@ AC_MSG_RESULT([$_am_result]) rm -f confinc confmf ]) -# Copyright (C) 1999-2013 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_PROG_CC_C_O -# -------------- -# Like AC_PROG_CC_C_O, but changed for automake. -AC_DEFUN([AM_PROG_CC_C_O], -[AC_REQUIRE([AC_PROG_CC_C_O])dnl -AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -AC_REQUIRE_AUX_FILE([compile])dnl -# FIXME: we rely on the cache variable name because -# there is no other way. -set dummy $CC -am_cc=`echo $[2] | sed ['s/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/']` -eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o -if test "$am_t" != yes; then - # Losing compiler, so override with the script. - # FIXME: It is wrong to rewrite CC. - # But if we don't then we get into trouble of one sort or another. - # A longer-term fix would be to have automake use am__CC in this case, - # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" - CC="$am_aux_dir/compile $CC" -fi -dnl Make sure AC_PROG_CC is never called again, or it will override our -dnl setting of CC. -m4_define([AC_PROG_CC], - [m4_fatal([AC_PROG_CC cannot be called after AM_PROG_CC_C_O])]) -]) - # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- # Copyright (C) 1997-2013 Free Software Foundation, Inc. @@ -804,6 +818,53 @@ AC_DEFUN([_AM_SET_OPTIONS], AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) +# Copyright (C) 1999-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_PROG_CC_C_O +# --------------- +# Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC +# to automatically call this. +AC_DEFUN([_AM_PROG_CC_C_O], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([compile])dnl +AC_LANG_PUSH([C])dnl +AC_CACHE_CHECK( + [whether $CC understands -c and -o together], + [am_cv_prog_cc_c_o], + [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i]) +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +AC_LANG_POP([C])]) + +# For backward compatibility. +AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) + # Copyright (C) 2001-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation diff --git a/autogen.sh b/autogen.sh index d4a6ecaccb..4b139ba5e4 100755 --- a/autogen.sh +++ b/autogen.sh @@ -30,18 +30,18 @@ fi DIE=1 } -if [ -z "$LIBTOOL" ]; then - LIBTOOL=`which glibtool 2>/dev/null` - if [ ! -x "$LIBTOOL" ]; then - LIBTOOL=`which libtool` +if [ -z "$LIBTOOLIZE" ]; then + LIBTOOLIZE=`which glibtoolize 2>/dev/null` + if [ ! -x "$LIBTOOLIZE" ]; then + LIBTOOLIZE=`which libtoolize` fi fi (grep "^AM_PROG_LIBTOOL" $srcdir/configure.ac >/dev/null) && { - ($LIBTOOL --version) < /dev/null > /dev/null 2>&1 || { + ($LIBTOOLIZE --version) < /dev/null > /dev/null 2>&1 || { echo - echo "**Error**: You must have \`libtool' installed to compile Mono." - echo "Get ftp://ftp.gnu.org/pub/gnu/libtool-1.2d.tar.gz" + echo "**Error**: You must have \`libtoolize' installed to compile Mono." + echo "Get ftp://ftp.gnu.org/gnu/libtool/libtool-1.2.tar.gz" echo "(or a newer version if it is available)" DIE=1 } @@ -98,7 +98,7 @@ esac if grep "^AM_PROG_LIBTOOL" configure.ac >/dev/null; then if test -z "$NO_LIBTOOLIZE" ; then echo "Running libtoolize..." - ${LIBTOOL}ize --force --copy + $LIBTOOLIZE --force --copy fi fi diff --git a/config.h.in b/config.h.in index 4706dedd1a..4d2f05eca5 100644 --- a/config.h.in +++ b/config.h.in @@ -990,9 +990,6 @@ /* Define if Unix sockets cannot be created in an anonymous namespace */ #undef NEED_LINK_UNLINK -/* Define to 1 if your C compiler doesn't accept -c and -o together. */ -#undef NO_MINUS_C_MINUS_O - /* Name of package */ #undef PACKAGE diff --git a/config.sub b/config.sub index c765b34b7b..9633db7046 100755 --- a/config.sub +++ b/config.sub @@ -2,7 +2,7 @@ # Configuration validation subroutine script. # Copyright 1992-2013 Free Software Foundation, Inc. -timestamp='2013-04-24' +timestamp='2013-08-10' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -257,7 +257,7 @@ case $basic_machine in | avr | avr32 \ | be32 | be64 \ | bfin \ - | c4x | clipper \ + | c4x | c8051 | clipper \ | d10v | d30v | dlx | dsp16xx \ | epiphany \ | fido | fr30 | frv \ @@ -372,7 +372,7 @@ case $basic_machine in | be32-* | be64-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* \ - | clipper-* | craynv-* | cydra-* \ + | c8051-* | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ @@ -794,7 +794,7 @@ case $basic_machine in os=-mingw64 ;; mingw32) - basic_machine=i386-pc + basic_machine=i686-pc os=-mingw32 ;; mingw32ce) @@ -830,7 +830,7 @@ case $basic_machine in basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ;; msys) - basic_machine=i386-pc + basic_machine=i686-pc os=-msys ;; mvs) @@ -1006,7 +1006,7 @@ case $basic_machine in ;; ppc64) basic_machine=powerpc64-unknown ;; - ppc64-* | ppc64p7-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` + ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little | ppc64-le | powerpc64-little) basic_machine=powerpc64le-unknown @@ -1546,6 +1546,9 @@ case $basic_machine in c4x-* | tic4x-*) os=-coff ;; + c8051-*) + os=-elf + ;; hexagon-*) os=-elf ;; diff --git a/configure.REMOVED.git-id b/configure.REMOVED.git-id index abf25c0324..a9ed83e726 100644 --- a/configure.REMOVED.git-id +++ b/configure.REMOVED.git-id @@ -1 +1 @@ -da368cb9ffc9b4bfa0f5e04be9f4f6089f689736 \ No newline at end of file +917c27a2a8b59452335a3e4e47dcd3bf88f60e5f \ No newline at end of file diff --git a/data/Makefile.in b/data/Makefile.in index 53b44a0070..4cb5c9c801 100644 --- a/data/Makefile.in +++ b/data/Makefile.in @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.13.4 from Makefile.am. +# Makefile.in generated by automake 1.14.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. diff --git a/data/net_2_0/Browsers/Makefile.in b/data/net_2_0/Browsers/Makefile.in index d95d1f34d7..65ecb3b076 100644 --- a/data/net_2_0/Browsers/Makefile.in +++ b/data/net_2_0/Browsers/Makefile.in @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.13.4 from Makefile.am. +# Makefile.in generated by automake 1.14.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. diff --git a/data/net_2_0/Makefile.in b/data/net_2_0/Makefile.in index 5bb8800fe7..f854cf7aba 100644 --- a/data/net_2_0/Makefile.in +++ b/data/net_2_0/Makefile.in @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.13.4 from Makefile.am. +# Makefile.in generated by automake 1.14.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. diff --git a/data/net_4_0/Browsers/Makefile.in b/data/net_4_0/Browsers/Makefile.in index 67e1966c20..e11ff042c4 100644 --- a/data/net_4_0/Browsers/Makefile.in +++ b/data/net_4_0/Browsers/Makefile.in @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.13.4 from Makefile.am. +# Makefile.in generated by automake 1.14.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. diff --git a/data/net_4_0/Makefile.in b/data/net_4_0/Makefile.in index 06861e9b2a..857b27ee34 100644 --- a/data/net_4_0/Makefile.in +++ b/data/net_4_0/Makefile.in @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.13.4 from Makefile.am. +# Makefile.in generated by automake 1.14.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. diff --git a/data/net_4_5/Browsers/Makefile.in b/data/net_4_5/Browsers/Makefile.in index 78f56bf16c..4146f79bdf 100644 --- a/data/net_4_5/Browsers/Makefile.in +++ b/data/net_4_5/Browsers/Makefile.in @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.13.4 from Makefile.am. +# Makefile.in generated by automake 1.14.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. diff --git a/data/net_4_5/Makefile.in b/data/net_4_5/Makefile.in index 979db7c049..11916b35d5 100644 --- a/data/net_4_5/Makefile.in +++ b/data/net_4_5/Makefile.in @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.13.4 from Makefile.am. +# Makefile.in generated by automake 1.14.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. diff --git a/docs/Makefile.in b/docs/Makefile.in index b4d74d28e7..957afad714 100644 --- a/docs/Makefile.in +++ b/docs/Makefile.in @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.13.4 from Makefile.am. +# Makefile.in generated by automake 1.14.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. diff --git a/eglib/Makefile.in b/eglib/Makefile.in index e9576f7c56..2aee28e2d6 100644 --- a/eglib/Makefile.in +++ b/eglib/Makefile.in @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.13.4 from Makefile.am. +# Makefile.in generated by automake 1.14.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. @@ -83,9 +83,10 @@ DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ $(top_srcdir)/configure $(am__configure_deps) \ $(srcdir)/config.h.in $(top_srcdir)/../mkinstalldirs AUTHORS \ COPYING ChangeLog NEWS README TODO config.rpath \ - $(top_srcdir)/../config.guess $(top_srcdir)/../config.rpath \ - $(top_srcdir)/../config.sub $(top_srcdir)/../install-sh \ - $(top_srcdir)/../ltmain.sh $(top_srcdir)/../missing + $(top_srcdir)/../compile $(top_srcdir)/../config.guess \ + $(top_srcdir)/../config.rpath $(top_srcdir)/../config.sub \ + $(top_srcdir)/../install-sh $(top_srcdir)/../ltmain.sh \ + $(top_srcdir)/../missing ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/iconv.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ @@ -394,8 +395,8 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) $(am__aclocal_m4_deps): config.h: stamp-h1 - @if test ! -f $@; then rm -f stamp-h1; else :; fi - @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi + @test -f $@ || rm -f stamp-h1 + @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1 stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status @rm -f stamp-h1 @@ -603,10 +604,16 @@ dist-xz: distdir $(am__post_remove_distdir) dist-tarZ: distdir + @echo WARNING: "Support for shar distribution archives is" \ + "deprecated." >&2 + @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__post_remove_distdir) dist-shar: distdir + @echo WARNING: "Support for distribution archives compressed with" \ + "legacy program 'compress' is deprecated." >&2 + @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz $(am__post_remove_distdir) @@ -648,9 +655,10 @@ distcheck: dist && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && am__cwd=`pwd` \ && $(am__cd) $(distdir)/_build \ - && ../configure --srcdir=.. --prefix="$$dc_install_base" \ + && ../configure \ $(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \ + --srcdir=.. --prefix="$$dc_install_base" \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ diff --git a/eglib/aclocal.m4 b/eglib/aclocal.m4 index dc49493052..e5ba722dbb 100644 --- a/eglib/aclocal.m4 +++ b/eglib/aclocal.m4 @@ -1,4 +1,4 @@ -# generated automatically by aclocal 1.13.4 -*- Autoconf -*- +# generated automatically by aclocal 1.14.1 -*- Autoconf -*- # Copyright (C) 1996-2013 Free Software Foundation, Inc. @@ -32,10 +32,10 @@ To do so, use the procedure documented by the package, typically 'autoreconf'.]) # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], -[am__api_version='1.13' +[am__api_version='1.14' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. -m4_if([$1], [1.13.4], [], +m4_if([$1], [1.14.1], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) @@ -51,7 +51,7 @@ m4_define([_AM_AUTOCONF_VERSION], []) # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], -[AM_AUTOMAKE_VERSION([1.13.4])dnl +[AM_AUTOMAKE_VERSION([1.14.1])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) @@ -418,6 +418,12 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], # This macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. +dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. +m4_define([AC_PROG_CC], +m4_defn([AC_PROG_CC]) +[_AM_PROG_CC_C_O +]) + # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- @@ -526,7 +532,48 @@ dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. AC_CONFIG_COMMANDS_PRE(dnl [m4_provide_if([_AM_COMPILER_EXEEXT], [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl -]) + +# POSIX will say in a future version that running "rm -f" with no argument +# is OK; and we want to be able to make that assumption in our Makefile +# recipes. So use an aggressive probe to check that the usage we want is +# actually supported "in the wild" to an acceptable degree. +# See automake bug#10828. +# To make any issue more visible, cause the running configure to be aborted +# by default if the 'rm' program in use doesn't match our expectations; the +# user can still override this though. +if rm -f && rm -fr && rm -rf; then : OK; else + cat >&2 <<'END' +Oops! + +Your 'rm' program seems unable to run without file operands specified +on the command line, even when the '-f' option is present. This is contrary +to the behaviour of most rm programs out there, and not conforming with +the upcoming POSIX standard: + +Please tell bug-automake@gnu.org about your system, including the value +of your $PATH and any error possibly output before this message. This +can help us improve future automake versions. + +END + if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then + echo 'Configuration will proceed anyway, since you have set the' >&2 + echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 + echo >&2 + else + cat >&2 <<'END' +Aborting the configuration process, to ensure you take notice of the issue. + +You can download and install GNU coreutils to get an 'rm' implementation +that behaves properly: . + +If you want to complete the configuration process using your problematic +'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM +to "yes", and re-run configure. + +END + AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) + fi +fi]) dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further @@ -534,7 +581,6 @@ dnl mangled by Autoconf and run in a shell conditional statement. m4_define([_AC_COMPILER_EXEEXT], m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) - # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. @@ -752,6 +798,53 @@ AC_DEFUN([_AM_SET_OPTIONS], AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) +# Copyright (C) 1999-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_PROG_CC_C_O +# --------------- +# Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC +# to automatically call this. +AC_DEFUN([_AM_PROG_CC_C_O], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([compile])dnl +AC_LANG_PUSH([C])dnl +AC_CACHE_CHECK( + [whether $CC understands -c and -o together], + [am_cv_prog_cc_c_o], + [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i]) +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +AC_LANG_POP([C])]) + +# For backward compatibility. +AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) + # Copyright (C) 2001-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation diff --git a/eglib/autogen.sh b/eglib/autogen.sh index 66f980a9b1..01c2aca869 100755 --- a/eglib/autogen.sh +++ b/eglib/autogen.sh @@ -30,18 +30,18 @@ fi DIE=1 } -if [ -z "$LIBTOOL" ]; then - LIBTOOL=`which glibtool 2>/dev/null` - if [ ! -x "$LIBTOOL" ]; then - LIBTOOL=`which libtool` +if [ -z "$LIBTOOLIZE" ]; then + LIBTOOLIZE=`which glibtoolize 2>/dev/null` + if [ ! -x "$LIBTOOLIZE" ]; then + LIBTOOLIZE=`which libtoolize` fi fi (grep "^AM_PROG_LIBTOOL" $srcdir/configure.ac >/dev/null) && { - ($LIBTOOL --version) < /dev/null > /dev/null 2>&1 || { + ($LIBTOOLIZE --version) < /dev/null > /dev/null 2>&1 || { echo - echo "**Error**: You must have \`libtool' installed to compile Mono." - echo "Get ftp://ftp.gnu.org/pub/gnu/libtool-1.2d.tar.gz" + echo "**Error**: You must have \`libtoolize' installed to compile Mono." + echo "Get ftp://ftp.gnu.org/gnu/libtool/libtool-1.2.tar.gz" echo "(or a newer version if it is available)" DIE=1 } @@ -98,7 +98,7 @@ esac if grep "^AM_PROG_LIBTOOL" configure.ac >/dev/null; then if test -z "$NO_LIBTOOLIZE" ; then echo "Running libtoolize..." - ${LIBTOOL}ize --force --copy + $LIBTOOLIZE --force --copy fi fi diff --git a/eglib/config.h.in b/eglib/config.h.in index 6e94a5e16a..983d93f90c 100644 --- a/eglib/config.h.in +++ b/eglib/config.h.in @@ -33,9 +33,6 @@ /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H -/* Define to 1 if you have the header file. */ -#undef HAVE_LANGINFO_H - /* Define to 1 if you have the `iconv' library (-liconv). */ #undef HAVE_LIBICONV diff --git a/eglib/configure.REMOVED.git-id b/eglib/configure.REMOVED.git-id index c2c18cbd60..7c9058b511 100644 --- a/eglib/configure.REMOVED.git-id +++ b/eglib/configure.REMOVED.git-id @@ -1 +1 @@ -10621617ddcde3326cdc7989cbfaee18ae75d381 \ No newline at end of file +f1c77cc9e77e8b57e9e1f2308c20317786f8adef \ No newline at end of file diff --git a/eglib/configure.ac b/eglib/configure.ac index 2197c6f9c9..21cf8c4927 100644 --- a/eglib/configure.ac +++ b/eglib/configure.ac @@ -181,7 +181,7 @@ if test "x$have_iso_varargs" = "xyes"; then fi AC_SUBST(G_HAVE_ISO_VARARGS) -AC_CHECK_HEADERS(getopt.h sys/select.h sys/time.h sys/wait.h pwd.h langinfo.h iconv.h localcharset.h sys/types.h sys/resource.h) +AC_CHECK_HEADERS(getopt.h sys/select.h sys/time.h sys/wait.h pwd.h iconv.h localcharset.h sys/types.h sys/resource.h) AC_CHECK_LIB([iconv], [locale_charset],[],[AC_CHECK_LIB([charset], [locale_charset],[LIBS+="-liconv -lcharset"])]) AC_CHECK_HEADER(alloca.h, [HAVE_ALLOCA_H=1], [HAVE_ALLOCA_H=0]) AC_SUBST(HAVE_ALLOCA_H) diff --git a/eglib/m4/Makefile.in b/eglib/m4/Makefile.in index 2bef86a63b..42f6211d8c 100644 --- a/eglib/m4/Makefile.in +++ b/eglib/m4/Makefile.in @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.13.4 from Makefile.am. +# Makefile.in generated by automake 1.14.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. diff --git a/eglib/m4/libtool.m4.REMOVED.git-id b/eglib/m4/libtool.m4.REMOVED.git-id index 14ce7cf26d..761fd2af1a 100644 --- a/eglib/m4/libtool.m4.REMOVED.git-id +++ b/eglib/m4/libtool.m4.REMOVED.git-id @@ -1 +1 @@ -56666f0eceac29ace0fff6cfefa246a4ab93174c \ No newline at end of file +d7c043f4f998971f1b81f7ab2c1e095fef45dee5 \ No newline at end of file diff --git a/eglib/src/Makefile.in b/eglib/src/Makefile.in index 484b706ca4..ba0d1db216 100644 --- a/eglib/src/Makefile.in +++ b/eglib/src/Makefile.in @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.13.4 from Makefile.am. +# Makefile.in generated by automake 1.14.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. @@ -498,14 +498,14 @@ distclean-compile: @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< diff --git a/eglib/src/gunicode.c b/eglib/src/gunicode.c index e6f4b925b6..36d6d4acfb 100644 --- a/eglib/src/gunicode.c +++ b/eglib/src/gunicode.c @@ -44,9 +44,6 @@ # define CODESET 1 # include #else -# ifdef HAVE_LANGINFO_H -# include -# endif # ifdef HAVE_LOCALCHARSET_H # include # endif @@ -219,9 +216,7 @@ g_get_charset (G_CONST_RETURN char **charset) is_utf8 = FALSE; #else /* These shouldn't be heap allocated */ -#if defined(HAVE_LANGINFO_H) - my_charset = nl_langinfo (CODESET); -#elif defined(HAVE_LOCALCHARSET_H) +#if defined(HAVE_LOCALCHARSET_H) my_charset = locale_charset (); #else my_charset = "UTF-8"; diff --git a/eglib/test/Makefile.in b/eglib/test/Makefile.in index a5c7870ee2..99c1c07cd1 100644 --- a/eglib/test/Makefile.in +++ b/eglib/test/Makefile.in @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.13.4 from Makefile.am. +# Makefile.in generated by automake 1.14.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. @@ -443,14 +443,14 @@ distclean-compile: @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< diff --git a/ikvm-native/Makefile.in b/ikvm-native/Makefile.in index 9b8a86934b..090b382808 100644 --- a/ikvm-native/Makefile.in +++ b/ikvm-native/Makefile.in @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.13.4 from Makefile.am. +# Makefile.in generated by automake 1.14.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. diff --git a/libgc/Makefile.in b/libgc/Makefile.in index f96ee19aa9..6aa745d241 100644 --- a/libgc/Makefile.in +++ b/libgc/Makefile.in @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.13.4 from Makefile.am. +# Makefile.in generated by automake 1.14.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. @@ -95,8 +95,8 @@ host_triplet = @host@ subdir = . DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ $(top_srcdir)/configure $(am__configure_deps) mkinstalldirs \ - depcomp ChangeLog config.guess config.sub install-sh missing \ - ltmain.sh ltconfig + depcomp ChangeLog compile config.guess config.sub install-sh \ + missing ltmain.sh ltconfig ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ @@ -686,14 +686,14 @@ distclean-compile: @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @@ -904,10 +904,16 @@ dist-xz: distdir $(am__post_remove_distdir) dist-tarZ: distdir + @echo WARNING: "Support for shar distribution archives is" \ + "deprecated." >&2 + @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__post_remove_distdir) dist-shar: distdir + @echo WARNING: "Support for distribution archives compressed with" \ + "legacy program 'compress' is deprecated." >&2 + @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz $(am__post_remove_distdir) @@ -949,9 +955,10 @@ distcheck: dist && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && am__cwd=`pwd` \ && $(am__cd) $(distdir)/_build \ - && ../configure --srcdir=.. --prefix="$$dc_install_base" \ + && ../configure \ $(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \ + --srcdir=.. --prefix="$$dc_install_base" \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ diff --git a/libgc/aclocal.m4 b/libgc/aclocal.m4 index b522fbac37..7e11aa8638 100644 --- a/libgc/aclocal.m4 +++ b/libgc/aclocal.m4 @@ -1,4 +1,4 @@ -# generated automatically by aclocal 1.13.4 -*- Autoconf -*- +# generated automatically by aclocal 1.14.1 -*- Autoconf -*- # Copyright (C) 1996-2013 Free Software Foundation, Inc. @@ -32,10 +32,10 @@ To do so, use the procedure documented by the package, typically 'autoreconf'.]) # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], -[am__api_version='1.13' +[am__api_version='1.14' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. -m4_if([$1], [1.13.4], [], +m4_if([$1], [1.14.1], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) @@ -51,7 +51,7 @@ m4_define([_AM_AUTOCONF_VERSION], []) # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], -[AM_AUTOMAKE_VERSION([1.13.4])dnl +[AM_AUTOMAKE_VERSION([1.14.1])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) @@ -438,6 +438,12 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], # This macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. +dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. +m4_define([AC_PROG_CC], +m4_defn([AC_PROG_CC]) +[_AM_PROG_CC_C_O +]) + # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- @@ -546,7 +552,48 @@ dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. AC_CONFIG_COMMANDS_PRE(dnl [m4_provide_if([_AM_COMPILER_EXEEXT], [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl -]) + +# POSIX will say in a future version that running "rm -f" with no argument +# is OK; and we want to be able to make that assumption in our Makefile +# recipes. So use an aggressive probe to check that the usage we want is +# actually supported "in the wild" to an acceptable degree. +# See automake bug#10828. +# To make any issue more visible, cause the running configure to be aborted +# by default if the 'rm' program in use doesn't match our expectations; the +# user can still override this though. +if rm -f && rm -fr && rm -rf; then : OK; else + cat >&2 <<'END' +Oops! + +Your 'rm' program seems unable to run without file operands specified +on the command line, even when the '-f' option is present. This is contrary +to the behaviour of most rm programs out there, and not conforming with +the upcoming POSIX standard: + +Please tell bug-automake@gnu.org about your system, including the value +of your $PATH and any error possibly output before this message. This +can help us improve future automake versions. + +END + if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then + echo 'Configuration will proceed anyway, since you have set the' >&2 + echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 + echo >&2 + else + cat >&2 <<'END' +Aborting the configuration process, to ensure you take notice of the issue. + +You can download and install GNU coreutils to get an 'rm' implementation +that behaves properly: . + +If you want to complete the configuration process using your problematic +'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM +to "yes", and re-run configure. + +END + AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) + fi +fi]) dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further @@ -554,7 +601,6 @@ dnl mangled by Autoconf and run in a shell conditional statement. m4_define([_AC_COMPILER_EXEEXT], m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) - # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. @@ -772,6 +818,70 @@ AC_DEFUN([_AM_SET_OPTIONS], AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) +# Copyright (C) 1999-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_PROG_CC_C_O +# --------------- +# Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC +# to automatically call this. +AC_DEFUN([_AM_PROG_CC_C_O], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([compile])dnl +AC_LANG_PUSH([C])dnl +AC_CACHE_CHECK( + [whether $CC understands -c and -o together], + [am_cv_prog_cc_c_o], + [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i]) +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +AC_LANG_POP([C])]) + +# For backward compatibility. +AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) + +# Copyright (C) 2001-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_RUN_LOG(COMMAND) +# ------------------- +# Run COMMAND, save the exit status in ac_status, and log it. +# (This has been adapted from Autoconf's _AC_RUN_LOG macro.) +AC_DEFUN([AM_RUN_LOG], +[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD + ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + (exit $ac_status); }]) + # Check to make sure that the build environment is sane. -*- Autoconf -*- # Copyright (C) 1996-2013 Free Software Foundation, Inc. diff --git a/libgc/compile b/libgc/compile new file mode 100755 index 0000000000..531136b068 --- /dev/null +++ b/libgc/compile @@ -0,0 +1,347 @@ +#! /bin/sh +# Wrapper for compilers which do not understand '-c -o'. + +scriptversion=2012-10-14.11; # UTC + +# Copyright (C) 1999-2013 Free Software Foundation, Inc. +# Written by Tom Tromey . +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# This file is maintained in Automake, please report +# bugs to or send patches to +# . + +nl=' +' + +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent tools from complaining about whitespace usage. +IFS=" "" $nl" + +file_conv= + +# func_file_conv build_file lazy +# Convert a $build file to $host form and store it in $file +# Currently only supports Windows hosts. If the determined conversion +# type is listed in (the comma separated) LAZY, no conversion will +# take place. +func_file_conv () +{ + file=$1 + case $file in + / | /[!/]*) # absolute file, and not a UNC file + if test -z "$file_conv"; then + # lazily determine how to convert abs files + case `uname -s` in + MINGW*) + file_conv=mingw + ;; + CYGWIN*) + file_conv=cygwin + ;; + *) + file_conv=wine + ;; + esac + fi + case $file_conv/,$2, in + *,$file_conv,*) + ;; + mingw/*) + file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` + ;; + cygwin/*) + file=`cygpath -m "$file" || echo "$file"` + ;; + wine/*) + file=`winepath -w "$file" || echo "$file"` + ;; + esac + ;; + esac +} + +# func_cl_dashL linkdir +# Make cl look for libraries in LINKDIR +func_cl_dashL () +{ + func_file_conv "$1" + if test -z "$lib_path"; then + lib_path=$file + else + lib_path="$lib_path;$file" + fi + linker_opts="$linker_opts -LIBPATH:$file" +} + +# func_cl_dashl library +# Do a library search-path lookup for cl +func_cl_dashl () +{ + lib=$1 + found=no + save_IFS=$IFS + IFS=';' + for dir in $lib_path $LIB + do + IFS=$save_IFS + if $shared && test -f "$dir/$lib.dll.lib"; then + found=yes + lib=$dir/$lib.dll.lib + break + fi + if test -f "$dir/$lib.lib"; then + found=yes + lib=$dir/$lib.lib + break + fi + if test -f "$dir/lib$lib.a"; then + found=yes + lib=$dir/lib$lib.a + break + fi + done + IFS=$save_IFS + + if test "$found" != yes; then + lib=$lib.lib + fi +} + +# func_cl_wrapper cl arg... +# Adjust compile command to suit cl +func_cl_wrapper () +{ + # Assume a capable shell + lib_path= + shared=: + linker_opts= + for arg + do + if test -n "$eat"; then + eat= + else + case $1 in + -o) + # configure might choose to run compile as 'compile cc -o foo foo.c'. + eat=1 + case $2 in + *.o | *.[oO][bB][jJ]) + func_file_conv "$2" + set x "$@" -Fo"$file" + shift + ;; + *) + func_file_conv "$2" + set x "$@" -Fe"$file" + shift + ;; + esac + ;; + -I) + eat=1 + func_file_conv "$2" mingw + set x "$@" -I"$file" + shift + ;; + -I*) + func_file_conv "${1#-I}" mingw + set x "$@" -I"$file" + shift + ;; + -l) + eat=1 + func_cl_dashl "$2" + set x "$@" "$lib" + shift + ;; + -l*) + func_cl_dashl "${1#-l}" + set x "$@" "$lib" + shift + ;; + -L) + eat=1 + func_cl_dashL "$2" + ;; + -L*) + func_cl_dashL "${1#-L}" + ;; + -static) + shared=false + ;; + -Wl,*) + arg=${1#-Wl,} + save_ifs="$IFS"; IFS=',' + for flag in $arg; do + IFS="$save_ifs" + linker_opts="$linker_opts $flag" + done + IFS="$save_ifs" + ;; + -Xlinker) + eat=1 + linker_opts="$linker_opts $2" + ;; + -*) + set x "$@" "$1" + shift + ;; + *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) + func_file_conv "$1" + set x "$@" -Tp"$file" + shift + ;; + *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) + func_file_conv "$1" mingw + set x "$@" "$file" + shift + ;; + *) + set x "$@" "$1" + shift + ;; + esac + fi + shift + done + if test -n "$linker_opts"; then + linker_opts="-link$linker_opts" + fi + exec "$@" $linker_opts + exit 1 +} + +eat= + +case $1 in + '') + echo "$0: No command. Try '$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: compile [--help] [--version] PROGRAM [ARGS] + +Wrapper for compilers which do not understand '-c -o'. +Remove '-o dest.o' from ARGS, run PROGRAM with the remaining +arguments, and rename the output as expected. + +If you are trying to build a whole package this is not the +right script to run: please start by reading the file 'INSTALL'. + +Report bugs to . +EOF + exit $? + ;; + -v | --v*) + echo "compile $scriptversion" + exit $? + ;; + cl | *[/\\]cl | cl.exe | *[/\\]cl.exe ) + func_cl_wrapper "$@" # Doesn't return... + ;; +esac + +ofile= +cfile= + +for arg +do + if test -n "$eat"; then + eat= + else + case $1 in + -o) + # configure might choose to run compile as 'compile cc -o foo foo.c'. + # So we strip '-o arg' only if arg is an object. + eat=1 + case $2 in + *.o | *.obj) + ofile=$2 + ;; + *) + set x "$@" -o "$2" + shift + ;; + esac + ;; + *.c) + cfile=$1 + set x "$@" "$1" + shift + ;; + *) + set x "$@" "$1" + shift + ;; + esac + fi + shift +done + +if test -z "$ofile" || test -z "$cfile"; then + # If no '-o' option was seen then we might have been invoked from a + # pattern rule where we don't need one. That is ok -- this is a + # normal compilation that the losing compiler can handle. If no + # '.c' file was seen then we are probably linking. That is also + # ok. + exec "$@" +fi + +# Name of file we expect compiler to create. +cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` + +# Create the lock directory. +# Note: use '[/\\:.-]' here to ensure that we don't use the same name +# that we are using for the .o file. Also, base the name on the expected +# object file name, since that is what matters with a parallel build. +lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d +while true; do + if mkdir "$lockdir" >/dev/null 2>&1; then + break + fi + sleep 1 +done +# FIXME: race condition here if user kills between mkdir and trap. +trap "rmdir '$lockdir'; exit 1" 1 2 15 + +# Run the compile. +"$@" +ret=$? + +if test -f "$cofile"; then + test "$cofile" = "$ofile" || mv "$cofile" "$ofile" +elif test -f "${cofile}bj"; then + test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" +fi + +rmdir "$lockdir" +exit $ret + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: diff --git a/libgc/config.sub b/libgc/config.sub index c765b34b7b..9633db7046 100755 --- a/libgc/config.sub +++ b/libgc/config.sub @@ -2,7 +2,7 @@ # Configuration validation subroutine script. # Copyright 1992-2013 Free Software Foundation, Inc. -timestamp='2013-04-24' +timestamp='2013-08-10' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -257,7 +257,7 @@ case $basic_machine in | avr | avr32 \ | be32 | be64 \ | bfin \ - | c4x | clipper \ + | c4x | c8051 | clipper \ | d10v | d30v | dlx | dsp16xx \ | epiphany \ | fido | fr30 | frv \ @@ -372,7 +372,7 @@ case $basic_machine in | be32-* | be64-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* \ - | clipper-* | craynv-* | cydra-* \ + | c8051-* | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ @@ -794,7 +794,7 @@ case $basic_machine in os=-mingw64 ;; mingw32) - basic_machine=i386-pc + basic_machine=i686-pc os=-mingw32 ;; mingw32ce) @@ -830,7 +830,7 @@ case $basic_machine in basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ;; msys) - basic_machine=i386-pc + basic_machine=i686-pc os=-msys ;; mvs) @@ -1006,7 +1006,7 @@ case $basic_machine in ;; ppc64) basic_machine=powerpc64-unknown ;; - ppc64-* | ppc64p7-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` + ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little | ppc64-le | powerpc64-little) basic_machine=powerpc64le-unknown @@ -1546,6 +1546,9 @@ case $basic_machine in c4x-* | tic4x-*) os=-coff ;; + c8051-*) + os=-elf + ;; hexagon-*) os=-elf ;; diff --git a/libgc/configure.REMOVED.git-id b/libgc/configure.REMOVED.git-id index 3be708b3e4..31b69a50b7 100644 --- a/libgc/configure.REMOVED.git-id +++ b/libgc/configure.REMOVED.git-id @@ -1 +1 @@ -0672cb7e29cdfbb304ed56160f4892d1569aac55 \ No newline at end of file +8b83212143d2cd84c76c503d5accd3056bcbd80e \ No newline at end of file diff --git a/libgc/doc/Makefile.in b/libgc/doc/Makefile.in index 1b8101bcf7..41fff87069 100644 --- a/libgc/doc/Makefile.in +++ b/libgc/doc/Makefile.in @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.13.4 from Makefile.am. +# Makefile.in generated by automake 1.14.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. diff --git a/libgc/include/Makefile.in b/libgc/include/Makefile.in index 123d7c406a..11f1224fec 100644 --- a/libgc/include/Makefile.in +++ b/libgc/include/Makefile.in @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.13.4 from Makefile.am. +# Makefile.in generated by automake 1.14.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. diff --git a/libgc/include/private/Makefile.in b/libgc/include/private/Makefile.in index 0906fbf954..69fd33dff7 100644 --- a/libgc/include/private/Makefile.in +++ b/libgc/include/private/Makefile.in @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.13.4 from Makefile.am. +# Makefile.in generated by automake 1.14.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. diff --git a/libgc/ltmain.sh.REMOVED.git-id b/libgc/ltmain.sh.REMOVED.git-id index e56a6b442b..a456f5251e 100644 --- a/libgc/ltmain.sh.REMOVED.git-id +++ b/libgc/ltmain.sh.REMOVED.git-id @@ -1 +1 @@ -63ae69dc6fecaf83c52fba2ad334f4b1369fb1cd \ No newline at end of file +a356acafa4548959e97355d1e8044b7201661754 \ No newline at end of file diff --git a/libgc/m4/Makefile.in b/libgc/m4/Makefile.in index 20d2527f10..b5fa04722d 100644 --- a/libgc/m4/Makefile.in +++ b/libgc/m4/Makefile.in @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.13.4 from Makefile.am. +# Makefile.in generated by automake 1.14.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. diff --git a/libgc/m4/libtool.m4.REMOVED.git-id b/libgc/m4/libtool.m4.REMOVED.git-id index 14ce7cf26d..761fd2af1a 100644 --- a/libgc/m4/libtool.m4.REMOVED.git-id +++ b/libgc/m4/libtool.m4.REMOVED.git-id @@ -1 +1 @@ -56666f0eceac29ace0fff6cfefa246a4ab93174c \ No newline at end of file +d7c043f4f998971f1b81f7ab2c1e095fef45dee5 \ No newline at end of file diff --git a/libgc/missing b/libgc/missing index cdea514931..db98974ff5 100755 --- a/libgc/missing +++ b/libgc/missing @@ -1,7 +1,7 @@ #! /bin/sh # Common wrapper for a few potentially missing GNU programs. -scriptversion=2012-06-26.16; # UTC +scriptversion=2013-10-28.13; # UTC # Copyright (C) 1996-2013 Free Software Foundation, Inc. # Originally written by Fran,cois Pinard , 1996. @@ -160,7 +160,7 @@ give_advice () ;; autom4te*) echo "You might have modified some maintainer files that require" - echo "the 'automa4te' program to be rebuilt." + echo "the 'autom4te' program to be rebuilt." program_details 'autom4te' ;; bison*|yacc*) diff --git a/ltmain.sh.REMOVED.git-id b/ltmain.sh.REMOVED.git-id index e56a6b442b..a456f5251e 100644 --- a/ltmain.sh.REMOVED.git-id +++ b/ltmain.sh.REMOVED.git-id @@ -1 +1 @@ -63ae69dc6fecaf83c52fba2ad334f4b1369fb1cd \ No newline at end of file +a356acafa4548959e97355d1e8044b7201661754 \ No newline at end of file diff --git a/m4/Makefile.in b/m4/Makefile.in index 4a8e6b81a7..3917d52b64 100644 --- a/m4/Makefile.in +++ b/m4/Makefile.in @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.13.4 from Makefile.am. +# Makefile.in generated by automake 1.14.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. diff --git a/m4/libtool.m4.REMOVED.git-id b/m4/libtool.m4.REMOVED.git-id index 14ce7cf26d..761fd2af1a 100644 --- a/m4/libtool.m4.REMOVED.git-id +++ b/m4/libtool.m4.REMOVED.git-id @@ -1 +1 @@ -56666f0eceac29ace0fff6cfefa246a4ab93174c \ No newline at end of file +d7c043f4f998971f1b81f7ab2c1e095fef45dee5 \ No newline at end of file diff --git a/man/Makefile.in b/man/Makefile.in index 6fbb61a0f3..405d9a7c0d 100644 --- a/man/Makefile.in +++ b/man/Makefile.in @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.13.4 from Makefile.am. +# Makefile.in generated by automake 1.14.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. diff --git a/man/mkbundle.1 b/man/mkbundle.1 index ed704b89d6..cf0753804d 100644 --- a/man/mkbundle.1 +++ b/man/mkbundle.1 @@ -21,9 +21,34 @@ default only the assemblies specified in the command line will be included in the bundle. To automatically include all of the dependencies referenced, use the "--deps" command line option. .PP -Use \fImkbundle\FP when you want the startup runtime to load the 1.0 -profile, and use \fImkbundle2\fP when you want the startup runtime to load -the 2.0 profile. +There are two modes of operation, the default one uses the +C compiler to create a bundle and requires a complete C and Mono SDK +to produced executables. The simple mode (enabled when using the +"--simple") command line option does not require this, and also allows +for cross compilation. +.PP +For example, to create a bundle for hello world, use the following +command: +.nf + $ mkbundle -o hello --simple hello.exe +.fi +.PP +The simple version allows for cross-compiling, this requires a Mono +runtime to be installed in the ~/.mono/targets/TARGET/mono to be +available. You can use the "--local-targets" to list all available +targets, and the "--cross" argument to specify the target, like this: +.nf + $ mkbundle --local-targets + Available targets: + default - Current System Mono + 4.4.0-macosx-x86 + 4.4.0-debian-8-arm64 + $ mkbundle --cross 4.4.0-debian-8-arm64 hello.exe -o hello-debian +.fi +.PP +The above will bundle your native library into hello-debian for +a Debian 8 system running on an ARM64 machine. +.SH OLD EMBEDDING .PP For example, to create a bundle for hello world, use the following command: @@ -57,6 +82,12 @@ are available to the embedded runtime. .I "-c" Produce the stub file, do not compile the resulting stub. .TP +.I "--cross target" +Creates a bundle for the specified target platform. The target +must be a directory in ~/.mono/targets/ that contains a "mono" +binary. You can fetch various targets using the --fetch-target +command line option. +.TP .I "-o filename" Places the output on `out'. If the flag -c is specified, this is the C host program. If not, this contains the resulting executable. @@ -74,20 +105,31 @@ Typically this is $prefix/etc/mono/1.0/machine.config or $prefix/etc/mono/2.0/machine.config depending on the profile that you are using (1.0 or 2.0) .TP -.I "--nodeps" -This is the default: \fImkbundle\fP will only include the assemblies that -were specified on the command line to reduce the size of the resulting -image created. -.TP .I "--deps" This option will bundle all of the referenced assemblies for the assemblies listed on the command line option. This is useful to distribute a self-contained image. .TP +.I "--fetch-target target" +Downloads a precompiled runtime for the specified target from the Mono +distribution site. +.TP +.I "--nodeps" +This is the default: \fImkbundle\fP will only include the assemblies that +were specified on the command line to reduce the size of the resulting +image created. +.TP .I "--keeptemp" By default \fImkbundle\fP will delete the temporary files that it uses to produce the bundle. This option keeps the file around. .TP +.I "--lists-targets" +Lists all of the available local cross compilation targets available +as precompiled binaries on the Mono distribution server. +.TP +.I "--local-targets" +Lists all of the available local cross compilation targets. +.TP .I "--machine-config FILE" Uses the given FILE as the machine.config file for the generated application. @@ -102,13 +144,10 @@ When passed, DIR will be set for the MONO_CFG_DIR environment variable By default \fImkbundle\fP dynamically links to mono and glib. This option causes it to statically link instead. .TP -.B Important: -Since the Mono runtime is licensed under the LGPL, even if you use -static you should transfer the component pieces of the mkbundle to -your users so they are able to upgrade the Mono runtime on their own. -.TP -If you want to use this for commercial licenses, you must obtain a -proprietary license for Mono from mono@novell.com +.I "--target-server SERVER" +By default the mkbundle tool will download from a Mono server the +target runtimes, you can specify a different server to provide +cross-compiled runtimes. .TP .I "-z" Compresses the assemblies before embedding. This results in smaller @@ -133,6 +172,8 @@ Mono runtime, separated by spaces. See the mono(1) manual page or run mono --hel .SH FILES This program will load referenced assemblies from the Mono assembly cache. +.PP +Targets are loaded from ~/.mono/targets/TARGETNAME/mono .SH BUGS The option "--static" is not supported under Windows. Moreover, a full cygwin environment containing at least "gcc" and "as" diff --git a/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/Project.cs b/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/Project.cs index 005752baf9..fb545562ff 100644 --- a/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/Project.cs +++ b/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/Project.cs @@ -1035,7 +1035,7 @@ namespace Microsoft.Build.BuildEngine { evaluatedProperties.AddProperty (new BuildProperty ("OS", OS, PropertyType.Environment)); #if XBUILD_12 // see http://msdn.microsoft.com/en-us/library/vstudio/hh162058(v=vs.120).aspx - if (effective_tools_version == "12.0") { + if (effective_tools_version == "12.0" || effective_tools_version == "14.0") { evaluatedProperties.AddProperty (new BuildProperty ("MSBuildToolsPath32", toolsPath, PropertyType.Reserved)); var frameworkToolsPath = ToolLocationHelper.GetPathToDotNetFramework (TargetDotNetFrameworkVersion.Version451); diff --git a/mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks/ResolveAssemblyReference.cs b/mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks/ResolveAssemblyReference.cs index f5758df8e1..3bdf7111df 100644 --- a/mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks/ResolveAssemblyReference.cs +++ b/mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks/ResolveAssemblyReference.cs @@ -128,6 +128,10 @@ namespace Microsoft.Build.Tasks { relatedFiles = tempRelatedFiles.Values.ToArray (); resolvedDependencyFiles = tempResolvedDepFiles.Values.ToArray (); +#if XBUILD_14 + DependsOnSystemRuntime = resolvedDependencyFiles.Any (x => Path.GetFileName (x.ItemSpec) == "System.Runtime.dll").ToString (); +#endif + tempResolvedFiles.Clear (); tempCopyLocalFiles.Clear (); tempSatelliteFiles.Clear (); diff --git a/mcs/class/Mono.Security/Mono.Security.Protocol.Tls/CipherSuiteFactory.cs b/mcs/class/Mono.Security/Mono.Security.Protocol.Tls/CipherSuiteFactory.cs index 13573cbaab..68a21e1d54 100644 --- a/mcs/class/Mono.Security/Mono.Security.Protocol.Tls/CipherSuiteFactory.cs +++ b/mcs/class/Mono.Security/Mono.Security.Protocol.Tls/CipherSuiteFactory.cs @@ -40,65 +40,16 @@ namespace Mono.Security.Protocol.Tls public static CipherSuiteCollection GetSupportedCiphers (bool server, SecurityProtocolType protocol) { - CipherSuiteCollection suites; switch (protocol) { case SecurityProtocolType.Default: case SecurityProtocolType.Tls: - suites = CipherSuiteFactory.GetTls1SupportedCiphers (); - break; + return CipherSuiteFactory.GetTls1SupportedCiphers (); case SecurityProtocolType.Ssl3: - suites = CipherSuiteFactory.GetSsl3SupportedCiphers (); - break; + return CipherSuiteFactory.GetSsl3SupportedCiphers (); case SecurityProtocolType.Ssl2: default: throw new NotSupportedException ("Unsupported security protocol type"); } - - IEnumerable list = null; -#if INSIDE_SYSTEM - // if SSL/TLS support is built-in System.dll (e.g. monotouch) then we can access ServicePointManager - // extension directly - var cb = server ? ServicePointManager.ServerCipherSuitesCallback : ServicePointManager.ClientCipherSuitesCallback; - if (cb == null) - return suites; // e.g. no callback was set - - list = cb ((System.Net.SecurityProtocolType) (int) protocol, suites.GetNames ()); -#elif !BOOTSTRAP_BASIC - // Mono.Security must work on MS.NET so it cannot depend on any Mono-specific extensions - PropertyInfo pi = null; - if (server) { - if (server_callback == null) - server_callback = spm.GetProperty ("ServerCipherSuitesCallback", BindingFlags.Static | BindingFlags.Public); - pi = server_callback; - } else { - if (client_callback == null) - client_callback = spm.GetProperty ("ClientCipherSuitesCallback", BindingFlags.Static | BindingFlags.Public); - pi = client_callback; - } - if (pi == null) - return suites; // e.g. MS runtime - return every supported suites - - var cb = (Delegate) pi.GetGetMethod ().Invoke (null, null); - if (cb == null) - return suites; // e.g. no callback was set - return every supported suites - - list = (IEnumerable) cb.DynamicInvoke (new object[] { - (System.Net.SecurityProtocolType) (int) protocol, suites.GetNames () - }); -#else - // TODO: right now the callback is only available when using System.Net.* types for SSL/TLS - return suites; -#endif - CipherSuiteCollection allowed = new CipherSuiteCollection (protocol); - if (list != null) { - foreach (var name in list) { - // add any supported (ignore unknowns) ciphers requested by the callback - var cipher = suites [name]; - if (cipher != null) - allowed.Add (cipher); - } - } - return allowed; } #region Private Static Methods diff --git a/mcs/class/System/Mono.Net.Security/SystemCertificateValidator.cs b/mcs/class/System/Mono.Net.Security/SystemCertificateValidator.cs index 8cd1ca0b6f..92832c40d9 100644 --- a/mcs/class/System/Mono.Net.Security/SystemCertificateValidator.cs +++ b/mcs/class/System/Mono.Net.Security/SystemCertificateValidator.cs @@ -73,16 +73,12 @@ namespace Mono.Net.Security public static X509Chain CreateX509Chain (XX509CertificateCollection certs) { var chain = new X509Chain (); - chain.ChainPolicy = new X509ChainPolicy (); + chain.ChainPolicy = new X509ChainPolicy ((X509CertificateCollection)(object)certs); #if !MOBILE chain.ChainPolicy.RevocationMode = revocation_mode; #endif - for (int i = 1; i < certs.Count; i++) { - chain.ChainPolicy.ExtraStore.Add (certs [i]); - } - return chain; } diff --git a/mcs/class/System/System.Net.Sockets/Socket.cs.REMOVED.git-id b/mcs/class/System/System.Net.Sockets/Socket.cs.REMOVED.git-id index 406b40ca07..861aa5e852 100644 --- a/mcs/class/System/System.Net.Sockets/Socket.cs.REMOVED.git-id +++ b/mcs/class/System/System.Net.Sockets/Socket.cs.REMOVED.git-id @@ -1 +1 @@ -0f1c977a71d57169dc91c54c8baa329f65d18b38 \ No newline at end of file +b41d204ace8747f8b745660642c23d3998baf913 \ No newline at end of file diff --git a/mcs/class/System/System.Net/ServicePointManager.extra.cs b/mcs/class/System/System.Net/ServicePointManager.extra.cs index 3044363785..4d7e329a89 100644 --- a/mcs/class/System/System.Net/ServicePointManager.extra.cs +++ b/mcs/class/System/System.Net/ServicePointManager.extra.cs @@ -12,12 +12,20 @@ using System.Collections.Generic; namespace System.Net { + /* + * The idea behind this API was to let the application filter the set of cipher suites received / send to + * the remote side. This concept does not any longer work with the new native implementations. + */ + + [Obsolete ("This API is no longer supported.")] public delegate IEnumerable CipherSuitesCallback (SecurityProtocolType protocol, IEnumerable allCiphers); public partial class ServicePointManager { + [Obsolete ("This API is no longer supported.", true)] public static CipherSuitesCallback ClientCipherSuitesCallback { get; set; } + [Obsolete ("This API is no longer supported.", true)] public static CipherSuitesCallback ServerCipherSuitesCallback { get; set; } } -} \ No newline at end of file +} diff --git a/mcs/class/System/System.Security.Cryptography.X509Certificates/OSX509Certificates.cs b/mcs/class/System/System.Security.Cryptography.X509Certificates/OSX509Certificates.cs index 00384f4590..89c6164907 100644 --- a/mcs/class/System/System.Security.Cryptography.X509Certificates/OSX509Certificates.cs +++ b/mcs/class/System/System.Security.Cryptography.X509Certificates/OSX509Certificates.cs @@ -154,7 +154,8 @@ namespace System.Security.Cryptography.X509Certificates { certArray = FromIntPtrs (secCerts); - host = CFStringCreateWithCharacters (IntPtr.Zero, hostName, (IntPtr) hostName.Length); + if (!string.IsNullOrEmpty (hostName)) + host = CFStringCreateWithCharacters (IntPtr.Zero, hostName, (IntPtr) hostName.Length); sslsecpolicy = SecPolicyCreateSSL (true, host); int code = SecTrustCreateWithCertificates (certArray, sslsecpolicy, out sectrust); diff --git a/mcs/class/System/System.Security.Cryptography.X509Certificates/X509ChainPolicy.cs b/mcs/class/System/System.Security.Cryptography.X509Certificates/X509ChainPolicy.cs index 86d4aee925..1dc234575b 100644 --- a/mcs/class/System/System.Security.Cryptography.X509Certificates/X509ChainPolicy.cs +++ b/mcs/class/System/System.Security.Cryptography.X509Certificates/X509ChainPolicy.cs @@ -35,7 +35,8 @@ namespace System.Security.Cryptography.X509Certificates { private OidCollection apps; private OidCollection cert; - private X509Certificate2Collection store; + private X509CertificateCollection store; + private X509Certificate2Collection store2; private X509RevocationFlag rflag; private X509RevocationMode mode; private TimeSpan timeout; @@ -49,6 +50,24 @@ namespace System.Security.Cryptography.X509Certificates { Reset (); } + /* + * Lazy-init ExtraStore from X509CertificateCollection. + * This is called from Mono.Net.Security.SystemCertificateValidator.CreateX509Chain. + * + * AppleTLS supports a lazily-initialized X509Certificate, but not X509Certificate2 so + * we need to fall-back to using Mono.Security.X509 whenever we need an X509Certificate2. + * To avoid unnecessary fallbacks, the private Mono.Net.Security APIs use X509Certificate + * instead of X509Certificate2. + * + * Since 'ExtraStore' returns X509Certificate2Collection, we need to convert these to + * X509Certificate2. + */ + internal X509ChainPolicy (X509CertificateCollection store) + { + this.store = store; + Reset (); + } + // properties public OidCollection ApplicationPolicy { @@ -60,7 +79,18 @@ namespace System.Security.Cryptography.X509Certificates { } public X509Certificate2Collection ExtraStore { - get { return store; } + get { + if (store2 != null) + return store2; + + store2 = new X509Certificate2Collection (); + if (store != null) { + foreach (var cert in store) { + store2.Add (new X509Certificate2 (cert)); + } + } + return store2; + } } public X509RevocationFlag RevocationFlag { @@ -106,7 +136,7 @@ namespace System.Security.Cryptography.X509Certificates { { apps = new OidCollection (); cert = new OidCollection (); - store = new X509Certificate2Collection (); + store2 = null; rflag = X509RevocationFlag.ExcludeRoot; mode = X509RevocationMode.Online; timeout = TimeSpan.Zero; diff --git a/mcs/class/System/System_test.dll.sources b/mcs/class/System/System_test.dll.sources index 7d07dd7504..6ec32758fa 100644 --- a/mcs/class/System/System_test.dll.sources +++ b/mcs/class/System/System_test.dll.sources @@ -247,6 +247,7 @@ System.Net.Sockets/MulticastOptionTest.cs System.Net.Sockets/NetworkStreamTest.cs System.Net.Sockets/TcpClientTest.cs System.Net.Sockets/TcpListenerTest.cs +System.Net.Sockets/SocketAcceptAsyncTest.cs System.Net.Sockets/SocketTest.cs System.Net.Sockets/SocketAsyncEventArgsTest.cs System.Net.Sockets/SocketConnectAsyncTest.cs diff --git a/mcs/class/System/Test/System.Net.Security/SslStreamTest.cs b/mcs/class/System/Test/System.Net.Security/SslStreamTest.cs index 2dd0d06746..f25c868049 100644 --- a/mcs/class/System/Test/System.Net.Security/SslStreamTest.cs +++ b/mcs/class/System/Test/System.Net.Security/SslStreamTest.cs @@ -93,80 +93,6 @@ public class SslStreamTest { } } - [Test] - public void ClientCipherSuitesCallback () - { - try { - ServicePointManager.ClientCipherSuitesCallback += (SecurityProtocolType p, IEnumerable allCiphers) => { - string prefix = p == SecurityProtocolType.Tls ? "TLS_" : "SSL_"; - return new List { prefix + "RSA_WITH_AES_128_CBC_SHA" }; - }; - // client will only offers AES 128 - that's fine since the server support it (and many more ciphers) - AuthenticateClientAndServer_ClientSendsNoData (); - } - finally { - ServicePointManager.ClientCipherSuitesCallback = null; - } - } - - [Test] - public void ServerCipherSuitesCallback () - { - try { - ServicePointManager.ServerCipherSuitesCallback += (SecurityProtocolType p, IEnumerable allCiphers) => { - string prefix = p == SecurityProtocolType.Tls ? "TLS_" : "SSL_"; - return new List { prefix + "RSA_WITH_AES_256_CBC_SHA" }; - }; - // server only accept AES 256 - that's fine since the client support it (and many more ciphers) - AuthenticateClientAndServer_ClientSendsNoData (); - } - finally { - ServicePointManager.ServerCipherSuitesCallback = null; - } - } - - [Test] - public void CipherSuitesCallbacks () - { - try { - ServicePointManager.ClientCipherSuitesCallback += (SecurityProtocolType p, IEnumerable allCiphers) => { - string prefix = p == SecurityProtocolType.Tls ? "TLS_" : "SSL_"; - return new List { prefix + "RSA_WITH_AES_128_CBC_SHA", prefix + "RSA_WITH_AES_256_CBC_SHA" }; - }; - ServicePointManager.ServerCipherSuitesCallback += (SecurityProtocolType p, IEnumerable allCiphers) => { - string prefix = p == SecurityProtocolType.Tls ? "TLS_" : "SSL_"; - return new List { prefix + "RSA_WITH_AES_128_CBC_SHA", prefix + "RSA_WITH_AES_256_CBC_SHA" }; - }; - // both client and server supports AES (128 and 256) - server will select 128 (first choice) - AuthenticateClientAndServer_ClientSendsNoData (); - } - finally { - ServicePointManager.ClientCipherSuitesCallback = null; - ServicePointManager.ServerCipherSuitesCallback = null; - } - } - - [Test] - public void MismatchedCipherSuites () - { - try { - ServicePointManager.ClientCipherSuitesCallback += (SecurityProtocolType p, IEnumerable allCiphers) => { - string prefix = p == SecurityProtocolType.Tls ? "TLS_" : "SSL_"; - return new List { prefix + "RSA_WITH_AES_128_CBC_SHA" }; - }; - ServicePointManager.ServerCipherSuitesCallback += (SecurityProtocolType p, IEnumerable allCiphers) => { - string prefix = p == SecurityProtocolType.Tls ? "TLS_" : "SSL_"; - return new List { prefix + "RSA_WITH_AES_256_CBC_SHA" }; - }; - // mismatch! server will refuse and send back an alert - AuthenticateClientAndServer (false, false); - } - finally { - ServicePointManager.ClientCipherSuitesCallback = null; - ServicePointManager.ServerCipherSuitesCallback = null; - } - } - private void StartClientAndAuthenticate (ClientServerState state, IPEndPoint endPoint) { try { diff --git a/mcs/class/System/Test/System.Net.Sockets/SocketAcceptAsyncTest.cs b/mcs/class/System/Test/System.Net.Sockets/SocketAcceptAsyncTest.cs new file mode 100644 index 0000000000..3815b623c3 --- /dev/null +++ b/mcs/class/System/Test/System.Net.Sockets/SocketAcceptAsyncTest.cs @@ -0,0 +1,60 @@ +using System.Threading; +using System.Net; +using System.Net.Sockets; +using NUnit.Framework; + +namespace MonoTests.System.Net.Sockets +{ + [TestFixture] + public class SocketAcceptAsyncTest + { + [Test] + public void AcceptAsyncShouldUseAcceptSocketFromEventArgs() + { + var readyEvent = new ManualResetEvent(false); + var mainEvent = new ManualResetEvent(false); + var listenSocket = new Socket( + AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); + var serverSocket = new Socket( + AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); + Socket acceptedSocket = null; + + ThreadPool.QueueUserWorkItem(_ => + { + listenSocket.Bind(new IPEndPoint(IPAddress.Loopback, 0)); + listenSocket.Listen(1); + + var asyncEventArgs = new SocketAsyncEventArgs {AcceptSocket = serverSocket}; + asyncEventArgs.Completed += (s, e) => + { + acceptedSocket = e.AcceptSocket; + mainEvent.Set(); + }; + + readyEvent.Set(); + + if (listenSocket.AcceptAsync(asyncEventArgs)) + return; + acceptedSocket = asyncEventArgs.AcceptSocket; + mainEvent.Set(); + }); + Assert.IsTrue(readyEvent.WaitOne(1500)); + + var clientSocket = new Socket( + AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); + clientSocket.Connect(listenSocket.LocalEndPoint); + clientSocket.NoDelay = true; + + Assert.IsTrue(mainEvent.WaitOne(1500)); + Assert.AreEqual(serverSocket, acceptedSocket); + mainEvent.Reset(); + + if (acceptedSocket != null) + acceptedSocket.Close(); + + listenSocket.Close(); + readyEvent.Close(); + mainEvent.Close(); + } + } +} diff --git a/mcs/class/System/Test/System.Net/DnsTest.cs b/mcs/class/System/Test/System.Net/DnsTest.cs index ef55ed36a6..fe3769fd54 100644 --- a/mcs/class/System/Test/System.Net/DnsTest.cs +++ b/mcs/class/System/Test/System.Net/DnsTest.cs @@ -7,13 +7,6 @@ // (C) 2001 Mads Pultz // (C) 2003 Martin Willemoes Hansen // -// This test assumes the following: -// 1) The following Internet sites exist: -// www.go-mono.com with IP address 64.14.94.188 -// info.diku.dk with IP address 130.225.96.4 -// 2) The following DNS name does not exist: -// www.hopefullydoesnotexist.dk -// using System; using System.Collections; @@ -28,12 +21,12 @@ namespace MonoTests.System.Net [TestFixture] public class DnsTest { - private String site1Name = "jenkins.mono-project.com", - site1Dot = "162.253.133.196", - site2Name = "info.diku.dk", - site2Dot = "130.225.96.4", + private String site1Name = "google-public-dns-a.google.com", + site1Dot = "8.8.8.8", + site2Name = "google-public-dns-b.google.com", + site2Dot = "8.8.4.4", noneExistingSite = "unlikely.xamarin.com"; - private uint site1IP = 1852407392, site2IP = 2195808260; // Big-Endian + private uint site1IP = 134744072, site2IP = 134743044; // Big-Endian [Test] public void AsyncGetHostByName () @@ -44,7 +37,7 @@ namespace MonoTests.System.Net IAsyncResult async = Dns.BeginGetHostByName (site1Name, null, null); IPHostEntry entry = Dns.EndGetHostByName (async); SubTestValidIPHostEntry (entry); - Assert.IsTrue (entry.HostName == "jenkins.mono-project.com"); + Assert.IsTrue (entry.HostName == "google-public-dns-a.google.com"); } void GetHostByNameCallback (IAsyncResult ar) @@ -189,7 +182,7 @@ namespace MonoTests.System.Net [Test] public void GetHostByName () { - SubTestGetHostByName ("jenkins.mono-project.com", site1Dot); + SubTestGetHostByName (site1Name, site1Dot); SubTestGetHostByName (site2Name, site2Dot); try { var entry = Dns.GetHostByName (noneExistingSite); diff --git a/mcs/class/corlib/System.Security.Cryptography.X509Certificates/X509Helper.cs b/mcs/class/corlib/System.Security.Cryptography.X509Certificates/X509Helper.cs index 1f3f1f83d1..c12fa6229c 100644 --- a/mcs/class/corlib/System.Security.Cryptography.X509Certificates/X509Helper.cs +++ b/mcs/class/corlib/System.Security.Cryptography.X509Certificates/X509Helper.cs @@ -148,34 +148,46 @@ namespace System.Security.Cryptography.X509Certificates } } -#if !MONOTOUCH && !XAMMAC - public static X509CertificateImpl Import (byte[] rawData, string password, X509KeyStorageFlags keyStorageFlags) + static byte[] PEM (string type, byte[] data) { - if (nativeHelper != null) - return nativeHelper.Import (rawData, password, keyStorageFlags); + string pem = Encoding.ASCII.GetString (data); + string header = String.Format ("-----BEGIN {0}-----", type); + string footer = String.Format ("-----END {0}-----", type); + int start = pem.IndexOf (header) + header.Length; + int end = pem.IndexOf (footer, start); + string base64 = pem.Substring (start, (end - start)); + return Convert.FromBase64String (base64); + } + static byte[] ConvertData (byte[] data) + { + if (data == null || data.Length == 0) + return data; + + // does it looks like PEM ? + if (data [0] != 0x30) { + try { + return PEM ("CERTIFICATE", data); + } catch { + // let the implementation take care of it. + } + } + return data; + } + +#if !MONOTOUCH && !XAMMAC + static X509CertificateImpl Import (byte[] rawData) + { MX.X509Certificate x509; - if (password == null) { + try { + x509 = new MX.X509Certificate (rawData); + } catch (Exception e) { try { - x509 = new MX.X509Certificate (rawData); - } catch (Exception e) { - try { - x509 = ImportPkcs12 (rawData, null); - } catch { - string msg = Locale.GetText ("Unable to decode certificate."); - // inner exception is the original (not second) exception - throw new CryptographicException (msg, e); - } - } - } else { - // try PKCS#12 - try { - x509 = ImportPkcs12 (rawData, password); - } - catch { - // it's possible to supply a (unrequired/unusued) password - // fix bug #79028 - x509 = new MX.X509Certificate (rawData); + x509 = ImportPkcs12 (rawData, null); + } catch { + string msg = Locale.GetText ("Unable to decode certificate."); + // inner exception is the original (not second) exception + throw new CryptographicException (msg, e); } } @@ -183,6 +195,26 @@ namespace System.Security.Cryptography.X509Certificates } #endif + public static X509CertificateImpl Import (byte[] rawData, string password, X509KeyStorageFlags keyStorageFlags) + { + if (password == null) { + rawData = ConvertData (rawData); + return Import (rawData); + } + + MX.X509Certificate x509; + // try PKCS#12 + try { + x509 = ImportPkcs12 (rawData, password); + } catch { + // it's possible to supply a (unrequired/unusued) password + // fix bug #79028 + x509 = new MX.X509Certificate (rawData); + } + + return new X509CertificateImplMono (x509); + } + public static byte[] Export (X509CertificateImpl impl, X509ContentType contentType, byte[] password) { ThrowIfContextInvalid (impl); diff --git a/mcs/class/corlib/Test/System.IO/FileStreamTest.cs b/mcs/class/corlib/Test/System.IO/FileStreamTest.cs index 2eae58e3e4..6c1c13ae6c 100644 --- a/mcs/class/corlib/Test/System.IO/FileStreamTest.cs +++ b/mcs/class/corlib/Test/System.IO/FileStreamTest.cs @@ -1671,6 +1671,9 @@ namespace MonoTests.System.IO } catch (FileNotFoundException) { // Only run this test on platforms where /dev/zero exists Assert.Ignore(); + } catch (DirectoryNotFoundException) { + // Only run this test on platforms where /dev exists + Assert.Ignore(); } // this shouldn't throw diff --git a/mcs/class/corlib/Test/System.Threading/CountdownEventTests.cs b/mcs/class/corlib/Test/System.Threading/CountdownEventTests.cs index b9d20c73ab..9f1d87cc0d 100644 --- a/mcs/class/corlib/Test/System.Threading/CountdownEventTests.cs +++ b/mcs/class/corlib/Test/System.Threading/CountdownEventTests.cs @@ -304,7 +304,7 @@ namespace MonoTests.System.Threading }); } - Assert.IsTrue (ce.Wait (1000), "#1"); + Assert.IsTrue (ce.Wait (10000), "#1"); } } } diff --git a/mcs/class/corlib/Test/System.Threading/TimerTest.cs b/mcs/class/corlib/Test/System.Threading/TimerTest.cs index 2ed3b6003c..ce1c9793fc 100644 --- a/mcs/class/corlib/Test/System.Threading/TimerTest.cs +++ b/mcs/class/corlib/Test/System.Threading/TimerTest.cs @@ -103,7 +103,7 @@ namespace MonoTests.System.Threading { [Test] // bug #320950 public void TestDispose2 () { - Timer t = new Timer (o => Callback (o), null, 10, 10); + Timer t = new Timer (o => DoNothing (o), null, 10, 10); t.Dispose (); t.Dispose (); } diff --git a/mcs/class/lib/monolite/Mono.Security.dll.REMOVED.git-id b/mcs/class/lib/monolite/Mono.Security.dll.REMOVED.git-id index eb4e594bec..315a0e9d88 100644 --- a/mcs/class/lib/monolite/Mono.Security.dll.REMOVED.git-id +++ b/mcs/class/lib/monolite/Mono.Security.dll.REMOVED.git-id @@ -1 +1 @@ -cda5f1e52d7ff05ac3c67c95adb635880bcd8928 \ No newline at end of file +5203fe1002a11476d61e6876fd7bfce0d3bdd618 \ No newline at end of file diff --git a/mcs/class/lib/monolite/System.Core.dll.REMOVED.git-id b/mcs/class/lib/monolite/System.Core.dll.REMOVED.git-id index b9b6303689..b99836b7f2 100644 --- a/mcs/class/lib/monolite/System.Core.dll.REMOVED.git-id +++ b/mcs/class/lib/monolite/System.Core.dll.REMOVED.git-id @@ -1 +1 @@ -f28fbc2560c903ccf538f1f56b893a8ee0b9b7b0 \ No newline at end of file +f1a099fb8bb3184e5205e97ba95cf836dfe8cc55 \ No newline at end of file diff --git a/mcs/class/lib/monolite/System.dll.REMOVED.git-id b/mcs/class/lib/monolite/System.dll.REMOVED.git-id index 515ea3e5bb..8245e0eaa4 100644 --- a/mcs/class/lib/monolite/System.dll.REMOVED.git-id +++ b/mcs/class/lib/monolite/System.dll.REMOVED.git-id @@ -1 +1 @@ -d75327e36d7b32dc9109603a62412b3e8aa159fe \ No newline at end of file +0c4f173c3278c4f1e67d28260a84b3168b0cb207 \ No newline at end of file diff --git a/mcs/class/lib/monolite/mscorlib.dll.REMOVED.git-id b/mcs/class/lib/monolite/mscorlib.dll.REMOVED.git-id index 1da3473442..7a30c7e447 100644 --- a/mcs/class/lib/monolite/mscorlib.dll.REMOVED.git-id +++ b/mcs/class/lib/monolite/mscorlib.dll.REMOVED.git-id @@ -1 +1 @@ -dd524703971ceb5b9e38a37927cbf400b8445a80 \ No newline at end of file +94fa7ed0e1fb060ea39ff108b58e4bf1c7169357 \ No newline at end of file diff --git a/mcs/class/reference-assemblies/Makefile b/mcs/class/reference-assemblies/Makefile index 60d4cbd3f1..519786c3cf 100644 --- a/mcs/class/reference-assemblies/Makefile +++ b/mcs/class/reference-assemblies/Makefile @@ -18,11 +18,12 @@ install-local: $(INSTALL_LIB) ../../../external/binary-reference-assemblies/v4.5/*.dll $(PROFILE_DIR)/4.5-api $(INSTALL_LIB) ../../../external/binary-reference-assemblies/v4.5/Facades/*.dll $(PROFILE_DIR)/4.5-api/Facades - # Unfortunately, a few programs (most notably NUnit) have hardcoded checks for /lib/mono/4.0/mscorlib.dll, + # Unfortunately, a few programs (most notably NUnit and FSharp) have hardcoded checks for /lib/mono/4.0/mscorlib.dll or Mono.Posix.dll, # so we need to place something there or those tools break. We decided to symlink to the reference assembly for now. - # See https://bugzilla.xamarin.com/show_bug.cgi?id=38331 + # See https://bugzilla.xamarin.com/show_bug.cgi?id=38331 and https://bugzilla.xamarin.com/show_bug.cgi?id=41052 $(MKINSTALLDIRS) $(PROFILE_DIR)/4.0 ln -sf ../4.0-api/mscorlib.dll $(PROFILE_DIR)/4.0/mscorlib.dll + ln -sf ../4.0-api/Mono.Posix.dll $(PROFILE_DIR)/4.0/Mono.Posix.dll DISTFILES = $(wildcard ../../../external/binary-reference-assemblies/v4.5/Facades/*.dll) $(wildcard ../../../external/binary-reference-assemblies/v4.5/*.dll) $(wildcard ../../../external/binary-reference-assemblies/v4.0/*.dll) $(wildcard ../../../external/binary-reference-assemblies/v3.5/*.dll) $(wildcard ../../../external/binary-reference-assemblies/v2.0/*.dll) Makefile diff --git a/mcs/tools/mkbundle/mkbundle.cs b/mcs/tools/mkbundle/mkbundle.cs index e4cf707bc6..c16b50e42b 100755 --- a/mcs/tools/mkbundle/mkbundle.cs +++ b/mcs/tools/mkbundle/mkbundle.cs @@ -7,6 +7,11 @@ // Miguel de Icaza // // (C) Novell, Inc 2004 +// (C) 2016 Xamarin Inc +// +// Missing features: +// * Add support for packaging native libraries, extracting at runtime and setting the library path. +// * Implement --list-targets lists all the available remote targets // using System; using System.Diagnostics; @@ -17,8 +22,9 @@ using System.IO.Compression; using System.Runtime.InteropServices; using System.Text; using IKVM.Reflection; - - +using System.Linq; +using System.Diagnostics; +using System.Net; using System.Threading.Tasks; class MakeBundle { @@ -40,6 +46,12 @@ class MakeBundle { static bool skip_scan; static string ctor_func; static bool quiet; + static string cross_target = null; + static string fetch_target = null; + static bool custom_mode = true; + static string embedded_options = null; + static string runtime = null; + static string target_server = "https://download.mono-project.com/runtimes/raw/"; static int Main (string [] args) { @@ -55,10 +67,56 @@ class MakeBundle { Help (); return 1; + case "--simple": + custom_mode = false; + autodeps = true; + break; + + case "--custom": + custom_mode = true; + break; + case "-c": compile_only = true; break; + + case "--local-targets": + CommandLocalTargets (); + return 0; + + case "--cross": + if (i+1 == top){ + Help (); + return 1; + } + custom_mode = false; + autodeps = true; + cross_target = args [++i]; + break; + + case "--fetch-target": + if (i+1 == top){ + Help (); + return 1; + } + fetch_target = args [++i]; + break; + + case "--list-targets": + var wc = new WebClient (); + var s = wc.DownloadString (new Uri (target_server + "target-list.txt")); + Console.WriteLine ("Cross-compilation targets available:\n" + s); + return 0; + + case "--target-server": + if (i+1 == top){ + Help (); + return 1; + } + target_server = args [++i]; + break; + case "-o": if (i+1 == top){ Help (); @@ -67,6 +125,20 @@ class MakeBundle { output = args [++i]; break; + case "--options": + if (i+1 == top){ + Help (); + return 1; + } + embedded_options = args [++i]; + break; + case "--runtime": + if (i+1 == top){ + Help (); + return 1; + } + runtime = args [++i]; + break; case "-oo": if (i+1 == top){ Help (); @@ -94,6 +166,7 @@ class MakeBundle { case "--keeptemp": keeptemp = true; break; + case "--static": static_link = true; if (!quiet) { @@ -193,13 +266,60 @@ class MakeBundle { foreach (string file in assemblies) if (!QueueAssembly (files, file)) return 1; - - GenerateBundles (files); - //GenerateJitWrapper (); + + if (fetch_target != null){ + var truntime = Path.Combine (targets_dir, fetch_target, "mono"); + Directory.CreateDirectory (Path.GetDirectoryName (truntime)); + var wc = new WebClient (); + var uri = new Uri ($"{target_server}{fetch_target}"); + try { + wc.DownloadFile (uri, truntime); + } catch { + Console.Error.WriteLine ($"Failure to download the specified runtime from {uri}"); + File.Delete (truntime); + return 1; + } + return 0; + } + + if (custom_mode) + GenerateBundles (files); + else { + if (cross_target == "default") + runtime = null; + else { + var truntime = Path.Combine (targets_dir, cross_target, "mono"); + if (!File.Exists (truntime)){ + Console.Error.WriteLine ($"The runtime for the {cross_target} does not exist, use --fetch-target {cross_target} to download first"); + return 1; + } + } + GeneratePackage (files); + } return 0; } + static string targets_dir = Path.Combine (Environment.GetFolderPath (Environment.SpecialFolder.Personal), ".mono", "targets"); + + static void CommandLocalTargets () + { + string [] targets; + + Console.WriteLine ("Available targets:"); + Console.WriteLine ("\tdefault\t- Current System Mono"); + try { + targets = Directory.GetDirectories (targets_dir); + } catch { + return; + } + foreach (var target in targets){ + var p = Path.Combine (target, "mono"); + if (File.Exists (p)) + Console.WriteLine ("\t{0}", Path.GetFileName (target)); + } + } + static void WriteSymbol (StreamWriter sw, string name, long size) { switch (style){ @@ -260,6 +380,138 @@ class MakeBundle { ts.WriteLine (); } + + class PackageMaker { + Dictionary> locations = new Dictionary> (); + const int align = 4096; + Stream package; + + public PackageMaker (string output) + { + package = File.Create (output, 128*1024); + if (IsUnix){ + File.SetAttributes (output, unchecked ((FileAttributes) 0x80000000)); + } + } + + public int AddFile (string fname) + { + using (Stream fileStream = File.OpenRead (fname)){ + var ret = fileStream.Length; + + Console.WriteLine ("At {0:x} with input {1}", package.Position, fileStream.Length); + fileStream.CopyTo (package); + package.Position = package.Position + (align - (package.Position % align)); + + return (int) ret; + } + } + + public void Add (string entry, string fname) + { + var p = package.Position; + var size = AddFile (fname); + + locations [entry] = Tuple.Create(p, size); + } + + public void AddString (string entry, string text) + { + var bytes = Encoding.UTF8.GetBytes (text); + locations [entry] = Tuple.Create (package.Position, bytes.Length); + package.Write (bytes, 0, bytes.Length); + package.Position = package.Position + (align - (package.Position % align)); + } + + public void Dump () + { + foreach (var floc in locations.Keys){ + Console.WriteLine ($"{floc} at {locations[floc]:x}"); + } + } + + public void WriteIndex () + { + var indexStart = package.Position; + var binary = new BinaryWriter (package); + + binary.Write (locations.Count); + foreach (var entry in from entry in locations orderby entry.Value.Item1 ascending select entry){ + var bytes = Encoding.UTF8.GetBytes (entry.Key); + binary.Write (bytes.Length+1); + binary.Write (bytes); + binary.Write ((byte) 0); + binary.Write (entry.Value.Item1); + binary.Write (entry.Value.Item2); + } + binary.Write (indexStart); + binary.Write (Encoding.UTF8.GetBytes ("xmonkeysloveplay")); + binary.Flush (); + } + + public void Close () + { + WriteIndex (); + package.Close (); + package = null; + } + } + + static bool MaybeAddFile (PackageMaker maker, string code, string file) + { + if (file == null) + return true; + + if (!File.Exists (file)){ + Console.Error.WriteLine ("The file {0} does not exist", file); + return false; + } + maker.Add (code, file); + return true; + } + + static bool GeneratePackage (List files) + { + if (runtime == null){ + if (IsUnix) + runtime = Process.GetCurrentProcess().MainModule.FileName; + else { + Console.Error.WriteLine ("You must specify at least one runtime with --runtime or --cross"); + Environment.Exit (1); + } + } + if (!File.Exists (runtime)){ + Console.Error.WriteLine ($"The specified runtime at {runtime} does not exist"); + Environment.Exit (1); + } + + if (ctor_func != null){ + Console.Error.WriteLine ("--static-ctor not supported with package bundling, you must use native compilation for this"); + return false; + } + + var maker = new PackageMaker (output); + maker.AddFile (runtime); + + foreach (var url in files){ + string fname = LocateFile (new Uri (url).LocalPath); + string aname = Path.GetFileName (fname); + + maker.Add ("assembly:" + aname, fname); + if (File.Exists (fname + ".config")) + maker.Add ("config:" + aname, fname + ".config"); + } + if (!MaybeAddFile (maker, "systemconfig:", config_file) || !MaybeAddFile (maker, "machineconfig:", machine_config_file)) + return false; + + if (config_dir != null) + maker.Add ("config_dir:", config_dir); + if (embedded_options != null) + maker.AddString ("options:", embedded_options); + maker.Dump (); + maker.Close (); + return true; + } static void GenerateBundles (List files) { @@ -710,24 +962,34 @@ void mono_register_config_for_assembly (const char* assembly_name, cons { Console.WriteLine ("Usage is: mkbundle [options] assembly1 [assembly2...]\n\n" + "Options:\n" + - " -c Produce stub only, do not compile\n" + - " -o out Specifies output filename\n" + - " -oo obj Specifies output filename for helper object file\n" + + " --config F Bundle system config file `F'\n" + + " --config-dir D Set MONO_CFG_DIR to `D'\n" + + " --deps Turns on automatic dependency embedding (default on simple)\n" + " -L path Adds `path' to the search path for assemblies\n" + - " --nodeps Turns off automatic dependency embedding (default)\n" + - " --deps Turns on automatic dependency embedding\n" + + " --machine-config F Use the given file as the machine.config for the application.\n" + + " -o out Specifies output filename\n" + + " --nodeps Turns off automatic dependency embedding (default on custom)\n" + + " --skip-scan Skip scanning assemblies that could not be loaded (but still embed them).\n" + + "\n" + + "--simple Simple mode does not require a C toolchain and can cross compile\n" + + " --cross TARGET Generates a binary for the given TARGET\n"+ + " --local-targets Lists locally available targets\n" + + " --list-targets Lists available targets on the remote server\n" + + " --options OPTIONS Embed the specified Mono command line options on target\n" + + " --runtime RUNTIME Manually specifies the Mono runtime to use\n" + + " --target-server URL Specified a server to download targets from, default is " + target_server + "\n" + + "\n" + + "--custom Builds a custom launcher, options for --custom\n" + + " -c Produce stub only, do not compile\n" + + " -oo obj Specifies output filename for helper object file\n" + " --dos2unix[=true|false]\n" + " When no value provided, or when `true` specified\n" + " `dos2unix` will be invoked to convert paths on Windows.\n" + " When `--dos2unix=false` used, dos2unix is NEVER used.\n" + " --keeptemp Keeps the temporary files\n" + - " --config F Bundle system config file `F'\n" + - " --config-dir D Set MONO_CFG_DIR to `D'\n" + - " --machine-config F Use the given file as the machine.config for the application.\n" + " --static Statically link to mono libs\n" + " --nomain Don't include a main() function, for libraries\n" + " -z Compress the assemblies before embedding.\n" + - " --skip-scan Skip scanning assemblies that could not be loaded (but still embed them).\n" + " --static-ctor ctor Add a constructor call to the supplied function.\n" + " You need zlib development headers and libraries.\n"); } diff --git a/mcs/tools/xbuild/data/14.0/Microsoft.Common.targets b/mcs/tools/xbuild/data/14.0/Microsoft.Common.targets index f9d5ca8661..bea93366ec 100644 --- a/mcs/tools/xbuild/data/14.0/Microsoft.Common.targets +++ b/mcs/tools/xbuild/data/14.0/Microsoft.Common.targets @@ -104,7 +104,10 @@ Text="OutDir property must end with a slash."/> - + + AssignLinkMetadata + +