diff --git a/Modules/CMakeBackwardCompatibilityC.cmake b/Modules/CMakeBackwardCompatibilityC.cmake new file mode 100644 index 000000000..52639410e --- /dev/null +++ b/Modules/CMakeBackwardCompatibilityC.cmake @@ -0,0 +1,22 @@ +# Nothing here yet + +INCLUDE (${CMAKE_ROOT}/Modules/CheckSizeOf.cmake) +CHECK_TYPE_SIZE(int CMAKE_SIZEOF_INT) +CHECK_TYPE_SIZE(long CMAKE_SIZEOF_LONG) +CHECK_TYPE_SIZE("void*" CMAKE_SIZEOF_VOID_P) +CHECK_TYPE_SIZE(char CMAKE_SIZEOF_CHAR) +CHECK_TYPE_SIZE(short CMAKE_SIZEOF_SHORT) +CHECK_TYPE_SIZE(float CMAKE_SIZEOF_FLOAT) +CHECK_TYPE_SIZE(double CMAKE_SIZEOF_DOUBLE) + +INCLUDE (${CMAKE_ROOT}/Modules/CheckFunctionExists.cmake) +CHECK_FUNCTION_EXISTS(gethostbyname CMAKE_HAVE_GETHOSTBYNAME) +CHECK_FUNCTION_EXISTS(connect CMAKE_HAVE_CONNECT) +CHECK_FUNCTION_EXISTS(remove CMAKE_HAVE_REMOVE) +CHECK_FUNCTION_EXISTS(shmat CMAKE_HAVE_SHMAT) + +INCLUDE (${CMAKE_ROOT}/Modules/CheckIncludeFile.cmake) +CHECK_INCLUDE_FILE("limits.h" CMAKE_HAVE_LIMITS_H) +CHECK_INCLUDE_FILE("unistd.h" CMAKE_HAVE_UNISTD_H) +CHECK_INCLUDE_FILE("sys/prctl.h" CMAKE_HAVE_SYS_PRCTL_H) +CHECK_INCLUDE_FILE("pthread.h" CMAKE_HAVE_PTHREAD_H) diff --git a/Modules/CMakeBackwardCompatibilityCXX.cmake b/Modules/CMakeBackwardCompatibilityCXX.cmake new file mode 100644 index 000000000..2ce99cf95 --- /dev/null +++ b/Modules/CMakeBackwardCompatibilityCXX.cmake @@ -0,0 +1,2 @@ +# +INCLUDE(${CMAKE_ROOT}/Modules/TestForANSIStreamHeaders.cmake) diff --git a/Source/cmGlobalUnixMakefileGenerator.cxx b/Source/cmGlobalUnixMakefileGenerator.cxx index 5da658db5..9314d5feb 100644 --- a/Source/cmGlobalUnixMakefileGenerator.cxx +++ b/Source/cmGlobalUnixMakefileGenerator.cxx @@ -54,14 +54,29 @@ void cmGlobalUnixMakefileGenerator::EnableLanguage(const char* lang, putenv(envCC); #endif } - std::string cmd = root; - cmd += "/Templates/cconfigure"; - cmSystemTools::RunCommand(cmd.c_str(), output, - cmSystemTools::ConvertToOutputPath(mf->GetHomeOutputDirectory()).c_str()); + if (!m_CMakeInstance->GetIsInTryCompile()) + { + std::string cmd = root; + cmd += "/Templates/cconfigure"; + cmSystemTools::RunCommand(cmd.c_str(), output, + cmSystemTools::ConvertToOutputPath( + mf->GetHomeOutputDirectory()).c_str()); + } std::string fpath = mf->GetHomeOutputDirectory(); fpath += "/CCMakeSystemConfig.cmake"; mf->ReadListFile(0,fpath.c_str()); this->SetLanguageEnabled("C"); + if (!m_CMakeInstance->GetIsInTryCompile()) + { + // for old versions of CMake ListFiles + const char* versionValue + = mf->GetDefinition("CMAKE_MINIMUM_REQUIRED_VERSION"); + if (!versionValue || atof(versionValue) <= 1.4) + { + std::string fpath = root + "/Modules/CMakeBackwardCompatibilityC.cmake"; + mf->ReadListFile(NULL,fpath.c_str()); + } + } } // if CXX if(!this->GetLanguageEnabled("CXX") && strcmp(lang, "CXX") == 0) @@ -85,26 +100,31 @@ void cmGlobalUnixMakefileGenerator::EnableLanguage(const char* lang, #endif } std::string cmd = root; - cmd += "/Templates/cxxconfigure"; - cmSystemTools::RunCommand(cmd.c_str(), output, - cmSystemTools::ConvertToOutputPath(mf->GetHomeOutputDirectory()).c_str()); + if (!m_CMakeInstance->GetIsInTryCompile()) + { + cmd += "/Templates/cxxconfigure"; + cmSystemTools::RunCommand(cmd.c_str(), output, + cmSystemTools::ConvertToOutputPath( + mf->GetHomeOutputDirectory()).c_str()); + } std::string fpath = mf->GetHomeOutputDirectory(); fpath += "/CXXCMakeSystemConfig.cmake"; mf->ReadListFile(0,fpath.c_str()); this->SetLanguageEnabled("CXX"); - // for old versions of CMake ListFiles if (!m_CMakeInstance->GetIsInTryCompile()) { + // for old versions of CMake ListFiles const char* versionValue = mf->GetDefinition("CMAKE_MINIMUM_REQUIRED_VERSION"); if (!versionValue || atof(versionValue) <= 1.4) { - fpath = root + "/Modules/TestForANSIStreamHeaders.cmake"; + fpath = root + "/Modules/CMakeBackwardCompatibilityCXX.cmake"; mf->ReadListFile(NULL,fpath.c_str()); } } } + // if we are from the top, always define this mf->AddDefinition("RUN_CONFIGURE", true); }