blob: 62ad616cbc0e46cf5fdf33dcb2dd16655f43ed5d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
cmake_minimum_required(VERSION 3.1)
cmake_policy(SET CMP0054 NEW)
project(FileSender)
include(CheckFunctionExists)
include(CheckIncludeFiles)
include(CheckLibraryExists)
include(CheckStructHasMember)
macro(CMAKE_SEARCH_LIBS v_func v_lib func)
check_function_exists(${func} ${v_func})
if(NOT ${v_func})
foreach(lib ${ARGN})
check_library_exists(${lib} ${func} "" HAVE_${func}_IN_${lib})
if(HAVE_${func}_IN_${lib})
set(${v_func} TRUE)
set(${v_lib} "${lib}" CACHE INTERNAL "Library providing ${func}")
break()
endif()
endforeach()
endif()
endmacro()
check_include_files(sys/sendfile.h HAVE_SYS_SENDFILE_H)
if(HAVE_SYS_SENDFILE_H)
add_compile_definitions(HAVE_SYS_SENDFILE_H)
endif()
cmake_search_libs(HAVE_SENDFILE SENDFILE_LIB sendfile sendfile)
cmake_search_libs(HAVE_SOCKET SOCKET_LIB socket socket)
if(HAVE_SENDFILE)
add_compile_definitions(HAVE_SENDFILE)
endif()
check_struct_has_member("struct sf_hdtr" hdr_cnt sys/socket.h HAVE_STRUCT_SF_HDTR_HDR_CNT)
if(HAVE_STRUCT_SF_HDTR_HDR_CNT)
add_compile_definitions(HAVE_STRUCT_SF_HDTR_HDR_CNT)
endif()
add_executable(server server.c utils.c utils.h)
target_link_libraries(server ${SOCKET_LIB})
add_executable(client client.c utils.c utils.h)
target_link_libraries(client ${SOCKET_LIB} ${SENDFILE_LIB})
|