Update: I've given up on clang.  I never did figure out how to tell
cmake and/or acprep to pass a new option like "-stdlib=..." to the
compilation phase.  I assume it's possible somehow.  So I ended up
grabbing the compilation commands cmake produced and copying them into
a script and I manually added the option you suggested and recompiled.
Then it complained about not finding several standard include library
files.

So I am now trying g++.  Again, due to cmake
brain-damage^H^H^H^H^H^H^H^H^H^H^H^H opaqueness, it insists on using
clang.  (Grrr!  I promised myself I wouldn't rant about cmake, but
geeez!)  I eventually had to remove the execute permission from
/usr/bin/clang and symlink g++ to clang++ and other atrocities but
eventually I got the compilation to work under g++ 4.8.4

However linking is still a problem: Boost is complaining about not
finding "perl_matcher" and a few other errors, attached below.

Has *anyone* successfully compiled Ledger on FreeBSD 10???



Linking CXX executable ../ledger
CMakeFiles/ledger.dir/main.cc.o: In function `bool
boost::regex_search<char const*, char, boost::regex_traits<char,
boost::cpp_regex_traits<char> > >(char const*, c
har const*, boost::basic_regex<char, boost::regex_traits<char,
boost::cpp_regex_traits<char> > > const&,
boost::regex_constants::_match_flags)':
/usr/local/include/boost/regex/v4/regex_search.hpp:145: undefined
reference to `boost::re_detail::perl_matcher<char const*,
std::allocator<boost::sub_match<char con
st*> >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::find()'
CMakeFiles/ledger.dir/main.cc.o: In function
`boost::re_detail::perl_matcher<char const*,
std::allocator<boost::sub_match<char const*> >,
boost::regex_traits<char,
boost::cpp_regex_traits<char> > >::perl_matcher(char const*, char
const*, boost::match_results<char const*,
std::allocator<boost::sub_match<char const*> > >&, boost
::basic_regex<char, boost::regex_traits<char,
boost::cpp_regex_traits<char> > > const&,
boost::regex_constants::_match_flags, char const*)':
/usr/local/include/boost/regex/v4/perl_matcher.hpp:374: undefined
reference to `boost::re_detail::perl_matcher<char const*,
std::allocator<boost::sub_match<char con
st*> >, boost::regex_traits<char, boost::cpp_regex_traits<char> >
>::construct_init(boost::basic_regex<char, boost::regex_traits<char,
boost::cpp_regex_traits<char> > > const&,
boost::regex_constants::_match_flags)'
../libledger.so.3: undefined reference to
`boost::iostreams::file_descriptor::seek(long, std::_Ios_Seekdir)'
../libledger.so.3: undefined reference to
`boost::re_detail::perl_matcher<__gnu_cxx::__normal_iterator<char
const*, std::string>,
std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char
const*, std::string> > >, boost::regex_traits<char,
boost::cpp_regex_traits<char> > >::match()'
../libledger.so.3: undefined reference to
`boost::re_detail::perl_matcher<__gnu_cxx::__normal_iterator<char
const*, std::string>,
std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char
const*, std::string> > >, boost::regex_traits<char,
boost::cpp_regex_traits<char> >
>::construct_init(boost::basic_regex<char, boost::regex_traits<char,
boost::cpp_regex_traits<char> > > const&,
boost::regex_constants::_match_flags)'
../libledger.so.3: undefined reference to
`boost::filesystem::path_traits::dispatch(boost::filesystem::directory_entry
const&, std::string&, std::codecvt<wchar_t, char, __mbstate_t>
const&)'
../libledger.so.3: undefined reference to
`boost::re_detail::perl_matcher<__gnu_cxx::__normal_iterator<char
const*, std::string>,
std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char
const*, std::string> > >, boost::regex_traits<char,
boost::cpp_regex_traits<char> > >::find()'
collect2: error: ld returned 1 exit status
*** Error code 1

On Thu, Jun 26, 2014 at 2:54 AM, Jostein Berntsen <[email protected]> wrote:
>
>
> On Tuesday, June 24, 2014 8:30:38 PM UTC+2, Chris Leyon wrote:
>>
>> I'm having difficulties compiling the latest Ledger code on FreeBSD
>> 10.0 (well, PC-BSD actually) with clang and Boost 1.55.0.  I followed
>> some suggested commands, step 2 from Thierry on 2014-05-04 in message
>> <[email protected]>. I include the
>> output below.  If anyone has any suggestions for fixing this bug or
>> compiling on FreeBSD I would be very happy to hear them.  Until then,
>> my ledgering is out of commission for a while.....
>>
>> Thanks for any help,
>> Chris
>>
>>
>> ----------8<--------------------8<--------------------8<----------
>>
>> cleyon@rosso:ledger-2014-06-24$ rm -rf ledger/
>>
>> cleyon@rosso:ledger-2014-06-24$ git clone
>> git://github.com/ledger/ledger.git
>> Cloning into 'ledger'...
>> remote: Reusing existing pack: 32431, done.
>> remote: Total 32431 (delta 0), reused 0 (delta 0)
>> Receiving objects: 100% (32431/32431), 14.13 MiB | 5.33 MiB/s, done.
>> Resolving deltas: 100% (24322/24322), done.
>> Checking connectivity... done.
>>
>> cleyon@rosso:ledger-2014-06-24$ cd ledger/
>>
>> cleyon@rosso:ledger$ git submodule update --init
>> Submodule 'lib/utfcpp' (http://github.com/ledger/utfcpp.git)
>> registered for path 'lib/utfcpp'
>> Cloning into 'lib/utfcpp'...
>> remote: Reusing existing pack: 37, done.
>> remote: Total 37 (delta 0), reused 0 (delta 0)
>> Unpacking objects: 100% (37/37), done.
>> Checking connectivity... done.
>> Submodule path 'lib/utfcpp': checked out
>> '2233ec933f5661c7050b94d3b14f5f9f51ae3d55'
>>
>> cleyon@rosso:ledger$ cmake . -DUSE_DOXYGEN=1 -DUSE_PYTHON=1
>> -- The C compiler identification is Clang 3.3.0
>> -- The CXX compiler identification is Clang 3.3.0
>> -- Check for working C compiler: /usr/bin/cc
>> -- Check for working C compiler: /usr/bin/cc -- works
>> -- Detecting C compiler ABI info
>> -- Detecting C compiler ABI info - done
>> -- Check for working CXX compiler: /usr/bin/CC
>> -- Check for working CXX compiler: /usr/bin/CC -- works
>> -- Detecting CXX compiler ABI info
>> -- Detecting CXX compiler ABI info - done
>> -- Found PythonInterp: /usr/local/bin/python (found version "2.7.6")
>> -- Found PythonLibs: /usr/local/lib/libpython2.7.so (found version
>> "2.7.6")
>> -- Boost version: 1.55.0
>> -- Found the following Boost libraries:
>> --   date_time
>> --   filesystem
>> --   system
>> --   iostreams
>> --   regex
>> --   unit_test_framework
>> --   python
>> -- Looking for access
>> -- Looking for access - found
>> -- Looking for realpath
>> -- Looking for realpath - found
>> -- Looking for getpwuid
>> -- Looking for getpwuid - found
>> -- Looking for getpwnam
>> -- Looking for getpwnam - found
>> -- Looking for isatty
>> -- Looking for isatty - found
>> -- Performing Test UNIX_PIPES_COMPILES
>> -- Performing Test UNIX_PIPES_COMPILES - Success
>> -- Performing Test BOOST_REGEX_UNICODE_RUNS
>> -- Performing Test BOOST_REGEX_UNICODE_RUNS - Failed
>> -- Looking for readline in edit
>> -- Looking for readline in edit - found
>> -- Found Doxygen: /usr/local/bin/doxygen (found version "1.8.3.1")
>> -- Configuring done
>> -- Generating done
>> -- Build files have been written to:
>> /usr/home/cleyon/tmp/ledger-2014-06-24/ledger
>>
>> cleyon@rosso:ledger$ make
>> Scanning dependencies of target libledger
>> [  1%] Building CXX object src/CMakeFiles/libledger.dir/stats.cc.o
>> [  2%] Building CXX object src/CMakeFiles/libledger.dir/generate.cc.o
>> [  4%] Building CXX object src/CMakeFiles/libledger.dir/csv.cc.o
>> [  5%] Building CXX object src/CMakeFiles/libledger.dir/convert.cc.o
>> [  6%] Building CXX object src/CMakeFiles/libledger.dir/draft.cc.o
>> [  8%] Building CXX object src/CMakeFiles/libledger.dir/emacs.cc.o
>> [  9%] Building CXX object src/CMakeFiles/libledger.dir/org.cc.o
>> [ 10%] Building CXX object src/CMakeFiles/libledger.dir/ptree.cc.o
>> [ 12%] Building CXX object src/CMakeFiles/libledger.dir/print.cc.o
>> [ 13%] Building CXX object src/CMakeFiles/libledger.dir/output.cc.o
>> /usr/home/cleyon/tmp/ledger-2014-06-24/ledger/src/output.cc:294:48:
>> error: no viable conversion from
>>       '__map_iterator<__tree_iterator<union std::__1::map<class
>> ledger::account_t *, unsigned long, struct ledger::account_compare,
>>       class std::__1::allocator<struct std::__1::pair<class
>> ledger::account_t *const, unsigned long> > >::__value_type, class
>>       std::__1::__tree_node<union std::__1::map<class
>> ledger::account_t *, unsigned long, struct ledger::account_compare,
>> class
>>       std::__1::allocator<struct std::__1::pair<class
>> ledger::account_t *const, unsigned long> > >::__value_type, void *> *,
>>       [...]>>' to '__map_iterator<__tree_iterator<union
>> std::__1::map<class ledger::account_t *, unsigned long, struct
>>       std::__1::less<class ledger::account_t *>, class
>> std::__1::allocator<struct std::__1::pair<class ledger::account_t
>> *const,
>>       unsigned long> > >::__value_type, class
>> std::__1::__tree_node<union std::__1::map<class ledger::account_t *,
>> unsigned long,
>>       struct std::__1::less<class ledger::account_t *>, class
>> std::__1::allocator<struct std::__1::pair<class ledger::account_t
>>       *const, unsigned long> > >::__value_type, void *> *, [...]>>'
>>   std::map<account_t *, std::size_t>::iterator i =
>> accounts.find(post.account);
>>                                                ^
>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> /usr/include/c++/v1/map:499:24: note: candidate constructor (the
>> implicit copy constructor) not viable: no known conversion from
>>       'iterator' (aka '__map_iterator<typename __base::iterator>') to
>> 'const
>>
>> std::__1::__map_iterator<std::__1::__tree_iterator<std::__1::map<ledger::account_t
>> *, unsigned long,
>>       std::__1::less<ledger::account_t *>,
>> std::__1::allocator<std::__1::pair<ledger::account_t *const, unsigned
>> long> >
>>       >::__value_type,
>> std::__1::__tree_node<std::__1::map<ledger::account_t *, unsigned
>> long, std::__1::less<ledger::account_t *>,
>>       std::__1::allocator<std::__1::pair<ledger::account_t *const,
>> unsigned long> > >::__value_type, void *> *, long> > &' for 1st
>>       argument
>> class _LIBCPP_TYPE_VIS __map_iterator
>>                        ^
>> /usr/include/c++/v1/map:499:24: note: candidate constructor (the
>> implicit move constructor) not viable: no known conversion from
>>       'iterator' (aka '__map_iterator<typename __base::iterator>') to
>>
>> 'std::__1::__map_iterator<std::__1::__tree_iterator<std::__1::map<ledger::account_t
>> *, unsigned long,
>>       std::__1::less<ledger::account_t *>,
>> std::__1::allocator<std::__1::pair<ledger::account_t *const, unsigned
>> long> >
>>       >::__value_type,
>> std::__1::__tree_node<std::__1::map<ledger::account_t *, unsigned
>> long, std::__1::less<ledger::account_t *>,
>>       std::__1::allocator<std::__1::pair<ledger::account_t *const,
>> unsigned long> > >::__value_type, void *> *, long> > &&' for 1st
>>       argument
>> class _LIBCPP_TYPE_VIS __map_iterator
>>                        ^
>> /usr/include/c++/v1/map:523:5: note: candidate constructor not viable:
>> no known conversion from 'iterator' (aka
>>       '__map_iterator<typename __base::iterator>') to
>> 'std::__1::__tree_iterator<std::__1::map<ledger::account_t *, unsigned
>> long,
>>       std::__1::less<ledger::account_t *>,
>> std::__1::allocator<std::__1::pair<ledger::account_t *const, unsigned
>> long> >
>>       >::__value_type,
>> std::__1::__tree_node<std::__1::map<ledger::account_t *, unsigned
>> long, std::__1::less<ledger::account_t *>,
>>       std::__1::allocator<std::__1::pair<ledger::account_t *const,
>> unsigned long> > >::__value_type, void *> *, long>' for 1st
>>       argument
>>     __map_iterator(_TreeIterator __i) _NOEXCEPT : __i_(__i) {}
>>     ^
>> /usr/home/cleyon/tmp/ledger-2014-06-24/ledger/src/output.cc:365:50:
>> error: no viable conversion from
>>       '__map_iterator<__tree_iterator<union std::__1::map<class
>> ledger::commodity_t *, unsigned long, struct
>>       ledger::commodity_compare, class std::__1::allocator<struct
>> std::__1::pair<class ledger::commodity_t *const, unsigned long> >
>>       >::__value_type, class std::__1::__tree_node<union
>> std::__1::map<class ledger::commodity_t *, unsigned long, struct
>>       ledger::commodity_compare, class std::__1::allocator<struct
>> std::__1::pair<class ledger::commodity_t *const, unsigned long> >
>>       >::__value_type, void *> *, [...]>>' to
>> '__map_iterator<__tree_iterator<union std::__1::map<class
>> ledger::commodity_t *,
>>       unsigned long, struct std::__1::less<class ledger::commodity_t
>> *>, class std::__1::allocator<struct std::__1::pair<class
>>       ledger::commodity_t *const, unsigned long> > >::__value_type,
>> class std::__1::__tree_node<union std::__1::map<class
>>       ledger::commodity_t *, unsigned long, struct
>> std::__1::less<class ledger::commodity_t *>, class
>> std::__1::allocator<struct
>>       std::__1::pair<class ledger::commodity_t *const, unsigned long>
>> > >::__value_type, void *> *, [...]>>'
>>   std::map<commodity_t *, std::size_t>::iterator i =
>> commodities.find(&comm);
>>                                                  ^
>> ~~~~~~~~~~~~~~~~~~~~~~~
>> /usr/include/c++/v1/map:499:24: note: candidate constructor (the
>> implicit copy constructor) not viable: no known conversion from
>>       'iterator' (aka '__map_iterator<typename __base::iterator>') to
>> 'const
>>
>> std::__1::__map_iterator<std::__1::__tree_iterator<std::__1::map<ledger::commodity_t
>> *, unsigned long,
>>       std::__1::less<ledger::commodity_t *>,
>> std::__1::allocator<std::__1::pair<ledger::commodity_t *const,
>> unsigned long> >
>>       >::__value_type,
>> std::__1::__tree_node<std::__1::map<ledger::commodity_t *, unsigned
>> long, std::__1::less<ledger::commodity_t
>>       *>, std::__1::allocator<std::__1::pair<ledger::commodity_t
>> *const, unsigned long> > >::__value_type, void *> *, long> > &' for
>>       1st argument
>> class _LIBCPP_TYPE_VIS __map_iterator
>>                        ^
>> /usr/include/c++/v1/map:499:24: note: candidate constructor (the
>> implicit move constructor) not viable: no known conversion from
>>       'iterator' (aka '__map_iterator<typename __base::iterator>') to
>>
>> 'std::__1::__map_iterator<std::__1::__tree_iterator<std::__1::map<ledger::commodity_t
>> *, unsigned long,
>>       std::__1::less<ledger::commodity_t *>,
>> std::__1::allocator<std::__1::pair<ledger::commodity_t *const,
>> unsigned long> >
>>       >::__value_type,
>> std::__1::__tree_node<std::__1::map<ledger::commodity_t *, unsigned
>> long, std::__1::less<ledger::commodity_t
>>       *>, std::__1::allocator<std::__1::pair<ledger::commodity_t
>> *const, unsigned long> > >::__value_type, void *> *, long> > &&'
>>       for 1st argument
>> class _LIBCPP_TYPE_VIS __map_iterator
>>                        ^
>> /usr/include/c++/v1/map:523:5: note: candidate constructor not viable:
>> no known conversion from 'iterator' (aka
>>       '__map_iterator<typename __base::iterator>') to
>> 'std::__1::__tree_iterator<std::__1::map<ledger::commodity_t *,
>> unsigned long,
>>       std::__1::less<ledger::commodity_t *>,
>> std::__1::allocator<std::__1::pair<ledger::commodity_t *const,
>> unsigned long> >
>>       >::__value_type,
>> std::__1::__tree_node<std::__1::map<ledger::commodity_t *, unsigned
>> long, std::__1::less<ledger::commodity_t
>>       *>, std::__1::allocator<std::__1::pair<ledger::commodity_t
>> *const, unsigned long> > >::__value_type, void *> *, long>' for 1st
>>       argument
>>     __map_iterator(_TreeIterator __i) _NOEXCEPT : __i_(__i) {}
>>     ^
>> /usr/home/cleyon/tmp/ledger-2014-06-24/ledger/src/output.cc:374:54:
>> error: no viable conversion from
>>       '__map_iterator<__tree_iterator<union std::__1::map<class
>> ledger::commodity_t *, unsigned long, struct
>>       ledger::commodity_compare, class std::__1::allocator<struct
>> std::__1::pair<class ledger::commodity_t *const, unsigned long> >
>>       >::__value_type, class std::__1::__tree_node<union
>> std::__1::map<class ledger::commodity_t *, unsigned long, struct
>>       ledger::commodity_compare, class std::__1::allocator<struct
>> std::__1::pair<class ledger::commodity_t *const, unsigned long> >
>>       >::__value_type, void *> *, [...]>>' to
>> '__map_iterator<__tree_iterator<union std::__1::map<class
>> ledger::commodity_t *,
>>       unsigned long, struct std::__1::less<class ledger::commodity_t
>> *>, class std::__1::allocator<struct std::__1::pair<class
>>       ledger::commodity_t *const, unsigned long> > >::__value_type,
>> class std::__1::__tree_node<union std::__1::map<class
>>       ledger::commodity_t *, unsigned long, struct
>> std::__1::less<class ledger::commodity_t *>, class
>> std::__1::allocator<struct
>>       std::__1::pair<class ledger::commodity_t *const, unsigned long>
>> > >::__value_type, void *> *, [...]>>'
>>       std::map<commodity_t *, std::size_t>::iterator ii =
>>                                                      ^
>> /usr/include/c++/v1/map:499:24: note: candidate constructor (the
>> implicit copy constructor) not viable: no known conversion from
>>       'iterator' (aka '__map_iterator<typename __base::iterator>') to
>> 'const
>>
>> std::__1::__map_iterator<std::__1::__tree_iterator<std::__1::map<ledger::commodity_t
>> *, unsigned long,
>>       std::__1::less<ledger::commodity_t *>,
>> std::__1::allocator<std::__1::pair<ledger::commodity_t *const,
>> unsigned long> >
>>       >::__value_type,
>> std::__1::__tree_node<std::__1::map<ledger::commodity_t *, unsigned
>> long, std::__1::less<ledger::commodity_t
>>       *>, std::__1::allocator<std::__1::pair<ledger::commodity_t
>> *const, unsigned long> > >::__value_type, void *> *, long> > &' for
>>       1st argument
>>
>> class _LIBCPP_TYPE_VIS __map_iterator
>>                        ^
>> /usr/include/c++/v1/map:499:24: note: candidate constructor (the
>> implicit move constructor) not viable: no known conversion from
>>       'iterator' (aka '__map_iterator<typename __base::iterator>') to
>>
>> 'std::__1::__map_iterator<std::__1::__tree_iterator<std::__1::map<ledger::commodity_t
>> *, unsigned long,
>>       std::__1::less<ledger::commodity_t *>,
>> std::__1::allocator<std::__1::pair<ledger::commodity_t *const,
>> unsigned long> >
>>       >::__value_type,
>> std::__1::__tree_node<std::__1::map<ledger::commodity_t *, unsigned
>> long, std::__1::less<ledger::commodity_t
>>       *>, std::__1::allocator<std::__1::pair<ledger::commodity_t
>> *const, unsigned long> > >::__value_type, void *> *, long> > &&'
>>       for 1st argument
>> class _LIBCPP_TYPE_VIS __map_iterator
>>                        ^
>> /usr/include/c++/v1/map:523:5: note: candidate constructor not viable:
>> no known conversion from 'iterator' (aka
>>       '__map_iterator<typename __base::iterator>') to
>> 'std::__1::__tree_iterator<std::__1::map<ledger::commodity_t *,
>> unsigned long,
>>       std::__1::less<ledger::commodity_t *>,
>> std::__1::allocator<std::__1::pair<ledger::commodity_t *const,
>> unsigned long> >
>>       >::__value_type,
>> std::__1::__tree_node<std::__1::map<ledger::commodity_t *, unsigned
>> long, std::__1::less<ledger::commodity_t
>>       *>, std::__1::allocator<std::__1::pair<ledger::commodity_t
>> *const, unsigned long> > >::__value_type, void *> *, long>' for 1st
>>       argument
>>     __map_iterator(_TreeIterator __i) _NOEXCEPT : __i_(__i) {}
>>     ^
>> 3 errors generated.
>> *** Error code 1
>>
>> Stop.
>> make[2]: stopped in /usr/home/cleyon/tmp/ledger-2014-06-24/ledger
>> *** Error code 1
>>
>> Stop.
>> make[1]: stopped in /usr/home/cleyon/tmp/ledger-2014-06-24/ledger
>> *** Error code 1
>>
>> Stop.
>> make: stopped in /usr/home/cleyon/tmp/ledger-2014-06-24/ledger
>>
>> ----------8<--------------------8<--------------------8<----------
>
>
> clang seems to be a culprit in FreeBSD 10.0 for compiling some application
> according to some searching on the web. Can you try to compile with this
> option?
>
> "clang -stdlib=libstdc++ "
>
> Jostein
>
>
> --
>
> ---
> You received this message because you are subscribed to the Google Groups
> "Ledger" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/d/optout.

-- 

--- 
You received this message because you are subscribed to the Google Groups 
"Ledger" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to