@@ -167,9 +167,6 @@ if (MINGW)
167
167
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_CRT_RAND_S" )
168
168
endif ()
169
169
170
- # Reasonable default. CheckCompiler.m4 checks thoroughly for HP-UX's sake.
171
- set (MONGOC_SOCKET_ARG2 "struct sockaddr" )
172
-
173
170
include (CheckTypeSize )
174
171
if (MSVC )
175
172
SET (CMAKE_EXTRA_INCLUDE_FILES "ws2tcpip.h" )
@@ -187,6 +184,54 @@ else()
187
184
set (MONGOC_SOCKET_ARG3 "int" )
188
185
endif ()
189
186
187
+ function (mongoc_get_accept_args ARG2 ARG3 )
188
+ SET (VAR 0 )
189
+ foreach (ARG2_VAL "struct sockaddr" "void" )
190
+ foreach (ARG3_VAL "socklen_t" "size_t" "int" )
191
+
192
+ MATH (EXPR VAR "${VAR} +1" )
193
+
194
+ FILE (WRITE ${CMAKE_CURRENT_BINARY_DIR} /accept_test${VAR}.cxx
195
+ "#include <sys/types.h>
196
+ #include <sys/socket.h>
197
+
198
+ int main ()
199
+ {
200
+ int a = 0;
201
+ ${ARG2_VAL} *b = 0;
202
+ ${ARG3_VAL} *c = 0;
203
+ accept (a, b, c);
204
+ return 0;
205
+ }
206
+ " )
207
+
208
+ TRY_COMPILE (RES ${CMAKE_CURRENT_BINARY_DIR}
209
+ ${CMAKE_CURRENT_BINARY_DIR} /accept_test${VAR}.cxx CMAKE_FLAGS
210
+ "-Werror -DCMAKE_CXX_LINK_EXECUTABLE='echo not linking now...'" OUTPUT_VARIABLE LOG2 )
211
+
212
+ if (RES )
213
+ message (
214
+ STATUS
215
+ "Detected parameters: accept (int, ${ARG2_VAL} *, ${ARG3_VAL} *)" )
216
+
217
+ set (${ARG2} ${ARG2_VAL} PARENT_SCOPE )
218
+ set (${ARG3} ${ARG3_VAL} PARENT_SCOPE )
219
+ return ()
220
+ endif ()
221
+
222
+ endforeach ()
223
+ endforeach ()
224
+
225
+ endfunction ()
226
+
227
+ # Reasonable defaults.
228
+ set (MONGOC_SOCKET_ARG2 "struct sockaddr" )
229
+ set (MONGOC_SOCKET_ARG3 "socklen_t" )
230
+
231
+ if (NOT MSVC )
232
+ mongoc_get_accept_args (MONGOC_SOCKET_ARG2 MONGOC_SOCKET_ARG3 )
233
+ endif ()
234
+
190
235
set (SOURCE_DIR "${PROJECT_SOURCE_DIR} /" )
191
236
192
237
set (CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR} /build/cmake )
0 commit comments