Introduction for Boost contact for IBM XL C++ compiler - Michael Wong

Hi, my name is Michael Wong. Some of you already know me from the C++ standard committee. I am designated by IBM as the representative for submitting Boost changes that affect our XL C++ compiler (previously called VisualAge C++) back to the CVS line. My backup is my colleague Christopher Cambly. Over the last 2 releases of the XL ++ compiler (v7 and 8) we have been striving for as much compatibility as possible. The V7 compiler supports Boost-1.30.2 and the V8 compiler supports 1.32.0. We maintain the latest XLC++ V8 results testing with 1.32.0 on AIX/RHEL4/SLES9 here: http://www-1.ibm.com/support/docview.wss?rs=2239&context=SSJT9L&dc=DA420&dc=DA410&dc=DA440&dc=DA430&uid=swg27006911&loc=en_US&cs=utf-8&lang=en I know you are planning the 1.34 release. I would like to submit changes that we have verified back to the CVS line before you cut the release. Here are the two most urgent changes which are to the jam tools based on the CVS code base in unified diffs for tools/build/v1/vacpp-tools/jam and tools/build/v1/allyourbase.jam: --- ../boost-CVS.orig/tools/build/v1/allyourbase.jam 2005-11-01 09:05:46.000000000 -0500 +++ allyourbase.jam 2006-02-13 02:40:03.000000000 -0500 @@ -2195,7 +2195,7 @@ $(RANLIB) "$(<)" } -actions quietly updated piecemeal together RmTemps +actions quietly ignore updated piecemeal together RmTemps { $(RM) "$(>)" }--- ../boost-CVS.orig/tools/build/v1/vacpp-tools.jam 2006-02-13 09:28:53.000000000 -0500 +++ vacpp-tools.jam 2006-02-13 02:39:34.000000000 -0500 @@ -10,10 +10,15 @@ # IBM VisualAge C++ compiler # version 5.0 # version 6.0 +# version 7.0 +# IBM XL C++ compiler +# version 8.0 # # These settings are created and tested with VisualAge running on # IBM/Aix 4.3.3.0. They should also work for VisualAge on Windows NT, # OS/2 and AS/400. +# These settings are created and tested with IBM XL C++ running on +# IBM/Aix 5.2.0.0. # The following #// line will be used by the regression test table generation # program as the column heading for HTML tables. Must not include version number. @@ -34,6 +39,10 @@ # This disables the automatic generation of separate include files for # template functions and class declarations. flags vacpp C++FLAGS : -qnotempinc ; +flags vacpp C++FLAGS : -qnotemplateregistry ; + +# Allow C++ style comments in C files +flags vacpp CFLAGS : -qcpluscmt ; # The following is needed to get rid of most of the annoying linker warnings # about duplicated symbols when you use templates. @@ -44,37 +53,72 @@ # contained in such an object file won't be invoked. flags vacpp LINKFLAGS : -qtwolink ; +# Optimization levels flags vacpp CFLAGS <optimization>off : -qNOOPTimize ; flags vacpp CFLAGS <optimization>default : -O ; -flags vacpp CFLAGS <optimization>speed : -O3 -qstrict ; +flags vacpp CFLAGS <optimization>two : -O2 ; +flags vacpp CFLAGS <optimization>three : -O3 ; +flags vacpp CFLAGS <optimization>four : -O4 ; flags vacpp CFLAGS <optimization>space : -O2 -qcompact ; +# Automatic inlining flags vacpp CFLAGS <inlining>off : -qnoinline ; flags vacpp CFLAGS <inlining>on : -qinline ; flags vacpp CFLAGS <inlining>full : -qinline ; +# Exception handling flags vacpp C++FLAGS <exception-handling>off : -qnoeh ; flags vacpp C++FLAGS <exception-handling>on : -qeh ; +# Runtime Type Identification flags vacpp C++FLAGS <rtti>off : -qnortti ; flags vacpp C++FLAGS <rtti>on : -qrtti ; -flags vacpp LINKFLAGS <runtime-link>static : -bstatic ; +# Enable 64bit memory addressing model +flags vacpp CFLAGS <address-model>64 : -q64 ; +flags vacpp LINKFLAGS <address-model>64 : -q64 ; +flags vacpp ARFLAGS <address-model>64 : -X 64 ; + +# Disable weaksymbol support to help with debugging using xldb on AIX +flags vacpp C++FLAGS <weaksymbols>off : -qnoweaksymbol ; + +# Dynamic Link options +flags vacpp LINKFLAGS <target-type>$(SHARED_TYPES) : -G ; + +#Platform Specific options +switch $(JAMUNAME) + { + case Linux : + { + # Add -qpic for IBM XL C++ on Linux + flags vacpp CFLAGS <shared-linkable>true : -qpic ; + } + case AIX* : + { + # Runtime linking options + flags vacpp LINKFLAGS <runtime-link>dynamic : -brtl -bdynamic ; + } + } + # We want the full path to the sources in the debug symbols because otherwise # the debugger won't find the sources when we use boost.build. -flags vacpp CFLAGS <debug-symbols>on : -g -qfullpath ; +flags vacpp CFLAGS <debug-symbols>on : -qfullpath ; +flags vacpp CFLAGS <debug-symbols>on : -g ; flags vacpp LINKFLAGS <debug-symbols>on : -g ; +#strips the symbol table, line number info, and relocation info from output flags vacpp LINKFLAGS <debug-symbols>off : -s ; +# Enable profiling flags vacpp CFLAGS <profiling>on : -pg ; flags vacpp LINKFLAGS <profiling>on : -pg ; + flags vacpp CFLAGS <cflags> ; flags vacpp C++FLAGS <cxxflags> ; flags vacpp DEFINES <define> ; flags vacpp UNDEFS <undef> ; flags vacpp HDRS <include> ; -flags vacpp SYSHDRS <sysinclude> ; +flags vacpp STDHDRS <sysinclude> ; flags vacpp LINKFLAGS <linkflags> ; flags vacpp ARFLAGS <arflags> ; @@ -84,26 +128,12 @@ if ! $(ARFLAGS) { - flags xlc ARFLAGS : "" ; + flags vacpp ARFLAGS : "" ; } -# Clear the STDHDRS variable which contains /usr/include. Vacpp does not like -# that this sys directory is included (vacpp related headers are in -# /usr/vacpp/include) -STDHDRS = ; - #### Link #### - rule Link-action { - if $(gTARGET_TYPE($(<))) = EXE - { - LINKFLAGS on $(<) += -brtl ; - } - if $(gTARGET_TYPE($(<))) in $(SHARED_TYPES) - { - LINKFLAGS on $(<) += -G ; - } xlc-Link-action $(<) : $(>) ; } @@ -112,7 +142,7 @@ { $(SHELL_SET)$(gSHELL_LIBPATH)=$(LINK_LIBPATH)$(gAPPEND_LD_LIBRARY_PATH) $(SHELL_EXPORT)$(gSHELL_LIBPATH) - $(VA_CXX_COMPILER:R=$(VA_TOOL_PATH)) $(LINKFLAGS) -o "$(<[1])" -L$(LIBPATH) -L$(STDLIBPATH) "$(>)" "$(NEEDLIBS)" "$(NEEDLIBS)" -bdynamic -l$(FINDLIBS) + $(VA_CXX_COMPILER:R=$(VA_TOOL_PATH)) $(LINKFLAGS) -o "$(<[1])" -L$(LIBPATH) -L$(STDLIBPATH) "$(>)" "$(NEEDLIBS)" "$(NEEDLIBS)" -l$(FINDLIBS) } #### Cc ##### @@ -125,7 +155,7 @@ # Always allow C++ comments in C source files! actions xlc-Cc-action { - $(VA_C_COMPILER:R=$(VA_TOOL_PATH)) -qcpluscmt -c -I$(BOOST_ROOT) -U$(UNDEFS) -D$(DEFINES) $(CFLAGS) -I"$(HDRS)" -I"$(STDHDRS)" -I"$(SYSHDRS)" -o "$(<)" "$(>)" + $(VA_C_COMPILER:R=$(VA_TOOL_PATH)) -c -I$(BOOST_ROOT) -U$(UNDEFS) -D$(DEFINES) $(CFLAGS) -I"$(HDRS)" -I"$(STDHDRS)" -o "$(<)" "$(>)" } #### C++ #### @@ -136,7 +166,7 @@ actions xlc-C++-action { - $(VA_CXX_COMPILER:R=$(VA_TOOL_PATH)) -c -I$(BOOST_ROOT) -U$(UNDEFS) -D$(DEFINES) $(CFLAGS) $(C++FLAGS) -I"$(HDRS)" -I"$(STDHDRS)" -I"$(SYSHDRS)" -o "$(<)" "$(>)" + $(VA_CXX_COMPILER:R=$(VA_TOOL_PATH)) -c -I$(BOOST_ROOT) -U$(UNDEFS) -D$(DEFINES) $(CFLAGS) $(C++FLAGS) -I"$(HDRS)" -I"$(STDHDRS)" -o "$(<)" "$(>)" } #### Archive #### @@ -148,5 +178,5 @@ actions updated together piecemeal xlc-Archive-action { - ar ru$(ARFLAGS) "$(<)" "$(>)" + ar $(ARFLAGS) ru "$(<)" "$(>)" } I know about the tracker, but I am uncertain how to use it correctly especially since I am posting changes for V1 build and that seems to be used for the V1 build. Or may be I am mistaken. So I am posting here. https://zigzag.cs.msu.su:7813/boost.build/ Michael Wong XL C++ Compiler kernel Development IBM Canada Ltd., C2/KD2/8200/MKM 8200 Warden Avenue Markham, Ontario L6G 1C7 W:905-413-3283 F:905-413-4839 http://www.ibm.com/software/awdtools/ccompilers/ http://www.ibm.com/software/awdtools/fortran/ XL Overview http://www-1.ibm.com/support/docview.wss?uid=swg27005175&aid=1 Optimization http://www-1.ibm.com/support/docview.wss?uid=swg27005174&aid=1 XL C/C++ for Mac OS X http://www-1.ibm.com/support/docview.wss?uid=swg27005176&aid=1 XL Fortran for Mac OS X http://www-1.ibm.com/support/docview.wss?uid=swg27005173&aid=1

Michael Wong <michaelw@ca.ibm.com> writes:
Here are the two most urgent changes which are to the jam tools based on the CVS code base in unified diffs for tools/build/v1/vacpp-tools/jam and tools/build/v1/allyourbase.jam:
Michael, Please post your patch as an attachment rather than pasting it directly into your email, so that the line breaks aren't destroyed by your mailer. Thanks, -- Dave Abrahams Boost Consulting www.boost-consulting.com

Michael Wong <michaelw@ca.ibm.com> writes:
Here are the two most urgent changes which are to the jam tools based
on
the CVS code base in unified diffs for tools/build/v1/vacpp-tools/jam and tools/build/v1/allyourbase.jam:
Michael,
Please post your patch as an attachment rather than pasting it directly into your email, so that the line breaks aren't destroyed by your mailer.
Thanks,
-- Dave Abrahams Boost Consulting www.boost-consulting.com
I'm posting the patches for Michael since he currently receives the boost list in digest and cannot respond directly. (See attached file: allyourbase.jam.patch)(See attached file: vacpp-tools.jam.patch) Chris Cambly XL C++ Compiler Development

Christopher Cambly <ccambly@ca.ibm.com> writes:
Michael Wong <michaelw@ca.ibm.com> writes:
Here are the two most urgent changes which are to the jam tools based
on
the CVS code base in unified diffs for tools/build/v1/vacpp-tools/jam and tools/build/v1/allyourbase.jam:
Michael,
Please post your patch as an attachment rather than pasting it directly into your email, so that the line breaks aren't destroyed by your mailer.
Thanks,
-- Dave Abrahams Boost Consulting www.boost-consulting.com
I'm posting the patches for Michael since he currently receives the boost list in digest and cannot respond directly.
(See attached file: allyourbase.jam.patch)(See attached file: vacpp-tools.jam.patch)
Chris Cambly XL C++ Compiler Development
Hi Chris and Michael I note at http://engineering.meta-comm.com/boost-regression/CVS-HEAD/developer/summary... there are no results for VisualAge C++. We're generally reluctant to apply patches to support any given compiler if there isn't someone running tests, so we can verify that it makes things better and that we haven't introduced regressions. Michael told me in Lillehammer that y'all were running the tests with the results upload step disabled. If that's the case, you could just start uploading the results to us on a regular basis and it would be much easier to support your compiler. Thanks, -- Dave Abrahams Boost Consulting www.boost-consulting.com

David Abrahams wrote:
I note at http://engineering.meta-comm.com/boost-regression/CVS-HEAD/developer/summary... there are no results for VisualAge C++. We're generally reluctant to apply patches to support any given compiler if there isn't someone running tests, so we can verify that it makes things better and that we haven't introduced regressions. Michael told me in Lillehammer that y'all were running the tests with the results upload step disabled. If that's the case, you could just start uploading the results to us on a regular basis and it would be much easier to support your compiler.
and how about IBM C++ Compiler? AFAIK this is a completely different product, no? z/OS V1R6 C/C++ __COMPILER_VER__=0x41060000 __LIBREL__=0x41060000 __TARGET_LIB__=0x41060000 We planning to use this one on our zOS mainframe and I would also like to run the regression tests. Stefan
participants (4)
-
Christopher Cambly
-
David Abrahams
-
Michael Wong
-
Stefan Slapeta