| 
1 | 1 | #[=============================================================================[  | 
2 |  | -Check if 'fopencookie()' works as expected.  | 
 | 2 | +Check if fopencookie() works as expected.  | 
3 | 3 | 
  | 
4 |  | -Module first checks if 'fopencookie()' and type 'cookie_io_functions_t' are  | 
5 |  | -available. Then it checks whether the 'fopencookie' seeker uses type 'off64_t'.  | 
6 |  | -Since 'off64_t' is non-standard and obsolescent, the standard 'off_t' type can  | 
7 |  | -be used on both 64-bit and 32-bit systems, where the '_FILE_OFFSET_BITS=64' can  | 
8 |  | -make it behave like 'off64_t' on 32-bit. Since code is in the transition process  | 
9 |  | -to use 'off_t' only, check is left here when using glibc.  | 
 | 4 | +First, the fopencookie() and type cookie_io_functions_t are checked if they are  | 
 | 5 | +available. Then check is done whether the 'fopencookie' seeker uses type  | 
 | 6 | +off64_t. Since off64_t is non-standard and obsolescent, the standard off_t type  | 
 | 7 | +can be used on both 64-bit and 32-bit systems, where the _FILE_OFFSET_BITS=64  | 
 | 8 | +can make it behave like off64_t on 32-bit platforms. Since code is in the  | 
 | 9 | +transition process to use off_t only, check is left here when using glibc.  | 
10 | 10 | 
  | 
11 | 11 | Result variables:  | 
12 | 12 | 
  | 
13 |  | -* HAVE_FOPENCOOKIE - Whether 'fopencookie()' and 'cookie_io_functions_t' are  | 
14 |  | -  available.  | 
15 |  | -* COOKIE_SEEKER_USES_OFF64_T - Whether 'fopencookie' seeker uses the 'off64_t'  | 
16 |  | -  type.  | 
 | 13 | +* HAVE_FOPENCOOKIE  | 
 | 14 | +* COOKIE_SEEKER_USES_OFF64_T  | 
17 | 15 | #]=============================================================================]  | 
18 | 16 | 
 
  | 
19 |  | -include(CheckSourceRuns)  | 
 | 17 | +include(CheckSourceCompiles)  | 
20 | 18 | include(CheckSymbolExists)  | 
21 | 19 | include(CheckTypeSize)  | 
22 | 20 | include(CMakePushCheckState)  | 
@@ -51,29 +49,17 @@ set(HAVE_FOPENCOOKIE TRUE)  | 
51 | 49 | 
 
  | 
52 | 50 | # Skip in consecutive configuration phases.  | 
53 | 51 | if(DEFINED PHP_HAS_COOKIE_SEEKER_OFF64_T)  | 
54 |  | -  if(PHP_HAS_COOKIE_SEEKER_OFF64_T)  | 
55 |  | -    set(COOKIE_SEEKER_USES_OFF64_T TRUE)  | 
56 |  | -  endif()  | 
 | 52 | +  set(COOKIE_SEEKER_USES_OFF64_T ${PHP_HAS_COOKIE_SEEKER_OFF64_T})  | 
57 | 53 |   return()  | 
58 | 54 | endif()  | 
59 | 55 | 
 
  | 
60 | 56 | # GNU C library can have a different seeker definition using off64_t.  | 
61 | 57 | message(CHECK_START "Checking whether fopencookie seeker uses off64_t")  | 
62 | 58 | 
 
  | 
63 |  | -if(  | 
64 |  | -  NOT DEFINED PHP_HAS_COOKIE_SEEKER_OFF64_T_EXITCODE  | 
65 |  | -  AND CMAKE_CROSSCOMPILING  | 
66 |  | -  AND NOT CMAKE_CROSSCOMPILING_EMULATOR  | 
67 |  | -  AND CMAKE_SYSTEM_NAME STREQUAL "Linux"  | 
68 |  | -  AND PHP_C_STANDARD_LIBRARY STREQUAL "glibc"  | 
69 |  | -)  | 
70 |  | -  set(PHP_HAS_COOKIE_SEEKER_OFF64_T_EXITCODE 0)  | 
71 |  | -endif()  | 
72 |  | - | 
73 | 59 | cmake_push_check_state(RESET)  | 
74 | 60 |   set(CMAKE_REQUIRED_DEFINITIONS -D_GNU_SOURCE)  | 
75 | 61 | 
 
  | 
76 |  | -  check_source_runs(C [[  | 
 | 62 | +  check_source_compiles(C [[  | 
77 | 63 |     #include <stdio.h>  | 
78 | 64 |     #include <stdlib.h>  | 
79 | 65 | 
 
  | 
@@ -125,8 +111,9 @@ cmake_push_check_state(RESET)  | 
125 | 111 | cmake_pop_check_state()  | 
126 | 112 | 
 
  | 
127 | 113 | if(PHP_HAS_COOKIE_SEEKER_OFF64_T)  | 
128 |  | -  set(COOKIE_SEEKER_USES_OFF64_T TRUE)  | 
129 | 114 |   message(CHECK_PASS "yes")  | 
130 | 115 | else()  | 
131 | 116 |   message(CHECK_FAIL "no")  | 
132 | 117 | endif()  | 
 | 118 | + | 
 | 119 | +set(COOKIE_SEEKER_USES_OFF64_T ${PHP_HAS_COOKIE_SEEKER_OFF64_T})  | 
0 commit comments