Menu

#416 OWLNext does not compile with C++ Builder CLang compiler on trunk

unspecified
wont-fix
None
1
2018-05-03
2018-05-01
No

The latest version of the trunk branch does not compile with C++ Builder CLang compiler - regression in [r4290].

Some of the listed errors:
C:\Program Files (x86)\Embarcadero\Studio\19.0\\include\boost_1_39\boost/mpl/aux_/logical_op.hpp(145,5): error E1172: unknown type name 'or__rebind'
C:\Program Files (x86)\Embarcadero\Studio\19.0\\include\boost_1_39\boost/mpl/if.hpp(72,5): error E1172: unknown type name 'if__rebind'
C:\Program Files (x86)\Embarcadero\Studio\19.0\\include\boost_1_39\boost/mpl/eval_if.hpp(43,5): error E1172: unknown type name 'eval_if_rebind'

Related

Commit: [r4290]

Discussion

  • Vidar Hasfjord

    Vidar Hasfjord - 2018-05-02

    Hi Jogy, I can build both c730-x86 and c730-x64 configurations just fine here.

    The errors you list show that you are including the wrong Boost version. The Clang compilers should use Boost 1.55 (system include directories should include CG_64_BOOST_ROOT, which should be set to point to Boost 1.55).

    Note that there is a bug in the C++Builder Starter Edition (it omits the definition of CG_64_BOOST_ROOT). See this post in [bugs:#405] "OWLNext build fails with C++Builder Starter Edition". The issue is also mentioned in [feature-requests:#131] "Support for C++Builder 10.2 Tokyo Starter Edition". The latest version of OWLMaker circumvents the issue by defining CG_64_BOOST_ROOT explicitly in the build command (after the call to "rsvars.bat" and before the call to "msbuild"):

    rem Build owl-7.0.0-c730-x86-dt.lib
    
    "C:\Program Files (x86)\Embarcadero\Studio\19.0\bin\rsvars.bat" &
    set "CG_64_BOOST_ROOT=C:\Program Files (x86)\Embarcadero\Studio\19.0\include\boost_1_55" &
    msbuild CB\owl.cbproj /t:Clean;Build /p:Config=Debug;Platform=Win32;OWLNextVersion=7.0.0;OWLNextCompilerVersion=730;OWLNextSetup=false
    
     

    Related

    Bugs: #405
    Feature Requests: #131

  • Vidar Hasfjord

    Vidar Hasfjord - 2018-05-03
    • status: open --> wont-fix
    • assigned_to: Vidar Hasfjord
    • Group: 7 --> unspecified
     
  • Vidar Hasfjord

    Vidar Hasfjord - 2018-05-03

    Jogy, I've closed this ticket as "wont-fix", since it seems to be a non-issue. If you can confirm a genuine problem, please reopen it.

     
  • Ognyan Chernokozhev

    The poroblem comes from rsvars.bat file - it was setting the CG_BOOST_ROOT variable to point to 1.39 version. When I edited it and changed it to 1.55, now it builds.

    I don't remember editiong this file before, so it may be configured this way after installing C++ Builder or the Boost package ...

     
  • Vidar Hasfjord

    Vidar Hasfjord - 2018-05-03

    Hi Jogy, thanks for the feedback. Good that it is a non-issue!

    I don't remember editiong this file before

    Well, you did mention hacking the Boost path setting in this post in the discussion for [bugs:#405], so I assumed this ticket was related to the same Starter Edition issue:

    http://sourceforge.net/p/owlnext/bugs/405/#9d36/bfe2

    In summary, circumvent the Starter Edition bug by adding a definition for CG_64_BOOST_ROOT (pointing to Boost 1.55, for use by BCC32C/BCC32X/BCC64), and do not modify the CG_BOOST_ROOT definition (which points to Boost 1.39, for use by BCC32).

    BTW. With both Boost path variables correctly in place, and with the latest changes in the C++Builder project files for OWLNext 7 and the extension libraries (now set the system include paths explicitly), I am now able to use the Starter Edition for 64-bit build testing as well, by manually copying the 64-bit toolset (compiler and linker) over from my Tokyo trial backup.

     

    Related

    Bugs: #405

  • Vidar Hasfjord

    Vidar Hasfjord - 2018-05-03

    Note: If you have changed the system include paths in the IDE to use CG_BOOST_ROOT for the Clang-based compilers (as you mentioned here), you should change the paths back to using CG_64_BOOST_ROOT for the Clang-based compilers.

     

Log in to post a comment.