blob: 1aaf9af51963d68940cceead21465a35d566efb6 [file] [log] [blame]
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 controlled 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()
-