diff options
author | Brad King <brad.king@kitware.com> | 2010-02-16 15:35:33 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2010-02-16 15:35:33 (GMT) |
commit | f195a131cc8b216f8e729179ca8ffac7be2dfe06 (patch) | |
tree | 6b78a4cd8b4421abf73d521b14a710cbcb673eac | |
parent | 5f926016a9ddb348a494688b979f4ffef978cac7 (diff) | |
download | CMake-f195a131cc8b216f8e729179ca8ffac7be2dfe06.zip CMake-f195a131cc8b216f8e729179ca8ffac7be2dfe06.tar.gz CMake-f195a131cc8b216f8e729179ca8ffac7be2dfe06.tar.bz2 |
CMake 2.8.1-rc3
-rw-r--r-- | CMakeLists.txt | 2 | ||||
-rw-r--r-- | ChangeLog.manual | 6 | ||||
-rw-r--r-- | Modules/CMakeTestCCompiler.cmake | 8 | ||||
-rw-r--r-- | Modules/CMakeTestCXXCompiler.cmake | 8 | ||||
-rw-r--r-- | Modules/CMakeTestCompilerCommon.cmake | 21 | ||||
-rw-r--r-- | Modules/CMakeTestFortranCompiler.cmake | 8 | ||||
-rw-r--r-- | Source/cmExtraEclipseCDT4Generator.cxx | 38 | ||||
-rw-r--r-- | Source/cmGlobalXCodeGenerator.cxx | 16 | ||||
-rw-r--r-- | Source/kwsys/kwsysPlatformTests.cmake | 2 |
9 files changed, 79 insertions, 30 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index f4faca0..e83abf7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -329,7 +329,7 @@ ENDMACRO (CMAKE_BUILD_UTILITIES) SET(CMake_VERSION_MAJOR 2) SET(CMake_VERSION_MINOR 8) SET(CMake_VERSION_PATCH 1) -SET(CMake_VERSION_RC 2) +SET(CMake_VERSION_RC 3) # We use odd minor numbers for development versions. # Use a date for the development patch level. diff --git a/ChangeLog.manual b/ChangeLog.manual index 60b4b43..a4dc089 100644 --- a/ChangeLog.manual +++ b/ChangeLog.manual @@ -1,3 +1,9 @@ +Changes in CMake 2.8.1 RC 3 +- Add CMAKE_XCODE_ATTRIBUTE_<attr> interface to set compiler (#9125) +- Fix Eclipse files for targets in subdirectories (#9978) +- Fix custom command rule hashes to avoid extra rebuilds +- Print non-make generator name in initial compiler test + Changes in CMake 2.8.1 RC 2 - CPack: Avoid deleting long PATH values with NSIS (#10257) - CTest: Fix and test cost-based test scheduler diff --git a/Modules/CMakeTestCCompiler.cmake b/Modules/CMakeTestCCompiler.cmake index 856a65b..eeaff7d 100644 --- a/Modules/CMakeTestCCompiler.cmake +++ b/Modules/CMakeTestCCompiler.cmake @@ -12,13 +12,15 @@ # (To distributed this file outside of CMake, substitute the full # License text for the above reference.) +INCLUDE(CMakeTestCompilerCommon) + # This file is used by EnableLanguage in cmGlobalGenerator to # determine that that selected C compiler can actually compile # and link the most basic of programs. If not, a fatal error # is set and cmake stops processing commands and will not generate # any makefiles or projects. IF(NOT CMAKE_C_COMPILER_WORKS) - MESSAGE(STATUS "Check for working C compiler: ${CMAKE_C_COMPILER}") + PrintTestCompilerStatus("C" "") FILE(WRITE ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/testCCompiler.c "#ifdef __cplusplus\n" "# error \"The CMAKE_C_COMPILER is set to a C++ compiler\"\n" @@ -38,7 +40,7 @@ IF(NOT CMAKE_C_COMPILER_WORKS) ENDIF(NOT CMAKE_C_COMPILER_WORKS) IF(NOT CMAKE_C_COMPILER_WORKS) - MESSAGE(STATUS "Check for working C compiler: ${CMAKE_C_COMPILER} -- broken") + PrintTestCompilerStatus("C" " -- broken") FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log "Determining if the C compiler works failed with " "the following output:\n${OUTPUT}\n\n") @@ -53,7 +55,7 @@ IF(NOT CMAKE_C_COMPILER_WORKS) "CMake will not be able to correctly generate this project.") ELSE(NOT CMAKE_C_COMPILER_WORKS) IF(C_TEST_WAS_RUN) - MESSAGE(STATUS "Check for working C compiler: ${CMAKE_C_COMPILER} -- works") + PrintTestCompilerStatus("C" " -- works") FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log "Determining if the C compiler works passed with " "the following output:\n${OUTPUT}\n\n") diff --git a/Modules/CMakeTestCXXCompiler.cmake b/Modules/CMakeTestCXXCompiler.cmake index 81b8484..72bb8f2 100644 --- a/Modules/CMakeTestCXXCompiler.cmake +++ b/Modules/CMakeTestCXXCompiler.cmake @@ -12,13 +12,15 @@ # (To distributed this file outside of CMake, substitute the full # License text for the above reference.) +INCLUDE(CMakeTestCompilerCommon) + # This file is used by EnableLanguage in cmGlobalGenerator to # determine that that selected C++ compiler can actually compile # and link the most basic of programs. If not, a fatal error # is set and cmake stops processing commands and will not generate # any makefiles or projects. IF(NOT CMAKE_CXX_COMPILER_WORKS) - MESSAGE(STATUS "Check for working CXX compiler: ${CMAKE_CXX_COMPILER}") + PrintTestCompilerStatus("CXX" "") FILE(WRITE ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/testCXXCompiler.cxx "#ifndef __cplusplus\n" "# error \"The CMAKE_CXX_COMPILER is set to a C compiler\"\n" @@ -31,7 +33,7 @@ IF(NOT CMAKE_CXX_COMPILER_WORKS) ENDIF(NOT CMAKE_CXX_COMPILER_WORKS) IF(NOT CMAKE_CXX_COMPILER_WORKS) - MESSAGE(STATUS "Check for working CXX compiler: ${CMAKE_CXX_COMPILER} -- broken") + PrintTestCompilerStatus("CXX" " -- broken") # if the compiler is broken make sure to remove the platform file # since Windows-cl configures both c/cxx files both need to be removed # when c or c++ fails @@ -46,7 +48,7 @@ IF(NOT CMAKE_CXX_COMPILER_WORKS) "CMake will not be able to correctly generate this project.") ELSE(NOT CMAKE_CXX_COMPILER_WORKS) IF(CXX_TEST_WAS_RUN) - MESSAGE(STATUS "Check for working CXX compiler: ${CMAKE_CXX_COMPILER} -- works") + PrintTestCompilerStatus("CXX" " -- works") FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log "Determining if the CXX compiler works passed with " "the following output:\n${OUTPUT}\n\n") diff --git a/Modules/CMakeTestCompilerCommon.cmake b/Modules/CMakeTestCompilerCommon.cmake new file mode 100644 index 0000000..4307627 --- /dev/null +++ b/Modules/CMakeTestCompilerCommon.cmake @@ -0,0 +1,21 @@ + +#============================================================================= +# Copyright 2010 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + +function(PrintTestCompilerStatus LANG MSG) + IF(CMAKE_GENERATOR MATCHES Make) + MESSAGE(STATUS "Check for working ${LANG} compiler: ${CMAKE_${LANG}_COMPILER}${MSG}") + ELSE() + MESSAGE(STATUS "Check for working ${LANG} compiler using: ${CMAKE_GENERATOR}${MSG}") + ENDIF() +endfunction() diff --git a/Modules/CMakeTestFortranCompiler.cmake b/Modules/CMakeTestFortranCompiler.cmake index 31857b1..6f419c2 100644 --- a/Modules/CMakeTestFortranCompiler.cmake +++ b/Modules/CMakeTestFortranCompiler.cmake @@ -12,13 +12,15 @@ # (To distributed this file outside of CMake, substitute the full # License text for the above reference.) +INCLUDE(CMakeTestCompilerCommon) + # This file is used by EnableLanguage in cmGlobalGenerator to # determine that that selected Fortran compiler can actually compile # and link the most basic of programs. If not, a fatal error # is set and cmake stops processing commands and will not generate # any makefiles or projects. IF(NOT CMAKE_Fortran_COMPILER_WORKS) - MESSAGE(STATUS "Check for working Fortran compiler: ${CMAKE_Fortran_COMPILER}") + PrintTestCompilerStatus("Fortran" "") FILE(WRITE ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/testFortranCompiler.f " PROGRAM TESTFortran PRINT *, 'Hello' @@ -31,7 +33,7 @@ IF(NOT CMAKE_Fortran_COMPILER_WORKS) ENDIF(NOT CMAKE_Fortran_COMPILER_WORKS) IF(NOT CMAKE_Fortran_COMPILER_WORKS) - MESSAGE(STATUS "Check for working Fortran compiler: ${CMAKE_Fortran_COMPILER} -- broken") + PrintTestCompilerStatus("Fortran" " -- broken") FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log "Determining if the Fortran compiler works failed with " "the following output:\n${OUTPUT}\n\n") @@ -41,7 +43,7 @@ IF(NOT CMAKE_Fortran_COMPILER_WORKS) "CMake will not be able to correctly generate this project.") ELSE(NOT CMAKE_Fortran_COMPILER_WORKS) IF(FORTRAN_TEST_WAS_RUN) - MESSAGE(STATUS "Check for working Fortran compiler: ${CMAKE_Fortran_COMPILER} -- works") + PrintTestCompilerStatus("Fortran" " -- works") FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log "Determining if the Fortran compiler works passed with " "the following output:\n${OUTPUT}\n\n") diff --git a/Source/cmExtraEclipseCDT4Generator.cxx b/Source/cmExtraEclipseCDT4Generator.cxx index 43c8b21..fe914fd 100644 --- a/Source/cmExtraEclipseCDT4Generator.cxx +++ b/Source/cmExtraEclipseCDT4Generator.cxx @@ -43,9 +43,9 @@ void cmExtraEclipseCDT4Generator entry.Name = this->GetName(); entry.Brief = "Generates Eclipse CDT 4.0 project files."; entry.Full = - "Project files for Eclipse will be created in the top directory " - "and will have a linked resource to every subdirectory which " - "features a CMakeLists.txt file containing a PROJECT() call." + "Project files for Eclipse will be created in the top directory. " + "In out of source builds, a linked resource to the top level source " + "directory will be created." "Additionally a hierarchy of makefiles is generated into the " "build tree. The appropriate make program can build the project through " "the default make target. A \"make install\" target is also provided."; @@ -392,24 +392,24 @@ void cmExtraEclipseCDT4Generator::CreateProjectFile() if (this->IsOutOfSourceBuild) { fout << "\t<linkedResources>\n"; - // for each sub project create a linked resource to the source dir - // - only if it is an out-of-source build - for (std::map<cmStdString, std::vector<cmLocalGenerator*> >::const_iterator - it = this->GlobalGenerator->GetProjectMap().begin(); - it != this->GlobalGenerator->GetProjectMap().end(); - ++it) - { - std::string linkSourceDirectory = this->GetEclipsePath( - it->second[0]->GetMakefile()->GetStartDirectory()); - // .project dir can't be subdir of a linked resource dir - if (!cmSystemTools::IsSubDirectory(this->HomeOutputDirectory.c_str(), + // create a linked resource to CMAKE_SOURCE_DIR + // (this is not done anymore for each project because of + // http://public.kitware.com/Bug/view.php?id=9978 and because I found it + // actually quite confusing in bigger projects with many directories and + // projects, Alex + + std::string sourceLinkedResourceName = "[Source directory]"; + std::string linkSourceDirectory = this->GetEclipsePath( + mf->GetStartDirectory()); + // .project dir can't be subdir of a linked resource dir + if (!cmSystemTools::IsSubDirectory(this->HomeOutputDirectory.c_str(), linkSourceDirectory.c_str())) - { - this->AppendLinkedResource(fout, it->first, - this->GetEclipsePath(linkSourceDirectory)); - this->SrcLinkedResources.push_back(it->first); - } + { + this->AppendLinkedResource(fout, sourceLinkedResourceName, + this->GetEclipsePath(linkSourceDirectory)); + this->SrcLinkedResources.push_back(sourceLinkedResourceName); } + // for EXECUTABLE_OUTPUT_PATH when not in binary dir this->AppendOutLinkedResource(fout, mf->GetSafeDefinition("CMAKE_RUNTIME_OUTPUT_DIRECTORY"), diff --git a/Source/cmGlobalXCodeGenerator.cxx b/Source/cmGlobalXCodeGenerator.cxx index 05c6848..0d6e389 100644 --- a/Source/cmGlobalXCodeGenerator.cxx +++ b/Source/cmGlobalXCodeGenerator.cxx @@ -2758,6 +2758,22 @@ void cmGlobalXCodeGenerator this->CreateString(deploymentTarget)); } + // Put this last so it can override existing settings + // Convert "CMAKE_XCODE_ATTRIBUTE_*" variables directly. + { + std::vector<std::string> vars = this->CurrentMakefile->GetDefinitions(); + for(std::vector<std::string>::const_iterator i = vars.begin(); + i != vars.end(); ++i) + { + if(i->find("CMAKE_XCODE_ATTRIBUTE_") == 0) + { + buildSettings->AddAttribute(i->substr(22).c_str(), + this->CreateString( + this->CurrentMakefile->GetDefinition(i->c_str()))); + } + } + } + std::string symroot = root->GetMakefile()->GetCurrentOutputDirectory(); symroot += "/build"; buildSettings->AddAttribute("SYMROOT", this->CreateString(symroot.c_str())); diff --git a/Source/kwsys/kwsysPlatformTests.cmake b/Source/kwsys/kwsysPlatformTests.cmake index 994b7e7..d042450 100644 --- a/Source/kwsys/kwsysPlatformTests.cmake +++ b/Source/kwsys/kwsysPlatformTests.cmake @@ -177,7 +177,7 @@ MACRO(KWSYS_PLATFORM_INFO_TEST lang var description) ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_FILES_DIRECTORY}/${var}.bin) # Compile the test binary. - IF(NOT DEFINED ${var}_COMPILED) + IF(NOT EXISTS ${KWSYS_PLATFORM_INFO_FILE}) MESSAGE(STATUS "${description}") TRY_COMPILE(${var}_COMPILED ${CMAKE_CURRENT_BINARY_DIR} |