COMP: Handle both ansi and non-ansi C

This commit is contained in:
Andy Cedilnik 2006-07-26 11:46:22 -04:00
parent 47ef504530
commit a9c0929d39
7 changed files with 31 additions and 4 deletions

View File

@ -10,7 +10,8 @@ IF(NOT CMAKE_C_COMPILER_WORKS)
"#ifdef __cplusplus\n" "#ifdef __cplusplus\n"
"# error \"The CMAKE_C_COMPILER is set to a C++ compiler\"\n" "# error \"The CMAKE_C_COMPILER is set to a C++ compiler\"\n"
"#endif\n" "#endif\n"
"int main(){return 0;}\n") "#include <stdio.h>\n"
"int main(int argc, char* argv[]){ printf(\"%s\\n\", argv[0]); return argc-1;}\n")
TRY_COMPILE(CMAKE_C_COMPILER_WORKS ${CMAKE_BINARY_DIR} TRY_COMPILE(CMAKE_C_COMPILER_WORKS ${CMAKE_BINARY_DIR}
${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/testCCompiler.c ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/testCCompiler.c
OUTPUT_VARIABLE OUTPUT) OUTPUT_VARIABLE OUTPUT)

View File

@ -684,6 +684,7 @@ void cmCTestTestHandler::ProcessDirectory(std::vector<cmStdString> &passed,
<< std::endl; << std::endl;
cmCTestLog(this->CTest, ERROR_MESSAGE, "Unable to find executable: " cmCTestLog(this->CTest, ERROR_MESSAGE, "Unable to find executable: "
<< args[1].c_str() << std::endl); << args[1].c_str() << std::endl);
cres.Output = "Unable to find executable: " + args[1];
if ( !this->CTest->GetShowOnly() ) if ( !this->CTest->GetShowOnly() )
{ {
cres.FullCommandLine = actualCommand; cres.FullCommandLine = actualCommand;

View File

@ -139,7 +139,7 @@ void cmCommandArgumentParserHelper::AllocateParserType
pt->str = 0; pt->str = 0;
if ( len == 0 ) if ( len == 0 )
{ {
len = (int)strlen(str); len = static_cast<int>(strlen(str));
} }
if ( len == 0 ) if ( len == 0 )
{ {

View File

@ -56,6 +56,14 @@ bool cmIncludeDirectoryCommand
tmp += unixPath; tmp += unixPath;
unixPath = tmp; unixPath = tmp;
} }
/*
if ( !cmSystemTools::FileExists(unixPath.c_str()) )
{
std::string out = "Cannot find directory: " + unixPath;
this->SetError(out.c_str());
return false;
}
*/
this->Makefile->AddIncludeDirectory(unixPath.c_str(), before); this->Makefile->AddIncludeDirectory(unixPath.c_str(), before);
} }
return true; return true;

View File

@ -905,7 +905,7 @@ void cmMakefile::AddLinkLibraryForTarget(const char *target,
{ {
cmOStringStream e; cmOStringStream e;
e << "Attempt to add link target " << lib << " of type: " e << "Attempt to add link target " << lib << " of type: "
<< cmTarget::TargetTypeNames[(int)tgt->GetType()] << cmTarget::TargetTypeNames[static_cast<int>(tgt->GetType())]
<< "\nto target " << target << "\nto target " << target
<< ". You can only link to STATIC or SHARED libraries."; << ". You can only link to STATIC or SHARED libraries.";
// in older versions of cmake linking to modules was allowed // in older versions of cmake linking to modules was allowed

View File

@ -1338,7 +1338,7 @@ std::string cmSystemTools::MakeXMLSafe(const char* str)
&& ch != '\r' ) && ch != '\r' )
{ {
char buffer[33]; char buffer[33];
sprintf(buffer, "&lt;%d&gt;", (int)ch); sprintf(buffer, "&lt;%d&gt;", static_cast<int>(ch));
//sprintf(buffer, "&#x%0x;", (unsigned int)ch); //sprintf(buffer, "&#x%0x;", (unsigned int)ch);
result.insert(result.end(), buffer, buffer+strlen(buffer)); result.insert(result.end(), buffer, buffer+strlen(buffer));
} }

View File

@ -537,7 +537,24 @@ fi
TMPFILE=`cmake_tmp_file` TMPFILE=`cmake_tmp_file`
cat > "${TMPFILE}.c" <<EOF cat > "${TMPFILE}.c" <<EOF
#include<stdio.h> #include<stdio.h>
#if defined(__hpux) && !defined(__GNUC__)
# if defined(__CLASSIC_C__)
/* No ansi option given. */
# define bootstrap_require_no_prototype
# elif defined(__STDC_EXT__)
/* Option -Ae given. */
# else
/* Option -Aa given. */
# endif
#endif
#ifdef bootstrap_require_no_prototype
int main(argc, argv)
int argc;
char* argv[];
#else
int main(int argc, char* argv[]) int main(int argc, char* argv[])
#endif
{ {
printf("%d\n", (argv != 0)); printf("%d\n", (argv != 0));
return argc-1; return argc-1;