ENH: add enable language support for PROJECT command, this means that a C only project can be built with cmake, even without a cxx compiler

This commit is contained in:
Bill Hoffman 2002-04-02 15:43:23 -05:00
parent 81ebecaea1
commit 4ea0f6b949
34 changed files with 20025 additions and 9161 deletions

26641
CMake.rtf

File diff suppressed because it is too large Load Diff

View File

@ -6,7 +6,7 @@ LINK_DIRECTORIES(${HELLO_BINARY_DIR}/Hello)
# Add executable called "helloDemo" that is built from the source files
# "demo.cxx" and "demo_b.cxx". The extensions are automatically found.
ADD_EXECUTABLE(helloDemo demo demo_b)
ADD_EXECUTABLE(helloDemo demo.cxx demo_b.cxx)
# Link the executable to the Hello library.
TARGET_LINK_LIBRARIES(helloDemo Hello)

View File

@ -1,3 +1,3 @@
# Create a library called "Hello" which includes the source file "hello.cxx".
# The extension is already found. Any number of sources could be listed here.
ADD_LIBRARY(Hello hello)
ADD_LIBRARY(Hello hello.cxx)

View File

@ -1,4 +1,4 @@
SOURCE_FILES(SRCS
SET(SRCS
cmake.cxx
cmakewizard.cxx
cmMakeDepend.cxx
@ -37,13 +37,15 @@ cmListFileCache.h
CONFIGURE_FILE(
${CMake_SOURCE_DIR}/Source/cmConfigure.cmake.h.in
${CMake_BINARY_DIR}/Source/cmConfigure.h )
# add the include path to find the .h
INCLUDE_DIRECTORIES(${CMake_BINARY_DIR}/Source)
# let cmake know it is supposed to use it
ADD_DEFINITIONS(-DCMAKE_BUILD_WITH_CMAKE)
IF (WIN32)
SOURCE_FILES(SRCS
SET(SRCS ${SRCS}
cmDSWWriter.cxx
cmDSPWriter.cxx
cmMSProjectGenerator.cxx
@ -73,17 +75,17 @@ IF (UNIX)
ENDIF (CURSES_LIBRARY)
ENDIF (UNIX)
SOURCE_FILES(SRCS cmUnixMakefileGenerator.cxx cmUnixMakefileGenerator.h)
SET(SRCS ${SRCS} cmUnixMakefileGenerator.cxx cmUnixMakefileGenerator.h)
# create a library used by the command line and the GUI
ADD_LIBRARY(CMakeLib SRCS)
ADD_LIBRARY(CMakeLib ${SRCS})
# always link in the library
LINK_LIBRARIES(CMakeLib)
# the library is found here
LINK_DIRECTORIES(${CMake_BINARY_DIR}/Source)
ADD_EXECUTABLE(cmake cmakemain)
ADD_EXECUTABLE(cmake cmakemain.cxx)
ADD_EXECUTABLE(DumpDocumentation cmDumpDocumentation)
ADD_EXECUTABLE(ctest ctest.cxx cmSystemTools.cxx cmRegularExpression.cxx)
@ -106,6 +108,11 @@ IF(BUILD_TESTING)
${CMake_BINARY_DIR}/Tests/Simple
simple)
ADD_TEST(conly ${CMake_BINARY_DIR}/Source/cmaketest
${CMake_SOURCE_DIR}/Tests/COnly
${CMake_BINARY_DIR}/Tests/COnly
conly)
ADD_TEST(complex ${CMake_BINARY_DIR}/Source/cmaketest
${CMake_SOURCE_DIR}/Tests/Complex
${CMake_BINARY_DIR}/Tests/Complex

View File

@ -36,7 +36,7 @@ cmBorlandMakefileGenerator::~cmBorlandMakefileGenerator()
}
void cmBorlandMakefileGenerator::ComputeSystemInfo()
void cmBorlandMakefileGenerator::EnableLanguage(const char*)
{
// now load the settings
if(!m_Makefile->GetDefinition("CMAKE_ROOT"))
@ -53,11 +53,15 @@ void cmBorlandMakefileGenerator::ComputeSystemInfo()
message += outdir;
cmSystemTools::Error(message.c_str());
}
if(!this->GetLanguageEnabled("CXX"))
{
std::string fpath =
m_Makefile->GetDefinition("CMAKE_ROOT");
fpath += "/Templates/CMakeBorlandWindowsSystemConfig.cmake";
m_Makefile->ReadListFile(NULL,fpath.c_str());
this->SetLanguageEnabled("CXX");
}
std::string fpath =
m_Makefile->GetDefinition("CMAKE_ROOT");
fpath += "/Templates/CMakeBorlandWindowsSystemConfig.cmake";
m_Makefile->ReadListFile(NULL,fpath.c_str());
}

View File

@ -41,7 +41,7 @@ public:
{ return new cmBorlandMakefileGenerator;}
///! figure out about the current system information
virtual void ComputeSystemInfo();
virtual void EnableLanguage(const char*);
protected:
virtual void OutputMakeVariables(std::ostream&);

View File

@ -121,20 +121,9 @@ void cmDSWWriter::WriteDSWFile(std::ostream& fout)
k != allListFiles.end(); ++k)
{
cmMakefile* mf = *k;
cmMSProjectGenerator* pg = 0;
// if not this makefile, then create a new generator
if(m_Makefile != mf)
{
// Create an MS generator with DSW off, so it only creates dsp files
pg = new cmMSProjectGenerator;
}
else
{
pg = (cmMSProjectGenerator*)m_Makefile->GetMakefileGenerator();
}
cmMSProjectGenerator* pg = (cmMSProjectGenerator*)mf->GetMakefileGenerator();
// make sure the generator is building dsp files
pg->BuildDSWOff();
mf->SetMakefileGenerator(pg);
mf->GenerateMakefile();
// Get the source directory from the makefile
std::string dir = mf->GetStartDirectory();

View File

@ -88,7 +88,7 @@ void cmMSDotNETGenerator::SetLocal(bool local)
m_BuildSLN = !local;
}
void cmMSDotNETGenerator::ComputeSystemInfo()
void cmMSDotNETGenerator::EnableLanguage(const char*)
{
// now load the settings
if(!m_Makefile->GetDefinition("CMAKE_ROOT"))
@ -97,10 +97,14 @@ void cmMSDotNETGenerator::ComputeSystemInfo()
"CMAKE_ROOT has not been defined, bad GUI or driver program");
return;
}
std::string fpath =
m_Makefile->GetDefinition("CMAKE_ROOT");
fpath += "/Templates/CMakeDotNetSystemConfig.cmake";
m_Makefile->ReadListFile(NULL,fpath.c_str());
if(!this->GetLanguageEnabled("CXX"))
{
std::string fpath =
m_Makefile->GetDefinition("CMAKE_ROOT");
fpath += "/Templates/CMakeDotNetSystemConfig.cmake";
m_Makefile->ReadListFile(NULL,fpath.c_str());
this->SetLanguageEnabled("CXX");
}
}
@ -187,20 +191,10 @@ void cmMSDotNETGenerator::WriteSLNFile(std::ostream& fout)
k != allListFiles.end(); ++k)
{
cmMakefile* mf = *k;
cmMSDotNETGenerator* pg = 0;
// if not this makefile, then create a new generator
if(m_Makefile != mf)
{
// Create an MS generator with SLN off, so it only creates dsp files
pg = new cmMSDotNETGenerator;
}
else
{
pg = static_cast<cmMSDotNETGenerator*>(m_Makefile->GetMakefileGenerator());
}
cmMSDotNETGenerator* pg =
static_cast<cmMSDotNETGenerator*>(mf->GetMakefileGenerator());
// make sure the generator is building dsp files
pg->BuildSLNOff();
mf->SetMakefileGenerator(pg);
mf->GenerateMakefile();
// Get the source directory from the makefile
std::string dir = mf->GetStartDirectory();

View File

@ -64,7 +64,7 @@ public:
* Try to determine system infomation such as shared library
* extension, pthreads, byte order etc.
*/
virtual void ComputeSystemInfo();
virtual void EnableLanguage(const char*);
protected:
/**

View File

@ -55,7 +55,7 @@ void cmMSProjectGenerator::SetLocal(bool local)
m_BuildDSW = !local;
}
void cmMSProjectGenerator::ComputeSystemInfo()
void cmMSProjectGenerator::EnableLanguage(const char*)
{
// now load the settings
if(!m_Makefile->GetDefinition("CMAKE_ROOT"))

View File

@ -73,7 +73,7 @@ public:
* Try to determine system infomation such as shared library
* extension, pthreads, byte order etc.
*/
virtual void ComputeSystemInfo();
virtual void EnableLanguage(const char*);
private:
cmDSWWriter* m_DSWWriter;

View File

@ -431,23 +431,18 @@ void cmMakefile::AddSource(cmSourceFile& cmfile, const char *srclist)
m_Sources[srclist].push_back(this->AddSource(cmfile));
}
struct FindSrcByName : std::binary_function<cmSourceFile*, cmSourceFile*, bool>
{
public:
bool operator () (const cmSourceFile *f, const cmSourceFile *test) const
{
return (f->GetSourceName() == test->GetSourceName());
}
};
void cmMakefile::RemoveSource(cmSourceFile& cmfile,const char *srclist)
void cmMakefile::RemoveSource(cmSourceFile& cmfile, const char *srclist)
{
std::vector<cmSourceFile*> &maplist = m_Sources[srclist];
std::vector<cmSourceFile*>::iterator f =
std::find_if(maplist.begin(), maplist.end(), std::bind2nd(FindSrcByName(),&cmfile));
if (f!=maplist.end())
for( std::vector<cmSourceFile*>::iterator f = maplist.begin();
f != maplist.end(); ++f)
{
if((*f)->GetSourceName() == cmfile.GetSourceName())
{
maplist.erase(f);
return;
}
}
}
@ -1079,8 +1074,7 @@ void cmMakefile::RemoveVariablesInString(std::string& source,
// This is done by reading the sub directory CMakeLists.txt files,
// then calling this function with the new cmMakefile object
void
cmMakefile::FindSubDirectoryCMakeListsFiles(std::vector<cmMakefile*>&
makefiles)
cmMakefile::FindSubDirectoryCMakeListsFiles(std::vector<cmMakefile*>& makefiles)
{
// loop over all the sub directories of this makefile
const std::vector<std::string>& subdirs = this->GetSubDirectories();
@ -1102,6 +1096,7 @@ cmMakefile::FindSubDirectoryCMakeListsFiles(std::vector<cmMakefile*>&
else
{
cmMakefile* mf = new cmMakefile;
mf->SetMakefileGenerator(m_MakefileGenerator->CreateObject());
makefiles.push_back(mf);
// initialize new makefile
mf->SetHomeOutputDirectory(this->GetHomeOutputDirectory());
@ -1322,3 +1317,7 @@ cmSourceFile* cmMakefile::AddSource(cmSourceFile const&sf)
}
void cmMakefile::EnableLanguage(const char* lang)
{
m_MakefileGenerator->EnableLanguage(lang);
}

View File

@ -501,7 +501,9 @@ public:
/** Recursivly read and create a cmMakefile object for
* all CMakeLists.txt files in the GetSubDirectories list.
* Once the file is found, it ReadListFile is called on
* the cmMakefile created for it.
* the cmMakefile created for it. CreateObject is called on
* the prototype to create a cmMakefileGenerator for each cmMakefile that
* is created.
*/
void FindSubDirectoryCMakeListsFiles(std::vector<cmMakefile*>& makefiles);
@ -523,6 +525,9 @@ public:
/** Check if a command exists. */
bool CommandExists(const char* name) const;
///! Enable support for the named language, if null then all languages are enabled.
void EnableLanguage(const char* );
protected:
std::string m_Prefix;
std::vector<std::string> m_AuxSourceDirectories; //

View File

@ -19,6 +19,7 @@
// static list of registered generators
std::map<cmStdString, cmMakefileGenerator*>
cmMakefileGenerator::s_RegisteredGenerators;
std::map<cmStdString, bool> cmMakefileGenerator::s_LanguageEnabled;
void cmMakefileGenerator::SetMakefile(cmMakefile* mf)
@ -77,3 +78,25 @@ cmMakefileGenerator::CreateGenerator(const char* name)
}
return 0;
}
void cmMakefileGenerator::SetLanguageEnabled(const char* l)
{
s_LanguageEnabled[l] = true;
}
bool cmMakefileGenerator::GetLanguageEnabled(const char* l)
{
return (s_LanguageEnabled.count(l) > 0);
}
void cmMakefileGenerator::ClearEnabledLanguages()
{
s_LanguageEnabled.clear();
}

View File

@ -69,11 +69,19 @@ public:
* Try to determine system infomation such as shared library
* extension, pthreads, byte order etc.
*/
virtual void ComputeSystemInfo() = 0;
virtual void EnableLanguage(const char*) = 0;
virtual ~cmMakefileGenerator(){};
/**
* Set/Get and Clear the enabled languages.
*/
static void SetLanguageEnabled(const char*);
static bool GetLanguageEnabled(const char*);
static void ClearEnabledLanguages();
protected:
static std::map<cmStdString, cmMakefileGenerator*> s_RegisteredGenerators;
static std::map<cmStdString, bool> s_LanguageEnabled;
cmMakefile* m_Makefile;
};

View File

@ -97,7 +97,7 @@ std::string cmNMakeMakefileGenerator::ShortPathCommand(const char* command)
}
void cmNMakeMakefileGenerator::ComputeSystemInfo()
void cmNMakeMakefileGenerator::EnableLanguage(const char*)
{
// now load the settings
if(!m_Makefile->GetDefinition("CMAKE_ROOT"))
@ -106,10 +106,14 @@ void cmNMakeMakefileGenerator::ComputeSystemInfo()
"CMAKE_ROOT has not been defined, bad GUI or driver program");
return;
}
std::string fpath =
m_Makefile->GetDefinition("CMAKE_ROOT");
fpath += "/Templates/CMakeNMakeWindowsSystemConfig.cmake";
m_Makefile->ReadListFile(NULL,fpath.c_str());
if(!this->GetLanguageEnabled("CXX"))
{
std::string fpath =
m_Makefile->GetDefinition("CMAKE_ROOT");
fpath += "/Templates/CMakeNMakeWindowsSystemConfig.cmake";
m_Makefile->ReadListFile(NULL,fpath.c_str());
this->SetLanguageEnabled("CXX");
}
}

View File

@ -41,7 +41,7 @@ public:
{ return new cmNMakeMakefileGenerator;}
///! figure out about the current system information
virtual void ComputeSystemInfo();
virtual void EnableLanguage(const char*);
protected:
std::string ShortPath(const char* path);
std::string ShortPathCommand(const char* command);

View File

@ -19,7 +19,7 @@
// cmProjectCommand
bool cmProjectCommand::InitialPass(std::vector<std::string> const& args)
{
if(args.size() != 1 )
if(args.size() < 1 )
{
this->SetError("PROJECT called with incorrect number of arguments");
return false;
@ -48,6 +48,17 @@ bool cmProjectCommand::InitialPass(std::vector<std::string> const& args)
m_Makefile->AddDefinition("PROJECT_NAME", args[0].c_str());
if(args.size() > 1)
{
for(size_t i =1; i < args.size(); ++i)
{
m_Makefile->EnableLanguage(args[i].c_str());
}
}
else
{
m_Makefile->EnableLanguage(0);
}
return true;
}

View File

@ -73,7 +73,12 @@ public:
virtual const char* GetFullDocumentation()
{
return
"PROJECT(projectname) Sets the name of the Microsoft workspace .dsw file. Does nothing on UNIX currently\n";
"PROJECT(projectname [C++ C Java])\n"
"Sets the name of the project. "
"This creates the variables projectname_BINARY_DIR and projectname_SOURCE_DIR. "
"Optionally you can specify which languages your project supports. "
"By default all languages are supported. If you do not have a C++ compiler, but want"
" to build a c program with cmake, then use this option.";
}
cmTypeMacro(cmProjectCommand, cmCommand);

View File

@ -49,7 +49,7 @@ bool cmSetCommand::InitialPass(std::vector<std::string> const& args)
if(args[1] != "CACHE" && args[2] != "CACHE")
{
value = args[1];
for(unsigned int i =2; i < args.size(); ++i)
for(size_t i =2; i < args.size(); ++i)
{
value += ";";
value += args[i];

View File

@ -53,7 +53,7 @@ public:
virtual const char* GetFullDocumentation()
{
return
"SET_SOURCE_FILES_PROPERTIES(flags file1 file2 [ABSTRACT|WRAP_EXCLUDE|GENERATED|COMPILE_FLAGS] [flags]) "
"SET_SOURCE_FILES_PROPERTIES(file1 file2 .. filen [ABSTRACT|WRAP_EXCLUDE|GENERATED|COMPILE_FLAGS] [flags]) "
"Set properties on a file. The syntax for the command is to list all the files you want "
"to change, and then provide the values you want to set next.";
}

View File

@ -75,3 +75,15 @@ void cmTarget::MergeLibraries(const LinkLibraries &ll)
}
bool cmTarget::HasCxx() const
{
for(std::vector<cmSourceFile*>::const_iterator i = m_SourceFiles.begin();
i != m_SourceFiles.end(); ++i)
{
if((*i)->GetSourceExtension() != "c")
{
return true;
}
}
return false;
}

View File

@ -71,6 +71,8 @@ public:
{return m_SourceFiles;}
std::vector<cmSourceFile*> &GetSourceFiles() {return m_SourceFiles;}
///! does this target have a cxx file in it
bool HasCxx() const;
/**
* Get the list of the source files used by this target
*/

View File

@ -604,8 +604,17 @@ void cmUnixMakefileGenerator::OutputSharedLibraryRule(std::ostream& fout,
std::string command = "$(RM) lib";
command += name;
command += "$(SHLIB_SUFFIX)";
std::string command2 = "$(CMAKE_CXX_COMPILER) $(CMAKE_SHLIB_LINK_FLAGS) "
"$(CMAKE_SHLIB_BUILD_FLAGS) $(CMAKE_CXX_FLAGS) -o \\\n";
std::string command2;
if(t.HasCxx())
{
command2 = "$(CMAKE_CXX_COMPILER) $(CMAKE_SHLIB_LINK_FLAGS) "
"$(CMAKE_SHLIB_BUILD_FLAGS) $(CMAKE_CXX_FLAGS) -o \\\n";
}
else
{
command2 = "$(CMAKE_C_COMPILER) $(CMAKE_SHLIB_LINK_FLAGS) "
"$(CMAKE_SHLIB_BUILD_FLAGS) $(CMAKE_C_FLAGS) -o \\\n";
}
command2 += "\t ";
std::string libName = m_LibraryOutputPath + "lib" + std::string(name) + "$(SHLIB_SUFFIX)";
libName = this->ConvertToOutputPath(libName.c_str());
@ -639,8 +648,17 @@ void cmUnixMakefileGenerator::OutputModuleLibraryRule(std::ostream& fout,
depend += this->CreateMakeVariable(name, "_SRC_OBJS")
+ ") $(" + this->CreateMakeVariable(name, "_DEPEND_LIBS") + ")";
std::string command = "$(RM) lib" + std::string(name) + "$(MODULE_SUFFIX)";
std::string command2 = "$(CMAKE_CXX_COMPILER) $(CMAKE_MODULE_LINK_FLAGS) "
"$(CMAKE_MODULE_BUILD_FLAGS) $(CMAKE_CXX_FLAGS) -o \\\n";
std::string command2;
if(t.HasCxx())
{
command2 = "$(CMAKE_CXX_COMPILER) $(CMAKE_SHLIB_LINK_FLAGS) "
"$(CMAKE_SHLIB_BUILD_FLAGS) $(CMAKE_CXX_FLAGS) -o \\\n";
}
else
{
command2 = "$(CMAKE_C_COMPILER) $(CMAKE_SHLIB_LINK_FLAGS) "
"$(CMAKE_SHLIB_BUILD_FLAGS) $(CMAKE_C_FLAGS) -o \\\n";
}
command2 += "\t ";
std::string libName = m_LibraryOutputPath + "lib" + std::string(name) + "$(MODULE_SUFFIX)";
libName = this->ConvertToOutputPath(libName.c_str());
@ -705,8 +723,17 @@ void cmUnixMakefileGenerator::OutputExecutableRule(std::ostream& fout,
std::string depend = "$(";
depend += this->CreateMakeVariable(name, "_SRC_OBJS")
+ ") $(" + this->CreateMakeVariable(name, "_DEPEND_LIBS") + ")";
std::string command =
"$(CMAKE_CXX_COMPILER) $(CMAKE_SHLIB_LINK_FLAGS) $(CMAKE_CXX_FLAGS) ";
std::string command;
if(t.HasCxx())
{
command =
"$(CMAKE_CXX_COMPILER) $(CMAKE_SHLIB_LINK_FLAGS) $(CMAKE_CXX_FLAGS) ";
}
else
{
command =
"$(CMAKE_C_COMPILER) $(CMAKE_SHLIB_LINK_FLAGS) $(CMAKE_C_FLAGS) ";
}
command += "$(" + this->CreateMakeVariable(name, "_SRC_OBJS") + ") ";
std::strstream linklibs;
this->OutputLinkLibraries(linklibs, 0, t);
@ -1451,10 +1478,9 @@ void cmUnixMakefileGenerator::RecursiveGenerateCacheOnly()
mf->AddDefinition("RUN_CONFIGURE", true);
}
cmUnixMakefileGenerator* gen =
static_cast<cmUnixMakefileGenerator*>(this->CreateObject());
static_cast<cmUnixMakefileGenerator*>(mf->GetMakefileGenerator());
gen->SetCacheOnlyOn();
gen->SetRecurseOff();
mf->SetMakefileGenerator(gen);
mf->GenerateMakefile();
}
// CLEAN up the makefiles created
@ -1470,7 +1496,6 @@ void cmUnixMakefileGenerator::OutputMakeVariables(std::ostream& fout)
"# the standard shell for make\n"
"SHELL = /bin/sh\n"
"\n"
"CMAKE_LIB_EXT = @CMAKE_LIB_EXT@\n"
"CMAKE_RANLIB = @CMAKE_RANLIB@\n"
"CMAKE_AR = @CMAKE_AR@\n"
"CMAKE_AR_ARGS = @CMAKE_AR_ARGS@\n"
@ -2034,7 +2059,7 @@ void cmUnixMakefileGenerator::SetLocal (bool local)
}
}
void cmUnixMakefileGenerator::ComputeSystemInfo()
void cmUnixMakefileGenerator::EnableLanguage(const char* lang)
{
if (m_CacheOnly)
{
@ -2057,21 +2082,38 @@ void cmUnixMakefileGenerator::ComputeSystemInfo()
envCC[4999] = 0;
putenv(envCC);
}
// currently we run configure shell script here to determine the info
std::string output;
std::string cmd = "cd ";
cmd += this->ConvertToOutputPath(m_Makefile->GetHomeOutputDirectory());
cmd += "; ";
const char* root
= m_Makefile->GetDefinition("CMAKE_ROOT");
cmd += root;
cmd += "/Templates/configure";
cmSystemTools::RunCommand(cmd.c_str(), output);
std::string root
= this->ConvertToOutputPath(m_Makefile->GetDefinition("CMAKE_ROOT"));
// if no lang specified use CXX
if(!lang )
{
lang = "CXX";
}
// if CXX or C, then enable C
if((!this->GetLanguageEnabled(lang) && lang[0] == 'C'))
{
std::string cmd = root;
cmd += "/Templates/cconfigure";
cmSystemTools::RunCommand(cmd.c_str(), output,
this->ConvertToOutputPath(m_Makefile->GetHomeOutputDirectory()).c_str());
std::string fpath = m_Makefile->GetHomeOutputDirectory();
fpath += "/CCMakeSystemConfig.cmake";
m_Makefile->ReadListFile(NULL,fpath.c_str());
this->SetLanguageEnabled("C");
}
// if CXX
if(!this->GetLanguageEnabled(lang) || strcmp(lang, "CXX") == 0)
{
std::string cmd = root;
cmd += "/Templates/cxxconfigure";
cmSystemTools::RunCommand(cmd.c_str(), output,
this->ConvertToOutputPath(m_Makefile->GetHomeOutputDirectory()).c_str());
std::string fpath = m_Makefile->GetHomeOutputDirectory();
fpath += "/CXXCMakeSystemConfig.cmake";
m_Makefile->ReadListFile(NULL,fpath.c_str());
this->SetLanguageEnabled("CXX");
}
m_Makefile->AddDefinition("RUN_CONFIGURE", true);
}
// now load the settings
std::string fpath = m_Makefile->GetHomeOutputDirectory();
fpath += "/CMakeSystemConfig.cmake";
m_Makefile->ReadListFile(NULL,fpath.c_str());
}

View File

@ -80,7 +80,7 @@ public:
* Try to determine system infomation such as shared library
* extension, pthreads, byte order etc.
*/
virtual void ComputeSystemInfo();
virtual void EnableLanguage(const char*);
protected:
virtual void RecursiveGenerateCacheOnly();

View File

@ -399,8 +399,8 @@ int cmake::Generate(const std::vector<std::string>& args, bool buildMakefiles)
// setup CMAKE_ROOT and CMAKE_COMMAND
this->AddCMakePaths(args);
// compute system info
gen->ComputeSystemInfo();
// reset any system configuration information
cmMakefileGenerator::ClearEnabledLanguages();
std::string lf = mf.GetStartDirectory();
lf += "/CMakeLists.txt";

View File

@ -0,0 +1,143 @@
#
# CMakeLocal.make.in should be in the directory where you run configure
# in, which need not be the source directory
#
SET (CMAKE_WORDS_BIGENDIAN @CMAKE_WORDS_BIGENDIAN@ CACHE BOOL
"The system uses big endian byte ordering.")
SET (CMAKE_USE_SPROC @CMAKE_USE_SPROC@ CACHE BOOL
"Use sproc libs.")
SET (CMAKE_USE_PTHREADS @CMAKE_USE_PTHREADS@ CACHE BOOL
"Use the pthreads library.")
IF(WIN32)
SET (CMAKE_USE_WIN32_THREADS @CMAKE_USE_WIN32_THREADS@ CACHE BOOL
"Use the win32 thread library.")
ENDIF(WIN32)
SET (CMAKE_HP_PTHREADS @CMAKE_HP_PTHREADS@ CACHE BOOL
"Use HP pthreads.")
SET (CMAKE_RANLIB "@RANLIB@" CACHE FILEPATH
"Library randomizer program used on archive libraries.")
SET (CMAKE_AR "@CMAKE_AR@" CACHE FILEPATH
"Archive program used to make archive libraries.")
SET (CMAKE_AR_ARGS "@CMAKE_AR_ARGS@" CACHE STRING
"Arguments for CMAKE_AR program to create an archive library.")
SET (CMAKE_C_COMPILER "@CC@" CACHE FILEPATH
"Name of C compiler used.")
SET (CMAKE_C_FLAGS "@CFLAGS@" CACHE STRING
"Flags for C compiler.")
SET (CMAKE_SHLIB_CFLAGS "@CMAKE_SHLIB_CFLAGS@" CACHE STRING
"Flag used for building shared library objects.")
SET (CMAKE_SHLIB_BUILD_FLAGS "@CMAKE_SHLIB_BUILD_FLAGS@" CACHE STRING
"Flag used by CXX to build a shared library.")
SET (CMAKE_MODULE_BUILD_FLAGS "@CMAKE_MODULE_BUILD_FLAGS@" CACHE STRING
"Flag used by CXX to build a shared library.")
SET (CMAKE_INSTALL_PREFIX @prefix@ CACHE PATH
"Install path prefix, prepended onto install directories.")
SET (CMAKE_SHLIB_SUFFIX @CMAKE_SHLIB_SUFFIX@ CACHE STRING
"Shared library suffix.")
SET (CMAKE_MODULE_SUFFIX @CMAKE_MODULE_SUFFIX@ CACHE STRING
"Module library suffix.")
SET (CMAKE_THREAD_LIBS "@CMAKE_THREAD_LIBS@" CACHE STRING
"Thread library used.")
SET (CMAKE_DL_LIBS "@CMAKE_DL_LIBS@" CACHE STRING
"Dynamic link library to link in.")
SET (CMAKE_SHLIB_LINK_FLAGS "@CMAKE_SHLIB_LINK_FLAGS@" CACHE STRING
"Flags used to link a shared library.")
SET (CMAKE_MODULE_LINK_FLAGS "@CMAKE_MODULE_LINK_FLAGS@" CACHE STRING
"Flags used to link a shared library.")
SET (CMAKE_SHLIB_LD_LIBS "@CMAKE_SHLIB_LD_LIBS@" CACHE STRING
"Libraries used by LD for shared libraries.")
SET (CMAKE_SHLIB_RUNTIME_FLAG "@CMAKE_SHLIB_RUNTIME_FLAG@" CACHE STRING
"Flag used to specify run-time search paths.")
SET (CMAKE_SHLIB_RUNTIME_SEP "@CMAKE_SHLIB_RUNTIME_SEP@" CACHE STRING
"If null, each runtime path is a separate option. Otherwise, they are all joined, separated by this.")
SET (CMAKE_SKIP_RPATH "NO" CACHE BOOL
"If set, runtime paths are not added when using shared libraries.")
# support for X11
SET (CMAKE_X_LIBS "@X_PRE_LIBS@ @X_LIBS@ -lX11 -lXext @X_EXTRA_LIBS@" CACHE STRING
"Libraries and options used in X11 programs.")
SET (CMAKE_X_CFLAGS "@X_CFLAGS@" CACHE STRING
"X11 extra flags.")
SET (CMAKE_HAS_X @CMAKE_HAS_X@ CACHE INTERNAL
"Is X11 around.")
SET (CMAKE_SYSTEM @CMAKE_SYSTEM@ CACHE INTERNAL
"What system is this. Result of uname.")
SET (CMAKE_BUILD_TOOL make CACHE INTERNAL
"What is the target build tool cmake is generating for.")
SET (CMAKE_ANSI_CFLAGS "@CMAKE_ANSI_CFLAGS@" CACHE INTERNAL
"What flags are required by the c++ compiler to make it ansi.")
SET (CMAKE_SIZEOF_INT @CMAKE_SIZEOF_INT@ CACHE INTERNAL "Size of int data type")
SET (CMAKE_SIZEOF_LONG @CMAKE_SIZEOF_LONG@ CACHE INTERNAL "Size of long data type")
SET (CMAKE_SIZEOF_VOID_P @CMAKE_SIZEOF_VOID_P@ CACHE INTERNAL "Size of void* data type")
SET (CMAKE_SIZEOF_CHAR @CMAKE_SIZEOF_CHAR@ CACHE INTERNAL "Size of char data type")
SET (CMAKE_SIZEOF_SHORT @CMAKE_SIZEOF_SHORT@ CACHE INTERNAL "Size of short data type")
SET (CMAKE_SIZEOF_FLOAT @CMAKE_SIZEOF_FLOAT@ CACHE INTERNAL "Size of float data type")
SET (CMAKE_SIZEOF_DOUBLE @CMAKE_SIZEOF_DOUBLE@ CACHE INTERNAL "Size of double data type")
FIND_PROGRAM(CMAKE_MAKE_PROGRAM NAMES gmake make )
# The following variables are advanced
MARK_AS_ADVANCED(
CMAKE_X_LIBS
CMAKE_USE_WIN32_THREADS
CMAKE_USE_SPROC
CMAKE_USE_PTHREADS
CMAKE_OBJECT_FILE_SUFFIX
CMAKE_EXECUTABLE_SUFFIX
CMAKE_STATICLIB_SUFFIX
CMAKE_SHLIB_SUFFIX
CMAKE_MODULE_SUFFIX
CMAKE_C_COMPILER
CMAKE_HP_PTHREADS
CMAKE_WORDS_BIGENDIAN
CMAKE_RANLIB
CMAKE_AR
CMAKE_AR_ARGS
CMAKE_SHLIB_CFLAGS
CMAKE_SHLIB_BUILD_FLAGS
CMAKE_MODULE_BUILD_FLAGS
CMAKE_THREAD_LIBS
CMAKE_DL_LIBS
CMAKE_SHLIB_LINK_FLAGS
CMAKE_MODULE_LINK_FLAGS
CMAKE_SHLIB_LD_LIBS
CMAKE_SHLIB_RUNTIME_FLAG
CMAKE_SHLIB_RUNTIME_SEP
CMAKE_SKIP_RPATH
CMAKE_X_CFLAGS
CMAKE_ANSI_CFLAGS
CMAKE_MAKE_PROGRAM
)

View File

@ -0,0 +1,51 @@
#
# CMakeLocal.make.in should be in the directory where you run configure
# in, which need not be the source directory
#
SET (CMAKE_AR "@CMAKE_AR@" CACHE FILEPATH
"Archive program used to make archive libraries.")
SET (CMAKE_AR_ARGS "@CMAKE_AR_ARGS@" CACHE STRING
"Arguments for CMAKE_AR program to create an archive library.")
SET (CMAKE_CXX_COMPILER "@CXX@" CACHE FILEPATH
"Name of C++ compiler used.")
SET (CMAKE_CXX_FLAGS "@CXXFLAGS@" CACHE STRING
"Flags used by CXX compiler.")
SET (CMAKE_TEMPLATE_FLAGS "@CMAKE_TEMPLATE_FLAGS@" CACHE STRING
"CXX template flags used by compiler.")
SET (CMAKE_NO_ANSI_STREAM_HEADERS @CMAKE_NO_ANSI_STREAM_HEADERS@ CACHE INTERNAL
"Does the compiler support headers like iostream.")
SET (CMAKE_NO_STD_NAMESPACE @CMAKE_NO_STD_NAMESPACE@ CACHE INTERNAL
"Does the compiler support std::.")
SET (CMAKE_NO_ANSI_FOR_SCOPE @CMAKE_NO_ANSI_FOR_SCOPE@ CACHE INTERNAL
"Does the compiler support ansi for scoping.")
SET (CMAKE_COMPILER_IS_GNUCXX @CMAKE_COMPILER_IS_GNUCXX@ CACHE INTERNAL
"Is the compile GNU C++.")
SET (CMAKE_ANSI_CXXFLAGS "@CMAKE_ANSI_CXXFLAGS@" CACHE INTERNAL
"What flags are required by the c++ compiler to make it ansi.")
SET (CMAKE_NO_EXPLICIT_TEMPLATE_INSTANTIATION @CMAKE_NO_EXPLICIT_TEMPLATE_INSTANTIATION@ CACHE INTERNAL
"Does the compiler not support explicit template instantiation.")
# The following variables are advanced
MARK_AS_ADVANCED(
CMAKE_CXX_COMPILER
CMAKE_AR
CMAKE_AR_ARGS
CMAKE_TEMPLATE_FLAGS
CMAKE_NO_ANSI_STREAM_HEADERS
CMAKE_NO_ANSI_FOR_SCOPE
CMAKE_NO_STD_NAMESPACE
CMAKE_COMPILER_IS_GNUCXX
CMAKE_ANSI_CXXFLAGS
CMAKE_NO_EXPLICIT_TEMPLATE_INSTANTIATION
)

File diff suppressed because it is too large Load Diff

View File

@ -1,8 +1,6 @@
# Process this file with autoconf to produce a configure script.
AC_INIT()
CMAKE_CONFIG_DIR=`pwd`
AC_SUBST(CMAKE_CONFIG_DIR)
#
# check for some programs we use
@ -10,16 +8,13 @@ AC_SUBST(CMAKE_CONFIG_DIR)
# save the CFLAGS and CXXFLAGS specified by the user
save_CFLAGS=$CFLAGS
save_CXXFLAGS=$CXXFLAGS
AC_PROG_CC
AC_PROG_CXX
# restore the flags specified by the user and get rid of any flags
# found by autoconf (we do not want -02 -g by default)
CFLAGS=$save_CFLAGS
CXXFLAGS=$save_CXXFLAGS
AC_PROG_RANLIB
@ -163,7 +158,7 @@ case $system in
CMAKE_MODULE_LINK_FLAGS=""
CMAKE_SHLIB_RUNTIME_FLAG=""
CMAKE_SHLIB_RUNTIME_SEP=""
if test $ac_cv_prog_gxx = yes; then
if test $ac_cv_prog_gcc = yes; then
CMAKE_SHLIB_BUILD_FLAGS='-shared -Wl,-G'
CMAKE_MODULE_BUILD_FLAGS='-shared -Wl,-G'
CMAKE_SHLIB_LINK_FLAGS='-Wl,-brtl'
@ -197,7 +192,7 @@ case $system in
CMAKE_MODULE_LINK_FLAGS='-Wl,+s'
CMAKE_SHLIB_RUNTIME_FLAG='-Wl,+b,'
CMAKE_SHLIB_RUNTIME_SEP=':'
if test "$CC" = "gcc" -o `$CC -v 2>&1 | grep -c gcc` != "0" ; then
if test $ac_cv_prog_gcc = yes; then
CMAKE_SHLIB_CFLAGS="-fPIC"
CMAKE_SHLIB_BUILD_FLAGS='-shared -Wl,-E -Wl,-b'
CMAKE_SHLIB_LINK_FLAGS='-Wl,+s'
@ -358,7 +353,7 @@ case $system in
CMAKE_SHLIB_LINK_FLAGS=''
CMAKE_MODULE_BUILD_FLAGS='-shared -Wl,-expect_unresolved,\\*'
CMAKE_MODULE_LINK_FLAGS=''
if test $ac_cv_prog_gxx = yes; then
if test $ac_cv_prog_gcc = yes; then
CMAKE_SHLIB_RUNTIME_FLAG="-Wl,-rpath,"
else
CMAKE_SHLIB_RUNTIME_FLAG="-rpath "
@ -426,7 +421,7 @@ case $system in
CMAKE_MODULE_LINK_FLAGS=''
CMAKE_SHLIB_RUNTIME_FLAG="-R "
CMAKE_SHLIB_RUNTIME_SEP=":"
if test "$CC" = "gcc" -o `$CC -v 2>&1 | grep -c gcc` != "0" ; then
if test $ac_cv_prog_gcc = yes; then
CMAKE_SHLIB_BUILD_FLAGS='-shared -nostdlib'
CMAKE_SHLIB_LINK_FLAGS=''
CMAKE_MODULE_BUILD_FLAGS='-shared -nostdlib'
@ -464,7 +459,7 @@ export CMAKE_MODULE_SUFFIX
# If we're running gcc, then change the C flags for compiling shared
# libraries to the right flags for gcc, instead of those for the
# standard manufacturer compiler.
if test "$CC" = "gcc" -o `$CC -v 2>&1 | grep -c gcc` != "0" ; then
if test $ac_cv_prog_gcc = yes; then
CMAKE_SHLIB_CFLAGS="-fPIC"
fi
# if running on cygwin remove -fPIC flag
@ -477,27 +472,6 @@ case $system in
;;
esac
CMAKE_NO_EXPLICIT_TEMPLATE_INSTANTIATION=""
if test $ac_cv_prog_gxx = no; then
echo $ac_n "checking whether ${CXX} supports explicit instantiation""... $ac_c" 1>&6
echo 'template<class T>class x{};template class x<int>;' > conftest.cc
if test -z "`${CXX} -c conftest.cc 2>&1`"; then
echo "$ac_t""yes" 1>&6
else
echo "$ac_t""no" 1>&6
CMAKE_NO_EXPLICIT_TEMPLATE_INSTANTIATION="1"
fi
rm -f conftest*
fi
# if running on darwin no explicit template instantiations even though
# syntax is supported.
case $system in
Darwin*)
CMAKE_NO_EXPLICIT_TEMPLATE_INSTANTIATION="1"
;;
esac
AC_SUBST(CMAKE_NO_EXPLICIT_TEMPLATE_INSTANTIATION)
# If the user has supplied C flags for compiling shared objects, use
# those instead
if test "${SHLIB_CFLAGS}" != ""; then
@ -511,7 +485,6 @@ AC_SUBST(CMAKE_SHLIB_BUILD_FLAGS)
AC_SUBST(CMAKE_MODULE_LINK_FLAGS)
AC_SUBST(CMAKE_MODULE_BUILD_FLAGS)
AC_SUBST(CMAKE_SHLIB_CFLAGS)
AC_SUBST(CMAKE_LIB_EXT)
AC_SUBST(CMAKE_DL_LIBS)
AC_SUBST(CMAKE_SHLIB_LD_LIBS)
AC_SUBST(CMAKE_SHLIB_SUFFIX)
@ -612,9 +585,8 @@ AC_SUBST(CMAKE_THREAD_LIBS)
CMAKE_ANSI_CFLAGS=""
CMAKE_ANSI_CXXFLAGS=""
# on hp use -Aa for ansi
if test $ac_cv_prog_gxx = no; then
if test $ac_cv_prog_gcc = no; then
case $system in
HP-UX-*)
echo $ac_n "checking whether ${CC} accepts -Aa""... $ac_c" 1>&6
@ -634,132 +606,26 @@ case $system in
fi
rm -f conftest*
;;
IRIX-5* | IRIX-6* | IRIX64-6* | IRIX-64-6*)
echo $ac_n "checking whether ${CXX} accepts -LANG:std""... $ac_c" 1>&6
echo 'void f(){}' > conftest.c
if test -z "`${CXX} -LANG:std -c conftest.c 2>&1`"; then
echo "$ac_t""yes" 1>&6
CMAKE_ANSI_CXXFLAGS="-LANG:std"
else
echo "$ac_t""no" 1>&6
fi
rm -f conftest*
;;
esac
fi
AC_SUBST(CMAKE_ANSI_CFLAGS)
AC_SUBST(CMAKE_ANSI_CXXFLAGS)
# if we are not running g++ then we might need some other flags
# to get the templates compiled correctly
CMAKE_TEMPLATE_FLAGS=""
if test $ac_cv_prog_gxx = no; then
echo $ac_n "checking whether ${CXX} accepts -ptused -no_prelink""... $ac_c" 1>&6
echo 'void f(){}' > conftest.cc
if test -z "`${CXX} -ptused -no_prelink -c conftest.cc 2>&1`"; then
echo "$ac_t""yes" 1>&6
CMAKE_TEMPLATE_FLAGS="-ptused -no_prelink"
else
echo "$ac_t""no" 1>&6
fi
rm -f conftest*
fi
AC_SUBST(CMAKE_TEMPLATE_FLAGS)
# check no g++ compilers to see if they have the standard
# ansi stream files (without the .h)
if test $ac_cv_prog_gxx = no; then
AC_MSG_CHECKING( ansi standard C++ stream headers )
rm -rf conftest.*
cat > conftest.cc <<!
#include <iostream>
!
if test -z "`${CXX} ${CMAKE_ANSI_CXXFLAGS} $CXXFLAGS $CPPFLAGS -c conftest.cc 2>&1`"; then
echo "$ac_t""yes" 1>&6
else
CMAKE_NO_ANSI_STREAM_HEADERS="1"
echo "$ac_t""no" 1>&6
fi
fi
AC_SUBST(CMAKE_NO_ANSI_STREAM_HEADERS)
# check to see if stl is in the std namespace
if test $ac_cv_prog_gxx = no; then
AC_MSG_CHECKING( ansi standard namespace support )
rm -rf conftest.*
cat > conftest.cc <<!
#include <list>
void foo() { std::list<int> l; }
!
if test -z "`${CXX} ${CMAKE_ANSI_CXXFLAGS} $CXXFLAGS $CPPFLAGS -c conftest.cc 2>&1`"; then
echo "$ac_t""yes" 1>&6
else
CMAKE_NO_STD_NAMESPACE="1"
echo "$ac_t""no" 1>&6
fi
fi
AC_SUBST(CMAKE_NO_STD_NAMESPACE)
# check to see if for scoping is supported
if test $ac_cv_prog_gxx = no; then
AC_MSG_CHECKING( ansi for scope support )
rm -rf conftest.*
cat > conftest.cc <<!
void foo() { for(int i;;); for(int i;;); }
!
if test -z "`${CXX} ${CMAKE_ANSI_CXXFLAGS} $CXXFLAGS $CPPFLAGS -c conftest.cc 2>&1`"; then
echo "$ac_t""yes" 1>&6
else
CMAKE_NO_ANSI_FOR_SCOPE="1"
echo "$ac_t""no" 1>&6
fi
fi
AC_SUBST(CMAKE_NO_ANSI_FOR_SCOPE)
if test "$CC" = "gcc" -o `$CC -v 2>&1 | grep -c gcc` != "0" ; then
if test $ac_cv_prog_gcc = yes; then
SHLIB_CFLAGS="-fPIC"
fi
# find make to use to build cmake, prefer gmake
AC_PATH_PROGS(RUNMAKE, gmake make)
AC_PATH_PROGS(CMAKE_AR_TMP, ar)
CMAKE_AR="$CMAKE_AR_TMP"
CMAKE_AR_ARGS="cr"
# if on SunOS and not using gXX then use the compiler to make .a libs
case $system in
SunOS-5*)
if test $ac_cv_prog_gxx = yes; then
:
else
echo "Using $CXX -xar -o for creating .a libraries"
CMAKE_AR="$CXX"
CMAKE_AR_ARGS="-xar -o"
fi
;;
IRIX*)
if test $ac_cv_prog_gxx = yes; then
:
else
echo "Using $CXX -xar -o for creating .a libraries"
CMAKE_AR="$CXX"
CMAKE_AR_ARGS="-ar -o"
fi
;;
esac
AC_SUBST(CMAKE_AR)
AC_SUBST(CMAKE_AR_ARGS)
CMAKE_COMPILER_IS_GNUGXX=0
if test $ac_cv_prog_gxx = yes; then
CMAKE_COMPILER_IS_GNUCXX=1
fi
CMAKE_SYSTEM="$system"
AC_SUBST(CMAKE_SYSTEM)
AC_SUBST(CMAKE_COMPILER_IS_GNUCXX)
# generate output files.
# create mkdir files just to make some of the directories
AC_OUTPUT( CMakeSystemConfig.cmake )
AC_OUTPUT( CCMakeSystemConfig.cmake )

1131
Templates/cxxconfigure Executable file

File diff suppressed because it is too large Load Diff

165
Templates/cxxconfigure.in Normal file
View File

@ -0,0 +1,165 @@
# Process this file with autoconf to produce a configure script.
AC_INIT()
#
# check for some programs we use
#
# save the CXXFLAGS specified by the user
save_CXXFLAGS=$CXXFLAGS
AC_PROG_CXX
# restore the flags specified by the user and get rid of any flags
# found by autoconf (we do not want -02 -g by default)
CXXFLAGS=$save_CXXFLAGS
CMAKE_NO_EXPLICIT_TEMPLATE_INSTANTIATION=""
if test $ac_cv_prog_gxx = no; then
echo $ac_n "checking whether ${CXX} supports explicit instantiation""... $ac_c" 1>&6
echo 'template<class T>class x{};template class x<int>;' > conftest.cc
if test -z "`${CXX} -c conftest.cc 2>&1`"; then
echo "$ac_t""yes" 1>&6
else
echo "$ac_t""no" 1>&6
CMAKE_NO_EXPLICIT_TEMPLATE_INSTANTIATION="1"
fi
rm -f conftest*
fi
# if running on darwin no explicit template instantiations even though
# syntax is supported.
case $system in
Darwin*)
CMAKE_NO_EXPLICIT_TEMPLATE_INSTANTIATION="1"
;;
esac
AC_SUBST(CMAKE_NO_EXPLICIT_TEMPLATE_INSTANTIATION)
CMAKE_ANSI_CXXFLAGS=""
# on hp use -Aa for ansi
if test $ac_cv_prog_gxx = no; then
case $system in
IRIX-5* | IRIX-6* | IRIX64-6* | IRIX-64-6*)
echo $ac_n "checking whether ${CXX} accepts -LANG:std""... $ac_c" 1>&6
echo 'void f(){}' > conftest.c
if test -z "`${CXX} -LANG:std -c conftest.c 2>&1`"; then
echo "$ac_t""yes" 1>&6
CMAKE_ANSI_CXXFLAGS="-LANG:std"
else
echo "$ac_t""no" 1>&6
fi
rm -f conftest*
;;
esac
fi
AC_SUBST(CMAKE_ANSI_CXXFLAGS)
# if we are not running g++ then we might need some other flags
# to get the templates compiled correctly
CMAKE_TEMPLATE_FLAGS=""
if test $ac_cv_prog_gxx = no; then
echo $ac_n "checking whether ${CXX} accepts -ptused -no_prelink""... $ac_c" 1>&6
echo 'void f(){}' > conftest.cc
if test -z "`${CXX} -ptused -no_prelink -c conftest.cc 2>&1`"; then
echo "$ac_t""yes" 1>&6
CMAKE_TEMPLATE_FLAGS="-ptused -no_prelink"
else
echo "$ac_t""no" 1>&6
fi
rm -f conftest*
fi
AC_SUBST(CMAKE_TEMPLATE_FLAGS)
# check no g++ compilers to see if they have the standard
# ansi stream files (without the .h)
if test $ac_cv_prog_gxx = no; then
AC_MSG_CHECKING( ansi standard C++ stream headers )
rm -rf conftest.*
cat > conftest.cc <<!
#include <iostream>
!
if test -z "`${CXX} ${CMAKE_ANSI_CXXFLAGS} $CXXFLAGS $CPPFLAGS -c conftest.cc 2>&1`"; then
echo "$ac_t""yes" 1>&6
else
CMAKE_NO_ANSI_STREAM_HEADERS="1"
echo "$ac_t""no" 1>&6
fi
fi
AC_SUBST(CMAKE_NO_ANSI_STREAM_HEADERS)
# check to see if stl is in the std namespace
if test $ac_cv_prog_gxx = no; then
AC_MSG_CHECKING( ansi standard namespace support )
rm -rf conftest.*
cat > conftest.cc <<!
#include <list>
void foo() { std::list<int> l; }
!
if test -z "`${CXX} ${CMAKE_ANSI_CXXFLAGS} $CXXFLAGS $CPPFLAGS -c conftest.cc 2>&1`"; then
echo "$ac_t""yes" 1>&6
else
CMAKE_NO_STD_NAMESPACE="1"
echo "$ac_t""no" 1>&6
fi
fi
AC_SUBST(CMAKE_NO_STD_NAMESPACE)
# check to see if for scoping is supported
if test $ac_cv_prog_gxx = no; then
AC_MSG_CHECKING( ansi for scope support )
rm -rf conftest.*
cat > conftest.cc <<!
void foo() { for(int i;;); for(int i;;); }
!
if test -z "`${CXX} ${CMAKE_ANSI_CXXFLAGS} $CXXFLAGS $CPPFLAGS -c conftest.cc 2>&1`"; then
echo "$ac_t""yes" 1>&6
else
CMAKE_NO_ANSI_FOR_SCOPE="1"
echo "$ac_t""no" 1>&6
fi
fi
AC_SUBST(CMAKE_NO_ANSI_FOR_SCOPE)
# find make to use to build cmake, prefer gmake
AC_PATH_PROGS(CMAKE_AR_TMP, ar)
CMAKE_AR="$CMAKE_AR_TMP"
CMAKE_AR_ARGS="cr"
# if on SunOS and not using gXX then use the compiler to make .a libs
case $system in
SunOS-5*)
if test $ac_cv_prog_gxx = yes; then
:
else
echo "Using $CXX -xar -o for creating .a libraries"
CMAKE_AR="$CXX"
CMAKE_AR_ARGS="-xar -o"
fi
;;
IRIX*)
if test $ac_cv_prog_gxx = yes; then
:
else
echo "Using $CXX -xar -o for creating .a libraries"
CMAKE_AR="$CXX"
CMAKE_AR_ARGS="-ar -o"
fi
;;
esac
AC_SUBST(CMAKE_AR)
AC_SUBST(CMAKE_AR_ARGS)
CMAKE_COMPILER_IS_GNUGXX=0
if test $ac_cv_prog_gxx = yes; then
CMAKE_COMPILER_IS_GNUCXX=1
fi
AC_SUBST(CMAKE_COMPILER_IS_GNUCXX)
# generate output files.
# create mkdir files just to make some of the directories
AC_OUTPUT( CXXCMakeSystemConfig.cmake )

View File

@ -0,0 +1,3 @@
# a simple C only test case
PROJECT (conly C)
ADD_EXECUTABLE (conly conly.c)

4
Tests/COnly/conly.c Normal file
View File

@ -0,0 +1,4 @@
int main ()
{
return 0;
}