lmi
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [lmi] Cross-compiling lmi from Linux to MSW


From: Greg Chicares
Subject: Re: [lmi] Cross-compiling lmi from Linux to MSW
Date: Thu, 21 Jan 2016 22:12:25 +0000
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Icedove/31.3.0

On 2016-01-21 20:52, Vadim Zeitlin wrote:
> On Thu, 21 Jan 2016 19:37:30 +0000 Greg Chicares <address@hidden> wrote:
[...]
> GC> /home/greg/build/xmlwrapp-msw[1]$~/src/3rdparty/xmlwrapp/configure \
> GC>       --disable-shared --disable-tests --disable-docs \
> GC>       --with-boost=$HOME/msw/i686-w64-mingw32 \
> GC>       --prefix=$HOME/msw/i686-w64-mingw32 \
> GC>       --host=i686-w64-mingw32 \
> GC>       PKG_CONFIG_LIBDIR=$HOME/msw/i686-w64-mingw32/lib/pkgconfig
[...]
> GC> checking for Boost headers version >= 0.0.0... no
> GC> configure: error: cannot find Boost headers version >= 0.0.0
> 
>  I'd need to see your config.log to be sure, but I think you might be
> running into a configure bug that prevented xmlwrapp from building with
> g++5, see
> 
> https://github.com/vslavik/xmlwrapp/commit/aa6f34e3604f2b84dad7688ad3dd5c397767ffa8

I think I already have the latest xmlwrapp version (and never had any other);
it seems to include that changeset. From the URL above:

+dnl Beware that GCC 5, when expanding macros, may embed # line directives

>From my local copy:

$grep 'Beware that GCC' ~/src/3rdparty/xmlwrapp/admin/boost.m4
dnl Beware that GCC 5, when expanding macros, may embed # line directives

> I thought it wouldn't affect us because we use 4.9, after all, but
> apparently it does. I can retest to be sure, but if you plan on updating
> xmlwrapp to the latest version from https://github.com/vadz/xmlwrapp/, it
> would be worth doing it as it should really, really work.

Isn't that what I actually did, though? Here's the command I used:
  git clone https://github.com/vadz/xmlwrapp.git
I didn't specify any sha1sum, so shouldn't that give me the latest?

> GC> I checked 'config.log'...
> GC> 
> GC> /home/greg/build/xmlwrapp-msw[0]$tail -n5 config.log
> 
>  You need to grep for "checking for Boost headers version" in config.log to
> see why has the compilation of the test program using them failed, it's not
> at the end of the file, unfortunately.

In 'config.log' I see:

configure: this is boost.m4 serial 24
configure:15634: checking for Boost headers version >= 0.0.0
configure:15726: result: no
configure:15731: error: cannot find Boost headers version >= 0.0.0
## ---------------- ##
## Cache variables. ##

Serial 24 identifies the "vslavik committed Aug 2, 2015" change above.
This 'config.log' excerpt merely tells me that the test failed, repeats
the error message, and then moves on to something else. The only action
I can take is to look at line 15731 in 'configure', but...

> GC> ...but that doesn't seem to help. Looking in 'configure'
> 
>  Please don't look at the generated configure unless you just want to be
> horrified.

I'm duly horrified.

> GC> and then around line 15670 I get a vague impression that maybe
> GC> the script expects
> GC>   path/to/include/boost/some_boost_file.hpp
> GC> where I have
> GC>   path/to/include/some_boost_file.hpp
> GC> Is that worth trying after my lunch break?
> 
>  No, I don't think so. The command should work as written and it did for me
> with the latest xmlwrapp version.

One of the more readable parts of 'configure' says:

# If BOOST_ROOT is set and the user has not provided a value to
# --with-boost, then treat BOOST_ROOT as if it the user supplied it.

So let's try that...

ls ~/msw/i686-w64-mingw32/include/version.hpp
/home/greg/msw/i686-w64-mingw32/include/version.hpp

Should BOOST_ROOT be...
  /home/greg/msw/i686-w64-mingw32/include/ ?
  /home/greg/msw/i686-w64-mingw32/ ?

Let's try both ways.

/home/greg/build/xmlwrapp-msw[0]$export 
BOOST_ROOT=/home/greg/msw/i686-w64-mingw32/include/
/home/greg/build/xmlwrapp-msw[0]$echo $BOOST_ROOT
/home/greg/msw/i686-w64-mingw32/include/

Attempting to heed the "has not provided a value to \n# --with-boost"
line above, I try removing '--with-boost':

/home/greg/build/xmlwrapp-msw[0]$~/src/3rdparty/xmlwrapp/configure \
      --disable-shared --disable-tests --disable-docs \
      --prefix=$HOME/msw/i686-w64-mingw32 \
      --host=i686-w64-mingw32 \
      PKG_CONFIG_LIBDIR=$HOME/msw/i686-w64-mingw32/lib/pkgconfig 2>&1 |less

which gives the same error as before, so I try keeping the '--with-boost'
line but removing its value:

$~/src/3rdparty/xmlwrapp/configure \
      --disable-shared --disable-tests --disable-docs \
      --with-boost \
      --prefix=$HOME/msw/i686-w64-mingw32 \
      --host=i686-w64-mingw32 \
      PKG_CONFIG_LIBDIR=$HOME/msw/i686-w64-mingw32/lib/pkgconfig 2>&1 |less

configure: Detected BOOST_ROOT=/home/greg/msw/i686-w64-mingw32/include/, but 
overridden by --with-boost=yes
checking for Boost headers version >= 0.0.0... /usr/include
checking for Boost's header version... 1_49
checking boost/pool/singleton_pool.hpp usability... no
checking boost/pool/singleton_pool.hpp presence... no
checking for boost/pool/singleton_pool.hpp... no
configure: error: cannot find boost/pool/singleton_pool.hpp

That seemed to get farther. However, it says 'singleton_pool.hpp' is
missing. It does indeed seem to be missing in 1.38:

/home/greg/msw/i686-w64-mingw32[0]$ls include/s [press Tab]
scoped_array.hpp               smart_ptr.hpp
scoped_ptr.hpp                 spirit/
scope_exit.hpp                 spirit.hpp
serialization/                 statechart/
shared_array.hpp               state_saver.hpp
shared_container_iterator.hpp  static_assert.hpp
shared_ptr.hpp                 static_warning.hpp
signal.hpp                     strong_typedef.hpp
signals/                       swap.hpp
signals.hpp                    system/
smart_cast.hpp

but that's probably expected because 1.38 is old.

And why does 'configure' say I have 1.49:
  checking for Boost's header version... 1_49
when I don't? Look:

$grep VERSION ~/msw/i686-w64-mingw32/include/version.hpp
#ifndef BOOST_VERSION_HPP
#define BOOST_VERSION_HPP
//  BOOST_VERSION % 100 is the patch level
//  BOOST_VERSION / 100 % 1000 is the minor version
//  BOOST_VERSION / 100000 is the major version
#define BOOST_VERSION 103800
//  BOOST_LIB_VERSION must be defined to be the same as BOOST_VERSION
#define BOOST_LIB_VERSION "1_38"

So...earlier I was going to try both these values for BOOST_ROOT:
  /home/greg/msw/i686-w64-mingw32/include/
  /home/greg/msw/i686-w64-mingw32/
and the first one failed, so now I try the second.

$export BOOST_ROOT=/home/greg/msw/i686-w64-mingw32/
$echo $BOOST_ROOT
/home/greg/msw/i686-w64-mingw32/
/home/greg/build/xmlwrapp-msw[0]$~/src/3rdparty/xmlwrapp/configure \
      --disable-shared --disable-tests --disable-docs \
      --with-boost \
      --prefix=$HOME/msw/i686-w64-mingw32 \
      --host=i686-w64-mingw32 \
      PKG_CONFIG_LIBDIR=$HOME/msw/i686-w64-mingw32/lib/pkgconfig 2>&1 |less

Same as before: it detects 1.49, which is wrong, and of course
there's no singleton_pool.hpp:

configure: Detected BOOST_ROOT=/home/greg/msw/i686-w64-mingw32/, but overridden 
by --with-boost=yes
checking for Boost headers version >= 0.0.0... /usr/include
checking for Boost's header version... 1_49
checking boost/pool/singleton_pool.hpp usability... no
checking boost/pool/singleton_pool.hpp presence... no
checking for boost/pool/singleton_pool.hpp... no
configure: error: cannot find boost/pool/singleton_pool.hpp

What else can I try? (All the numerous earlier steps worked perfectly, BTW.)




reply via email to

[Prev in Thread] Current Thread [Next in Thread]