From a2f0669fac1f8e7183b15cf7d14f0e99a2d8b012 Mon Sep 17 00:00:00 2001 From: Samuel Martin 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 --- 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