client: fix compilation error with GCC 12
[project/uhttpd.git] / CMakeLists.txt
1 cmake_minimum_required(VERSION 2.6)
2
3 PROJECT(uhttpd C)
4
5 INCLUDE (CheckFunctionExists)
6
7 SET(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "")
8 ADD_DEFINITIONS(-D_FILE_OFFSET_BITS=64 -Os -Wall -Werror -Wmissing-declarations --std=gnu99 -g3)
9
10 OPTION(TLS_SUPPORT "TLS support" ON)
11 OPTION(LUA_SUPPORT "Lua support" ON)
12 OPTION(UBUS_SUPPORT "ubus support" ON)
13 OPTION(UCODE_SUPPORT "ucode support" ON)
14
15 IF(APPLE)
16 INCLUDE_DIRECTORIES(/opt/local/include)
17 LINK_DIRECTORIES(/opt/local/lib)
18 ENDIF()
19
20 FIND_LIBRARY(LIBS crypt)
21 IF(LIBS STREQUAL "LIBS-NOTFOUND")
22 SET(LIBS "")
23 ENDIF()
24
25 FIND_PATH(ubox_include_dir libubox/usock.h)
26 INCLUDE_DIRECTORIES(${ubox_include_dir})
27
28 SET(SOURCES main.c listen.c client.c utils.c file.c auth.c cgi.c relay.c proc.c plugin.c handler.c)
29 IF(TLS_SUPPORT)
30 SET(SOURCES ${SOURCES} tls.c)
31 ADD_DEFINITIONS(-DHAVE_TLS)
32 ENDIF()
33
34 CHECK_FUNCTION_EXISTS(getspnam HAVE_SHADOW)
35 IF(HAVE_SHADOW)
36 ADD_DEFINITIONS(-DHAVE_SHADOW)
37 ENDIF()
38
39 ADD_EXECUTABLE(uhttpd ${SOURCES})
40 FIND_LIBRARY(libjson NAMES json-c json)
41 TARGET_LINK_LIBRARIES(uhttpd ubox dl json_script blobmsg_json ${libjson} ${LIBS})
42
43 SET(PLUGINS "")
44 IF(LUA_SUPPORT)
45 FIND_PROGRAM(PKG_CONFIG pkg-config)
46
47 IF(NOT LUA_CFLAGS AND PKG_CONFIG)
48 EXECUTE_PROCESS(
49 COMMAND pkg-config --silence-errors --cflags lua5.1
50 OUTPUT_VARIABLE LUA_CFLAGS
51 OUTPUT_STRIP_TRAILING_WHITESPACE
52 )
53 ENDIF()
54
55 IF(NOT LUA_LIBS AND PKG_CONFIG)
56 EXECUTE_PROCESS(
57 COMMAND pkg-config --silence-errors --libs lua5.1
58 OUTPUT_VARIABLE LUA_LIBS
59 OUTPUT_STRIP_TRAILING_WHITESPACE
60 )
61 ENDIF()
62
63 IF(NOT LUA_LIBS)
64 SET(LUA_LIBS "lua")
65 ENDIF()
66
67 SET(PLUGINS ${PLUGINS} uhttpd_lua)
68 ADD_DEFINITIONS(-DHAVE_LUA ${LUA_CFLAGS})
69 ADD_LIBRARY(uhttpd_lua MODULE lua.c)
70 TARGET_LINK_LIBRARIES(uhttpd_lua ${LUA_LIBS} m dl)
71 ENDIF()
72
73 IF(UCODE_SUPPORT)
74 SET(PLUGINS ${PLUGINS} uhttpd_ucode)
75 ADD_DEFINITIONS(-DHAVE_UCODE)
76 ADD_LIBRARY(uhttpd_ucode MODULE ucode.c)
77 TARGET_LINK_LIBRARIES(uhttpd_ucode ucode ${libjson})
78 ENDIF()
79
80 IF(UBUS_SUPPORT)
81 SET(PLUGINS ${PLUGINS} uhttpd_ubus)
82 ADD_DEFINITIONS(-DHAVE_UBUS)
83 ADD_LIBRARY(uhttpd_ubus MODULE ubus.c)
84 TARGET_LINK_LIBRARIES(uhttpd_ubus ubus ubox blobmsg_json ${libjson})
85 ENDIF()
86
87 IF(PLUGINS)
88 SET_TARGET_PROPERTIES(${PLUGINS} PROPERTIES
89 PREFIX ""
90 )
91 ENDIF()
92
93 INSTALL(TARGETS uhttpd ${PLUGINS}
94 RUNTIME DESTINATION bin
95 LIBRARY DESTINATION lib
96 )