cpack.cxx
   
cmCPackGenerators  -- creates cmCPackGenericGenerator's via NewGenerator 
  - a cmCPackGenericGenerator factory


cmCPackGenericGenerator::Initialize
   this->InitializeInternal
     CPACK_INCLUDE_TOPLEVEL_DIRECTORY = 0 turns off 


// binary package run
cmCPackGenericGenerator::ProcessGenerator   // DoPackage
  cmCPackGenericGenerator::PrepareNames  -- sets a bunch of CPACK_vars
  cmCPackGenericGenerator::InstallProject  
     run preinstall  (make preinstall/fast)
     call ReadListFile(cmake_install.cmake)
  glob recurse in install directory to get list of files
     this->CompressFiles with the list of files


// source package run
cmCPackGenericGenerator::ProcessGenerator   // DoPackage
  cmCPackGenericGenerator::PrepareNames  -- sets a bunch of CPACK_vars
  cmCPackGenericGenerator::InstallProject  --> 
     if set CPACK_INSTALLED_DIRECTORIES
        glob the files in that directory 
        copy those files to the tmp install directory _CPack something
  glob recurse in install directory to get list of files
     this->CompressFiles with the list of files


cmCPackGenericGenerator::InstallProject is used for both source and binary
packages.  It is controled based on values set in CPACK_ variables.


InstallProject
   1. CPACK_INSTALL_COMMANDS       - a list of commands used to install the package 

   2. CPACK_INSTALLED_DIRECTORIES  - copy this directory to CPACK_TEMPORARY_DIRECTORY

   3. CPACK_INSTALL_CMAKE_PROJECTS - a cmake install script
         - run make preinstall 
         - run cmake_install.cmake
             - set CMAKE_INSTALL_PREFIX to the temp directory
             - CPACK_BUILD_CONFIG check this and set the BUILD_TYPE to it
              - ReadListFile on the install script  cmake_install.cmake
         - run strip on the executables and libraries if CPACK_STRIP_FILES is TRUE

Recommendations:

rename cmCPackGenerators  to cmCPackGeneratorFactory

rename cmCPackGenericGenerator  -->  cmCPackGenerator

rename cmCPackGenericGenerator::ProcessGenerator  -> cmCPackGenerator::DoPackage


break up cmCPackGenerator::InstallProject so it calls the following:

// run user provided install commands
  cmCPackGenerator::RunInstallCommands(); 
// copy entire directories that need no processing like source trees
  cmCPackGenerator::CopyPreInstalledDirectories();  
// run the cmake install scripts if provided
  cmCPackGenerator::RunCMakeInstallScripts()  

-
