1 cmake_minimum_required(VERSION 2.6)
5 INCLUDE (CheckFunctionExists)
7 SET(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "")
8 ADD_DEFINITIONS(-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)
15 INCLUDE_DIRECTORIES(/opt/local/include)
16 LINK_DIRECTORIES(/opt/local/lib)
19 FIND_LIBRARY(LIBS crypt)
20 IF(LIBS STREQUAL "LIBS-NOTFOUND")
24 SET(SOURCES main.c listen.c client.c utils.c file.c auth.c cgi.c relay.c proc.c plugin.c)
26 SET(SOURCES ${SOURCES} tls.c)
27 ADD_DEFINITIONS(-DHAVE_TLS)
30 CHECK_FUNCTION_EXISTS(getspnam HAVE_SHADOW)
32 ADD_DEFINITIONS(-DHAVE_SHADOW)
35 ADD_EXECUTABLE(uhttpd ${SOURCES})
36 TARGET_LINK_LIBRARIES(uhttpd ubox dl ${LIBS})
40 FIND_PROGRAM(PKG_CONFIG pkg-config)
42 IF(NOT LUA_CFLAGS AND PKG_CONFIG)
44 COMMAND pkg-config --silence-errors --cflags lua5.1
45 OUTPUT_VARIABLE LUA_CFLAGS
46 OUTPUT_STRIP_TRAILING_WHITESPACE
50 IF(NOT LUA_LIBS AND PKG_CONFIG)
52 COMMAND pkg-config --silence-errors --libs lua5.1
53 OUTPUT_VARIABLE LUA_LIBS
54 OUTPUT_STRIP_TRAILING_WHITESPACE
62 SET(PLUGINS ${PLUGINS} uhttpd_lua)
63 ADD_DEFINITIONS(-DHAVE_LUA ${LUA_CFLAGS})
64 ADD_LIBRARY(uhttpd_lua MODULE lua.c)
65 TARGET_LINK_LIBRARIES(uhttpd_lua ${LUA_LIBS} m dl)
69 SET(PLUGINS ${PLUGINS} uhttpd_ubus)
70 ADD_DEFINITIONS(-DHAVE_UBUS)
71 ADD_LIBRARY(uhttpd_ubus MODULE ubus.c ubus-session.c)
72 TARGET_LINK_LIBRARIES(uhttpd_ubus ubus ubox blobmsg_json json)
76 SET_TARGET_PROPERTIES(${PLUGINS} PROPERTIES
81 INSTALL(TARGETS uhttpd ${PLUGINS}
82 RUNTIME DESTINATION bin
83 LIBRARY DESTINATION lib