summaryrefslogtreecommitdiffstats
path: root/Source
diff options
context:
space:
mode:
authorAlexander Neundorf <neundorf@kde.org>2007-06-04 21:08:46 (GMT)
committerAlexander Neundorf <neundorf@kde.org>2007-06-04 21:08:46 (GMT)
commit74750610cf29e5c0b92feb1f7b8c030e1f0e8448 (patch)
treebb1e7eedaf39b41cb4de3545a521eaa325d22689 /Source
parente40c51dddf7428d25543c0f05d6a6cc16454c97f (diff)
downloadCMake-74750610cf29e5c0b92feb1f7b8c030e1f0e8448.zip
CMake-74750610cf29e5c0b92feb1f7b8c030e1f0e8448.tar.gz
CMake-74750610cf29e5c0b92feb1f7b8c030e1f0e8448.tar.bz2
ENH: determine typesize by compiling a file and reading strings from the compiled output.
Tested with various gcc, XCode, MSVC7, sdcc For OSX when doing TRY_COMPILE() CMAKE_OSX_ARCHITECTURES is used, if there are different results an error is generated. CMAKE_OSX_ARCHITECTURES can be overwritten for the TRY_COMPILES with CMAKE_TRY_COMPILE_OSX_ARCHITECTURES. Alex
Diffstat (limited to 'Source')
-rw-r--r--Source/cmCoreTryCompile.cxx27
-rw-r--r--Source/cmLocalGenerator.cxx3
2 files changed, 24 insertions, 6 deletions
diff --git a/Source/cmCoreTryCompile.cxx b/Source/cmCoreTryCompile.cxx
index ee4fe97..8abd690 100644
--- a/Source/cmCoreTryCompile.cxx
+++ b/Source/cmCoreTryCompile.cxx
@@ -225,13 +225,30 @@ int cmCoreTryCompile::TryCompileCode(std::vector<std::string> const& argv)
}
fprintf(fout, ")\n");
}
- const char* platformOptions =
- this->Makefile->GetDefinition("CMAKE_TRY_COMPILE_PLATFORM_OPTIONS");
- if ( platformOptions )
+
+ /* for the TRY_COMPILEs we want to be able to specify the architecture.
+ So the user can set CMAKE_OSX_ARCHITECTURE to i386;ppc and then set
+ CMAKE_TRY_COMPILE_OSX_ARCHITECTURE first to i386 and then to ppc to
+ have the tests run for each specific architecture. Since
+ cmLocalGenerator doesn't allow building for "the other"
+ architecture only via CMAKE_OSX_ARCHITECTURES,use to CMAKE_DO_TRY_COMPILE
+ to enforce it for this case here.
+ */
+ cmakeFlags.push_back("-DCMAKE_DO_TRY_COMPILE=TRUE");
+ if(this->Makefile->GetDefinition("CMAKE_TRY_COMPILE_OSX_ARCHITECTURES")!=0)
{
- fprintf(fout, "%s\n", platformOptions);
+ std::string flag="-DCMAKE_OSX_ARCHITECTURES=";
+ flag += this->Makefile->GetSafeDefinition(
+ "CMAKE_TRY_COMPILE_OSX_ARCHITECTURES");
+ cmakeFlags.push_back(flag);
}
-
+ else if (this->Makefile->GetDefinition("CMAKE_OSX_ARCHITECTURES")!=0)
+ {
+ std::string flag="-DCMAKE_OSX_ARCHITECTURES=";
+ flag += this->Makefile->GetSafeDefinition("CMAKE_OSX_ARCHITECTURES");
+ cmakeFlags.push_back(flag);
+ }
+
fprintf(fout, "ADD_EXECUTABLE(cmTryCompileExec \"%s\")\n",source.c_str());
fprintf(fout,
"TARGET_LINK_LIBRARIES(cmTryCompileExec ${LINK_LIBRARIES})\n");
diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx
index f831282..8f2bcca 100644
--- a/Source/cmLocalGenerator.cxx
+++ b/Source/cmLocalGenerator.cxx
@@ -1927,7 +1927,8 @@ void cmLocalGenerator::AddLanguageFlags(std::string& flags,
std::vector<std::string> archs;
cmSystemTools::ExpandListArgument(std::string(osxArch),
archs);
- if(archs.size() > 1)
+ if((archs.size() > 1)
+ || ((archs.size()== 1) && this->Makefile->IsOn("CMAKE_DO_TRY_COMPILE")))
{
for( std::vector<std::string>::iterator i = archs.begin();
i != archs.end(); ++i)