$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
From: dgregor_at_[hidden]
Date: 2008-07-18 17:15:38
Author: dgregor
Date: 2008-07-18 17:15:38 EDT (Fri, 18 Jul 2008)
New Revision: 47579
URL: http://svn.boost.org/trac/boost/changeset/47579
Log:
Update to the latest CPack-components commands, and fix a few little dependency issues.
Text files modified: 
   branches/CMake/release/CMakeLists.txt                    |    92 +++++------                             
   branches/CMake/release/libs/wave/module.cmake            |     2                                         
   branches/CMake/release/tools/build/CMake/BoostCore.cmake |   319 +++++++++++---------------------------- 
   3 files changed, 138 insertions(+), 275 deletions(-)
Modified: branches/CMake/release/CMakeLists.txt
==============================================================================
--- branches/CMake/release/CMakeLists.txt	(original)
+++ branches/CMake/release/CMakeLists.txt	2008-07-18 17:15:38 EDT (Fri, 18 Jul 2008)
@@ -109,7 +109,6 @@
 endif(BOOST_VERSION_SUBMINOR GREATER 0)
 install(DIRECTORY boost 
         DESTINATION ${BOOST_HEADER_DIR}
-        COMPONENT Core
         PATTERN "CVS" EXCLUDE
         PATTERN ".svn" EXCLUDE)
 #
@@ -129,35 +128,6 @@
 #endif (NOT TEST_INSTALLED_TREE)
 ##########################################################################
 
-
-##########################################################################
-# Building Boost libraries                                               #
-##########################################################################
-# Always include the directory where Boost's include files will be.
-if (TEST_INSTALLED_TREE)
-  # Use the headers from the installation directory
-  include_directories("${CMAKE_INSTALL_PREFIX}/${BOOST_HEADER_DIR}")
-else (TEST_INSTALLED_TREE)
-  # Use the headers directly from the Boost source tree (in boost/)
-  include_directories(${Boost_SOURCE_DIR})
-endif (TEST_INSTALLED_TREE)
-
-# Boost.Build version 2 does this due to trouble with autolinking
-# during building and testing.  
-# TODO: See if we can actually use auto-linking in our regression tests.
-add_definitions(-DBOOST_ALL_NO_LIB=1)
-
-# Add build rules for documentation
-add_subdirectory(doc)
-
-# Add build rules for all of the Boost libraries
-add_subdirectory(${BOOST_LIBS_DIR})
-
-# Add build rules for all of the Boost tools
-# TODO: On hold while I work on the modularity code
-# add_subdirectory(tools)
-##########################################################################
-
 ##########################################################################
 # Binary packages                                                        #
 ##########################################################################
@@ -172,25 +142,7 @@
 set(CPACK_PACKAGE_VERSION_MAJOR "${BOOST_VERSION_MAJOR}")
 set(CPACK_PACKAGE_VERSION_MINOR "${BOOST_VERSION_MINOR}")
 set(CPACK_PACKAGE_VERSION_PATCH "${BOOST_VERSION_SUBMINOR}")
-set(CPACK_PACKAGE_INSTALL_DIRECTORY "Boost-${BOOST_VERSION}")
-
-# Setup "core" component
-set(CPACK_COMPONENT_CORE_REQUIRED ON)
-set(CPACK_COMPONENT_CORE_DISPLAY_NAME "Core library headers")
-
-# Set the variable containing the list of all components.
-get_property(CPACK_COMPONENTS_ALL 
-  GLOBAL PROPERTY CPACK_COMPONENTS_ALL)
-set(CPACK_COMPONENTS_ALL "Core" ${CPACK_COMPONENTS_ALL})
-
-# Set the variable containing the list of all components.
-get_property(CPACK_COMPONENT_GROUPS_ALL 
-  GLOBAL PROPERTY CPACK_COMPONENT_GROUPS_ALL)
-
-get_property(BOOST_CPACK_EXPORTS GLOBAL PROPERTY BOOST_CPACK_EXPORTS)
-foreach(MACRO ${BOOST_CPACK_EXPORTS})
-  get_property(${MACRO} GLOBAL PROPERTY ${MACRO})
-endforeach()
+set(CPACK_PACKAGE_INSTALL_DIRECTORY "Boost")
 
 if(WIN32 AND NOT UNIX)
   # There is a bug in NSI that does not handle full unix paths properly. Make
@@ -207,17 +159,59 @@
   # Encode the compiler name in the package 
   if (MSVC60)
     set(CPACK_PACKAGE_FILE_NAME "Boost-${BOOST_VERSION}-vc6")
+    set(CPACK_NSIS_DISPLAY_NAME "${CPACK_NSIS_DISPLAY_NAME} for Microsoft Visual C++ 6")
   elseif (MSVC70)
     set(CPACK_PACKAGE_FILE_NAME "Boost-${BOOST_VERSION}-vc7")
+    set(CPACK_NSIS_DISPLAY_NAME "${CPACK_NSIS_DISPLAY_NAME} for Microsoft Visual Studio 2002")
   elseif (MSVC71)
     set(CPACK_PACKAGE_FILE_NAME "Boost-${BOOST_VERSION}-vc71")
+    set(CPACK_NSIS_DISPLAY_NAME "${CPACK_NSIS_DISPLAY_NAME} for Microsoft Visual Studio 2003")
   elseif (MSVC80)
     set(CPACK_PACKAGE_FILE_NAME "Boost-${BOOST_VERSION}-vc8")
+    set(CPACK_NSIS_DISPLAY_NAME "${CPACK_NSIS_DISPLAY_NAME} for Microsoft Visual Studio 2005")    
   elseif (MSVC90)
     set(CPACK_PACKAGE_FILE_NAME "Boost-${BOOST_VERSION}-vc9")
+    set(CPACK_NSIS_DISPLAY_NAME "${CPACK_NSIS_DISPLAY_NAME} for Microsoft Visual Studio 2008")
   elseif (BORLAND)
     set(CPACK_PACKAGE_FILE_NAME "Boost-${BOOST_VERSION}-borland")  
+    set(CPACK_NSIS_DISPLAY_NAME "${CPACK_NSIS_DISPLAY_NAME} for Borland C++ Builder")    
   endif (MSVC60)
+  set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "${CPACK_NSIS_DISPLAY_NAME}")
 endif(WIN32 AND NOT UNIX)
 include(CPack)
+
+if(COMMAND cpack_configure_downloads)
+  cpack_configure_downloads(
+  "http://www.osl.iu.edu/~dgregor/Boost-CMake/1.36.0/"
+    ALL ADD_REMOVE)
+endif()
+##########################################################################
+
+##########################################################################
+# Building Boost libraries                                               #
+##########################################################################
+# Always include the directory where Boost's include files will be.
+if (TEST_INSTALLED_TREE)
+  # Use the headers from the installation directory
+  include_directories("${CMAKE_INSTALL_PREFIX}/${BOOST_HEADER_DIR}")
+else (TEST_INSTALLED_TREE)
+  # Use the headers directly from the Boost source tree (in boost/)
+  include_directories(${Boost_SOURCE_DIR})
+endif (TEST_INSTALLED_TREE)
+
+# Boost.Build version 2 does this due to trouble with autolinking
+# during building and testing.  
+# TODO: See if we can actually use auto-linking in our regression tests.
+add_definitions(-DBOOST_ALL_NO_LIB=1)
+
+# Add build rules for documentation
+add_subdirectory(doc)
+
+# Add build rules for all of the Boost libraries
+add_subdirectory(${BOOST_LIBS_DIR})
+
+# Add build rules for all of the Boost tools
+# TODO: On hold while I work on the modularity code
+# add_subdirectory(tools)
 ##########################################################################
+
Modified: branches/CMake/release/libs/wave/module.cmake
==============================================================================
--- branches/CMake/release/libs/wave/module.cmake	(original)
+++ branches/CMake/release/libs/wave/module.cmake	2008-07-18 17:15:38 EDT (Fri, 18 Jul 2008)
@@ -1 +1 @@
-boost_module(wave DEPENDS filesystem program_options spirit)
\ No newline at end of file
+boost_module(wave DEPENDS filesystem program_options spirit thread)
\ No newline at end of file
Modified: branches/CMake/release/tools/build/CMake/BoostCore.cmake
==============================================================================
--- branches/CMake/release/tools/build/CMake/BoostCore.cmake	(original)
+++ branches/CMake/release/tools/build/CMake/BoostCore.cmake	2008-07-18 17:15:38 EDT (Fri, 18 Jul 2008)
@@ -132,83 +132,94 @@
     string(TOLOWER "${LIBNAME}" libname)
     string(TOUPPER "${LIBNAME}" ULIBNAME)
     project(${LIBNAME})
-
-    # Add this library to the list of library components to install
-    set_property(GLOBAL APPEND 
-      PROPERTY CPACK_COMPONENT_GROUPS_ALL 
-      ${ULIBNAME})
-    boost_set_cpack_variable(
-      CPACK_COMPONENT_GROUP_${ULIBNAME}_DISPLAY_NAME 
-      ${LIBNAME})
     
-    if (THIS_PROJECT_DESCRIPTION)
-      set(THIS_PROJECT_DESCRIPTION "Boost.${LIBNAME}\n\n${THIS_PROJECT_DESCRIPTION}")
+    if (THIS_PROJECT_MODULARIZED OR THIS_PROJECT_SRCDIRS)
+      # We only build a component group for modularized libraries or libraries
+      # that have compiled parts.
+      if (COMMAND cpack_add_component_group)
+        # Compute a reasonable description for this library.
+        if (THIS_PROJECT_DESCRIPTION)
+          set(THIS_PROJECT_DESCRIPTION "Boost.${LIBNAME}\n\n${THIS_PROJECT_DESCRIPTION}")
+         
+          if (THIS_PROJECT_AUTHORS)
+            list(LENGTH THIS_PROJECT_AUTHORS THIS_PROJECT_NUM_AUTHORS)
+            if (THIS_PROJECT_NUM_AUTHORS EQUAL 1)
+              set(THIS_PROJECT_DESCRIPTION "${THIS_PROJECT_DESCRIPTION}\n\nAuthor: ")
+            else()
+              set(THIS_PROJECT_DESCRIPTION "${THIS_PROJECT_DESCRIPTION}\n\nAuthors: ")
+            endif()
+            set(THIS_PROJECT_FIRST_AUTHOR TRUE)
+            foreach(AUTHOR ${THIS_PROJECT_AUTHORS})
+              string(REGEX REPLACE " *-at- *" "@" AUTHOR ${AUTHOR})
+              if (THIS_PROJECT_FIRST_AUTHOR)
+                set(THIS_PROJECT_FIRST_AUTHOR FALSE)
+              else()
+                set(THIS_PROJECT_DESCRIPTION "${THIS_PROJECT_DESCRIPTION}\n         ")
+              endif()
+              set(THIS_PROJECT_DESCRIPTION "${THIS_PROJECT_DESCRIPTION}${AUTHOR}")
+            endforeach(AUTHOR)
+          endif (THIS_PROJECT_AUTHORS)
+
+          if (THIS_PROJECT_MAINTAINERS)
+            list(LENGTH THIS_PROJECT_MAINTAINERS THIS_PROJECT_NUM_MAINTAINERS)
+            if (THIS_PROJECT_NUM_MAINTAINERS EQUAL 1)
+              set(THIS_PROJECT_DESCRIPTION "${THIS_PROJECT_DESCRIPTION}\nMaintainer: ")
+            else()
+              set(THIS_PROJECT_DESCRIPTION "${THIS_PROJECT_DESCRIPTION}\nMaintainers: ")
+            endif()
+            set(THIS_PROJECT_FIRST_MAINTAINER TRUE)
+            foreach(MAINTAINER ${THIS_PROJECT_MAINTAINERS})
+              string(REGEX REPLACE " *-at- *" "@" MAINTAINER ${MAINTAINER})
+              if (THIS_PROJECT_FIRST_MAINTAINER)
+                set(THIS_PROJECT_FIRST_MAINTAINER FALSE)
+              else()
+                set(THIS_PROJECT_DESCRIPTION "${THIS_PROJECT_DESCRIPTION}\n             ")
+              endif()
+              set(THIS_PROJECT_DESCRIPTION "${THIS_PROJECT_DESCRIPTION}${MAINTAINER}")
+            endforeach(MAINTAINER)
+          endif (THIS_PROJECT_MAINTAINERS)
+        endif (THIS_PROJECT_DESCRIPTION)
       
-      if (THIS_PROJECT_AUTHORS)
-        list(LENGTH THIS_PROJECT_AUTHORS THIS_PROJECT_NUM_AUTHORS)
-        if (THIS_PROJECT_NUM_AUTHORS EQUAL 1)
-          set(THIS_PROJECT_DESCRIPTION "${THIS_PROJECT_DESCRIPTION}\n\nAuthor: ")
-        else()
-          set(THIS_PROJECT_DESCRIPTION "${THIS_PROJECT_DESCRIPTION}\n\nAuthors: ")
-        endif()
-        set(THIS_PROJECT_FIRST_AUTHOR TRUE)
-        foreach(AUTHOR ${THIS_PROJECT_AUTHORS})
-          string(REGEX REPLACE " *-at- *" "@" AUTHOR ${AUTHOR})
-          if (THIS_PROJECT_FIRST_AUTHOR)
-            set(THIS_PROJECT_FIRST_AUTHOR FALSE)
-          else()
-            set(THIS_PROJECT_DESCRIPTION "${THIS_PROJECT_DESCRIPTION}\n         ")
-          endif()
-          set(THIS_PROJECT_DESCRIPTION "${THIS_PROJECT_DESCRIPTION}${AUTHOR}")
-        endforeach(AUTHOR)
-      endif (THIS_PROJECT_AUTHORS)
-
-      if (THIS_PROJECT_MAINTAINERS)
-        list(LENGTH THIS_PROJECT_MAINTAINERS THIS_PROJECT_NUM_MAINTAINERS)
-        if (THIS_PROJECT_NUM_MAINTAINERS EQUAL 1)
-          set(THIS_PROJECT_DESCRIPTION "${THIS_PROJECT_DESCRIPTION}\nMaintainer: ")
-        else()
-          set(THIS_PROJECT_DESCRIPTION "${THIS_PROJECT_DESCRIPTION}\nMaintainers: ")
-        endif()
-        set(THIS_PROJECT_FIRST_MAINTAINER TRUE)
-        foreach(MAINTAINER ${THIS_PROJECT_MAINTAINERS})
-          string(REGEX REPLACE " *-at- *" "@" MAINTAINER ${MAINTAINER})
-          if (THIS_PROJECT_FIRST_MAINTAINER)
-            set(THIS_PROJECT_FIRST_MAINTAINER FALSE)
+        # Create a component group for this library
+        cpack_add_component_group(${libname}
+          DISPLAY_NAME "${LIBNAME}"
+          DESCRIPTION ${THIS_PROJECT_DESCRIPTION})
+      endif ()
+    endif ()
+        
+    if (THIS_PROJECT_MODULARIZED)
+      # Add this module's include directory
+      include_directories("${Boost_SOURCE_DIR}/libs/${libname}/include")
+     
+      # Install this module's headers
+      install(DIRECTORY include/boost 
+        DESTINATION ${BOOST_HEADER_DIR}
+        COMPONENT ${libname}_headers
+        PATTERN "CVS" EXCLUDE
+        PATTERN ".svn" EXCLUDE)
+        
+      if (COMMAND cpack_add_component)        
+        # Determine the header dependencies
+        set(THIS_PROJECT_HEADER_DEPENDS)
+        foreach(DEP ${${THIS_PROJECT_DEPENDS}})
+          string(TOLOWER ${DEP} dep)
+          if (${dep} STREQUAL "serialization")
+            # TODO: Ugly, ugly hack until the serialization library is modularized
+          elseif (${dep} STREQUAL "thread")
           else()
-            set(THIS_PROJECT_DESCRIPTION "${THIS_PROJECT_DESCRIPTION}\n             ")
+            list(APPEND THIS_PROJECT_HEADER_DEPENDS ${dep}_headers)
           endif()
-          set(THIS_PROJECT_DESCRIPTION "${THIS_PROJECT_DESCRIPTION}${MAINTAINER}")
-        endforeach(MAINTAINER)
-      endif (THIS_PROJECT_MAINTAINERS)
-      
-      boost_set_cpack_variable(
-        CPACK_COMPONENT_GROUP_${ULIBNAME}_DESCRIPTION
-        "${THIS_PROJECT_DESCRIPTION}")
-    endif (THIS_PROJECT_DESCRIPTION)
-    
-    # Add this module's include directory
-    include_directories("${Boost_SOURCE_DIR}/libs/${libname}/include")
+        endforeach(DEP)
 
-    # Install this module's headers
-    install(DIRECTORY include/boost 
-      DESTINATION ${BOOST_HEADER_DIR}
-      COMPONENT ${ULIBNAME}_HEADERS
-      PATTERN "CVS" EXCLUDE
-      PATTERN ".svn" EXCLUDE)
-
-    # Add the appropriate variables to make this library's headers a
-    # separate component.
-    set_property(GLOBAL APPEND 
-      PROPERTY CPACK_COMPONENTS_ALL 
-      ${ULIBNAME}_HEADERS)
-    boost_set_cpack_variable(
-      CPACK_COMPONENT_${ULIBNAME}_HEADERS_DISPLAY_NAME 
-      "Header files")
-    boost_set_cpack_variable(
-      CPACK_COMPONENT_${ULIBNAME}_HEADERS_GROUP 
-      ${ULIBNAME})
+        # Tell CPack about the headers component
+        cpack_add_component(${libname}_headers
+          DISPLAY_NAME "Header files"
+          GROUP      ${libname}
+          DEPENDS    ${THIS_PROJECT_HEADER_DEPENDS})
+      endif ()
+    endif ()
 
+    # Modularization code
     if(THIS_PROJECT_HEADERS)
       set(${LIBNAME}-modularize-commands)
       foreach(item ${THIS_PROJECT_HEADERS})
@@ -257,52 +268,15 @@
         endif(THIS_PROJECT_MODULARIZED)
       endif()
     endif(THIS_PROJECT_HEADERS)
-
-    if(THIS_PROJECT_SRCDIRS)
-      # Add an installation target for the sources of this library.
-      set_property(GLOBAL APPEND
-	PROPERTY CPACK_COMPONENTS_ALL 
-	${ULIBNAME}_SOURCES)
-      boost_set_cpack_variable(
-	CPACK_COMPONENT_${ULIBNAME}_SOURCES_DISPLAY_NAME
-	"Source files")
-      boost_set_cpack_variable(
-	CPACK_COMPONENT_${ULIBNAME}_SOURCES_GROUP 
-	${ULIBNAME})
-      
-      boost_set_cpack_variable(
-	CPACK_COMPONENT_${ULIBNAME}_SOURCES_DEPENDS 
-	${ULIBNAME}_HEADERS) 
-      
-      # Add all of the source files as an installation target  
-      foreach(SUBDIR ${THIS_PROJECT_SRCDIRS})
-        install(DIRECTORY ${SUBDIR} 
-          DESTINATION src/${LIBNAME}
-          COMPONENT ${ULIBNAME}_SOURCES
-          PATTERN "CVS" EXCLUDE
-          PATTERN ".svn" EXCLUDE)  
-      endforeach()
-    endif()
         
     # For each of the modular libraries on which this project depends,
     # add the include path for that library.
     set(THIS_PROJECT_HAS_HEADER_DEPENDS FALSE)
     foreach(DEP ${THIS_PROJECT_DEPENDS_ALL})
-      string(TOUPPER ${DEP} UDEP)
       include_directories("${Boost_SOURCE_DIR}/libs/${DEP}/include")
-      # Make this project's headers depend on DEP's headers
-      set_property(GLOBAL APPEND
-        PROPERTY CPACK_COMPONENT_${ULIBNAME}_HEADERS_DEPENDS 
-        ${UDEP}_HEADERS)
-      set(THIS_PROJECT_HAS_HEADER_DEPENDS TRUE)
     endforeach(DEP)
 
-    if (THIS_PROJECT_HAS_HEADER_DEPENDS)
-      set_property(GLOBAL APPEND
-        PROPERTY BOOST_CPACK_EXPORTS
-        CPACK_COMPONENT_${ULIBNAME}_HEADERS_DEPENDS)
-    endif ()
-
+    # TODO: is this still necessary?
     if(NOT EXISTS ${CMAKE_BINARY_DIR}/bin/tests)
       file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/bin/tests)
     endif(NOT EXISTS ${CMAKE_BINARY_DIR}/bin/tests)
@@ -380,58 +354,6 @@
   if(BUILD_${UTOOLNAME} AND THIS_PROJECT_OKAY)
     string(TOLOWER "${TOOLNAME}" toolname)
     project(${TOOLNAME})
-
-    # Add this tool to the list of library components to install
-    set_property(GLOBAL APPEND PROPERTY CPACK_COMPONENT_GROUPS_ALL 
-      ${UTOOLNAME})
-    boost_set_cpack_variable(CPACK_COMPONENT_GROUP_${UTOOLNAME}_DISPLAY_NAME 
-      ${TOOLNAME})
-        
-    if (THIS_PROJECT_DESCRIPTION)
-      set(THIS_PROJECT_DESCRIPTION "${TOOLNAME}\n\n${THIS_PROJECT_DESCRIPTION}")
-      
-      if (THIS_PROJECT_AUTHORS)
-        list(LENGTH THIS_PROJECT_AUTHORS THIS_PROJECT_NUM_AUTHORS)
-        if (THIS_PROJECT_NUM_AUTHORS EQUAL 1)
-          set(THIS_PROJECT_DESCRIPTION "${THIS_PROJECT_DESCRIPTION}\n\nAuthor: ")
-        else()
-          set(THIS_PROJECT_DESCRIPTION "${THIS_PROJECT_DESCRIPTION}\n\nAuthors: ")
-        endif()
-        set(THIS_PROJECT_FIRST_AUTHOR TRUE)
-        foreach(AUTHOR ${THIS_PROJECT_AUTHORS})
-          string(REGEX REPLACE " *-at- *" "@" AUTHOR ${AUTHOR})
-          if (THIS_PROJECT_FIRST_AUTHOR)
-            set(THIS_PROJECT_FIRST_AUTHOR FALSE)
-          else()
-            set(THIS_PROJECT_DESCRIPTION "${THIS_PROJECT_DESCRIPTION}\n         ")
-          endif()
-          set(THIS_PROJECT_DESCRIPTION "${THIS_PROJECT_DESCRIPTION}${AUTHOR}")
-        endforeach(AUTHOR)
-      endif (THIS_PROJECT_AUTHORS)
-      
-      if (THIS_PROJECT_MAINTAINERS)
-        list(LENGTH THIS_PROJECT_MAINTAINERS THIS_PROJECT_NUM_MAINTAINERS)
-        if (THIS_PROJECT_NUM_MAINTAINERS EQUAL 1)
-          set(THIS_PROJECT_DESCRIPTION "${THIS_PROJECT_DESCRIPTION}\nMaintainer: ")
-        else()
-          set(THIS_PROJECT_DESCRIPTION "${THIS_PROJECT_DESCRIPTION}\nMaintainers: ")
-        endif()
-        set(THIS_PROJECT_FIRST_MAINTAINER TRUE)
-        foreach(MAINTAINER ${THIS_PROJECT_MAINTAINERS})
-          string(REGEX REPLACE " *-at- *" "@" MAINTAINER ${MAINTAINER})
-          if (THIS_PROJECT_FIRST_MAINTAINER)
-            set(THIS_PROJECT_FIRST_MAINTAINER FALSE)
-          else()
-            set(THIS_PROJECT_DESCRIPTION "${THIS_PROJECT_DESCRIPTION}\n             ")
-          endif()
-          set(THIS_PROJECT_DESCRIPTION "${THIS_PROJECT_DESCRIPTION}${MAINTAINER}")
-        endforeach(MAINTAINER)
-      endif (THIS_PROJECT_MAINTAINERS)
-      
-      boost_set_cpack_variable(
-        CPACK_COMPONENT_GROUP_${UTOOLNAME}_DESCRIPTION
-        "${THIS_PROJECT_DESCRIPTION}")
-    endif (THIS_PROJECT_DESCRIPTION)
     
     # Add this module's include directory
     include_directories("${Boost_SOURCE_DIR}/libs/${toolname}/include")
@@ -762,36 +684,12 @@
 
     if(NOT THIS_LIB_NO_INSTALL)
       # Setup installation properties
-      string(TOUPPER "${PROJECT_NAME}${VARIANT_TARGET_NAME}" LIB_COMPONENT)
+      string(TOLOWER "${PROJECT_NAME}${VARIANT_TARGET_NAME}" LIB_COMPONENT)
       string(REPLACE "-" "_" LIB_COMPONENT ${LIB_COMPONENT})
-      get_property(LIB_COMPONENT_EXISTS
-	GLOBAL PROPERTY CPACK_COMPONENT_${LIB_COMPONENT}_DISPLAY_NAME SET)
-      if (LIB_COMPONENT_EXISTS)
-	# There is more than one library binary associated with this
-	# installation component (e.g., both boost_serialization and 
-	# boost_wserialization library binaries), so update the
-	# display name of the installation component to the plural
-	# "libraries".
-	set_property(GLOBAL
-          PROPERTY CPACK_COMPONENT_${LIB_COMPONENT}_DISPLAY_NAME
-          "${VARIANT_DISPLAY_NAME} libraries")
-      else()
-	set_property(GLOBAL APPEND 
-          PROPERTY CPACK_COMPONENTS_ALL 
-          ${LIB_COMPONENT})
-	boost_set_cpack_variable(
-          CPACK_COMPONENT_${LIB_COMPONENT}_DISPLAY_NAME
-          "${VARIANT_DISPLAY_NAME} library")
-	boost_set_cpack_variable(
-          CPACK_COMPONENT_${LIB_COMPONENT}_GROUP 
-          ${ULIBNAME})
-      endif()
       
       # Installation of this library variant
-      string(TOUPPER ${PROJECT_NAME} ULIBNAME)
-      install(TARGETS ${VARIANT_LIBNAME} DESTINATION lib
-	EXPORT boost-targets
-	COMPONENT ${LIB_COMPONENT})
+      string(TOLOWER ${PROJECT_NAME} libname)
+      install(TARGETS ${VARIANT_LIBNAME} DESTINATION lib COMPONENT ${LIB_COMPONENT})
       set_property( 
         TARGET ${VARIANT_LIBNAME}
         PROPERTY BOOST_CPACK_COMPONENT
@@ -799,6 +697,7 @@
       
       # Make the library installation component dependent on the library
       # installation components of dependent libraries.
+      set(THIS_LIB_COMPONENT_DEPENDS)
       foreach(DEP ${THIS_LIB_DEPENDS})
         # We ask the library variant that this library depends on to tell us
         # what it's associated installation component is. We depend on that 
@@ -812,15 +711,16 @@
             # Do nothing: we have library dependencies within one 
             # Boost library
           else()
-            set_property(GLOBAL APPEND
-              PROPERTY CPACK_COMPONENT_${LIB_COMPONENT}_DEPENDS ${DEP_COMPONENT})
+            list(APPEND THIS_LIB_COMPONENT_DEPENDS ${DEP_COMPONENT})
           endif()
         endif()
       endforeach(DEP)
-      if (THIS_LIB_DEPENDS)
-	set_property(GLOBAL APPEND
-          PROPERTY BOOST_CPACK_EXPORTS
-          CPACK_COMPONENT_${LIB_COMPONENT}_DEPENDS)
+      
+      if (COMMAND cpack_add_component)
+        cpack_add_component(${LIB_COMPONENT}
+          DISPLAY_NAME "${VARIANT_DISPLAY_NAME}"
+          GROUP ${libname}
+          DEPENDS ${THIS_LIB_COMPONENT_DEPENDS})
       endif ()
     endif(NOT THIS_LIB_NO_INSTALL)
   endif (THIS_VARIANT_OKAY)
@@ -1438,34 +1338,3 @@
     endif (NOT THIS_EXE_NO_INSTALL)
   endif (THIS_EXE_OKAY)
 endmacro(boost_add_executable)
-
-# Sets the CPack variable named PROP to the given values, and ensures
-# that CPack will see the variable.
-#
-#   boost_set_cpack_variable(PROP
-#     value1 value2 ...)
-#
-# If no values are provided the variable will not be set.
-#
-# Example: 
-#   boost_set_cpack_variable(CPACK_COMPONENT_GRAPH_HEADERS_DISPLAY_NAME 
-#     "Graph headers")
-macro(boost_set_cpack_variable PROP)
-  get_property(BOOST_CPACK_VAR_HAS_VALUE
-    GLOBAL PROPERTY ${PROP} SET)
-
-  if (NOT BOOST_CPACK_VAR_HAS_VALUE)
-  set(BOOST_CPACK_VAR_HAS_ARGS FALSE)
-    foreach (ARG ${ARGN})
-      set_property(GLOBAL APPEND
-        PROPERTY ${PROP}
-        ${ARG})
-      set(BOOST_CPACK_VAR_HAS_ARGS TRUE)
-    endforeach(ARG)
-    if (BOOST_CPACK_VAR_HAS_ARGS)
-      set_property(GLOBAL APPEND
-        PROPERTY BOOST_CPACK_EXPORTS
-        ${PROP})
-    endif ()
-  endif ()
-endmacro(boost_set_cpack_variable)