Boost C++ Libraries: Ticket #4864: Support for 64-bit ICU https://svn.boost.org/trac10/ticket/4864 <p> On windows, anyway, ICU's 64-bit binaries tend to appear in a subdirectory called <code>lib64/</code>, but the Jamfile seems to assume that ICU will be in <code>lib/</code>. </p> en-us Boost C++ Libraries /htdocs/site/boost.png https://svn.boost.org/trac10/ticket/4864 Trac 1.4.3 Dave Abrahams Wed, 17 Nov 2010 17:24:45 GMT <link>https://svn.boost.org/trac10/ticket/4864#comment:1 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/4864#comment:1</guid> <description> <p> Note that even after accounting for that issue, ICU is still not successfully detected under x64: </p> <pre class="wiki">msvc.link c:\work\build\boost\bin.v2\libs\regex\build\msvc-10.0express\debug\threading-multi\has_icu.exe has_icu_test.obj : error LNK2019: unresolved external symbol _u_charFromName_44 referenced in function _main c:\work\build\boost\bin.v2\libs\regex\build\msvc-10.0express\debug\threading-multi\has_icu.exe : fatal error LNK1120: 1 unresolved externals call "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" &gt;nul call "c:/Program Files/Microsoft SDKs/Windows/v7.1/Bin/SetEnv" /x86 &gt;nul link /NOLOGO /INCREMENTAL:NO /DEBUG /MACHINE:X86 /subsystem:console /out:"c:\work\build\boost\bin.v2\libs\regex\build\msvc-10.0express\debug\threading-multi\has_icu.exe" /LIBPATH:c:/work/icu/lib64 @"c:\work\build\boost\bin.v2\libs\regex\build\msvc-10.0express\debug\threading-multi\has_icu.exe.rsp" if %ERRORLEVEL% NEQ 0 EXIT %ERRORLEVEL% </pre> </description> <category>Ticket</category> </item> <item> <dc:creator>anonymous</dc:creator> <pubDate>Thu, 18 Nov 2010 17:06:40 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/4864#comment:2 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/4864#comment:2</guid> <description> <p> Dave, can you tell me what's in has_icu.exe.rsp? </p> <p> Also the bjam command line. </p> <p> Thanks, John. </p> </description> <category>Ticket</category> </item> <item> <dc:creator>Dave Abrahams</dc:creator> <pubDate>Thu, 18 Nov 2010 17:17:33 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/4864#comment:3 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/4864#comment:3</guid> <description> <p> sorry, John... been up for 3 days trying to get all this building/working and I didn't take the time to create a little test case. The command-line was undoubtedly just something like <code>bjam address-model=64</code> in <code>libs/regex/test</code>. However, I don't have the other file. I could try to recreate this if you ping me in a couple of days. </p> </description> <category>Ticket</category> </item> <item> <dc:creator>anonymous</dc:creator> <pubDate>Thu, 18 Nov 2010 18:46:48 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/4864#comment:4 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/4864#comment:4</guid> <description> <p> There's a tentative fix for this in Trunk, if you can let me know if this works once you catch breath, that would be great. </p> </description> <category>Ticket</category> </item> <item> <dc:creator>Katie Chan</dc:creator> <pubDate>Sat, 20 Nov 2010 05:01:26 GMT</pubDate> <title>cc set https://svn.boost.org/trac10/ticket/4864#comment:5 https://svn.boost.org/trac10/ticket/4864#comment:5 <ul> <li><strong>cc</strong> <span class="trac-author">Katie Chan</span> added </li> </ul> <p> Nope, it completely broke things now. :D </p> <p> Before, x64 actually worked if one renamed the directory from lib64 to lib. I had </p> <pre class="wiki">D:\libs\icu4c-4_4_2\ // x86 D:\libs\icu4c-4_4_2-x64\ // x64 </pre><p> where both contained a \bin &amp; \lib. i.e. I renamed the bin64 &amp; lib64 and everything worked. </p> <p> The new Jamfile.v2 causes ICU not to be detected at all, even for x86. </p> <pre class="wiki">msvc.link bin.v2\libs\regex\build\msvc-10.0\debug\threading-multi\has_icu.exe LINK : fatal error LNK1181: cannot open input file 'icuucd.lib' call "D:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" x86 &gt;nul link /NOLOGO /INCREMENTAL:NO /DEBUG /MACHINE:X86 /subsystem:console /out:"bin.v2\libs\regex\build\msvc-10.0\debug\threading-multi\has_icu.exe" /delayload:icudt44.dll /delayload:icuin44.dll /delayload:icuin44d.dll /delayload:icuuc44.dll /delayload:icuuc44d.dll delayimp.lib @"bin.v2\libs\regex\build\msvc-10.0\debug\threading-multi\has_icu.exe.rsp" if %ERRORLEVEL% NEQ 0 EXIT %ERRORLEVEL% ...failed msvc.link bin.v2\libs\regex\build\msvc-10.0\debug\threading-multi\has_icu.exe bin.v2\libs\regex\build\msvc-10.0\debug\threading-multi\has_icu.pdb... ...failed updating 1 target... ...updated 8 targets... ...failed updating 1 target... Performing configuration checks - has_icu builds : no </pre> Ticket John Maddock Sat, 20 Nov 2010 10:04:55 GMT <link>https://svn.boost.org/trac10/ticket/4864#comment:6 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/4864#comment:6</guid> <description> <blockquote class="citation"> <p> The new Jamfile.v2 causes ICU not to be detected at all, even for x86. </p> </blockquote> <p> Dang, it works for me here on Win32 (Vista)... two questions, what's the bjam invocation, and what's the content of bin.v2\libs\regex\build\msvc-10.0\debug\threading-multi\has_icu.exe.rsp? </p> <p> Thanks, John. </p> </description> <category>Ticket</category> </item> <item> <dc:creator>Katie Chan</dc:creator> <pubDate>Sat, 20 Nov 2010 23:53:15 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/4864#comment:7 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/4864#comment:7</guid> <description> <p> Boost trunk <a class="changeset" href="https://svn.boost.org/trac10/changeset/66651" title="SunPro workaround; references #4757">r66651</a>. </p> <p> %ICU_PATH%=D:/libs/icu4c-4_4_2 <br /> %PATH%=....;%ICU_PATH%/bin <br /> </p> <blockquote class="citation"> <p> what's the bjam invocation </p> </blockquote> <p> bjam --build-type=complete --with-regex stage </p> <blockquote class="citation"> <p> what's the content of bin.v2\libs\regex\build\msvc-10.0\debug\threading-multi\has_icu.exe.rsp? </p> </blockquote> <pre class="wiki">"bin.v2\libs\regex\build\msvc-10.0\debug\threading-multi\has_icu_test.obj" "icuucd.lib" "icudt.lib" "icuind.lib" </pre> </description> <category>Ticket</category> </item> <item> <dc:creator>John Maddock</dc:creator> <pubDate>Sun, 21 Nov 2010 18:41:03 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/4864#comment:8 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/4864#comment:8</guid> <description> <p> (In <a class="changeset" href="https://svn.boost.org/trac10/changeset/66659" title="Another attempt at fixing 64-bit ICU support. dll-path for 64-bit ...">[66659]</a>) Another attempt at fixing 64-bit ICU support. dll-path for 64-bit builds still isn't set correctly. Refs <a class="new ticket" href="https://svn.boost.org/trac10/ticket/4864" title="#4864: Bugs: Support for 64-bit ICU (new)">#4864</a>. </p> </description> <category>Ticket</category> </item> <item> <dc:creator>anonymous</dc:creator> <pubDate>Sun, 21 Nov 2010 18:43:00 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/4864#comment:9 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/4864#comment:9</guid> <description> <p> Can you please try again? </p> <p> There's still an issue of dll-path not being set correctly for 64-bit builds, but otherwise, I *hope* it will now work. Unfortunately I can't test 64-bit support locally though... </p> <p> Thanks, John. </p> </description> <category>Ticket</category> </item> <item> <dc:creator>Katie Chan</dc:creator> <pubDate>Sun, 21 Nov 2010 20:02:46 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/4864#comment:10 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/4864#comment:10</guid> <description> <p> Well, the 32-bits detect ICU and build fine reporting it finished building all targets, <strong>however</strong> 8 of the 18 resulting files that are built for 1.45 wasn't built. </p> <pre class="wiki">boost_regex-vc100-mt-gd.lib boost-regex-vc100-mt.lib libboost_regex-vc100-mt-gd.lib libboost_regex-vc100-mt-s.lib libboost_regex-vc100-mt-sgd.lib libboost_regex-vc100-mt.lib libboost_regex-vc100-s.lib libboost_regex-vc100-sgd.lib </pre><p> are missing. </p> <p> Win64 build didn't work at all. With the build command </p> <pre class="wiki">bjam --build-type=complete --with-regex -j2 architecture=x86 address-model=64 stage </pre><pre class="wiki">error: No best alternative for libs/regex/build/icuuc next alternative: required properties: &lt;link&gt;shared &lt;runtime-link&gt;shared matched next alternative: required properties: &lt;address-model&gt;64 &lt;link&gt;shared &lt;runtime-link&gt;shared matched next alternative: required properties: &lt;link&gt;shared &lt;runtime-link&gt;shared &lt;toolset&gt;msvc &lt;variant&gt;debug matched error: No best alternative for libs/regex/build/icudt next alternative: required properties: &lt;link&gt;shared &lt;runtime-link&gt;shared matched next alternative: required properties: &lt;address-model&gt;64 &lt;link&gt;shared &lt;runtime-link&gt;shared matched next alternative: required properties: &lt;link&gt;shared &lt;runtime-link&gt;shared &lt;toolset&gt;msvc matched error: No best alternative for libs/regex/build/icuin next alternative: required properties: &lt;link&gt;shared &lt;runtime-link&gt;shared matched next alternative: required properties: &lt;address-model&gt;64 &lt;link&gt;shared &lt;runtime-link&gt;shared matched next alternative: required properties: &lt;link&gt;shared &lt;runtime-link&gt;shared &lt;toolset&gt;msvc &lt;variant&gt;debug matched error: No best alternative for libs/regex/build/icudt next alternative: required properties: &lt;link&gt;shared &lt;runtime-link&gt;shared matched next alternative: required properties: &lt;address-model&gt;64 &lt;link&gt;shared &lt;runtime-link&gt;shared matched next alternative: required properties: &lt;link&gt;shared &lt;runtime-link&gt;shared &lt;toolset&gt;msvc matched error: No best alternative for libs/regex/build/icuin next alternative: required properties: &lt;link&gt;shared &lt;runtime-link&gt;shared matched next alternative: required properties: &lt;address-model&gt;64 &lt;link&gt;shared &lt;runtime-link&gt;shared matched next alternative: required properties: &lt;link&gt;shared &lt;runtime-link&gt;shared &lt;toolset&gt;msvc &lt;variant&gt;debug matched error: No best alternative for libs/regex/build/icuuc next alternative: required properties: &lt;link&gt;shared &lt;runtime-link&gt;shared matched next alternative: required properties: &lt;address-model&gt;64 &lt;link&gt;shared &lt;runtime-link&gt;shared matched next alternative: required properties: &lt;link&gt;shared &lt;runtime-link&gt;shared &lt;toolset&gt;msvc &lt;variant&gt;debug matched ............... has_icu_test.obj : error LNK2019: unresolved external symbol u_charFromName_44 referenced in function main bin.v2\libs\regex\build\msvc-10.0\debug\address-model-64\architecture-x86\threading-multi\has_icu.exe : fatal error LNK1120: 1 unresolved externals call "D:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" x86_amd64 &gt;nul link /NOLOGO /INCREMENTAL:NO /DEBUG /MACHINE:X64 /subsystem:console /out:"bin.v2\libs\regex\build\msvc-10.0\debug\address-model-64\architecture-x86\threading-multi\has_icu.exe" /delayload:icudt44.dll /delayload:icuin44.dll /delayload:icuin44d.dll /delayload:icuuc44.dll /delayload:icuuc44d.dll delayimp.lib @"bin.v2\libs\regex\build\msvc-10.0\debug\address-model-64\architecture-x86\threading-multi\has_icu.exe.rsp" if %ERRORLEVEL% NEQ 0 EXIT %ERRORLEVEL% ...failed msvc.link bin.v2\libs\regex\build\msvc-10.0\debug\address-model-64\architecture-x86\threading-multi\has_icu.exe bin.v2\libs\regex\build\msvc-10.0\debug\address-model-64\architecture-x86\threading-multi\has_icu.pdb... ...removing bin.v2\libs\regex\build\msvc-10.0\debug\address-model-64\architecture-x86\threading-multi\has_icu.pdb ...failed updating 1 target... ...updated 10 targets... ...failed updating 1 target... </pre> </description> <category>Ticket</category> </item> <item> <dc:creator>anonymous</dc:creator> <pubDate>Mon, 22 Nov 2010 09:33:26 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/4864#comment:11 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/4864#comment:11</guid> <description> <p> Aaaah.... in cyberspace no one can hear you scream.... :-0 </p> <p> <em>I had this working</em> - or at least the bjam bit worked - and then I tidied up the Jamfile formatting before committing - and now I just can't get it working again :( </p> <p> Re the missing files - this is an inevitable consequence of using ICU - it has to link against the dynamic runtime, so the static runtime variants aren't built. </p> <p> Time to ask for help... </p> </description> <category>Ticket</category> </item> <item> <dc:creator>John Maddock</dc:creator> <pubDate>Tue, 23 Nov 2010 13:09:11 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/4864#comment:12 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/4864#comment:12</guid> <description> <p> (In <a class="changeset" href="https://svn.boost.org/trac10/changeset/66699" title="Yes another attempt to fix the 64-bit paths issue. Refs #4864.">[66699]</a>) Yes another attempt to fix the 64-bit paths issue. Refs <a class="new ticket" href="https://svn.boost.org/trac10/ticket/4864" title="#4864: Bugs: Support for 64-bit ICU (new)">#4864</a>. </p> </description> <category>Ticket</category> </item> <item> <dc:creator>anonymous</dc:creator> <pubDate>Tue, 23 Nov 2010 14:57:13 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/4864#comment:13 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/4864#comment:13</guid> <description> <p> Dave, Yet another attempt to fix this has gone into Trunk... if you haven't lost patience yet, can you give this one a try too? </p> <p> Cheers, John. </p> </description> <category>Ticket</category> </item> <item> <dc:creator>Katie Chan</dc:creator> <pubDate>Tue, 23 Nov 2010 17:54:21 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/4864#comment:14 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/4864#comment:14</guid> <description> <p> Um, I'm not Dave (*point to by line*) but sure. :D </p> <p> This seems to work. Build without errors for both x86 &amp; x64. All regression tests passed without errors for both as well. :) </p> <p> KTC </p> </description> <category>Ticket</category> </item> <item> <dc:creator>Dave Abrahams</dc:creator> <pubDate>Sun, 19 Dec 2010 23:20:22 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/4864#comment:15 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/4864#comment:15</guid> <description> <p> Replying to <a class="ticket" href="https://svn.boost.org/trac10/ticket/4864#comment:13" title="Comment 13">anonymous</a>: </p> <blockquote class="citation"> <p> Dave, Yet another attempt to fix this has gone into Trunk... if you haven't lost patience yet, can you give this one a try too? </p> </blockquote> <p> John, I'll check this out the next time I build an installer, which should be RSN™ </p> </description> <category>Ticket</category> </item> <item> <dc:creator>Chris Newbold</dc:creator> <pubDate>Wed, 05 Jan 2011 20:31:30 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/4864#comment:16 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/4864#comment:16</guid> <description> <p> We've had similar struggles trying to build Boost 1.44 with ICU on 64-bit Windows 7. In addition to the changes to boost/libs/regex/build/Jamfile.v2 which we lifted from Trunk, we also found a fundamental problem with the implementation of check-target-builds in Boost.Build. </p> <p> The problem is that it does not pass properties such as variant, architecture and address-model from the property set of the "main" build into that for the test executable (has_icu in the case of Boost.Regex). This resulted in attempts to build a debug-mode, 32-bit has_icu in our release-mode 64-bit environment--none of which succeeded. </p> <p> After a lot of hacking around, we finally made the changes in the attached patch to boost/tools/build/v2/build/configure.jam. I'm not sure these are entirely correct, but when combined with the Boost.Regex Jamfile.v2 from Trunk we were able to successfully build with ICU in both 32- and 64-bit Windows environments. </p> </description> <category>Ticket</category> </item> <item> <dc:creator>Chris Newbold</dc:creator> <pubDate>Wed, 05 Jan 2011 20:32:05 GMT</pubDate> <title>cc changed https://svn.boost.org/trac10/ticket/4864#comment:17 https://svn.boost.org/trac10/ticket/4864#comment:17 <ul> <li><strong>cc</strong> <span class="trac-author">cnewbold@…</span> added </li> </ul> Ticket Chris Newbold Wed, 05 Jan 2011 20:35:10 GMT attachment set https://svn.boost.org/trac10/ticket/4864 https://svn.boost.org/trac10/ticket/4864 <ul> <li><strong>attachment</strong> → <span class="trac-field-new">check-target-builds-patch</span> </li> </ul> <p> Patch for check-target-builds to pass relevant properties along to the target executable </p> Ticket John Maddock Thu, 06 Jan 2011 11:22:14 GMT cc changed https://svn.boost.org/trac10/ticket/4864#comment:18 https://svn.boost.org/trac10/ticket/4864#comment:18 <ul> <li><strong>cc</strong> <span class="trac-author">john@…</span> added </li> </ul> <p> This seems to be mostly fixed in Trunk anyway - however not all properties are passed down - address-model seems to work OK, but variant debug/release isn't - so I'm adding Vladimir Prus to the CC list. </p> Ticket John Maddock Thu, 06 Jan 2011 11:24:34 GMT cc changed https://svn.boost.org/trac10/ticket/4864#comment:19 https://svn.boost.org/trac10/ticket/4864#comment:19 <ul> <li><strong>cc</strong> <span class="trac-author">ghost@…</span> added; <span class="trac-author">john@…</span> removed </li> </ul> Ticket Katie Chan Tue, 11 Jan 2011 18:54:41 GMT <link>https://svn.boost.org/trac10/ticket/4864#comment:20 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/4864#comment:20</guid> <description> <p> Shouldn't what's there already which appears to be an improvement on previous release be merged to release for 1.46? </p> </description> <category>Ticket</category> </item> <item> <dc:creator>anonymous</dc:creator> <pubDate>Wed, 12 Jan 2011 17:32:52 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/4864#comment:21 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/4864#comment:21</guid> <description> <blockquote class="citation"> <p> Shouldn't what's there already which appears to be an improvement on previous release be merged to release for 1.46? </p> </blockquote> <p> It has been, sorry forgot to reference the ticket in the commit. </p> <p> Regards, John. </p> </description> <category>Ticket</category> </item> <item> <dc:creator>John Maddock</dc:creator> <pubDate>Fri, 18 Mar 2011 16:56:09 GMT</pubDate> <title>owner, component changed https://svn.boost.org/trac10/ticket/4864#comment:22 https://svn.boost.org/trac10/ticket/4864#comment:22 <ul> <li><strong>owner</strong> changed from <span class="trac-author">John Maddock</span> to <span class="trac-author">Vladimir Prus</span> </li> <li><strong>component</strong> <span class="trac-field-old">regex</span> → <span class="trac-field-new">build</span> </li> </ul> <p> Reassigning to Boost.Build as this is now solely an issue with the check-target-builds rule. </p> <p> Please refer to the comment by cnewbold above to understand the issue. </p> Ticket Vladimir Prus Sat, 19 Mar 2011 09:59:00 GMT <link>https://svn.boost.org/trac10/ticket/4864#comment:23 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/4864#comment:23</guid> <description> <p> It seems to be that check-target-builds should actually access the list of relevant properties. In some cases, debug vs. release does not actually matter, in particularly on Linux. WDYT? </p> </description> <category>Ticket</category> </item> <item> <dc:creator>anonymous</dc:creator> <pubDate>Sat, 19 Mar 2011 12:10:16 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/4864#comment:24 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/4864#comment:24</guid> <description> <p> How do you determine what properties are relevant, unless you pass all of them? Not a rhetorical question BTW :-) </p> </description> <category>Ticket</category> </item> <item> <dc:creator>Vladimir Prus</dc:creator> <pubDate>Sat, 19 Mar 2011 12:24:36 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/4864#comment:25 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/4864#comment:25</guid> <description> <p> The plan is for me not to answer the above non-rhetorical question, by asking the user of check-target-builds to explicitly specify relevant properties if those are different from the default set (which have to documented, but that's separate matter). </p> </description> <category>Ticket</category> </item> <item> <dc:creator>anonymous</dc:creator> <pubDate>Sat, 19 Mar 2011 12:48:56 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/4864#comment:26 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/4864#comment:26</guid> <description> <p> I don't see how that is a solution - how can the author of the Jamfile know what build properties may be specified on the command line - for example I don't see how this addresses the original issue above - that variant, address-model and architechture options don't get passed to the config check which causes incorrect configuration. </p> <p> To take another example - what happens if the user is building both 32 and 64 bit binaries, and the configuration for each is different? </p> </description> <category>Ticket</category> </item> <item> <dc:creator>Vladimir Prus</dc:creator> <pubDate>Sat, 19 Mar 2011 13:01:37 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/4864#comment:27 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/4864#comment:27</guid> <description> <p> First, not that address-model and architecture are now passed. </p> <p> Second, it's not a random Jamfile author -- it's somebody who implements a configuration check, and while that check is in Jamfile in this specific case, he might as well be in a special module. Given that you're implementing a configuration check, you should know what properties determine its outcome. In case of ICU, you should know whether debug or release variant determines the outcome. The only other alternative is to re-run a check for every possible set of properties ever used anywhere, which might waste time. </p> </description> <category>Ticket</category> </item> <item> <dc:creator>anonymous</dc:creator> <pubDate>Tue, 22 Mar 2011 17:15:09 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/4864#comment:28 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/4864#comment:28</guid> <description> <p> Well OK, pretty much all the properties may have an impact - certainly include, search, cxxflags, linkflags, also release and debug (on windows because both ICU lib variants may not be built, and only release mode versions are in the binary ICU distro), probably also define on MSVC (because some defines change the std lib ABI), and I'm sure others I haven't thought of yet... And that's really the problem, on some given platform, I really don't know the complete list of - possibly-compiler-specific - options that will have an effect. </p> <p> For that matter, how on earth do I force a check-target-builds rule to use the same properties as the target that's using it anyway? Remember also that the target may be built more than once with different property sets - and therefore need different configurations. </p> <p> Cheers, John. </p> </description> <category>Ticket</category> </item> <item> <author>dtrebbien@…</author> <pubDate>Mon, 11 Apr 2011 18:16:42 GMT</pubDate> <title>cc changed https://svn.boost.org/trac10/ticket/4864#comment:29 https://svn.boost.org/trac10/ticket/4864#comment:29 <ul> <li><strong>cc</strong> <span class="trac-author">dtrebbien@…</span> added </li> </ul> <p> I just discovered this ticket. Using Microsoft Visual C++ 10.0, I was able to build Boost.Regex (Boost 1.46.1) with ICU 4.6.1 support by modifying the <code>has_icu.exe.rsp</code> file and re-running the <code>link</code> command. </p> <p> The contents of the <code>has_icu.exe.rsp</code> file were originally: </p> <pre class="wiki"> "bin.v2\libs\regex\build\msvc-10.0\debug\address-model-64\architecture-x86\threading-multi\has_icu_test.obj" "icudt.lib" "icuind.lib" "icuucd.lib" </pre><p> Notice the trailing "d" on the last two library names. By removing those two "d"s and re-running the <code>link</code> command, I was able to build <code>has_icu.exe</code>. </p> Ticket anonymous Tue, 12 Apr 2011 08:38:27 GMT <link>https://svn.boost.org/trac10/ticket/4864#comment:30 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/4864#comment:30</guid> <description> <blockquote class="citation"> <p> Notice the trailing "d" on the last two library names. By removing those two "d"s and &gt;re-running the link command, I was able to build has_icu.exe. </p> </blockquote> <p> This isn't really a 64-bit issue - it's a debug build vs release build issue. </p> <p> The ICU dll's built against the release MSVC runtime, don't have the "d" suffix, the debug ones do (but you have to build them yourself from the project files). Note that while you can link the release ICU versions to a debug build, doing so will cause two different runtime libraries to be in use, and that almost always results in a crash or heap curruption at some point :( </p> <p> To put it another way - the build script is correct - when building debug regex libraries it looks for the debug ICU dll's because those are the only ones that are guaranteed to work correctly. It's just that ICU doesn't supply those in it's binary release .zips, so you have to build them yourself. </p> <p> HTH, John. </p> </description> <category>Ticket</category> </item> <item> <author>dtrebbien@…</author> <pubDate>Tue, 12 Apr 2011 22:22:40 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/4864#comment:31 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/4864#comment:31</guid> <description> <blockquote class="citation"> <p> This isn't really a 64-bit issue - it's a debug build vs release build issue. </p> <p> The ICU dll's built against the release MSVC runtime, don't have the "d" suffix, the debug ones do (but you have to build them yourself from the project files). Note that while you can link the release ICU versions to a debug build, doing so will cause two different runtime libraries to be in use, and that almost always results in a crash or heap curruption at some point :( </p> <p> To put it another way - the build script is correct - when building debug regex libraries it looks for the debug ICU dll's because those are the only ones that are guaranteed to work correctly. It's just that ICU doesn't supply those in it's binary release .zips, so you have to build them yourself. </p> </blockquote> <p> Oh, I know that the "d" means "debug". The problem is that I am not building debug Boost.Regex; I am only building the release variant (in the <code>bjam</code> line I included <code>variant=release</code>). </p> </description> <category>Ticket</category> </item> <item> <dc:creator>anonymous</dc:creator> <pubDate>Wed, 13 Apr 2011 07:40:54 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/4864#comment:32 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/4864#comment:32</guid> <description> <p> Ah yes, this is the Boost.Build bug I outlined above, Vladimir? </p> </description> <category>Ticket</category> </item> <item> <author>DevSolar <solar@…></author> <pubDate>Fri, 15 Apr 2011 12:23:16 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/4864#comment:33 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/4864#comment:33</guid> <description> <p> Unfortunately I have a complication to add to the subject. </p> <p> I compiled ICU 4.6.1 on AIX 6.1 using the following line: </p> <pre class="wiki">./configure --prefix=/some/icupath --enable-rpath --disable-debug --disable-tracing --with-library-bits=64 </pre><p> The latter was necessary because the default behaviour of ICU's configure on AIX is to build 32bit binaries even while the OS is 64bit. </p> <p> The resulting libraries and binaries reside in the subdirectories /some/icupath/bin and /some/icupath/lib (no "64" in the paths). </p> <p> When I try to compile Boost 1.46.1, like so: </p> <pre class="wiki">./bootstrap.sh --prefix=/some/path --with-toolset=vacpp --with-icu=/some/icupath --with-libraries=regex ./bjam address-model=64 </pre><p> Boost concludes that: </p> <pre class="wiki">vacpp.compile.c++ bin.v2/libs/regex/build/vacpp/debug/address-model-64/has_icu_test.o vacpp.link bin.v2/libs/regex/build/vacpp/debug/address-model-64/has_icu ld: 0711-317 ERROR: Undefined symbol: .u_charFromName_46 ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information. xlC -brtl -bnoipath -q64 -g -qfullpath -o "bin.v2/libs/regex/build/vacpp/debug/address-model-64/has_icu" -L/PAZ/contrib_test/icu-4.6.1/bin64 -L/PAZ/contrib_test/icu-4.6.1/lib64 "bin.v2/libs/regex/build/vacpp/debug/address-model-64/has_icu_test.o" -licuuc -licui18n -licudata </pre><p> Long story short, ICU uses lib and bin, while Boost's ICU tests looks into lib64 and bin64... </p> </description> <category>Ticket</category> </item> <item> <dc:creator>Dave Abrahams</dc:creator> <pubDate>Wed, 29 Aug 2012 19:51:15 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/4864#comment:34 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/4864#comment:34</guid> <description> <p> John, </p> <p> Do you need access to a Win64 system where you can test this? </p> <p> P.S. If you don't want to sign in, just enter your username (johnmaddock) in the Author ticket at the bottom when you comment </p> </description> <category>Ticket</category> </item> <item> <dc:creator>John Maddock</dc:creator> <pubDate>Thu, 30 Aug 2012 08:25:32 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/4864#comment:35 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/4864#comment:35</guid> <description> <blockquote class="citation"> <p> Do you need access to a Win64 system where you can test this? </p> </blockquote> <p> I think it's moved far beyond Win64 now - actually I think those issues are mostly solved? But I assume we still have problems with Boost.Build not passing all the build variants on to the config check. </p> <blockquote class="citation"> <p> The resulting libraries and binaries reside in the subdirectories /some/icupath/bin and /some/icupath/lib (no "64" in the paths) </p> </blockquote> <p> I think we may have reached the point at which we can't please everybody all of the time :-( </p> <p> For a specific setup like that, I'd suggest building with: </p> <p> export LD_LIBRARY_PATH=some-path/bin bjam include=/some-path/include linkflags=-Lsome-path/lib </p> <p> So everything is "just there" in the compilers paths. </p> </description> <category>Ticket</category> </item> <item> <dc:creator>Dave Abrahams</dc:creator> <pubDate>Mon, 10 Sep 2012 13:54:33 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/4864#comment:36 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/4864#comment:36</guid> <description> <p> Replying to <a class="ticket" href="https://svn.boost.org/trac10/ticket/4864#comment:35" title="Comment 35">johnmaddock</a>: </p> <blockquote class="citation"> <blockquote class="citation"> <p> Do you need access to a Win64 system where you can test this? </p> </blockquote> <p> I think it's moved far beyond Win64 now - actually I think those issues are mostly solved? </p> </blockquote> <p> I don't know how to tell whether those issues are solved or not. </p> <blockquote class="citation"> <p> But I assume we still have problems with Boost.Build not passing all the build variants on to the config check. </p> </blockquote> <p> I don't know how to tell that either. </p> <blockquote class="citation"> <blockquote class="citation"> <p> The resulting libraries and binaries reside in the subdirectories /some/icupath/bin and /some/icupath/lib (no "64" in the paths) </p> </blockquote> <p> I think we may have reached the point at which we can't please everybody all of the time :-( </p> </blockquote> <p> Personally I don't care about the path to the resulting libraries. I'm looking to create a 64-bit build with ICU on Windows. </p> </description> <category>Ticket</category> </item> <item> <dc:creator>John Maddock</dc:creator> <pubDate>Mon, 17 Sep 2012 11:24:18 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/4864#comment:37 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/4864#comment:37</guid> <description> <blockquote class="citation"> <p> Personally I don't care about the path to the resulting libraries. I'm looking to create a 64-bit build with ICU on Windows. </p> </blockquote> <p> I believe that part should have been fixed - do you still see issues? </p> <p> John. </p> </description> <category>Ticket</category> </item> <item> <dc:creator>Dave Abrahams</dc:creator> <pubDate>Tue, 18 Sep 2012 12:37:25 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/4864#comment:38 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/4864#comment:38</guid> <description> <p> Yes, I still see issues. I don't remember the exact issues but there were problems when I tried to do this recently or I wouldn't have bumped this ticket. I'll try to find some time to repeat the experiment and write down the specifics. </p> </description> <category>Ticket</category> </item> </channel> </rss>