Boost logo

Boost :

From: Michael Wong (michaelw_at_[hidden])
Date: 2006-02-13 09:34:32


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


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk