diff options
author | Alexander Neundorf <neundorf@kde.org> | 2007-08-15 18:26:00 (GMT) |
---|---|---|
committer | Alexander Neundorf <neundorf@kde.org> | 2007-08-15 18:26:00 (GMT) |
commit | b100fe1fe1b94cd6cf48471a2d2c6f7b45f6e061 (patch) | |
tree | 7ba29c891423c671d9877ca1b934c65b4e3070c7 | |
parent | 984b0adc5f41f5ddb9087ab99d1ffa901674f442 (diff) | |
download | CMake-b100fe1fe1b94cd6cf48471a2d2c6f7b45f6e061.zip CMake-b100fe1fe1b94cd6cf48471a2d2c6f7b45f6e061.tar.gz CMake-b100fe1fe1b94cd6cf48471a2d2c6f7b45f6e061.tar.bz2 |
STYLE: don't use an extra file to generate CMakeSystem.cmake but instead
configure the toolchain file into it if required
-also search for nm, objdump and objcpy, so these can be used in macros
Alex
-rw-r--r-- | Modules/CMakeDetermineSystem.cmake | 29 | ||||
-rw-r--r-- | Modules/CMakeFindBinUtils.cmake | 12 | ||||
-rw-r--r-- | Modules/CMakeSystem.cmake.in | 2 | ||||
-rw-r--r-- | Modules/CMakeSystemWithToolchainFile.cmake.in | 15 |
4 files changed, 23 insertions, 35 deletions
diff --git a/Modules/CMakeDetermineSystem.cmake b/Modules/CMakeDetermineSystem.cmake index c7db715..aa3b59b 100644 --- a/Modules/CMakeDetermineSystem.cmake +++ b/Modules/CMakeDetermineSystem.cmake @@ -73,9 +73,10 @@ IF(CMAKE_TOOLCHAIN_FILE) ENDIF(NOT _INCLUDED_TOOLCHAIN_FILE) IF(_INCLUDED_TOOLCHAIN_FILE) - SET(CMAKE_TOOLCHAIN_FILE "${_INCLUDED_TOOLCHAIN_FILE}") + SET(CMAKE_TOOLCHAIN_FILE "${_INCLUDED_TOOLCHAIN_FILE}" CACHE FILEPATH "The CMake toolchain file" FORCE) ELSE(_INCLUDED_TOOLCHAIN_FILE) MESSAGE(FATAL_ERROR "Could not find toolchain file: ${CMAKE_TOOLCHAIN_FILE}") + SET(CMAKE_TOOLCHAIN_FILE "NOTFOUND" CACHE FILEPATH "The CMake toolchain file" FORCE) ENDIF(_INCLUDED_TOOLCHAIN_FILE) ENDIF(CMAKE_TOOLCHAIN_FILE) @@ -138,26 +139,16 @@ IF(CMAKE_BINARY_DIR) "The system is: ${CMAKE_SYSTEM_NAME} - ${CMAKE_SYSTEM_VERSION} - ${CMAKE_SYSTEM_PROCESSOR}\n") ENDIF(PRESET_CMAKE_SYSTEM_NAME) + # if a toolchain file is used, it needs to be included in the configured file, + # so settings done there are also available if they don't go in the cache and in TRY_COMPILE() + SET(INCLUDE_CMAKE_TOOLCHAIN_FILE_IF_REQUIRED) + IF(DEFINED CMAKE_TOOLCHAIN_FILE) + SET(INCLUDE_CMAKE_TOOLCHAIN_FILE_IF_REQUIRED "INCLUDE(\"${CMAKE_TOOLCHAIN_FILE}\")") + ENDIF(DEFINED CMAKE_TOOLCHAIN_FILE) - # if a toolchain file is used use configure_file() to copy it into the - # build tree, because this way e.g. ${CMAKE_SOURCE_DIR} will be replaced - # with its full path, and so it will also work when used in try_compile() - IF (CMAKE_TOOLCHAIN_FILE) - - SET(_OWN_DIR ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}) - CONFIGURE_FILE(${CMAKE_TOOLCHAIN_FILE} - ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeToolchainFile.cmake) - - CONFIGURE_FILE(${CMAKE_ROOT}/Modules/CMakeSystemWithToolchainFile.cmake.in + # configure variables set in this file for fast reload, the template file is defined at the top of this file + CONFIGURE_FILE(${CMAKE_ROOT}/Modules/CMakeSystem.cmake.in ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeSystem.cmake IMMEDIATE @ONLY) - ELSE (CMAKE_TOOLCHAIN_FILE) - - # configure variables set in this file for fast reload, the template file is defined at the top of this file - CONFIGURE_FILE(${CMAKE_ROOT}/Modules/CMakeSystem.cmake.in - ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeSystem.cmake - IMMEDIATE @ONLY) - - ENDIF (CMAKE_TOOLCHAIN_FILE) ENDIF(CMAKE_BINARY_DIR) diff --git a/Modules/CMakeFindBinUtils.cmake b/Modules/CMakeFindBinUtils.cmake index 10ba9f1..2cb7696 100644 --- a/Modules/CMakeFindBinUtils.cmake +++ b/Modules/CMakeFindBinUtils.cmake @@ -47,7 +47,17 @@ ELSE("${CMAKE_CXX_COMPILER_ID}" MATCHES "MSVC" FIND_PROGRAM(CMAKE_LINKER NAMES ${_CMAKE_TOOLCHAIN_PREFIX}ld PATHS ${_CMAKE_TOOLCHAIN_LOCATION} NO_DEFAULT_PATH) FIND_PROGRAM(CMAKE_LINKER NAMES ${_CMAKE_TOOLCHAIN_PREFIX}ld) - MARK_AS_ADVANCED(CMAKE_AR CMAKE_RANLIB CMAKE_STRIP CMAKE_LINKER) + FIND_PROGRAM(CMAKE_NM NAMES ${_CMAKE_TOOLCHAIN_PREFIX}nm PATHS ${_CMAKE_TOOLCHAIN_LOCATION} NO_DEFAULT_PATH) + FIND_PROGRAM(CMAKE_NM NAMES ${_CMAKE_TOOLCHAIN_PREFIX}nm) + + FIND_PROGRAM(CMAKE_OBJDUMP NAMES ${_CMAKE_TOOLCHAIN_PREFIX}objdump PATHS ${_CMAKE_TOOLCHAIN_LOCATION} NO_DEFAULT_PATH) + FIND_PROGRAM(CMAKE_OBJDUMP NAMES ${_CMAKE_TOOLCHAIN_PREFIX}objdump) + + FIND_PROGRAM(CMAKE_OBJCOPY NAMES ${_CMAKE_TOOLCHAIN_PREFIX}objcopy PATHS ${_CMAKE_TOOLCHAIN_LOCATION} NO_DEFAULT_PATH) + FIND_PROGRAM(CMAKE_OBJCOPY NAMES ${_CMAKE_TOOLCHAIN_PREFIX}objcopy) + + MARK_AS_ADVANCED(CMAKE_AR CMAKE_RANLIB CMAKE_STRIP CMAKE_LINKER CMAKE_NM CMAKE_OBJDUMP CMAKE_OBJCOPY) + ENDIF("${CMAKE_CXX_COMPILER_ID}" MATCHES "MSVC" OR "${CMAKE_C_COMPILER_ID}" MATCHES "MSVC" OR "${CMAKE_GENERATOR}" MATCHES "Visual Studio") diff --git a/Modules/CMakeSystem.cmake.in b/Modules/CMakeSystem.cmake.in index e6c4f9e..a9f3a55 100644 --- a/Modules/CMakeSystem.cmake.in +++ b/Modules/CMakeSystem.cmake.in @@ -1,3 +1,5 @@ +@INCLUDE_CMAKE_TOOLCHAIN_FILE_IF_REQUIRED@ + SET(CMAKE_SYSTEM "@CMAKE_SYSTEM@") SET(CMAKE_SYSTEM_NAME "@CMAKE_SYSTEM_NAME@") SET(CMAKE_SYSTEM_VERSION "@CMAKE_SYSTEM_VERSION@") diff --git a/Modules/CMakeSystemWithToolchainFile.cmake.in b/Modules/CMakeSystemWithToolchainFile.cmake.in deleted file mode 100644 index aba5cf3..0000000 --- a/Modules/CMakeSystemWithToolchainFile.cmake.in +++ /dev/null @@ -1,15 +0,0 @@ -# the following file has been configured from @CMAKE_TOOLCHAIN_FILE@ -INCLUDE("@_OWN_DIR@/CMakeToolchainFile.cmake") - -SET(CMAKE_SYSTEM "@CMAKE_SYSTEM@") -SET(CMAKE_SYSTEM_NAME "@CMAKE_SYSTEM_NAME@") -SET(CMAKE_SYSTEM_VERSION "@CMAKE_SYSTEM_VERSION@") -SET(CMAKE_SYSTEM_PROCESSOR "@CMAKE_SYSTEM_PROCESSOR@") - -SET(CMAKE_HOST_SYSTEM "@CMAKE_HOST_SYSTEM@") -SET(CMAKE_HOST_SYSTEM_NAME "@CMAKE_HOST_SYSTEM_NAME@") -SET(CMAKE_HOST_SYSTEM_VERSION "@CMAKE_HOST_SYSTEM_VERSION@") -SET(CMAKE_HOST_SYSTEM_PROCESSOR "@CMAKE_HOST_SYSTEM_PROCESSOR@") -SET(CMAKE_CROSSCOMPILING "@CMAKE_CROSSCOMPILING@") - -SET(CMAKE_SYSTEM_LOADED 1) |