diff options
author | Mattia Biondi | 2019-11-27 17:14:14 +0100 |
---|---|---|
committer | Mattia Biondi | 2019-11-27 17:14:14 +0100 |
commit | 6a1ddb79a942af7994bb5fc4ff61887b96e77737 (patch) | |
tree | 01f32120ba1d1288ea9fa4c73c703529f3d925dc | |
parent | a9d9e414ddc69c86d7c5cfbbfcad173a1a25a2ad (diff) | |
download | aur-6a1ddb79a942af7994bb5fc4ff61887b96e77737.tar.gz |
upstream fixes patch
-rw-r--r-- | 0001-upstream-fixes.patch | 1282 | ||||
-rw-r--r-- | PKGBUILD | 13 |
2 files changed, 1292 insertions, 3 deletions
diff --git a/0001-upstream-fixes.patch b/0001-upstream-fixes.patch new file mode 100644 index 000000000000..421c71ecb9ab --- /dev/null +++ b/0001-upstream-fixes.patch @@ -0,0 +1,1282 @@ +From 5bb52356fefcce86eac8d0f0c2d231c68b24d6a4 Mon Sep 17 00:00:00 2001 +From: Mattia Biondi <mattiabiondi1@gmail.com> +Date: Wed, 27 Nov 2019 16:47:52 +0100 +Subject: [PATCH] upstream fixes + +--- + configure.ac | 5 +- + examples/hello-umps/Makefile-templ | 2 +- + examples/termio/Makefile-templ | 2 +- + m4/boost.m4 | 785 +++++++++++++++++++++++++---- + src/support/bios/Makefile.am | 2 +- + src/umps/vde_network.cc | 7 +- + 6 files changed, 686 insertions(+), 117 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 2e378a3..42e0c15 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -20,14 +20,15 @@ AC_SUBST(ACLOCAL_AMFLAGS, "$ACLOCAL_FLAGS -I m4") + + # Checks for programs. + ++AM_PROG_AR ++AM_PROG_AS ++AM_PROG_LD + AC_PROG_CXX + AC_PROG_CC + AC_PROG_CPP + AC_PROG_INSTALL + AC_PROG_LN_S + AC_PROG_LIBTOOL +-AM_PROG_AS +-AM_PROG_LD + + # Initialize libtool + LT_INIT +diff --git a/examples/hello-umps/Makefile-templ b/examples/hello-umps/Makefile-templ +index f414a9c..88b00a6 100644 +--- a/examples/hello-umps/Makefile-templ ++++ b/examples/hello-umps/Makefile-templ +@@ -19,7 +19,7 @@ UMPS2_INCLUDE_DIR = $(UMPS2_DIR_PREFIX)/include/umps2 + + # Compiler options + CFLAGS_LANG = -ffreestanding -ansi +-CFLAGS_MIPS = -mips1 -mabi=32 -mno-gpopt -G 0 -mno-abicalls -fno-pic ++CFLAGS_MIPS = -mips1 -mabi=32 -mno-gpopt -G 0 -mno-abicalls -fno-pic -mfp32 + CFLAGS = $(CFLAGS_LANG) $(CFLAGS_MIPS) -I$(UMPS2_INCLUDE_DIR) -Wall -O0 + + # Linker options +diff --git a/examples/termio/Makefile-templ b/examples/termio/Makefile-templ +index 88d945a..3407e2d 100644 +--- a/examples/termio/Makefile-templ ++++ b/examples/termio/Makefile-templ +@@ -19,7 +19,7 @@ UMPS2_INCLUDE_DIR = $(UMPS2_DIR_PREFIX)/include/umps2 + + # Compiler options + CFLAGS_LANG = -ffreestanding -ansi +-CFLAGS_MIPS = -mips1 -mabi=32 -mno-gpopt -G 0 -mno-abicalls -fno-pic ++CFLAGS_MIPS = -mips1 -mabi=32 -mno-gpopt -G 0 -mno-abicalls -fno-pic -mfp32 + CFLAGS = $(CFLAGS_LANG) $(CFLAGS_MIPS) -I$(UMPS2_INCLUDE_DIR) -Wall -O0 + + # Linker options +diff --git a/m4/boost.m4 b/m4/boost.m4 +index 6a9294c..96b4b54 100644 +--- a/m4/boost.m4 ++++ b/m4/boost.m4 +@@ -1,5 +1,5 @@ + # boost.m4: Locate Boost headers and libraries for autoconf-based projects. +-# Copyright (C) 2007, 2008, 2009, 2010, 2011 Benoit Sigoure <tsuna@lrde.epita.fr> ++# Copyright (C) 2007-2011, 2014 Benoit Sigoure <tsuna@lrde.epita.fr> + # + # 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 +@@ -22,7 +22,7 @@ + # along with this program. If not, see <http://www.gnu.org/licenses/>. + + m4_define([_BOOST_SERIAL], [m4_translit([ +-# serial 16 ++# serial 27 + ], [# + ], [])]) + +@@ -59,7 +59,8 @@ m4_pattern_forbid([^_?(BOOST|Boost)_]) + # It could be useful to turn this into a macro which extracts the + # value of any macro. + m4_define([_BOOST_SED_CPP], +-[AC_LANG_PREPROC_REQUIRE()dnl ++[AC_LANG_PUSH([C++])dnl ++AC_LANG_PREPROC_REQUIRE()dnl + AC_REQUIRE([AC_PROG_SED])dnl + AC_LANG_CONFTEST([AC_LANG_SOURCE([[$2]])]) + AS_IF([dnl eval is necessary to expand ac_cpp. +@@ -71,13 +72,32 @@ dnl strip `\n' with backquotes, not the `\r'. This results in + dnl boost_cv_lib_version='1_37\r' for instance, which breaks + dnl everything else. + dnl Cannot use 'dnl' after [$4] because a trailing dnl may break AC_CACHE_CHECK ++dnl ++dnl Beware that GCC 5, when expanding macros, may embed # line directives ++dnl a within single line: ++dnl ++dnl # 1 "conftest.cc" ++dnl # 1 "<built-in>" ++dnl # 1 "<command-line>" ++dnl # 1 "conftest.cc" ++dnl # 1 "/opt/local/include/boost/version.hpp" 1 3 ++dnl # 2 "conftest.cc" 2 ++dnl boost-lib-version = ++dnl # 2 "conftest.cc" 3 ++dnl "1_56" ++dnl ++dnl So get rid of the # and empty lines, and glue the remaining ones together. + (eval "$ac_cpp conftest.$ac_ext") 2>&AS_MESSAGE_LOG_FD | ++ grep -v '#' | ++ grep -v '^[[[:space:]]]*$' | + tr -d '\r' | ++ tr -s '\n' ' ' | + $SED -n -e "$1" >conftest.i 2>&1], + [$3], + [$4]) + rm -rf conftest* +-])# AC_EGREP_CPP ++AC_LANG_POP([C++])dnl ++])# _BOOST_SED_CPP + + + +@@ -91,7 +111,7 @@ rm -rf conftest* + # On # success, defines HAVE_BOOST. On failure, calls the optional + # ACTION-IF-NOT-FOUND action if one was supplied. + # Otherwise aborts with an error message. +-AC_DEFUN([BOOST_REQUIRE], ++AC_DEFUN_ONCE([BOOST_REQUIRE], + [AC_REQUIRE([AC_PROG_CXX])dnl + AC_REQUIRE([AC_PROG_GREP])dnl + echo "$as_me: this is boost.m4[]_BOOST_SERIAL" >&AS_MESSAGE_LOG_FD +@@ -206,7 +226,7 @@ AC_LANG_POP([C++])dnl + AC_CACHE_CHECK([for Boost's header version], + [boost_cv_lib_version], + [m4_pattern_allow([^BOOST_LIB_VERSION$])dnl +- _BOOST_SED_CPP([/^boost-lib-version = /{s///;s/\"//g;p;q;}], ++ _BOOST_SED_CPP([[/^boost-lib-version = /{s///;s/[\" ]//g;p;q;}]], + [#include <boost/version.hpp> + boost-lib-version = BOOST_LIB_VERSION], + [boost_cv_lib_version=`cat conftest.i`])]) +@@ -214,24 +234,26 @@ boost-lib-version = BOOST_LIB_VERSION], + boost_major_version=`echo "$boost_cv_lib_version" | sed 's/_//;s/_.*//'` + case $boost_major_version in #( + '' | *[[!0-9]]*) +- AC_MSG_ERROR([invalid value: boost_major_version=$boost_major_version]) ++ AC_MSG_ERROR([invalid value: boost_major_version='$boost_major_version']) + ;; + esac + fi + CPPFLAGS=$boost_save_CPPFLAGS + ])# BOOST_REQUIRE + ++ + # BOOST_STATIC() + # -------------- + # Add the "--enable-static-boost" configure argument. If this argument is given + # on the command line, static versions of the libraries will be looked up. + AC_DEFUN([BOOST_STATIC], + [AC_ARG_ENABLE([static-boost], +- [AC_HELP_STRING([--enable-static-boost], ++ [AS_HELP_STRING([--enable-static-boost], + [Prefer the static boost libraries over the shared ones [no]])], + [enable_static_boost=yes], + [enable_static_boost=no])])# BOOST_STATIC + ++ + # BOOST_FIND_HEADER([HEADER-NAME], [ACTION-IF-NOT-FOUND], [ACTION-IF-FOUND]) + # -------------------------------------------------------------------------- + # Wrapper around AC_CHECK_HEADER for Boost headers. Useful to check for +@@ -264,14 +286,16 @@ fi + ])# BOOST_FIND_HEADER + + +-# BOOST_FIND_LIB([LIB-NAME], [PREFERRED-RT-OPT], [HEADER-NAME], [CXX-TEST], +-# [CXX-PROLOGUE]) +-# ------------------------------------------------------------------------- +-# Look for the Boost library LIB-NAME (e.g., LIB-NAME = `thread', for +-# libboost_thread). Check that HEADER-NAME works and check that +-# libboost_LIB-NAME can link with the code CXX-TEST. The optional argument +-# CXX-PROLOGUE can be used to include some C++ code before the `main' +-# function. ++# BOOST_FIND_LIBS([COMPONENT-NAME], [CANDIDATE-LIB-NAMES], ++# [PREFERRED-RT-OPT], [HEADER-NAME], [CXX-TEST], ++# [CXX-PROLOGUE]) ++# -------------------------------------------------------------- ++# Look for the Boost library COMPONENT-NAME (e.g., `thread', for ++# libboost_thread) under the possible CANDIDATE-LIB-NAMES (e.g., ++# "thread_win32 thread"). Check that HEADER-NAME works and check that ++# libboost_LIB-NAME can link with the code CXX-TEST. The optional ++# argument CXX-PROLOGUE can be used to include some C++ code before ++# the `main' function. + # + # Invokes BOOST_FIND_HEADER([HEADER-NAME]) (see above). + # +@@ -285,7 +309,7 @@ fi + # builds. Some sample values for PREFERRED-RT-OPT: (nothing), mt, d, mt-d, gdp + # ... If you want to make sure you have a specific version of Boost + # (eg, >= 1.33) you *must* invoke BOOST_REQUIRE before this macro. +-AC_DEFUN([BOOST_FIND_LIB], ++AC_DEFUN([BOOST_FIND_LIBS], + [AC_REQUIRE([BOOST_REQUIRE])dnl + AC_REQUIRE([_BOOST_FIND_COMPILER_TAG])dnl + AC_REQUIRE([BOOST_STATIC])dnl +@@ -293,38 +317,78 @@ AC_REQUIRE([_BOOST_GUESS_WHETHER_TO_USE_MT])dnl + if test x"$boost_cv_inc_path" = xno; then + AC_MSG_NOTICE([Boost not available, not searching for the Boost $1 library]) + else +-dnl The else branch is huge and wasn't intended on purpose. ++dnl The else branch is huge and wasn't indented on purpose. + AC_LANG_PUSH([C++])dnl + AS_VAR_PUSHDEF([Boost_lib], [boost_cv_lib_$1])dnl + AS_VAR_PUSHDEF([Boost_lib_LDFLAGS], [boost_cv_lib_$1_LDFLAGS])dnl + AS_VAR_PUSHDEF([Boost_lib_LDPATH], [boost_cv_lib_$1_LDPATH])dnl + AS_VAR_PUSHDEF([Boost_lib_LIBS], [boost_cv_lib_$1_LIBS])dnl +-BOOST_FIND_HEADER([$3]) ++BOOST_FIND_HEADER([$4]) + boost_save_CPPFLAGS=$CPPFLAGS + CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS" +-# Now let's try to find the library. The algorithm is as follows: first look +-# for a given library name according to the user's PREFERRED-RT-OPT. For each +-# library name, we prefer to use the ones that carry the tag (toolset name). +-# Each library is searched through the various standard paths were Boost is +-# usually installed. If we can't find the standard variants, we try to +-# enforce -mt (for instance on MacOSX, libboost_threads.dylib doesn't exist +-# but there's -obviously- libboost_threads-mt.dylib). + AC_CACHE_CHECK([for the Boost $1 library], [Boost_lib], +- [Boost_lib=no +- case "$2" in #( +- mt | mt-) boost_mt=-mt; boost_rtopt=;; #( +- mt* | mt-*) boost_mt=-mt; boost_rtopt=`expr "X$2" : 'Xmt-*\(.*\)'`;; #( +- *) boost_mt=; boost_rtopt=$2;; ++ [_BOOST_FIND_LIBS($@)]) ++case $Boost_lib in #( ++ (yes) _AC_MSG_LOG_CONFTEST ++ AC_DEFINE(AS_TR_CPP([HAVE_BOOST_$1]), [1], [Defined if the Boost $1 library is available])dnl ++ AC_SUBST(AS_TR_CPP([BOOST_$1_LDFLAGS]), [$Boost_lib_LDFLAGS])dnl ++ AC_SUBST(AS_TR_CPP([BOOST_$1_LDPATH]), [$Boost_lib_LDPATH])dnl ++ AC_SUBST([BOOST_LDPATH], [$Boost_lib_LDPATH])dnl ++ AC_SUBST(AS_TR_CPP([BOOST_$1_LIBS]), [$Boost_lib_LIBS])dnl ++ ;; ++ (no) _AC_MSG_LOG_CONFTEST ++ AC_MSG_ERROR([cannot find flags to link with the Boost $1 library (libboost-$1)]) ++ ;; ++esac ++CPPFLAGS=$boost_save_CPPFLAGS ++AS_VAR_POPDEF([Boost_lib])dnl ++AS_VAR_POPDEF([Boost_lib_LDFLAGS])dnl ++AS_VAR_POPDEF([Boost_lib_LDPATH])dnl ++AS_VAR_POPDEF([Boost_lib_LIBS])dnl ++AC_LANG_POP([C++])dnl ++fi ++]) ++ ++ ++# BOOST_FIND_LIB([LIB-NAME], ++# [PREFERRED-RT-OPT], [HEADER-NAME], [CXX-TEST], ++# [CXX-PROLOGUE]) ++# -------------------------------------------------------------- ++# Backward compatibility wrapper for BOOST_FIND_LIBS. ++AC_DEFUN([BOOST_FIND_LIB], ++[BOOST_FIND_LIBS([$1], $@)]) ++ ++ ++# _BOOST_FIND_LIBS([LIB-NAME], [CANDIDATE-LIB-NAMES], ++# [PREFERRED-RT-OPT], [HEADER-NAME], [CXX-TEST], ++# [CXX-PROLOGUE]) ++# -------------------------------------------------------------- ++# Real implementation of BOOST_FIND_LIBS: rely on these local macros: ++# Boost_lib, Boost_lib_LDFLAGS, Boost_lib_LDPATH, Boost_lib_LIBS ++# ++# The algorithm is as follows: first look for a given library name ++# according to the user's PREFERRED-RT-OPT. For each library name, we ++# prefer to use the ones that carry the tag (toolset name). Each ++# library is searched through the various standard paths were Boost is ++# usually installed. If we can't find the standard variants, we try ++# to enforce -mt (for instance on MacOSX, libboost_thread.dylib ++# doesn't exist but there's -obviously- libboost_thread-mt.dylib). ++AC_DEFUN([_BOOST_FIND_LIBS], ++[Boost_lib=no ++ case "$3" in #( ++ (mt | mt-) boost_mt=-mt; boost_rtopt=;; #( ++ (mt* | mt-*) boost_mt=-mt; boost_rtopt=`expr "X$3" : 'Xmt-*\(.*\)'`;; #( ++ (*) boost_mt=; boost_rtopt=$3;; + esac + if test $enable_static_boost = yes; then + boost_rtopt="s$boost_rtopt" + fi + # Find the proper debug variant depending on what we've been asked to find. + case $boost_rtopt in #( +- *d*) boost_rt_d=$boost_rtopt;; #( +- *[[sgpn]]*) # Insert the `d' at the right place (in between `sg' and `pn') ++ (*d*) boost_rt_d=$boost_rtopt;; #( ++ (*[[sgpn]]*) # Insert the `d' at the right place (in between `sg' and `pn') + boost_rt_d=`echo "$boost_rtopt" | sed 's/\(s*g*\)\(p*n*\)/\1\2/'`;; #( +- *) boost_rt_d='-d';; ++ (*) boost_rt_d='-d';; + esac + # If the PREFERRED-RT-OPT are not empty, prepend a `-'. + test -n "$boost_rtopt" && boost_rtopt="-$boost_rtopt" +@@ -335,8 +399,9 @@ AC_CACHE_CHECK([for the Boost $1 library], [Boost_lib], + AC_MSG_ERROR([the libext variable is empty, did you invoke Libtool?]) + boost_save_ac_objext=$ac_objext + # Generate the test file. +- AC_LANG_CONFTEST([AC_LANG_PROGRAM([#include <$3> +-$5], [$4])]) ++ AC_LANG_CONFTEST([AC_LANG_PROGRAM([$7 ++#include <$4> ++$6], [$5])]) + dnl Optimization hacks: compiling C++ is slow, especially with Boost. What + dnl we're trying to do here is guess the right combination of link flags + dnl (LIBS / LDFLAGS) to use a given library. This can take several +@@ -358,21 +423,25 @@ dnl start the for loops). + [AC_MSG_ERROR([cannot compile a test that uses Boost $1])]) + ac_objext=$boost_save_ac_objext + boost_failed_libs= +-# Don't bother to ident the 6 nested for loops, only the 2 innermost ones +-# matter. ++# Don't bother to ident the following nested for loops, only the 2 ++# innermost ones matter. ++for boost_lib_ in $2; do + for boost_tag_ in -$boost_cv_lib_tag ''; do + for boost_ver_ in -$boost_cv_lib_version ''; do + for boost_mt_ in $boost_mt -mt ''; do + for boost_rtopt_ in $boost_rtopt '' -d; do +- for boost_lib in \ +- boost_$1$boost_tag_$boost_mt_$boost_rtopt_$boost_ver_ \ +- boost_$1$boost_tag_$boost_rtopt_$boost_ver_ \ +- boost_$1$boost_tag_$boost_mt_$boost_ver_ \ +- boost_$1$boost_tag_$boost_ver_ ++ for boost_full_suffix in \ ++ $boost_last_suffix \ ++ x$boost_tag_$boost_mt_$boost_rtopt_$boost_ver_ \ ++ x$boost_tag_$boost_rtopt_$boost_ver_ \ ++ x$boost_tag_$boost_mt_$boost_ver_ \ ++ x$boost_tag_$boost_ver_ + do ++ boost_real_suffix=`echo "$boost_full_suffix" | sed 's/^x//'` ++ boost_lib="boost_$boost_lib_$boost_real_suffix" + # Avoid testing twice the same lib + case $boost_failed_libs in #( +- *@$boost_lib@*) continue;; ++ (*@$boost_lib@*) continue;; + esac + # If with_boost is empty, we'll search in /lib first, which is not quite + # right so instead we'll try to a location based on where the headers are. +@@ -382,14 +451,17 @@ for boost_rtopt_ in $boost_rtopt '' -d; do + /opt/local/lib* /usr/local/lib* /opt/lib* /usr/lib* \ + "$with_boost" C:/Boost/lib /lib* + do +- test -e "$boost_ldpath" || continue ++ # Don't waste time with directories that don't exist. ++ if test x"$boost_ldpath" != x && test ! -e "$boost_ldpath"; then ++ continue ++ fi + boost_save_LDFLAGS=$LDFLAGS + # Are we looking for a static library? + case $boost_ldpath:$boost_rtopt_ in #( +- *?*:*s*) # Yes (Non empty boost_ldpath + s in rt opt) ++ (*?*:*s*) # Yes (Non empty boost_ldpath + s in rt opt) + Boost_lib_LIBS="$boost_ldpath/lib$boost_lib.$libext" + test -e "$Boost_lib_LIBS" || continue;; #( +- *) # No: use -lboost_foo to find the shared library. ++ (*) # No: use -lboost_foo to find the shared library. + Boost_lib_LIBS="-l$boost_lib";; + esac + boost_save_LIBS=$LIBS +@@ -403,9 +475,36 @@ dnl generated only once above (before we start the for loops). + LDFLAGS=$boost_save_LDFLAGS + LIBS=$boost_save_LIBS + if test x"$Boost_lib" = xyes; then +- Boost_lib_LDFLAGS="-L$boost_ldpath -Wl,-R$boost_ldpath" ++ # Check or used cached result of whether or not using -R or ++ # -rpath makes sense. Some implementations of ld, such as for ++ # Mac OSX, require -rpath but -R is the flag known to work on ++ # other systems. https://github.com/tsuna/boost.m4/issues/19 ++ AC_CACHE_VAL([boost_cv_rpath_link_ldflag], ++ [case $boost_ldpath in ++ '') # Nothing to do. ++ boost_cv_rpath_link_ldflag= ++ boost_rpath_link_ldflag_found=yes;; ++ *) ++ for boost_cv_rpath_link_ldflag in -Wl,-R, -Wl,-rpath,; do ++ LDFLAGS="$boost_save_LDFLAGS -L$boost_ldpath $boost_cv_rpath_link_ldflag$boost_ldpath" ++ LIBS="$Boost_lib_LIBS $boost_save_LIBS" ++ _BOOST_AC_LINK_IFELSE([], ++ [boost_rpath_link_ldflag_found=yes ++ break], ++ [boost_rpath_link_ldflag_found=no]) ++ done ++ ;; ++ esac ++ AS_IF([test "x$boost_rpath_link_ldflag_found" != "xyes"], ++ [AC_MSG_ERROR([Unable to determine whether to use -R or -rpath])]) ++ LDFLAGS=$boost_save_LDFLAGS ++ LIBS=$boost_save_LIBS ++ ]) ++ test x"$boost_ldpath" != x && ++ Boost_lib_LDFLAGS="-L$boost_ldpath $boost_cv_rpath_link_ldflag$boost_ldpath" + Boost_lib_LDPATH="$boost_ldpath" +- break 6 ++ boost_last_suffix="$boost_full_suffix" ++ break 7 + else + boost_failed_libs="$boost_failed_libs@$boost_lib@" + fi +@@ -415,25 +514,10 @@ done + done + done + done ++done # boost_lib_ + rm -f conftest.$ac_objext + ]) +-case $Boost_lib in #( +- no) _AC_MSG_LOG_CONFTEST +- AC_MSG_ERROR([cannot find the flags to link with Boost $1]) +- ;; +-esac +-AC_SUBST(AS_TR_CPP([BOOST_$1_LDFLAGS]), [$Boost_lib_LDFLAGS])dnl +-AC_SUBST(AS_TR_CPP([BOOST_$1_LDPATH]), [$Boost_lib_LDPATH])dnl +-AC_SUBST([BOOST_LDPATH], [$Boost_lib_LDPATH])dnl +-AC_SUBST(AS_TR_CPP([BOOST_$1_LIBS]), [$Boost_lib_LIBS])dnl +-CPPFLAGS=$boost_save_CPPFLAGS +-AS_VAR_POPDEF([Boost_lib])dnl +-AS_VAR_POPDEF([Boost_lib_LDFLAGS])dnl +-AS_VAR_POPDEF([Boost_lib_LDPATH])dnl +-AS_VAR_POPDEF([Boost_lib_LIBS])dnl +-AC_LANG_POP([C++])dnl +-fi +-])# BOOST_FIND_LIB ++ + + + # --------------------------------------- # +@@ -458,6 +542,14 @@ m4_popdef([BOOST_Library])dnl + ]) + ]) + ++ ++# BOOST_ANY() ++# ------------ ++# Look for Boost.Any ++BOOST_DEFUN([Any], ++[BOOST_FIND_HEADER([boost/any.hpp])]) ++ ++ + # BOOST_ARRAY() + # ------------- + # Look for Boost.Array +@@ -472,14 +564,157 @@ BOOST_DEFUN([Asio], + [AC_REQUIRE([BOOST_SYSTEM])dnl + BOOST_FIND_HEADER([boost/asio.hpp])]) + ++# BOOST_BIMAP() ++# ------------ ++# Look for Boost.Bimap ++BOOST_DEFUN([Bimap], ++[BOOST_FIND_HEADER([boost/bimap.hpp])]) ++ ++ ++# BOOST_ASSIGN() ++# ------------- ++# Look for Boost.Assign ++BOOST_DEFUN([Assign], ++[BOOST_FIND_HEADER([boost/assign.hpp])]) ++ ++ ++# BOOST_ATOMIC([PREFERRED-RT-OPT]) ++# ------------------------------- ++# Look for Boost.Atomic. For the documentation of PREFERRED-RT-OPT, see the ++# documentation of BOOST_FIND_LIB above. ++BOOST_DEFUN([Atomic], ++[BOOST_FIND_LIB([atomic], [$1], ++ [boost/atomic.hpp], ++ [boost::atomic<int> a;], ++ [ ], ++ [#ifdef HAVE_UNISTD_H ++#include <unistd.h> ++#endif ++#ifdef HAVE_STDINT_H ++#include <stdint.h> ++#endif]) ++])# BOOST_ATOMIC ++ + + # BOOST_BIND() + # ------------ +-# Look for Boost.Bind ++# Look for Boost.Bind. + BOOST_DEFUN([Bind], + [BOOST_FIND_HEADER([boost/bind.hpp])]) + + ++# BOOST_CAST() ++# ------------ ++# Look for Boost.Cast ++BOOST_DEFUN([Cast], ++[BOOST_FIND_HEADER([boost/cast.hpp])]) ++ ++ ++# BOOST_CHRONO() ++# -------------- ++# Look for Boost.Chrono. ++BOOST_DEFUN([Chrono], ++[# Do we have to check for Boost.System? This link-time dependency was ++# added as of 1.35.0. If we have a version <1.35, we must not attempt to ++# find Boost.System as it didn't exist by then. ++if test $boost_major_version -ge 135; then ++ BOOST_SYSTEM([$1]) ++fi # end of the Boost.System check. ++boost_filesystem_save_LIBS=$LIBS ++boost_filesystem_save_LDFLAGS=$LDFLAGS ++m4_pattern_allow([^BOOST_SYSTEM_(LIBS|LDFLAGS)$])dnl ++LIBS="$LIBS $BOOST_SYSTEM_LIBS" ++LDFLAGS="$LDFLAGS $BOOST_SYSTEM_LDFLAGS" ++BOOST_FIND_LIB([chrono], [$1], ++ [boost/chrono.hpp], ++ [boost::chrono::thread_clock d;]) ++if test $enable_static_boost = yes && test $boost_major_version -ge 135; then ++ BOOST_CHRONO_LIBS="$BOOST_CHRONO_LIBS $BOOST_SYSTEM_LIBS" ++fi ++LIBS=$boost_filesystem_save_LIBS ++LDFLAGS=$boost_filesystem_save_LDFLAGS ++])# BOOST_CHRONO ++ ++ ++# BOOST_CONTEXT([PREFERRED-RT-OPT]) ++# ----------------------------------- ++# Look for Boost.Context. For the documentation of PREFERRED-RT-OPT, see the ++# documentation of BOOST_FIND_LIB above. ++# ++# * This library was introduced in Boost 1.51.0 ++# * The signatures of make_fcontext() and jump_fcontext were changed in 1.56.0 ++# * A dependency on boost_thread appears in 1.57.0 ++BOOST_DEFUN([Context], ++[boost_context_save_LIBS=$LIBS ++ boost_context_save_LDFLAGS=$LDFLAGS ++if test $boost_major_version -ge 157; then ++ BOOST_THREAD([$1]) ++ m4_pattern_allow([^BOOST_THREAD_(LIBS|LDFLAGS)$])dnl ++ LIBS="$LIBS $BOOST_THREAD_LIBS" ++ LDFLAGS="$LDFLAGS $BOOST_THREAD_LDFLAGS" ++fi ++BOOST_FIND_LIB([context], [$1], ++ [boost/context/fcontext.hpp],[[ ++ ++// creates a stack ++void * stack_pointer = new void*[4096]; ++std::size_t const size = sizeof(void*[4096]); ++ ++#if BOOST_VERSION <= 105100 ++ctx::make_fcontext(&fc, f); ++return ctx::jump_fcontext(&fcm, &fc, 3) == 6; ++ ++#else ++ ++fc = ctx::make_fcontext(stack_pointer, size, f); ++return ctx::jump_fcontext(&fcm, fc, 3) == 6; ++ ++#endif ++ ++ ++]],[dnl ++ ++#include <boost/version.hpp> ++#if BOOST_VERSION <= 105100 ++ ++namespace ctx = boost::ctx; ++ ++static ctx::fcontext_t fcm, fc; ++ ++static void f(intptr_t i) { ++ ctx::jump_fcontext(&fc, &fcm, i * 2); ++} ++ ++#elif BOOST_VERSION <= 105500 ++ ++namespace ctx = boost::context; ++ ++// context ++static ctx::fcontext_t fcm, *fc; ++ ++// context-function ++static void f(intptr_t i) { ++ ctx::jump_fcontext(fc, &fcm, i * 2); ++} ++ ++#else ++ ++namespace ctx = boost::context; ++ ++// context ++static ctx::fcontext_t fcm, fc; ++ ++// context-function ++static void f(intptr_t i) { ++ ctx::jump_fcontext(&fc, fcm, i * 2); ++} ++#endif ++]) ++LIBS=$boost_context_save_LIBS ++LDFLAGS=$boost_context_save_LDFLAGS ++])# BOOST_CONTEXT ++ ++ + # BOOST_CONVERSION() + # ------------------ + # Look for Boost.Conversion (cast / lexical_cast) +@@ -489,6 +724,63 @@ BOOST_FIND_HEADER([boost/lexical_cast.hpp]) + ])# BOOST_CONVERSION + + ++# BOOST_COROUTINE([PREFERRED-RT-OPT]) ++# ----------------------------------- ++# Look for Boost.Coroutine. For the documentation of PREFERRED-RT-OPT, see the ++# documentation of BOOST_FIND_LIB above. This library was introduced in Boost ++# 1.53.0 ++BOOST_DEFUN([Coroutine], ++[ ++boost_coroutine_save_LIBS=$LIBS ++boost_coroutine_save_LDFLAGS=$LDFLAGS ++# Link-time dependency from coroutine to context ++BOOST_CONTEXT([$1]) ++# Starting from Boost 1.55 a dependency on Boost.System is added ++if test $boost_major_version -ge 155; then ++ BOOST_SYSTEM([$1]) ++fi ++m4_pattern_allow([^BOOST_(CONTEXT|SYSTEM)_(LIBS|LDFLAGS)]) ++LIBS="$LIBS $BOOST_CONTEXT_LIBS $BOOST_SYSTEM_LIBS" ++LDFLAGS="$LDFLAGS $BOOST_CONTEXT_LDFLAGS" ++ ++# in 1.53 coroutine was a header only library ++if test $boost_major_version -eq 153; then ++ BOOST_FIND_HEADER([boost/coroutine/coroutine.hpp]) ++else ++ BOOST_FIND_LIB([coroutine], [$1], ++ [boost/coroutine/coroutine.hpp], ++ [ ++ #include <boost/version.hpp> ++ #if BOOST_VERSION <= 105500 ++ boost::coroutines::coroutine<int(int)> coro; coro.get(); ++ #else ++ boost::coroutines::asymmetric_coroutine<int>::pull_type coro; coro.get(); ++ #endif ++ ]) ++fi ++# Link-time dependency from coroutine to context, existed only in 1.53, in 1.54 ++# coroutine doesn't use context from its headers but from its library. ++if test $boost_major_version -eq 153 || test $enable_static_boost = yes && test $boost_major_version -ge 154; then ++ BOOST_COROUTINE_LIBS="$BOOST_COROUTINE_LIBS $BOOST_CONTEXT_LIBS" ++ BOOST_COROUTINE_LDFLAGS="$BOOST_COROUTINE_LDFLAGS $BOOST_CONTEXT_LDFLAGS" ++fi ++if test $enable_static_boost = yes && test $boost_major_version -ge 155; then ++ BOOST_COROUTINE_LIBS="$BOOST_COROUTINE_LIBS $BOOST_SYSTEM_LIBS" ++ BOOST_COROUTINE_LDFLAGS="$BOOST_COROUTINE_LDFLAGS $BOOST_SYSTEM_LDFLAGS" ++fi ++LIBS=$boost_coroutine_save_LIBS ++LDFLAGS=$boost_coroutine_save_LDFLAGS ++])# BOOST_COROUTINE ++ ++ ++# BOOST_CRC() ++# ----------- ++# Look for Boost.CRC ++BOOST_DEFUN([CRC], ++[BOOST_FIND_HEADER([boost/crc.hpp]) ++])# BOOST_CRC ++ ++ + # BOOST_DATE_TIME([PREFERRED-RT-OPT]) + # ----------------------------------- + # Look for Boost.Date_Time. For the documentation of PREFERRED-RT-OPT, see the +@@ -500,6 +792,13 @@ BOOST_DEFUN([Date_Time], + ])# BOOST_DATE_TIME + + ++# BOOST_EXCEPTION() ++# ------------ ++# Look for Boost.Exception ++BOOST_DEFUN([Exception], ++[BOOST_FIND_HEADER([boost/exception/all.hpp])]) ++ ++ + # BOOST_FILESYSTEM([PREFERRED-RT-OPT]) + # ------------------------------------ + # Look for Boost.Filesystem. For the documentation of PREFERRED-RT-OPT, see +@@ -511,7 +810,7 @@ BOOST_DEFUN([Filesystem], + # added as of 1.35.0. If we have a version <1.35, we must not attempt to + # find Boost.System as it didn't exist by then. + if test $boost_major_version -ge 135; then +-BOOST_SYSTEM([$1]) ++ BOOST_SYSTEM([$1]) + fi # end of the Boost.System check. + boost_filesystem_save_LIBS=$LIBS + boost_filesystem_save_LDFLAGS=$LDFLAGS +@@ -521,23 +820,34 @@ LDFLAGS="$LDFLAGS $BOOST_SYSTEM_LDFLAGS" + BOOST_FIND_LIB([filesystem], [$1], + [boost/filesystem/path.hpp], [boost::filesystem::path p;]) + if test $enable_static_boost = yes && test $boost_major_version -ge 135; then +- AC_SUBST([BOOST_FILESYSTEM_LIBS], ["$BOOST_FILESYSTEM_LIBS $BOOST_SYSTEM_LIBS"]) ++ BOOST_FILESYSTEM_LIBS="$BOOST_FILESYSTEM_LIBS $BOOST_SYSTEM_LIBS" + fi + LIBS=$boost_filesystem_save_LIBS + LDFLAGS=$boost_filesystem_save_LDFLAGS + ])# BOOST_FILESYSTEM + + ++# BOOST_FLYWEIGHT() ++# ----------------- ++# Look for Boost.Flyweight. ++BOOST_DEFUN([Flyweight], ++[dnl There's a hidden dependency on pthreads. ++AC_REQUIRE([_BOOST_PTHREAD_FLAG])dnl ++BOOST_FIND_HEADER([boost/flyweight.hpp]) ++AC_SUBST([BOOST_FLYWEIGHT_LIBS], [$boost_cv_pthread_flag]) ++]) ++ ++ + # BOOST_FOREACH() + # --------------- +-# Look for Boost.Foreach ++# Look for Boost.Foreach. + BOOST_DEFUN([Foreach], + [BOOST_FIND_HEADER([boost/foreach.hpp])]) + + + # BOOST_FORMAT() + # -------------- +-# Look for Boost.Format ++# Look for Boost.Format. + # Note: we can't check for boost/format/format_fwd.hpp because the header isn't + # standalone. It can't be compiled because it triggers the following error: + # boost/format/detail/config_macros.hpp:88: error: 'locale' in namespace 'std' +@@ -553,16 +863,49 @@ BOOST_DEFUN([Function], + [BOOST_FIND_HEADER([boost/function.hpp])]) + + ++# BOOST_FUSION() ++# ----------------- ++# Look for Boost.Fusion ++BOOST_DEFUN([Fusion], ++[BOOST_FIND_HEADER([boost/fusion/sequence.hpp])]) ++ ++ ++# BOOST_GEOMETRY() ++# ---------------- ++# Look for Boost.Geometry (new since 1.47.0). ++BOOST_DEFUN([Geometry], ++[BOOST_FIND_HEADER([boost/geometry.hpp]) ++])# BOOST_GEOMETRY ++ ++ + # BOOST_GRAPH([PREFERRED-RT-OPT]) + # ------------------------------- + # Look for Boost.Graphs. For the documentation of PREFERRED-RT-OPT, see the + # documentation of BOOST_FIND_LIB above. + BOOST_DEFUN([Graph], +-[BOOST_FIND_LIB([graph], [$1], ++[boost_graph_save_LIBS=$LIBS ++boost_graph_save_LDFLAGS=$LDFLAGS ++# Link-time dependency from graph to regex was added as of 1.40.0. ++if test $boost_major_version -ge 140; then ++ BOOST_REGEX([$1]) ++ m4_pattern_allow([^BOOST_REGEX_(LIBS|LDFLAGS)$])dnl ++ LIBS="$LIBS $BOOST_REGEX_LIBS" ++ LDFLAGS="$LDFLAGS $BOOST_REGEX_LDFLAGS" ++fi ++BOOST_FIND_LIB([graph], [$1], + [boost/graph/adjacency_list.hpp], [boost::adjacency_list<> g;]) ++LIBS=$boost_graph_save_LIBS ++LDFLAGS=$boost_graph_save_LDFLAGS + ])# BOOST_GRAPH + + ++# BOOST_HASH() ++# ------------ ++# Look for Boost.Functional/Hash ++BOOST_DEFUN([Hash], ++[BOOST_FIND_HEADER([boost/functional/hash.hpp])]) ++ ++ + # BOOST_IOSTREAMS([PREFERRED-RT-OPT]) + # ----------------------------------- + # Look for Boost.IOStreams. For the documentation of PREFERRED-RT-OPT, see the +@@ -574,11 +917,11 @@ BOOST_DEFUN([IOStreams], + ])# BOOST_IOSTREAMS + + +-# BOOST_HASH() ++# BOOST_ITERATOR() + # ------------ +-# Look for Boost.Functional/Hash +-BOOST_DEFUN([Hash], +-[BOOST_FIND_HEADER([boost/functional/hash.hpp])]) ++# Look for Boost.Iterator ++BOOST_DEFUN([Iterator], ++[BOOST_FIND_HEADER([boost/iterator/iterator_adaptor.hpp])]) + + + # BOOST_LAMBDA() +@@ -588,26 +931,64 @@ BOOST_DEFUN([Lambda], + [BOOST_FIND_HEADER([boost/lambda/lambda.hpp])]) + + ++# BOOST_LOCALE() ++# -------------- ++# Look for Boost.Locale ++BOOST_DEFUN([Locale], ++[ ++boost_locale_save_LIBS=$LIBS ++boost_locale_save_LDFLAGS=$LDFLAGS ++# require SYSTEM for boost-1.50.0 and up ++if test $boost_major_version -ge 150; then ++ BOOST_SYSTEM([$1]) ++ m4_pattern_allow([^BOOST_SYSTEM_(LIBS|LDFLAGS)$])dnl ++ LIBS="$LIBS $BOOST_SYSTEM_LIBS" ++ LDFLAGS="$LDFLAGS $BOOST_SYSTEM_LDFLAGS" ++fi # end of the Boost.System check. ++BOOST_FIND_LIB([locale], [$1], ++ [boost/locale.hpp], ++ [[boost::locale::generator gen; std::locale::global(gen(""));]]) ++LIBS=$boost_locale_save_LIBS ++LDFLAGS=$boost_locale_save_LDFLAGS ++])# BOOST_LOCALE ++ + # BOOST_LOG([PREFERRED-RT-OPT]) + # ----------------------------- +-# Look for Boost.Log For the documentation of PREFERRED-RT-OPT, see the ++# Look for Boost.Log. For the documentation of PREFERRED-RT-OPT, see the + # documentation of BOOST_FIND_LIB above. + BOOST_DEFUN([Log], +-[BOOST_FIND_LIB([log], [$1], ++[boost_log_save_LIBS=$LIBS ++boost_log_save_LDFLAGS=$LDFLAGS ++BOOST_SYSTEM([$1]) ++BOOST_FILESYSTEM([$1]) ++BOOST_DATE_TIME([$1]) ++m4_pattern_allow([^BOOST_(SYSTEM|FILESYSTEM|DATE_TIME)_(LIBS|LDFLAGS)$])dnl ++LIBS="$LIBS $BOOST_DATE_TIME_LIBS $BOOST_FILESYSTEM_LIBS $BOOST_SYSTEM_LIBS" ++LDFLAGS="$LDFLAGS $BOOST_DATE_TIME_LDFLAGS $BOOST_FILESYSTEM_LDFLAGS $BOOST_SYSTEM_LDFLAGS" ++BOOST_FIND_LIB([log], [$1], + [boost/log/core/core.hpp], + [boost::log::attribute a; a.get_value();]) ++LIBS=$boost_log_save_LIBS ++LDFLAGS=$boost_log_save_LDFLAGS + ])# BOOST_LOG + + + # BOOST_LOG_SETUP([PREFERRED-RT-OPT]) + # ----------------------------------- +-# Look for Boost.Log For the documentation of PREFERRED-RT-OPT, see the ++# Look for Boost.Log. For the documentation of PREFERRED-RT-OPT, see the + # documentation of BOOST_FIND_LIB above. + BOOST_DEFUN([Log_Setup], +-[AC_REQUIRE([BOOST_LOG])dnl ++[boost_log_setup_save_LIBS=$LIBS ++boost_log_setup_save_LDFLAGS=$LDFLAGS ++BOOST_LOG([$1]) ++m4_pattern_allow([^BOOST_LOG_(LIBS|LDFLAGS)$])dnl ++LIBS="$LIBS $BOOST_LOG_LIBS" ++LDFLAGS="$LDFLAGS $BOOST_LOG_LDFLAGS" + BOOST_FIND_LIB([log_setup], [$1], +- [boost/log/utility/init/from_settings.hpp], ++ [boost/log/utility/setup/from_settings.hpp], + [boost::log::basic_settings<char> bs; bs.empty();]) ++LIBS=$boost_log_setup_save_LIBS ++LDFLAGS=$boost_log_setup_save_LDFLAGS + ])# BOOST_LOG_SETUP + + +@@ -623,6 +1004,36 @@ BOOST_DEFUN([Math], + [BOOST_FIND_HEADER([boost/math/special_functions.hpp])]) + + ++# BOOST_MPI([PREFERRED-RT-OPT]) ++# ------------------------------- ++# Look for Boost MPI. For the documentation of PREFERRED-RT-OPT, see the ++# documentation of BOOST_FIND_LIB above. Uses MPICXX variable if it is ++# set, otherwise tries CXX ++# ++BOOST_DEFUN([MPI], ++[boost_save_CXX=${CXX} ++boost_save_CXXCPP=${CXXCPP} ++if test x"${MPICXX}" != x; then ++ CXX=${MPICXX} ++ CXXCPP="${MPICXX} -E" ++fi ++BOOST_FIND_LIB([mpi], [$1], ++ [boost/mpi.hpp], ++ [int argc = 0; ++ char **argv = 0; ++ boost::mpi::environment env(argc,argv);]) ++CXX=${boost_save_CXX} ++CXXCPP=${boost_save_CXXCPP} ++])# BOOST_MPI ++ ++ ++# BOOST_MPL() ++# ------------------ ++# Look for Boost.MPL ++BOOST_DEFUN([MPL], ++[BOOST_FIND_HEADER([boost/mpl/for_each.hpp])]) ++ ++ + # BOOST_MULTIARRAY() + # ------------------ + # Look for Boost.MultiArray +@@ -630,6 +1041,21 @@ BOOST_DEFUN([MultiArray], + [BOOST_FIND_HEADER([boost/multi_array.hpp])]) + + ++# BOOST_MULTIINDEXCCONTAINER() ++# ------------------ ++# Look for Boost.MultiIndexContainer ++BOOST_DEFUN([MultiIndexContainer], ++[BOOST_FIND_HEADER([boost/multi_index_container.hpp])]) ++ ++ ++# BOOST_NUMERIC_UBLAS() ++# -------------------------- ++# Look for Boost.NumericUblas (Basic Linear Algebra) ++BOOST_DEFUN([Numeric_Ublas], ++[BOOST_FIND_HEADER([boost/numeric/ublas/vector.hpp]) ++])# BOOST_NUMERIC_UBLAS ++ ++ + # BOOST_NUMERIC_CONVERSION() + # -------------------------- + # Look for Boost.NumericConversion (policy-based numeric conversion) +@@ -652,6 +1078,30 @@ BOOST_DEFUN([Preprocessor], + [BOOST_FIND_HEADER([boost/preprocessor/repeat.hpp])]) + + ++# BOOST_PROPERTY_TREE([PREFERRED-RT-OPT]) ++# ----------------------------------------- ++# Look for Boost.Property_Tree. For the documentation of PREFERRED-RT-OPT, ++# see the documentation of BOOST_FIND_LIB above. ++BOOST_DEFUN([Property_Tree], ++[BOOST_FIND_LIB([property_tree], [$1], ++ [boost/property_tree/ptree.hpp], ++ [boost::property_tree::ptree pt; boost::property_tree::read_xml d("test", pt);]) ++])# BOOST_PROPERTY_TREE ++ ++ ++# BOOST_RANDOM() ++# -------------------- ++# Look for Boost.Random ++BOOST_DEFUN([Random], ++[BOOST_FIND_HEADER([boost/random/random_number_generator.hpp])]) ++ ++ ++# BOOST_RANGE() ++# -------------------- ++# Look for Boost.Range ++BOOST_DEFUN([Range], ++[BOOST_FIND_HEADER([boost/range/adaptors.hpp])]) ++ + # BOOST_UNORDERED() + # ----------------- + # Look for Boost.Unordered +@@ -698,9 +1148,9 @@ BOOST_DEFUN([Python], + _BOOST_PYTHON_CONFIG([LDFLAGS], [ldflags]) + _BOOST_PYTHON_CONFIG([LIBS], [libs]) + m4_pattern_allow([^BOOST_PYTHON_MODULE$])dnl +-BOOST_FIND_LIB([python], [$1], +- [boost/python.hpp], +- [], [BOOST_PYTHON_MODULE(empty) {}]) ++BOOST_FIND_LIBS([python], [python python3], [$1], ++ [boost/python.hpp], ++ [], [BOOST_PYTHON_MODULE(empty) {}]) + CPPFLAGS=$boost_python_save_CPPFLAGS + LDFLAGS=$boost_python_save_LDFLAGS + LIBS=$boost_python_save_LIBS +@@ -748,6 +1198,14 @@ BOOST_DEFUN([Signals], + ])# BOOST_SIGNALS + + ++# BOOST_SIGNALS2() ++# ---------------- ++# Look for Boost.Signals2 (new since 1.39.0). ++BOOST_DEFUN([Signals2], ++[BOOST_FIND_HEADER([boost/signals2.hpp]) ++])# BOOST_SIGNALS2 ++ ++ + # BOOST_SMART_PTR() + # ----------------- + # Look for Boost.SmartPtr +@@ -798,32 +1256,54 @@ BOOST_FIND_LIB([unit_test_framework], [$1], + ])# BOOST_TEST + + +-# BOOST_THREADS([PREFERRED-RT-OPT]) ++# BOOST_THREAD([PREFERRED-RT-OPT]) + # --------------------------------- + # Look for Boost.Thread. For the documentation of PREFERRED-RT-OPT, see the + # documentation of BOOST_FIND_LIB above. +-# FIXME: Provide an alias "BOOST_THREAD". +-BOOST_DEFUN([Threads], ++BOOST_DEFUN([Thread], + [dnl Having the pthread flag is required at least on GCC3 where + dnl boost/thread.hpp would complain if we try to compile without + dnl -pthread on GNU/Linux. + AC_REQUIRE([_BOOST_PTHREAD_FLAG])dnl +-boost_threads_save_LIBS=$LIBS +-boost_threads_save_CPPFLAGS=$CPPFLAGS +-LIBS="$LIBS $boost_cv_pthread_flag" +-# Yes, we *need* to put the -pthread thing in CPPFLAGS because with GCC3, +-# boost/thread.hpp will trigger a #error if -pthread isn't used: +-# boost/config/requires_threads.hpp:47:5: #error "Compiler threading support +-# is not turned on. Please set the correct command line options for +-# threading: -pthread (Linux), -pthreads (Solaris) or -mthreads (Mingw32)" ++boost_thread_save_LIBS=$LIBS ++boost_thread_save_LDFLAGS=$LDFLAGS ++boost_thread_save_CPPFLAGS=$CPPFLAGS ++# Link-time dependency from thread to system was added as of 1.49.0. ++if test $boost_major_version -ge 149; then ++BOOST_SYSTEM([$1]) ++fi # end of the Boost.System check. ++m4_pattern_allow([^BOOST_SYSTEM_(LIBS|LDFLAGS)$])dnl ++LIBS="$LIBS $BOOST_SYSTEM_LIBS $boost_cv_pthread_flag" ++LDFLAGS="$LDFLAGS $BOOST_SYSTEM_LDFLAGS" + CPPFLAGS="$CPPFLAGS $boost_cv_pthread_flag" +-BOOST_FIND_LIB([thread], [$1], +- [boost/thread.hpp], [boost::thread t; boost::mutex m;]) +-BOOST_THREAD_LIBS="$BOOST_THREAD_LIBS $boost_cv_pthread_flag" ++ ++# When compiling for the Windows platform, the threads library is named ++# differently. This suffix doesn't exist in new versions of Boost, or ++# possibly new versions of GCC on mingw I am assuming it's Boost's change for ++# now and I am setting version to 1.48, for lack of knowledge as to when this ++# change occurred. ++if test $boost_major_version -lt 148; then ++ case $host_os in ++ (*mingw*) boost_thread_lib_ext=_win32;; ++ esac ++fi ++BOOST_FIND_LIBS([thread], [thread$boost_thread_lib_ext], ++ [$1], ++ [boost/thread.hpp], [boost::thread t; boost::mutex m;]) ++ ++case $host_os in ++ (*mingw*) boost_thread_w32_socket_link=-lws2_32;; ++esac ++ ++BOOST_THREAD_LIBS="$BOOST_THREAD_LIBS $BOOST_SYSTEM_LIBS $boost_cv_pthread_flag $boost_thread_w32_socket_link" ++BOOST_THREAD_LDFLAGS="$BOOST_SYSTEM_LDFLAGS" + BOOST_CPPFLAGS="$BOOST_CPPFLAGS $boost_cv_pthread_flag" +-LIBS=$boost_threads_save_LIBS +-CPPFLAGS=$boost_threads_save_CPPFLAGS +-])# BOOST_THREADS ++LIBS=$boost_thread_save_LIBS ++LDFLAGS=$boost_thread_save_LDFLAGS ++CPPFLAGS=$boost_thread_save_CPPFLAGS ++])# BOOST_THREAD ++ ++AU_ALIAS([BOOST_THREADS], [BOOST_THREAD]) + + + # BOOST_TOKENIZER() +@@ -872,10 +1352,23 @@ BOOST_DEFUN([Variant], + BOOST_FIND_HEADER([boost/variant.hpp])]) + + ++# BOOST_POINTER_CONTAINER() ++# ------------------------ ++# Look for Boost.PointerContainer ++BOOST_DEFUN([Pointer_Container], ++[BOOST_FIND_HEADER([boost/ptr_container/ptr_deque.hpp]) ++BOOST_FIND_HEADER([boost/ptr_container/ptr_list.hpp]) ++BOOST_FIND_HEADER([boost/ptr_container/ptr_vector.hpp]) ++BOOST_FIND_HEADER([boost/ptr_container/ptr_array.hpp]) ++BOOST_FIND_HEADER([boost/ptr_container/ptr_set.hpp]) ++BOOST_FIND_HEADER([boost/ptr_container/ptr_map.hpp]) ++])# BOOST_POINTER_CONTAINER ++ ++ + # BOOST_WAVE([PREFERRED-RT-OPT]) + # ------------------------------ + # NOTE: If you intend to use Wave/Spirit with thread support, make sure you +-# call BOOST_THREADS first. ++# call BOOST_THREAD first. + # Look for Boost.Wave. For the documentation of PREFERRED-RT-OPT, see the + # documentation of BOOST_FIND_LIB above. + BOOST_DEFUN([Wave], +@@ -884,9 +1377,9 @@ AC_REQUIRE([BOOST_DATE_TIME])dnl + boost_wave_save_LIBS=$LIBS + boost_wave_save_LDFLAGS=$LDFLAGS + m4_pattern_allow([^BOOST_((FILE)?SYSTEM|DATE_TIME|THREAD)_(LIBS|LDFLAGS)$])dnl +-LIBS="$LIBS $BOOST_SYSTEM_LIBS $BOOST_FILESYSTEM_LIBS $BOOST_DATE_TIME_LIBS\ ++LIBS="$LIBS $BOOST_SYSTEM_LIBS $BOOST_FILESYSTEM_LIBS $BOOST_DATE_TIME_LIBS \ + $BOOST_THREAD_LIBS" +-LDFLAGS="$LDFLAGS $BOOST_SYSTEM_LDFLAGS $BOOST_FILESYSTEM_LDFLAGS\ ++LDFLAGS="$LDFLAGS $BOOST_SYSTEM_LDFLAGS $BOOST_FILESYSTEM_LDFLAGS \ + $BOOST_DATE_TIME_LDFLAGS $BOOST_THREAD_LDFLAGS" + BOOST_FIND_LIB([wave], [$1], + [boost/wave.hpp], +@@ -910,8 +1403,16 @@ BOOST_DEFUN([Xpressive], + + # _BOOST_PTHREAD_FLAG() + # --------------------- +-# Internal helper for BOOST_THREADS. Based on ACX_PTHREAD: +-# http://autoconf-archive.cryp.to/acx_pthread.html ++# Internal helper for BOOST_THREAD. Computes boost_cv_pthread_flag ++# which must be used in CPPFLAGS and LIBS. ++# ++# Yes, we *need* to put the -pthread thing in CPPFLAGS because with GCC3, ++# boost/thread.hpp will trigger a #error if -pthread isn't used: ++# boost/config/requires_threads.hpp:47:5: #error "Compiler threading support ++# is not turned on. Please set the correct command line options for ++# threading: -pthread (Linux), -pthreads (Solaris) or -mthreads (Mingw32)" ++# ++# Based on ACX_PTHREAD: http://autoconf-archive.cryp.to/acx_pthread.html + AC_DEFUN([_BOOST_PTHREAD_FLAG], + [AC_REQUIRE([AC_PROG_CXX])dnl + AC_REQUIRE([AC_CANONICAL_HOST])dnl +@@ -979,6 +1480,14 @@ AC_LANG_POP([C++])dnl + m4_define([_BOOST_gcc_test], + ["defined __GNUC__ && __GNUC__ == $1 && __GNUC_MINOR__ == $2 && !defined __ICC @ gcc$1$2"])dnl + ++# _BOOST_mingw_test(MAJOR, MINOR) ++# ----------------------------- ++# Internal helper for _BOOST_FIND_COMPILER_TAG. ++m4_define([_BOOST_mingw_test], ++["defined __GNUC__ && __GNUC__ == $1 && __GNUC_MINOR__ == $2 && !defined __ICC && \ ++ (defined WIN32 || defined WINNT || defined _WIN32 || defined __WIN32 \ ++ || defined __WIN32__ || defined __WINNT || defined __WINNT__) @ mgw$1$2"])dnl ++ + + # _BOOST_FIND_COMPILER_TAG() + # -------------------------- +@@ -988,7 +1497,8 @@ m4_define([_BOOST_gcc_test], + AC_DEFUN([_BOOST_FIND_COMPILER_TAG], + [AC_REQUIRE([AC_PROG_CXX])dnl + AC_REQUIRE([AC_CANONICAL_HOST])dnl +-AC_CACHE_CHECK([for the toolset name used by Boost for $CXX], [boost_cv_lib_tag], ++AC_CACHE_CHECK([for the toolset name used by Boost for $CXX], ++ [boost_cv_lib_tag], + [boost_cv_lib_tag=unknown + if test x$boost_cv_inc_path != xno; then + AC_LANG_PUSH([C++])dnl +@@ -1006,12 +1516,63 @@ if test x$boost_cv_inc_path != xno; then + # I'm not sure about my test for `il' (be careful: Intel's ICC pre-defines + # the same defines as GCC's). + for i in \ ++ _BOOST_mingw_test(8, 2) \ ++ _BOOST_gcc_test(8, 2) \ ++ _BOOST_mingw_test(8, 1) \ ++ _BOOST_gcc_test(8, 1) \ ++ _BOOST_mingw_test(8, 0) \ ++ _BOOST_gcc_test(8, 0) \ ++ _BOOST_mingw_test(7, 3) \ ++ _BOOST_gcc_test(7, 3) \ ++ _BOOST_mingw_test(7, 2) \ ++ _BOOST_gcc_test(7, 2) \ ++ _BOOST_mingw_test(7, 1) \ ++ _BOOST_gcc_test(7, 1) \ ++ _BOOST_mingw_test(7, 0) \ ++ _BOOST_gcc_test(7, 0) \ ++ _BOOST_mingw_test(6, 4) \ ++ _BOOST_gcc_test(6, 4) \ ++ _BOOST_mingw_test(6, 3) \ ++ _BOOST_gcc_test(6, 3) \ ++ _BOOST_mingw_test(6, 2) \ ++ _BOOST_gcc_test(6, 2) \ ++ _BOOST_mingw_test(6, 1) \ ++ _BOOST_gcc_test(6, 1) \ ++ _BOOST_mingw_test(6, 0) \ ++ _BOOST_gcc_test(6, 0) \ ++ _BOOST_mingw_test(5, 5) \ ++ _BOOST_gcc_test(5, 5) \ ++ _BOOST_mingw_test(5, 4) \ ++ _BOOST_gcc_test(5, 4) \ ++ _BOOST_mingw_test(5, 3) \ ++ _BOOST_gcc_test(5, 3) \ ++ _BOOST_mingw_test(5, 2) \ ++ _BOOST_gcc_test(5, 2) \ ++ _BOOST_mingw_test(5, 1) \ ++ _BOOST_gcc_test(5, 1) \ ++ _BOOST_mingw_test(5, 0) \ ++ _BOOST_gcc_test(5, 0) \ ++ _BOOST_mingw_test(4, 10) \ ++ _BOOST_gcc_test(4, 10) \ ++ _BOOST_mingw_test(4, 9) \ ++ _BOOST_gcc_test(4, 9) \ ++ _BOOST_mingw_test(4, 8) \ ++ _BOOST_gcc_test(4, 8) \ ++ _BOOST_mingw_test(4, 7) \ ++ _BOOST_gcc_test(4, 7) \ ++ _BOOST_mingw_test(4, 6) \ + _BOOST_gcc_test(4, 6) \ ++ _BOOST_mingw_test(4, 5) \ + _BOOST_gcc_test(4, 5) \ ++ _BOOST_mingw_test(4, 4) \ + _BOOST_gcc_test(4, 4) \ ++ _BOOST_mingw_test(4, 3) \ + _BOOST_gcc_test(4, 3) \ ++ _BOOST_mingw_test(4, 2) \ + _BOOST_gcc_test(4, 2) \ ++ _BOOST_mingw_test(4, 1) \ + _BOOST_gcc_test(4, 1) \ ++ _BOOST_mingw_test(4, 0) \ + _BOOST_gcc_test(4, 0) \ + "defined __GNUC__ && __GNUC__ == 3 && !defined __ICC \ + && (defined WIN32 || defined WINNT || defined _WIN32 || defined __WIN32 \ +@@ -1077,6 +1638,7 @@ fi])dnl end of AC_CACHE_CHECK + # Thread) flavors of Boost. Sets boost_guess_use_mt accordingly. + AC_DEFUN([_BOOST_GUESS_WHETHER_TO_USE_MT], + [# Check whether we do better use `mt' even though we weren't ask to. ++AC_LANG_PUSH([C++])dnl + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ + #if defined _REENTRANT || defined _MT || defined __MT__ + /* use -mt */ +@@ -1084,6 +1646,7 @@ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ + # error MT not needed + #endif + ]])], [boost_guess_use_mt=:], [boost_guess_use_mt=false]) ++AC_LANG_POP([C++])dnl + ]) + + # _BOOST_AC_LINK_IFELSE(PROGRAM, [ACTION-IF-TRUE], [ACTION-IF-FALSE]) +@@ -1107,11 +1670,11 @@ boost_use_source=: + test -f conftest.$ac_objext && ac_ext=$ac_objext && boost_use_source=false && + _AS_ECHO_LOG([re-using the existing conftest.$ac_objext]) + AS_IF([_AC_DO_STDERR($ac_link) && { +- test -z "$ac_[]_AC_LANG_ABBREV[]_werror_flag" || +- test ! -s conftest.err ++ test -z "$ac_[]_AC_LANG_ABBREV[]_werror_flag" || ++ test ! -s conftest.err + } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_executable_p conftest$ac_exeext ++ test "$cross_compiling" = yes || ++ $as_executable_p conftest$ac_exeext + dnl FIXME: use AS_TEST_X instead when 2.61 is widespread enough. + }], + [$2], +diff --git a/src/support/bios/Makefile.am b/src/support/bios/Makefile.am +index 69c243e..1f0d398 100644 +--- a/src/support/bios/Makefile.am ++++ b/src/support/bios/Makefile.am +@@ -20,7 +20,7 @@ CLEANFILES = $(dist_noinst_DATA) + clean-local: + -for t in $(umps_rom_types) ; do rm -f $$t.eb $$t.el; done + +-BIOS_CFLAGS = -mips1 -mabi=32 -mno-abicalls -fno-pic -ffreestanding ++BIOS_CFLAGS = -mips1 -mabi=32 -mno-abicalls -fno-pic -ffreestanding -mfp32 + BIOS_CPPFLAGS = -I$(top_srcdir)/src/include + + SUFFIXES = .S .eb .el .eb.rom.umps .el.rom.umps +diff --git a/src/umps/vde_network.cc b/src/umps/vde_network.cc +index 03a21eb..5b859a6 100644 +--- a/src/umps/vde_network.cc ++++ b/src/umps/vde_network.cc +@@ -133,8 +133,12 @@ netinterface::netinterface(const char *name, const char *addr, int intnum) + for (int i=0;i<6;i++) + ethaddr[i]=addr[i]; + } else { +- sprintf(ethaddr," %5d",getpid()); ++ char tempaddr[7]; ++ snprintf(tempaddr,7," %5d",getpid()); ++ + ethaddr[0]=intnum*2; ++ for (int i=1;i<6;i++) ++ ethaddr[i]=tempaddr[i]; + } + + mode = PROMISQ | NAMED; +@@ -316,6 +320,7 @@ int netblockq::dequeue(char *pcontent, int len) + class netblock *oldhead=head; + int packlen; + head=oldhead->getNext(); ++ if (head == NULL) tail = NULL; + packlen=oldhead->getLen(); + if (len < packlen) packlen=len; + memcpy(pcontent,oldhead->getContent(),packlen); +-- +2.24.0 + @@ -1,15 +1,22 @@ # Maintainer: Mattia Biondi <mattia biondi1 at gmail dot com> pkgname=umps pkgver=2.0.1 -pkgrel=1 +pkgrel=2 pkgdesc="Virtual machine simulator based around the MIPS R2/3000 microprocessor." arch=('x86_64') url="http://mps.sourceforge.net/" license=('GPL2') depends=("qt4" 'libelf' 'boost' 'libsigc++' "cross-mipsel-linux-gnu-gcc") makedepends=('git' 'autoconf' 'make') -source=("https://sourceforge.net/projects/mps/files/uMPS2/$pkgname-$pkgver.tar.gz") -md5sums=('SKIP') +source=("https://sourceforge.net/projects/mps/files/uMPS2/$pkgname-$pkgver.tar.gz" + "0001-upstream-fixes.patch") +md5sums=('60b72c2f8e2e5ab58de4277649e5e4ce' + 'b8145ca1b9a4db35adb1fb2f43eabc5f') + +prepare() { + cd "$pkgname-$pkgver" + patch --forward --strip=1 --input="${srcdir}/0001-upstream-fixes.patch" +} build() { cd "$pkgname-$pkgver" |