On Sun, Jan 4, 2015 at 3:02 PM, Rolf Eike Beer <e...@sf-mail.de> wrote:

> Mark Abraham wrote:
> > Hi,
> >
> > The FindCUDA.cmake module since v3.0 has had a bug because it assumes
> that
> > when cross compiling that CMAKE_SYSTEM_PROCESSOR will be defined. That
> > definition is documented as optional at
> > http://www.vtk.org/Wiki/CMake_Cross_Compiling, and the module can't
> work if
> > it happens to be undefined. Attached patch
> > wraps the uses of CMAKE_SYSTEM_PROCESSOR in quotes so that interpolation
> > will lead to the intended behaviour in all cases.
>
> The easier and better fix would be to just remove the dereference, i.e.
>
> if (… CMAKE_SYSTEM_PROCESSOR MATCHES arm …)


Hi,

True, once you look at the minutae of if(... MATCHES ...) :-)

Updated patch attached.

Mark


>
> Eike
> --
From cc313f608775d4c3f68c0a106a3054aa3f7a7075 Mon Sep 17 00:00:00 2001
From: Mark Abraham <mark.j.abra...@gmail.com>
Date: Sun, 4 Jan 2015 14:37:51 +0100
Subject: [PATCH] Fix FindCUDA.cmake assumption about cross-compiling

CMAKE_SYSTEM_PROCESSOR is not guaranteed to be defined (per
http://www.vtk.org/Wiki/CMake_Cross_Compiling), and when cross
compiling where it happens to be undefined, this module was broken.
---
 Modules/FindCUDA.cmake | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/Modules/FindCUDA.cmake b/Modules/FindCUDA.cmake
index 29bb875..ecfc781 100644
--- a/Modules/FindCUDA.cmake
+++ b/Modules/FindCUDA.cmake
@@ -613,7 +613,7 @@ endif()
 set(CUDA_VERSION_STRING "${CUDA_VERSION}")
 
 # Support for arm cross compilation with CUDA 5.5
-if(CUDA_VERSION VERSION_GREATER "5.0" AND CMAKE_CROSSCOMPILING AND ${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm" AND EXISTS "${CUDA_TOOLKIT_ROOT_DIR}/targets/armv7-linux-gnueabihf")
+if(CUDA_VERSION VERSION_GREATER "5.0" AND CMAKE_CROSSCOMPILING AND CMAKE_SYSTEM_PROCESSOR MATCHES "arm" AND EXISTS "${CUDA_TOOLKIT_ROOT_DIR}/targets/armv7-linux-gnueabihf")
   set(CUDA_TOOLKIT_TARGET_DIR "${CUDA_TOOLKIT_ROOT_DIR}/targets/armv7-linux-gnueabihf" CACHE PATH "Toolkit target location.")
 else()
   set(CUDA_TOOLKIT_TARGET_DIR "${CUDA_TOOLKIT_ROOT_DIR}" CACHE PATH "Toolkit target location.")
@@ -621,7 +621,7 @@ endif()
 mark_as_advanced(CUDA_TOOLKIT_TARGET_DIR)
 
 # Target CPU architecture
-if(CUDA_VERSION VERSION_GREATER "5.0" AND CMAKE_CROSSCOMPILING AND ${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm")
+if(CUDA_VERSION VERSION_GREATER "5.0" AND CMAKE_CROSSCOMPILING AND CMAKE_SYSTEM_PROCESSOR MATCHES "arm")
   set(_cuda_target_cpu_arch_initial "ARM")
 else()
   set(_cuda_target_cpu_arch_initial "")
-- 
2.2.1

-- 

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake-developers

Reply via email to