1 cmake_minimum_required(VERSION 2.6)
5 INCLUDE (CheckFunctionExists)
7 SET(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "")
8 ADD_DEFINITIONS(-D_FILE_OFFSET_BITS=64 -Os -Wall -Werror -Wmissing-declarations --std=gnu99 -g3)
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)
16 INCLUDE_DIRECTORIES(/opt/local/include)
17 LINK_DIRECTORIES(/opt/local/lib)
20 FIND_LIBRARY(LIBS crypt)
21 IF(LIBS STREQUAL "LIBS-NOTFOUND")
25 FIND_PATH(ubox_include_dir libubox/usock.h)
26 INCLUDE_DIRECTORIES(${ubox_include_dir})
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)
30 SET(SOURCES ${SOURCES} tls.c)
31 ADD_DEFINITIONS(-DHAVE_TLS)
34 CHECK_FUNCTION_EXISTS(getspnam HAVE_SHADOW)
36 ADD_DEFINITIONS(-DHAVE_SHADOW)
39 FIND_LIBRARY(ubox NAMES ubox)
40 FIND_LIBRARY(json_script NAMES json_script)
41 FIND_LIBRARY(blobmsg_json NAMES blobmsg_json)
43 ADD_EXECUTABLE(uhttpd ${SOURCES})
44 FIND_LIBRARY(libjson NAMES json-c json)
45 TARGET_LINK_LIBRARIES(uhttpd ${ubox} dl ${json_script} ${blobmsg_json} ${libjson} ${LIBS})
49 FIND_PROGRAM(PKG_CONFIG pkg-config)
51 IF(NOT LUA_CFLAGS AND PKG_CONFIG)
53 COMMAND pkg-config --silence-errors --cflags lua5.1
54 OUTPUT_VARIABLE LUA_CFLAGS
55 OUTPUT_STRIP_TRAILING_WHITESPACE
59 IF(NOT LUA_LIBS AND PKG_CONFIG)
61 COMMAND pkg-config --silence-errors --libs lua5.1
62 OUTPUT_VARIABLE LUA_LIBS
63 OUTPUT_STRIP_TRAILING_WHITESPACE
71 SET(PLUGINS ${PLUGINS} uhttpd_lua)
72 ADD_DEFINITIONS(-DHAVE_LUA ${LUA_CFLAGS})
73 ADD_LIBRARY(uhttpd_lua MODULE lua.c)
74 TARGET_LINK_LIBRARIES(uhttpd_lua ${LUA_LIBS} m dl)
78 SET(PLUGINS ${PLUGINS} uhttpd_ucode)
79 ADD_DEFINITIONS(-DHAVE_UCODE)
80 ADD_LIBRARY(uhttpd_ucode MODULE ucode.c)
81 TARGET_LINK_LIBRARIES(uhttpd_ucode ucode ${libjson})
85 FIND_LIBRARY(ubus NAMES ubus)
86 SET(PLUGINS ${PLUGINS} uhttpd_ubus)
87 ADD_DEFINITIONS(-DHAVE_UBUS)
88 ADD_LIBRARY(uhttpd_ubus MODULE ubus.c)
89 TARGET_LINK_LIBRARIES(uhttpd_ubus ${ubus} ${ubox} ${blobmsg_json} ${libjson})
93 SET_TARGET_PROPERTIES(${PLUGINS} PROPERTIES
98 INSTALL(TARGETS uhttpd ${PLUGINS}
99 RUNTIME DESTINATION bin
100 LIBRARY DESTINATION lib