|
| 1 | +# - Check if _FILE_OFFSET_BITS macro needed for large files |
| 2 | +# CHECK_FILE_OFFSET_BITS () |
| 3 | +# |
| 4 | +# The following variables may be set before calling this macro to |
| 5 | +# modify the way the check is run: |
| 6 | +# |
| 7 | +# CMAKE_REQUIRED_FLAGS = string of compile command line flags |
| 8 | +# CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar) |
| 9 | +# CMAKE_REQUIRED_INCLUDES = list of include directories |
| 10 | +# Copyright (c) 2009, Michihiro NAKAJIMA |
| 11 | +# |
| 12 | +# Redistribution and use is allowed according to the terms of the BSD license. |
| 13 | +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. |
| 14 | + |
| 15 | +#INCLUDE(CheckCSourceCompiles) |
| 16 | + |
| 17 | +GET_FILENAME_COMPONENT(_selfdir_CheckFileOffsetBits |
| 18 | + "${CMAKE_CURRENT_LIST_FILE}" PATH) |
| 19 | + |
| 20 | +MACRO (CHECK_FILE_OFFSET_BITS) |
| 21 | + IF(NOT DEFINED _FILE_OFFSET_BITS) |
| 22 | + MESSAGE(STATUS "Checking _FILE_OFFSET_BITS for large files") |
| 23 | + TRY_COMPILE(__WITHOUT_FILE_OFFSET_BITS_64 |
| 24 | + ${CMAKE_CURRENT_BINARY_DIR} |
| 25 | + ${_selfdir_CheckFileOffsetBits}/CheckFileOffsetBits.c |
| 26 | + COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}) |
| 27 | + IF(NOT __WITHOUT_FILE_OFFSET_BITS_64) |
| 28 | + TRY_COMPILE(__WITH_FILE_OFFSET_BITS_64 |
| 29 | + ${CMAKE_CURRENT_BINARY_DIR} |
| 30 | + ${_selfdir_CheckFileOffsetBits}/CheckFileOffsetBits.c |
| 31 | + COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS} -D_FILE_OFFSET_BITS=64) |
| 32 | + ENDIF(NOT __WITHOUT_FILE_OFFSET_BITS_64) |
| 33 | + |
| 34 | + IF(NOT __WITHOUT_FILE_OFFSET_BITS_64 AND __WITH_FILE_OFFSET_BITS_64) |
| 35 | + SET(_FILE_OFFSET_BITS 64 CACHE INTERNAL "_FILE_OFFSET_BITS macro needed for large files") |
| 36 | + MESSAGE(STATUS "Checking _FILE_OFFSET_BITS for large files - needed") |
| 37 | + ELSE(NOT __WITHOUT_FILE_OFFSET_BITS_64 AND __WITH_FILE_OFFSET_BITS_64) |
| 38 | + SET(_FILE_OFFSET_BITS "" CACHE INTERNAL "_FILE_OFFSET_BITS macro needed for large files") |
| 39 | + MESSAGE(STATUS "Checking _FILE_OFFSET_BITS for large files - not needed") |
| 40 | + ENDIF(NOT __WITHOUT_FILE_OFFSET_BITS_64 AND __WITH_FILE_OFFSET_BITS_64) |
| 41 | + ENDIF(NOT DEFINED _FILE_OFFSET_BITS) |
| 42 | + |
| 43 | +ENDMACRO (CHECK_FILE_OFFSET_BITS) |
0 commit comments