Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Compile for gnu/linux with autotools #13

Closed
wants to merge 4 commits into from

Conversation

braydonf
Copy link

@braydonf braydonf commented Aug 2, 2017

After trying to build with boost 1.58 (included with ubuntu 16.04), ran into the section of code that attempts to apply the patch "boost_multiprecision_number_compare_bug_workaround.hpp", however it's not found. Did some searching and looks like cpp-ethereum had this patch in libdevcore, however has since moved to building boost from source.

Here we just check for a compatible version of boost that doesn't need to be patched. Unfortunately this version of boost isn't included with Ubuntu 16.04, it is however with Debian Sid.

@beaugunderson
Copy link
Contributor

this breaks compilation on macOS:

Making all in porosity/porosity
g++ -DPACKAGE_NAME=\"porosity\" -DPACKAGE_TARNAME=\"porosity\" -DPACKAGE_VERSION=\"1.0.0\" -DPACKAGE_STRING=\"porosity\ 1.0.0\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -DPACKAGE=\"porosity\" -DVERSION=\"1.0.0\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -DHAVE_BOOST_VERSION_HPP=1 -I.    -std=c++1y -g -O2 -MT Porosity.o -MD -MP -MF .deps/Porosity.Tpo -c -o Porosity.o Porosity.cpp
In file included from Porosity.cpp:17:
In file included from ./Porosity.h:25:
In file included from /usr/local/include/boost/property_tree/json_parser.hpp:16:
In file included from /usr/local/include/boost/property_tree/json_parser/detail/read.hpp:13:
In file included from /usr/local/include/boost/property_tree/json_parser/detail/parser.hpp:8:
In file included from /usr/local/include/boost/format.hpp:38:
In file included from /usr/local/include/boost/format/internals.hpp:23:
In file included from /usr/local/include/boost/format/alt_sstream.hpp:21:
In file included from /usr/local/include/boost/shared_ptr.hpp:17:
/usr/local/include/boost/smart_ptr/shared_ptr.hpp:1023:9: error: use of undeclared identifier 'assert'
        BOOST_ASSERT( deleter_.use_count() <= 1 );
        ^
/usr/local/include/boost/assert.hpp:60:29: note: expanded from macro 'BOOST_ASSERT'
# define BOOST_ASSERT(expr) assert(expr)
                            ^
In file included from Porosity.cpp:17:
In file included from ./Porosity.h:25:
In file included from /usr/local/include/boost/property_tree/json_parser.hpp:16:
In file included from /usr/local/include/boost/property_tree/json_parser/detail/read.hpp:13:
In file included from /usr/local/include/boost/property_tree/json_parser/detail/parser.hpp:8:
In file included from /usr/local/include/boost/format.hpp:38:
In file included from /usr/local/include/boost/format/internals.hpp:23:
In file included from /usr/local/include/boost/format/alt_sstream.hpp:173:
/usr/local/include/boost/format/alt_sstream_impl.hpp:176:17: error: use of undeclared identifier 'assert'
                BOOST_ASSERT(0); // fpos.operations allows undefined-behaviour here
                ^
/usr/local/include/boost/assert.hpp:60:29: note: expanded from macro 'BOOST_ASSERT'
# define BOOST_ASSERT(expr) assert(expr)
                            ^
In file included from Porosity.cpp:17:
In file included from ./Porosity.h:25:
In file included from /usr/local/include/boost/property_tree/json_parser.hpp:16:
In file included from /usr/local/include/boost/property_tree/json_parser/detail/read.hpp:13:
In file included from /usr/local/include/boost/property_tree/json_parser/detail/parser.hpp:8:
In file included from /usr/local/include/boost/format.hpp:49:
/usr/local/include/boost/format/feed_args.hpp:263:41: error: use of undeclared identifier 'assert'
                                        BOOST_ASSERT(d>0);
                                        ^
/usr/local/include/boost/assert.hpp:60:29: note: expanded from macro 'BOOST_ASSERT'
# define BOOST_ASSERT(expr) assert(expr)
                            ^
In file included from Porosity.cpp:17:
In file included from ./Porosity.h:25:
In file included from /usr/local/include/boost/property_tree/json_parser.hpp:16:
In file included from /usr/local/include/boost/property_tree/json_parser/detail/read.hpp:13:
In file included from /usr/local/include/boost/property_tree/json_parser/detail/parser.hpp:8:
In file included from /usr/local/include/boost/format.hpp:50:
/usr/local/include/boost/format/parsing.hpp:467:9: error: use of undeclared identifier 'assert'
        BOOST_ASSERT(cur_item == num_items);
        ^
/usr/local/include/boost/assert.hpp:60:29: note: expanded from macro 'BOOST_ASSERT'
# define BOOST_ASSERT(expr) assert(expr)
                            ^
In file included from Porosity.cpp:17:
In file included from ./Porosity.h:25:
In file included from /usr/local/include/boost/property_tree/json_parser.hpp:16:
In file included from /usr/local/include/boost/property_tree/json_parser/detail/read.hpp:14:
/usr/local/include/boost/property_tree/json_parser/detail/narrow_encoding.hpp:71:13: error: use of undeclared identifier 'assert'
            BOOST_ASSERT(static_cast<unsigned char>(c) <= 0x7f);
            ^
/usr/local/include/boost/assert.hpp:60:29: note: expanded from macro 'BOOST_ASSERT'
# define BOOST_ASSERT(expr) assert(expr)
                            ^
In file included from Porosity.cpp:17:
In file included from ./Porosity.h:25:
In file included from /usr/local/include/boost/property_tree/json_parser.hpp:16:
In file included from /usr/local/include/boost/property_tree/json_parser/detail/read.hpp:15:
/usr/local/include/boost/property_tree/json_parser/detail/wide_encoding.hpp:75:13: error: use of undeclared identifier 'assert'
            BOOST_ASSERT(!is_surrogate_high(c) && !is_surrogate_low(c));
            ^
/usr/local/include/boost/assert.hpp:60:29: note: expanded from macro 'BOOST_ASSERT'
# define BOOST_ASSERT(expr) assert(expr)
                            ^
In file included from Porosity.cpp:17:
In file included from ./Porosity.h:25:
In file included from /usr/local/include/boost/property_tree/json_parser.hpp:16:
In file included from /usr/local/include/boost/property_tree/json_parser/detail/read.hpp:16:
/usr/local/include/boost/property_tree/json_parser/detail/standard_callbacks.hpp:121:17: error: use of undeclared identifier 'assert'
                BOOST_ASSERT(false); // must start with string, i.e. call new_value
                ^
/usr/local/include/boost/assert.hpp:60:29: note: expanded from macro 'BOOST_ASSERT'
# define BOOST_ASSERT(expr) assert(expr)
                            ^
In file included from Porosity.cpp:17:
In file included from ./Porosity.h:27:
In file included from /usr/local/include/boost/multiprecision/cpp_int.hpp:12:
In file included from /usr/local/include/boost/multiprecision/number.hpp:22:
In file included from /usr/local/include/boost/multiprecision/detail/generic_interconvert.hpp:9:
In file included from /usr/local/include/boost/multiprecision/detail/default_ops.hpp:10:
In file included from /usr/local/include/boost/multiprecision/detail/number_base.hpp:18:
In file included from /usr/local/include/boost/lexical_cast.hpp:32:
In file included from /usr/local/include/boost/lexical_cast/try_lexical_convert.hpp:42:
In file included from /usr/local/include/boost/lexical_cast/detail/converter_lexical.hpp:50:
/usr/local/include/boost/array.hpp:118:20: error: use of undeclared identifier 'assert'
            return BOOST_ASSERT_MSG( i < N, "out of range" ), elems[i];
                   ^
/usr/local/include/boost/assert.hpp:61:38: note: expanded from macro 'BOOST_ASSERT_MSG'
# define BOOST_ASSERT_MSG(expr, msg) assert((expr)&&(msg))
                                     ^
In file included from Porosity.cpp:17:
In file included from ./Porosity.h:27:
In file included from /usr/local/include/boost/multiprecision/cpp_int.hpp:12:
In file included from /usr/local/include/boost/multiprecision/number.hpp:22:
In file included from /usr/local/include/boost/multiprecision/detail/generic_interconvert.hpp:9:
In file included from /usr/local/include/boost/multiprecision/detail/default_ops.hpp:10:
In file included from /usr/local/include/boost/multiprecision/detail/number_base.hpp:18:
In file included from /usr/local/include/boost/lexical_cast.hpp:32:
In file included from /usr/local/include/boost/lexical_cast/try_lexical_convert.hpp:42:
In file included from /usr/local/include/boost/lexical_cast/detail/converter_lexical.hpp:50:
/usr/local/include/boost/array.hpp:123:20: error: use of undeclared identifier 'assert'
            return BOOST_ASSERT_MSG( i < N, "out of range" ), elems[i];
                   ^
/usr/local/include/boost/assert.hpp:61:38: note: expanded from macro 'BOOST_ASSERT_MSG'
# define BOOST_ASSERT_MSG(expr, msg) assert((expr)&&(msg))
                                     ^
In file included from Porosity.cpp:17:
In file included from ./Porosity.h:27:
In file included from /usr/local/include/boost/multiprecision/cpp_int.hpp:12:
In file included from /usr/local/include/boost/multiprecision/number.hpp:22:
In file included from /usr/local/include/boost/multiprecision/detail/generic_interconvert.hpp:9:
/usr/local/include/boost/multiprecision/detail/default_ops.hpp:1440:13: error: use of undeclared identifier 'assert'
            BOOST_ASSERT(g >= 0);
            ^
/usr/local/include/boost/assert.hpp:60:29: note: expanded from macro 'BOOST_ASSERT'
# define BOOST_ASSERT(expr) assert(expr)
                            ^
In file included from Porosity.cpp:17:
In file included from ./Porosity.h:27:
In file included from /usr/local/include/boost/multiprecision/cpp_int.hpp:12:
In file included from /usr/local/include/boost/multiprecision/number.hpp:22:
/usr/local/include/boost/multiprecision/detail/generic_interconvert.hpp:247:10: error: use of undeclared identifier 'assert'
         BOOST_ASSERT(scale_factor >= 1);
         ^
/usr/local/include/boost/assert.hpp:60:29: note: expanded from macro 'BOOST_ASSERT'
# define BOOST_ASSERT(expr) assert(expr)
                            ^
In file included from Porosity.cpp:17:
In file included from ./Porosity.h:27:
In file included from /usr/local/include/boost/multiprecision/cpp_int.hpp:17:
/usr/local/include/boost/multiprecision/cpp_int/cpp_int_config.hpp:79:4: error: use of undeclared identifier 'assert'
   BOOST_ASSERT(count < digits_per_block_10);
   ^
/usr/local/include/boost/assert.hpp:60:29: note: expanded from macro 'BOOST_ASSERT'
# define BOOST_ASSERT(expr) assert(expr)
                            ^
In file included from Porosity.cpp:17:
In file included from ./Porosity.h:27:
/usr/local/include/boost/multiprecision/cpp_int.hpp:1278:7: error: use of undeclared identifier 'assert'
      BOOST_ASSERT(!(boost::math::isinf)(a));
      ^
/usr/local/include/boost/assert.hpp:60:29: note: expanded from macro 'BOOST_ASSERT'
# define BOOST_ASSERT(expr) assert(expr)
                            ^
In file included from Porosity.cpp:17:
In file included from ./Porosity.h:27:
/usr/local/include/boost/multiprecision/cpp_int.hpp:1279:7: error: use of undeclared identifier 'assert'
      BOOST_ASSERT(!(boost::math::isnan)(a));
      ^
/usr/local/include/boost/assert.hpp:60:29: note: expanded from macro 'BOOST_ASSERT'
# define BOOST_ASSERT(expr) assert(expr)
                            ^
In file included from Porosity.cpp:17:
In file included from ./Porosity.h:27:
In file included from /usr/local/include/boost/multiprecision/cpp_int.hpp:1960:
/usr/local/include/boost/multiprecision/cpp_int/add.hpp:209:4: error: use of undeclared identifier 'assert'
   BOOST_ASSERT(0 == borrow);
   ^
/usr/local/include/boost/assert.hpp:60:29: note: expanded from macro 'BOOST_ASSERT'
# define BOOST_ASSERT(expr) assert(expr)
                            ^
In file included from Porosity.cpp:17:
In file included from ./Porosity.h:27:
In file included from /usr/local/include/boost/multiprecision/cpp_int.hpp:1961:
/usr/local/include/boost/multiprecision/cpp_int/multiply.hpp:143:10: error: use of undeclared identifier 'assert'
         BOOST_ASSERT(!std::numeric_limits<double_limb_type>::is_specialized
         ^
/usr/local/include/boost/assert.hpp:60:29: note: expanded from macro 'BOOST_ASSERT'
# define BOOST_ASSERT(expr) assert(expr)
                            ^
In file included from Porosity.cpp:17:
In file included from ./Porosity.h:27:
In file included from /usr/local/include/boost/multiprecision/cpp_int.hpp:1962:
/usr/local/include/boost/multiprecision/cpp_int/divide.hpp:186:7: error: use of undeclared identifier 'assert'
      BOOST_ASSERT(guess); // If the guess ever gets to zero we go on forever....
      ^
/usr/local/include/boost/assert.hpp:60:29: note: expanded from macro 'BOOST_ASSERT'
# define BOOST_ASSERT(expr) assert(expr)
                            ^
In file included from Porosity.cpp:17:
In file included from ./Porosity.h:27:
In file included from /usr/local/include/boost/multiprecision/cpp_int.hpp:1963:
/usr/local/include/boost/multiprecision/cpp_int/bitwise.hpp:398:4: error: use of undeclared identifier 'assert'
   BOOST_ASSERT(shift);
   ^
/usr/local/include/boost/assert.hpp:60:29: note: expanded from macro 'BOOST_ASSERT'
# define BOOST_ASSERT(expr) assert(expr)
                            ^
In file included from Porosity.cpp:17:
In file included from ./Porosity.h:27:
In file included from /usr/local/include/boost/multiprecision/cpp_int.hpp:1963:
/usr/local/include/boost/multiprecision/cpp_int/bitwise.hpp:477:4: error: use of undeclared identifier 'assert'
   BOOST_ASSERT((s % CHAR_BIT) == 0);
   ^
/usr/local/include/boost/assert.hpp:60:29: note: expanded from macro 'BOOST_ASSERT'
# define BOOST_ASSERT(expr) assert(expr)
                            ^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
make[1]: *** [Porosity.o] Error 1
make: *** [all-recursive] Error 1

@msuiche
Copy link
Owner

msuiche commented Aug 2, 2017

Thanks for verifying @beaugunderson - Also @patrickmn already added Linux support for compilation.

@msuiche msuiche closed this Aug 2, 2017
@braydonf
Copy link
Author

braydonf commented Aug 2, 2017

The main issue here being solved is dealing with boost versions using autotools, which right now fails to compile because of the missing patch file. (Created issue #14)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants