diff --git a/Modules/CMakeDetermineSystem.cmake b/Modules/CMakeDetermineSystem.cmake index 580d83297..09752eea1 100644 --- a/Modules/CMakeDetermineSystem.cmake +++ b/Modules/CMakeDetermineSystem.cmake @@ -124,35 +124,40 @@ ENDMACRO(ADJUST_CMAKE_SYSTEM_VARIABLES _PREFIX) ADJUST_CMAKE_SYSTEM_VARIABLES(CMAKE_SYSTEM) ADJUST_CMAKE_SYSTEM_VARIABLES(CMAKE_HOST_SYSTEM) -# write entry to the log file -IF(PRESET_CMAKE_SYSTEM_NAME) - FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log - "The target system is: ${CMAKE_SYSTEM_NAME} - ${CMAKE_SYSTEM_VERSION} - ${CMAKE_SYSTEM_PROCESSOR}\n") - FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log - "The host system is: ${CMAKE_HOST_SYSTEM_NAME} - ${CMAKE_HOST_SYSTEM_VERSION} - ${CMAKE_HOST_SYSTEM_PROCESSOR}\n") -ELSE(PRESET_CMAKE_SYSTEM_NAME) - FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log - "The system is: ${CMAKE_SYSTEM_NAME} - ${CMAKE_SYSTEM_VERSION} - ${CMAKE_SYSTEM_PROCESSOR}\n") -ENDIF(PRESET_CMAKE_SYSTEM_NAME) +# this file is also executed from cpack, then we don't need to generate these files +# in this case there is no CMAKE_BINARY_DIR +IF(CMAKE_BINARY_DIR) + # write entry to the log file + IF(PRESET_CMAKE_SYSTEM_NAME) + FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log + "The target system is: ${CMAKE_SYSTEM_NAME} - ${CMAKE_SYSTEM_VERSION} - ${CMAKE_SYSTEM_PROCESSOR}\n") + FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log + "The host system is: ${CMAKE_HOST_SYSTEM_NAME} - ${CMAKE_HOST_SYSTEM_VERSION} - ${CMAKE_HOST_SYSTEM_PROCESSOR}\n") + ELSE(PRESET_CMAKE_SYSTEM_NAME) + FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log + "The system is: ${CMAKE_SYSTEM_NAME} - ${CMAKE_SYSTEM_VERSION} - ${CMAKE_SYSTEM_PROCESSOR}\n") + ENDIF(PRESET_CMAKE_SYSTEM_NAME) -# if a toolchain file is used use configure_file() to copy it into the -# build tree, because this way e.g. ${CMAKE_SOURCE_DIR} will be replaced -# with its full path, and so it will also work when used in try_compile() -IF (CMAKE_TOOLCHAIN_FILE) + # if a toolchain file is used use configure_file() to copy it into the + # build tree, because this way e.g. ${CMAKE_SOURCE_DIR} will be replaced + # with its full path, and so it will also work when used in try_compile() + IF (CMAKE_TOOLCHAIN_FILE) - SET(_OWN_DIR ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}) - CONFIGURE_FILE(${CMAKE_TOOLCHAIN_FILE} - ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeToolchainFile.cmake) + SET(_OWN_DIR ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}) + CONFIGURE_FILE(${CMAKE_TOOLCHAIN_FILE} + ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeToolchainFile.cmake) - CONFIGURE_FILE(${CMAKE_ROOT}/Modules/CMakeSystemWithToolchainFile.cmake.in - ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeSystem.cmake - IMMEDIATE @ONLY) -ELSE (CMAKE_TOOLCHAIN_FILE) + CONFIGURE_FILE(${CMAKE_ROOT}/Modules/CMakeSystemWithToolchainFile.cmake.in + ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeSystem.cmake + IMMEDIATE @ONLY) + ELSE (CMAKE_TOOLCHAIN_FILE) - # configure variables set in this file for fast reload, the template file is defined at the top of this file - CONFIGURE_FILE(${CMAKE_ROOT}/Modules/CMakeSystem.cmake.in - ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeSystem.cmake - IMMEDIATE @ONLY) + # configure variables set in this file for fast reload, the template file is defined at the top of this file + CONFIGURE_FILE(${CMAKE_ROOT}/Modules/CMakeSystem.cmake.in + ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeSystem.cmake + IMMEDIATE @ONLY) -ENDIF (CMAKE_TOOLCHAIN_FILE) + ENDIF (CMAKE_TOOLCHAIN_FILE) + +ENDIF(CMAKE_BINARY_DIR) diff --git a/Source/CPack/cmCPackGenericGenerator.cxx b/Source/CPack/cmCPackGenericGenerator.cxx index 0a19921f2..06f2b000a 100644 --- a/Source/CPack/cmCPackGenericGenerator.cxx +++ b/Source/CPack/cmCPackGenericGenerator.cxx @@ -32,14 +32,14 @@ cmCPackGenericGenerator::cmCPackGenericGenerator() { this->GeneratorVerbose = false; - this->MakefileMap = 0; + this->Makefile = 0; this->Logger = 0; } //---------------------------------------------------------------------- cmCPackGenericGenerator::~cmCPackGenericGenerator() { - this->MakefileMap = 0; + this->Makefile = 0; } //---------------------------------------------------------------------- @@ -392,7 +392,7 @@ int cmCPackGenericGenerator::InstallProjectViaInstallScript( tempInstallDirectory); this->SetOptionIfNotSet("CMAKE_CURRENT_SOURCE_DIR", tempInstallDirectory); - int res = this->MakefileMap->ReadListFile(0, installScript.c_str()); + int res = this->Makefile->ReadListFile(0, installScript.c_str()); if ( cmSystemTools::GetErrorOccuredFlag() || !res ) { return 0; @@ -454,7 +454,7 @@ int cmCPackGenericGenerator::InstallProjectViaInstallCMakeProjects( const char* buildConfig = this->GetOption("CPACK_BUILD_CONFIG"); cmGlobalGenerator* globalGenerator - = this->MakefileMap->GetCMakeInstance()->CreateGlobalGenerator( + = this->Makefile->GetCMakeInstance()->CreateGlobalGenerator( cmakeGenerator); // set the global flag for unix style paths on cmSystemTools as // soon as the generator is set. This allows gmake to be used @@ -464,9 +464,9 @@ int cmCPackGenericGenerator::InstallProjectViaInstallCMakeProjects( // Does this generator require pre-install? if ( globalGenerator->GetPreinstallTargetName() ) { - globalGenerator->FindMakeProgram(this->MakefileMap); + globalGenerator->FindMakeProgram(this->Makefile); const char* cmakeMakeProgram - = this->MakefileMap->GetDefinition("CMAKE_MAKE_PROGRAM"); + = this->Makefile->GetDefinition("CMAKE_MAKE_PROGRAM"); std::string buildCommand = globalGenerator->GenerateBuildCommand(cmakeMakeProgram, installProjectName.c_str(), 0, @@ -554,7 +554,7 @@ int cmCPackGenericGenerator::InstallProjectViaInstallCMakeProjects( void cmCPackGenericGenerator::SetOptionIfNotSet(const char* op, const char* value) { - const char* def = this->MakefileMap->GetDefinition(op); + const char* def = this->Makefile->GetDefinition(op); if ( def && *def ) { return; @@ -571,12 +571,12 @@ void cmCPackGenericGenerator::SetOption(const char* op, const char* value) } if ( !value ) { - this->MakefileMap->RemoveDefinition(op); + this->Makefile->RemoveDefinition(op); return; } cmCPackLogger(cmCPackLog::LOG_DEBUG, this->GetNameOfClass() << "::SetOption(" << op << ", " << value << ")" << std::endl); - this->MakefileMap->AddDefinition(op, value); + this->Makefile->AddDefinition(op, value); } //---------------------------------------------------------------------- @@ -680,7 +680,7 @@ int cmCPackGenericGenerator::ProcessGenerator() int cmCPackGenericGenerator::Initialize(const char* name, cmMakefile* mf, const char* argv0) { - this->MakefileMap = mf; + this->Makefile = mf; this->Name = name; if ( !this->FindRunningCMake(argv0) ) { @@ -700,7 +700,7 @@ int cmCPackGenericGenerator::InitializeInternal() //---------------------------------------------------------------------- const char* cmCPackGenericGenerator::GetOption(const char* op) { - return this->MakefileMap->GetDefinition(op); + return this->Makefile->GetDefinition(op); } //---------------------------------------------------------------------- @@ -913,7 +913,7 @@ std::string cmCPackGenericGenerator::FindTemplate(const char* name) { cmCPackLogger(cmCPackLog::LOG_DEBUG, "Look for template: " << (name ? name : "(NULL)") << std::endl); - std::string ffile = this->MakefileMap->GetModulesFile(name); + std::string ffile = this->Makefile->GetModulesFile(name); cmCPackLogger(cmCPackLog::LOG_DEBUG, "Found template: " << ffile.c_str() << std::endl); return ffile; @@ -923,7 +923,7 @@ std::string cmCPackGenericGenerator::FindTemplate(const char* name) bool cmCPackGenericGenerator::ConfigureString(const std::string& inString, std::string& outString) { - this->MakefileMap->ConfigureString(inString, + this->Makefile->ConfigureString(inString, outString, true, false); return true; } @@ -932,7 +932,7 @@ bool cmCPackGenericGenerator::ConfigureString(const std::string& inString, bool cmCPackGenericGenerator::ConfigureFile(const char* inName, const char* outName, bool copyOnly /* = false */) { - return this->MakefileMap->ConfigureFile(inName, outName, + return this->Makefile->ConfigureFile(inName, outName, copyOnly, true, false) == 1; } diff --git a/Source/CPack/cmCPackGenericGenerator.h b/Source/CPack/cmCPackGenericGenerator.h index f01188bf8..f5df78eae 100644 --- a/Source/CPack/cmCPackGenericGenerator.h +++ b/Source/CPack/cmCPackGenericGenerator.h @@ -130,8 +130,7 @@ protected: cmCPackLog* Logger; -private: - cmMakefile* MakefileMap; + cmMakefile* Makefile; }; #endif diff --git a/Source/CPack/cpack.cxx b/Source/CPack/cpack.cxx index 5ae3afa35..6ea29ba44 100644 --- a/Source/CPack/cpack.cxx +++ b/Source/CPack/cpack.cxx @@ -243,6 +243,25 @@ int main (int argc, char *argv[]) if ( parsed && !help ) { + // find out which system cpack is running on, so it can setup the search + // paths, so FIND_XXX() commands can be used in scripts + cminst.AddCMakePaths(argv[0]); + std::string systemFile = globalMF->GetModulesFile("CMakeDetermineSystem.cmake"); + if (!globalMF->ReadListFile(0, systemFile.c_str())) + { + cmCPack_Log(&log, cmCPackLog::LOG_ERROR, + "Error reading CMakeDetermineSystem.cmake" << std::endl); + return 1; + } + + systemFile = globalMF->GetModulesFile("CMakeSystemSpecificInformation.cmake"); + if (!globalMF->ReadListFile(0, systemFile.c_str())) + { + cmCPack_Log(&log, cmCPackLog::LOG_ERROR, + "Error reading CMakeSystemSpecificInformation.cmake" << std::endl); + return 1; + } + if ( cmSystemTools::FileExists(cpackConfigFile.c_str()) ) { cpackConfigFile = @@ -327,94 +346,92 @@ int main (int argc, char *argv[]) const char* gen = it->c_str(); cmMakefile newMF(*globalMF); cmMakefile* mf = &newMF; + cmCPack_Log(&log, cmCPackLog::LOG_VERBOSE, + "Specified generator: " << gen << std::endl); + if ( parsed && !mf->GetDefinition("CPACK_PACKAGE_NAME") ) { - cmCPack_Log(&log, cmCPackLog::LOG_VERBOSE, - "Specified generator: " << gen << std::endl); - if ( parsed && !mf->GetDefinition("CPACK_PACKAGE_NAME") ) + cmCPack_Log(&log, cmCPackLog::LOG_ERROR, + "CPack project name not specified" << std::endl); + parsed = 0; + } + if ( parsed && !(mf->GetDefinition("CPACK_PACKAGE_VERSION") + || mf->GetDefinition("CPACK_PACKAGE_VERSION_MAJOR") && + mf->GetDefinition("CPACK_PACKAGE_VERSION_MINOR") + && mf->GetDefinition("CPACK_PACKAGE_VERSION_PATCH")) ) + { + cmCPack_Log(&log, cmCPackLog::LOG_ERROR, + "CPack project version not specified" << std::endl + << "Specify CPACK_PACKAGE_VERSION, or " + "CPACK_PACKAGE_VERSION_MAJOR, " + "CPACK_PACKAGE_VERSION_MINOR, and CPACK_PACKAGE_VERSION_PATCH." + << std::endl); + parsed = 0; + } + if ( parsed ) + { + cpackGenerator = generators.NewGenerator(gen); + if ( !cpackGenerator ) { cmCPack_Log(&log, cmCPackLog::LOG_ERROR, - "CPack project name not specified" << std::endl); + "Cannot initialize CPack generator: " + << generator.c_str() << std::endl); parsed = 0; } - if ( parsed && !(mf->GetDefinition("CPACK_PACKAGE_VERSION") - || mf->GetDefinition("CPACK_PACKAGE_VERSION_MAJOR") && - mf->GetDefinition("CPACK_PACKAGE_VERSION_MINOR") - && mf->GetDefinition("CPACK_PACKAGE_VERSION_PATCH")) ) + if ( parsed && !cpackGenerator->Initialize(gen, mf, argv[0]) ) { cmCPack_Log(&log, cmCPackLog::LOG_ERROR, - "CPack project version not specified" << std::endl - << "Specify CPACK_PACKAGE_VERSION, or " - "CPACK_PACKAGE_VERSION_MAJOR, " - "CPACK_PACKAGE_VERSION_MINOR, and CPACK_PACKAGE_VERSION_PATCH." + "Cannot initialize the generator" << std::endl); + parsed = 0; + } + + if ( !mf->GetDefinition("CPACK_INSTALL_COMMANDS") && + !mf->GetDefinition("CPACK_INSTALLED_DIRECTORIES") && + !mf->GetDefinition("CPACK_INSTALL_CMAKE_PROJECTS") ) + { + cmCPack_Log(&log, cmCPackLog::LOG_ERROR, + "Please specify build tree of the project that uses CMake " + "using CPACK_INSTALL_CMAKE_PROJECTS, specify " + "CPACK_INSTALL_COMMANDS, or specify " + "CPACK_INSTALLED_DIRECTORIES." << std::endl); parsed = 0; } if ( parsed ) { - cpackGenerator = generators.NewGenerator(gen); - if ( !cpackGenerator ) - { - cmCPack_Log(&log, cmCPackLog::LOG_ERROR, - "Cannot initialize CPack generator: " - << generator.c_str() << std::endl); - parsed = 0; - } - if ( parsed && !cpackGenerator->Initialize(gen, mf, argv[0]) ) - { - cmCPack_Log(&log, cmCPackLog::LOG_ERROR, - "Cannot initialize the generator" << std::endl); - parsed = 0; - } - - if ( !mf->GetDefinition("CPACK_INSTALL_COMMANDS") && - !mf->GetDefinition("CPACK_INSTALLED_DIRECTORIES") && - !mf->GetDefinition("CPACK_INSTALL_CMAKE_PROJECTS") ) - { - cmCPack_Log(&log, cmCPackLog::LOG_ERROR, - "Please specify build tree of the project that uses CMake " - "using CPACK_INSTALL_CMAKE_PROJECTS, specify " - "CPACK_INSTALL_COMMANDS, or specify " - "CPACK_INSTALLED_DIRECTORIES." - << std::endl); - parsed = 0; - } - if ( parsed ) - { #ifdef _WIN32 - std::string comspec = "cmw9xcom.exe"; - cmSystemTools::SetWindows9xComspecSubstitute(comspec.c_str()); + std::string comspec = "cmw9xcom.exe"; + cmSystemTools::SetWindows9xComspecSubstitute(comspec.c_str()); #endif - const char* projName = mf->GetDefinition("CPACK_PACKAGE_NAME"); - cmCPack_Log(&log, cmCPackLog::LOG_VERBOSE, "Use generator: " - << cpackGenerator->GetNameOfClass() << std::endl); - cmCPack_Log(&log, cmCPackLog::LOG_VERBOSE, "For project: " - << projName << std::endl); - - const char* projVersion = - mf->GetDefinition("CPACK_PACKAGE_VERSION"); - if ( !projVersion ) - { - const char* projVersionMajor - = mf->GetDefinition("CPACK_PACKAGE_VERSION_MAJOR"); - const char* projVersionMinor - = mf->GetDefinition("CPACK_PACKAGE_VERSION_MINOR"); - const char* projVersionPatch - = mf->GetDefinition("CPACK_PACKAGE_VERSION_PATCH"); - cmOStringStream ostr; - ostr << projVersionMajor << "." << projVersionMinor << "." - << projVersionPatch; - mf->AddDefinition("CPACK_PACKAGE_VERSION", - ostr.str().c_str()); - } - - int res = cpackGenerator->ProcessGenerator(); - if ( !res ) - { - cmCPack_Log(&log, cmCPackLog::LOG_ERROR, - "Error when generating package: " << projName << std::endl); - return 1; - } + const char* projName = mf->GetDefinition("CPACK_PACKAGE_NAME"); + cmCPack_Log(&log, cmCPackLog::LOG_VERBOSE, "Use generator: " + << cpackGenerator->GetNameOfClass() << std::endl); + cmCPack_Log(&log, cmCPackLog::LOG_VERBOSE, "For project: " + << projName << std::endl); + + const char* projVersion = + mf->GetDefinition("CPACK_PACKAGE_VERSION"); + if ( !projVersion ) + { + const char* projVersionMajor + = mf->GetDefinition("CPACK_PACKAGE_VERSION_MAJOR"); + const char* projVersionMinor + = mf->GetDefinition("CPACK_PACKAGE_VERSION_MINOR"); + const char* projVersionPatch + = mf->GetDefinition("CPACK_PACKAGE_VERSION_PATCH"); + cmOStringStream ostr; + ostr << projVersionMajor << "." << projVersionMinor << "." + << projVersionPatch; + mf->AddDefinition("CPACK_PACKAGE_VERSION", + ostr.str().c_str()); + } + + int res = cpackGenerator->ProcessGenerator(); + if ( !res ) + { + cmCPack_Log(&log, cmCPackLog::LOG_ERROR, + "Error when generating package: " << projName << std::endl); + return 1; } } }