--- clucene-core-2.3.3.4+dfsg.orig/src/shared/cmake/CheckNamespace.cmake
+++ clucene-core-2.3.3.4+dfsg/src/shared/cmake/CheckNamespace.cmake
@@ -1,8 +1,8 @@
 #check if we support namespaces
 MACRO ( CHECK_NAMESPACE haveNamespace )
     #Check if namespaces work in the compiler
-    CHECK_CXX_SOURCE_RUNS("
+    CHECK_CXX_SOURCE_COMPILES("
     	namespace Outer { namespace Inner { int i = 0; }}
     	int main(){ using namespace Outer::Inner; return i; }" 
     	${haveNamespace} )
-ENDMACRO ( CHECK_NAMESPACE haveNamespace )
\ No newline at end of file
+ENDMACRO ( CHECK_NAMESPACE haveNamespace )
--- clucene-core-2.3.3.4+dfsg.orig/src/shared/cmake/CheckSnprintf.cmake
+++ clucene-core-2.3.3.4+dfsg/src/shared/cmake/CheckSnprintf.cmake
@@ -1,42 +1,46 @@
 #checks if snprintf have bugs
 
 MACRO ( CHECK_SNPRINTF )
-    #check that our snprintf works correctly...
-    IF ( _CL_HAVE_FUNCTION_SNPRINTF )
-    CHECK_CXX_SOURCE_RUNS("
-    	#include <stdio.h>
-    	int main(){
-    		char ovbuf[7];
-    		int i;
-    		for (i=0; i<7; i++) ovbuf[i]='x';
-    		snprintf(ovbuf, 4,\"foo%s\", \"bar\");
-    		if (ovbuf[5]!='x') return 1;
-    		snprintf(ovbuf, 4,\"foo%d\", 666);
-    		if (ovbuf[5]!='x') return 1;
-    		return 0;
-    	}" _CL_HAVE_NO_SNPRINTF_BUG) 
-    	IF ( NOT _CL_HAVE_NO_SNPRINTF_BUG )
-    		SET ( _CL_HAVE_SNPRINTF_BUG 1 )
-    		MESSAGE ( FATAL_ERROR "snprintf has a bug, and we don't have a replacement!" )
-    	ENDIF ( NOT _CL_HAVE_NO_SNPRINTF_BUG )
-    ENDIF ( _CL_HAVE_FUNCTION_SNPRINTF )
-    
-    #check that our swnprintf works correctly...
-    IF ( _CL_HAVE_FUNCTION_SNWPRINTF )
-    CHECK_CXX_SOURCE_RUNS("
-    	#include <stdio.h>
-    	#include <wchar.h>
-    	
-    	int main(void)
-    	{
-        	wchar_t buf[5];
-        	snwprintf(buf,5,L\"%s\",L\"foo\");
-        	if ( wcslen(buf) != 3 )
-        		return 1;
-        	return 0;
-    	}" _CL_HAVE_NO_SNWPRINTF_BUG) 
-    	IF ( NOT _CL_HAVE_NO_SNWPRINTF_BUG )
-    		SET ( _CL_HAVE_SNWPRINTF_BUG 1 )
-    	ENDIF ( NOT _CL_HAVE_NO_SNWPRINTF_BUG )
-    ENDIF ( _CL_HAVE_FUNCTION_SNWPRINTF )
+    IF ( CMAKE_CROSSCOMPILING )
+        MESSAGE ( WARNING "cannot check for snprintf bugs during cross compilation")
+    ELSE ( CMAKE_CROSSCOMPILING )
+        #check that our snprintf works correctly...
+        IF ( _CL_HAVE_FUNCTION_SNPRINTF )
+        CHECK_CXX_SOURCE_RUNS("
+        	#include <stdio.h>
+        	int main(){
+        		char ovbuf[7];
+        		int i;
+        		for (i=0; i<7; i++) ovbuf[i]='x';
+        		snprintf(ovbuf, 4,\"foo%s\", \"bar\");
+        		if (ovbuf[5]!='x') return 1;
+        		snprintf(ovbuf, 4,\"foo%d\", 666);
+        		if (ovbuf[5]!='x') return 1;
+        		return 0;
+        	}" _CL_HAVE_NO_SNPRINTF_BUG)
+        	IF ( NOT _CL_HAVE_NO_SNPRINTF_BUG )
+        		SET ( _CL_HAVE_SNPRINTF_BUG 1 )
+        		MESSAGE ( FATAL_ERROR "snprintf has a bug, and we don't have a replacement!" )
+        	ENDIF ( NOT _CL_HAVE_NO_SNPRINTF_BUG )
+        ENDIF ( _CL_HAVE_FUNCTION_SNPRINTF )
+
+        #check that our swnprintf works correctly...
+        IF ( _CL_HAVE_FUNCTION_SNWPRINTF )
+        CHECK_CXX_SOURCE_RUNS("
+        	#include <stdio.h>
+        	#include <wchar.h>
+
+        	int main(void)
+        	{
+            	wchar_t buf[5];
+            	snwprintf(buf,5,L\"%s\",L\"foo\");
+            	if ( wcslen(buf) != 3 )
+            		return 1;
+            	return 0;
+        	}" _CL_HAVE_NO_SNWPRINTF_BUG)
+        	IF ( NOT _CL_HAVE_NO_SNWPRINTF_BUG )
+        		SET ( _CL_HAVE_SNWPRINTF_BUG 1 )
+        	ENDIF ( NOT _CL_HAVE_NO_SNWPRINTF_BUG )
+        ENDIF ( _CL_HAVE_FUNCTION_SNWPRINTF )
+    ENDIF ( CMAKE_CROSSCOMPILING )
 ENDMACRO ( CHECK_SNPRINTF )
--- clucene-core-2.3.3.4+dfsg.orig/src/shared/cmake/CheckAtomicFunctions.cmake
+++ clucene-core-2.3.3.4+dfsg/src/shared/cmake/CheckAtomicFunctions.cmake
@@ -3,7 +3,7 @@
 MACRO ( CHECK_HAVE_GCC_ATOMIC_FUNCTIONS result )
 
 # Do step by step checking,
-CHECK_CXX_SOURCE_RUNS("
+SET( CHECK_HAVE_GCC_ATOMIC_FUNCTIONS_SOURCE "
 #include <cstdlib>
 int main()
 {
@@ -20,6 +20,13 @@
 
    return EXIT_SUCCESS;
 }
-" ${result} )
+")
+
+IF ( CMAKE_CROSSCOMPILING )
+    CHECK_CXX_SOURCE_COMPILES("${CHECK_HAVE_GCC_ATOMIC_FUNCTIONS_SOURCE}" ${result} )
+    MESSAGE ( WARNING "cannot check atomics during cross compilation, assuming that they work" )
+ELSE ( CMAKE_CROSSCOMPILING )
+    CHECK_CXX_SOURCE_RUNS("${CHECK_HAVE_GCC_ATOMIC_FUNCTIONS_SOURCE}" ${result} )
+ENDIF ( CMAKE_CROSSCOMPILING )
 
 ENDMACRO ( CHECK_HAVE_GCC_ATOMIC_FUNCTIONS result )
--- clucene-core-2.3.3.4+dfsg.orig/src/shared/cmake/CheckErrorHandling.cmake
+++ clucene-core-2.3.3.4+dfsg/src/shared/cmake/CheckErrorHandling.cmake
@@ -3,7 +3,7 @@
 
 MACRO ( CHECK_HAVE_FUNCTION_TRY_BLOCKS result )
     #check for try/catch blocks
-    CHECK_CXX_SOURCE_RUNS("
+    CHECK_CXX_SOURCE_COMPILES("
     	void foo() { try{ return; } catch( ... ){} }
     	int main(){ foo(); return 0; }" ${result})
     IF ( NOT ${result} )
--- clucene-core-2.3.3.4+dfsg.orig/src/shared/cmake/DefineStaticSyntax.cmake
+++ clucene-core-2.3.3.4+dfsg/src/shared/cmake/DefineStaticSyntax.cmake
@@ -3,11 +3,17 @@
 MACRO ( DEFINE_STATIC_SYNTAX ) 
 
     #check which syntax of static const to use
-    CHECK_CXX_SOURCE_RUNS("class x{public: static const int SCI=55; }; int main(){ x a; if ( a.SCI!=55 ) throw \"err\"; return 0; }" LUCENE_STATIC_CONSTANT_SYNTAX)
+    SET ( DEFINE_STATIC_SYNTAX_SOURCE "class x{public: static const int SCI=55; }; int main(){ x a; if ( a.SCI!=55 ) throw \"err\"; return 0; }")
+    IF ( CMAKE_CROSSCOMPILING )
+        MESSAGE ( WARNING "testing for \"static const\" using a compile-only test")
+        CHECK_CXX_SOURCE_COMPILES ( "${DEFINE_STATIC_SYNTAX_SOURCE}" LUCENE_STATIC_CONSTANT_SYNTAX)
+    ELSE ( CMAKE_CROSSCOMPILING )
+        CHECK_CXX_SOURCE_RUNS ( "${DEFINE_STATIC_SYNTAX_SOURCE}" LUCENE_STATIC_CONSTANT_SYNTAX)
+    endif ( CMAKE_CROSSCOMPILING )
     IF ( LUCENE_STATIC_CONSTANT_SYNTAX )
         SET ( LUCENE_STATIC_CONSTANT_SYNTAX "static const type assignment")
     ELSE ( LUCENE_STATIC_CONSTANT_SYNTAX )
         SET ( LUCENE_STATIC_CONSTANT_SYNTAX "enum { assignment }")
     ENDIF ( LUCENE_STATIC_CONSTANT_SYNTAX )
 
-ENDMACRO ( DEFINE_STATIC_SYNTAX ) 
\ No newline at end of file
+ENDMACRO ( DEFINE_STATIC_SYNTAX ) 
