From a2f0669fac1f8e7183b15cf7d14f0e99a2d8b012 Mon Sep 17 00:00:00 2001
From: Samuel Martin <s.martin49@gmail.com>
Date: Sat, 11 Jan 2014 21:47:39 +0100
Subject: [PATCH 3/6] cmake: do not try to run arithchk when cross-compiling to
 generate sources

Instead, use a predefined arith.h if provided, or generate a default one.

The arithchk binary is still built (but not installed) to allow the user to
run it on its target and use it; so then allowing to build an optimized
blas library.

Signed-off-by: Samuel Martin <s.martin49@gmail.com>
---
 F2CLIBS/libf2c/CMakeLists.txt | 38 ++++++++++++++++++++++++++++----------
 1 file changed, 28 insertions(+), 10 deletions(-)

diff --git a/F2CLIBS/libf2c/CMakeLists.txt b/F2CLIBS/libf2c/CMakeLists.txt
index f98d66a..45a0804 100644
--- a/F2CLIBS/libf2c/CMakeLists.txt
+++ b/F2CLIBS/libf2c/CMakeLists.txt
@@ -38,17 +38,35 @@ set(TIME dtime_.c etime_.c)
 
 # For INTEGER*8 support (which requires system-dependent adjustments to
 # f2c.h), add ${QINT} to the OFILES  assignment below...
-add_executable(arithchk arithchk.c)
-if(UNIX)
-  target_link_libraries(arithchk m)
+if(CMAKE_CROSSCOMPILING)
+  if(ARITH_H)
+    message(STATUS "Using the user-defined '${ARITH_H}' as arith.h header.")
+    configure_file("${ARITH_H}" "${CMAKE_CURRENT_BINARY_DIR}/arith.h" COPYONLY)
+  else()
+    message(STATUS "No user-defined arith.h header.")
+    if(NOT EXISTS "${CMAKE_CURRENT_BINARY_DIR}/arith.h")
+      message(WARNING "Generating the default non-optimized 'arith.h' header.
+
+To generate and provide a custom arith.h header:
+run the cross-compiled arithchk binary on your target,
+and use its output to fill your custom arith.h header.")
+      file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/arith.h"
+        "/* default, not optimized arith.h */")
+    endif()
+  endif()
+else()
+  add_executable(arithchk arithchk.c)
+  if(UNIX)
+    target_link_libraries(arithchk m)
+  endif()
+  set_target_properties(arithchk PROPERTIES COMPILE_DEFINITIONS
+    "NO_FPINIT;NO_LONG_LONG")
+  ADD_CUSTOM_COMMAND(
+     OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/arith.h
+     COMMAND arithchk > ${CMAKE_CURRENT_BINARY_DIR}/arith.h
+     DEPENDS arithchk
+     )
 endif()
-set_target_properties(arithchk PROPERTIES COMPILE_DEFINITIONS 
-  "NO_FPINIT;NO_LONG_LONG")
-ADD_CUSTOM_COMMAND(
-   OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/arith.h
-   COMMAND arithchk > ${CMAKE_CURRENT_BINARY_DIR}/arith.h
-   DEPENDS arithchk
-   )
 
 
 set(OFILES  ${MISC} ${POW} ${CX} ${DCX} ${REAL} ${DBL} ${INT} 
-- 
1.8.5.3

