handler: add support for overriding redirect status code + message
[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
14 IF(APPLE)
15   INCLUDE_DIRECTORIES(/opt/local/include)
16   LINK_DIRECTORIES(/opt/local/lib)
17 ENDIF()
18
19 FIND_LIBRARY(LIBS crypt)
20 IF(LIBS STREQUAL "LIBS-NOTFOUND")
21         SET(LIBS "")
22 ENDIF()
23
24 SET(SOURCES main.c listen.c client.c utils.c file.c auth.c cgi.c relay.c proc.c plugin.c handler.c)
25 IF(TLS_SUPPORT)
26         SET(SOURCES ${SOURCES} tls.c)
27         ADD_DEFINITIONS(-DHAVE_TLS)
28 ENDIF()
29
30 CHECK_FUNCTION_EXISTS(getspnam HAVE_SHADOW)
31 IF(HAVE_SHADOW)
32     ADD_DEFINITIONS(-DHAVE_SHADOW)
33 ENDIF()
34
35 ADD_EXECUTABLE(uhttpd ${SOURCES})
36 FIND_LIBRARY(libjson NAMES json-c json)
37 TARGET_LINK_LIBRARIES(uhttpd ubox dl json_script blobmsg_json ${libjson} ${LIBS})
38
39 SET(PLUGINS "")
40 IF(LUA_SUPPORT)
41         FIND_PROGRAM(PKG_CONFIG pkg-config)
42
43         IF(NOT LUA_CFLAGS AND PKG_CONFIG)
44                 EXECUTE_PROCESS(
45                         COMMAND pkg-config --silence-errors --cflags lua5.1
46                         OUTPUT_VARIABLE LUA_CFLAGS
47                         OUTPUT_STRIP_TRAILING_WHITESPACE
48                 )
49         ENDIF()
50
51         IF(NOT LUA_LIBS AND PKG_CONFIG)
52                 EXECUTE_PROCESS(
53                         COMMAND pkg-config --silence-errors --libs lua5.1
54                         OUTPUT_VARIABLE LUA_LIBS
55                         OUTPUT_STRIP_TRAILING_WHITESPACE
56                 )
57         ENDIF()
58
59         IF(NOT LUA_LIBS)
60                 SET(LUA_LIBS "lua")
61         ENDIF()
62
63         SET(PLUGINS ${PLUGINS} uhttpd_lua)
64         ADD_DEFINITIONS(-DHAVE_LUA ${LUA_CFLAGS})
65         ADD_LIBRARY(uhttpd_lua MODULE lua.c)
66         TARGET_LINK_LIBRARIES(uhttpd_lua ${LUA_LIBS} m dl)
67 ENDIF()
68
69 IF(UBUS_SUPPORT)
70         SET(PLUGINS ${PLUGINS} uhttpd_ubus)
71         ADD_DEFINITIONS(-DHAVE_UBUS)
72         ADD_LIBRARY(uhttpd_ubus MODULE ubus.c)
73         TARGET_LINK_LIBRARIES(uhttpd_ubus ubus ubox blobmsg_json ${libjson})
74 ENDIF()
75
76 IF(PLUGINS)
77         SET_TARGET_PROPERTIES(${PLUGINS} PROPERTIES
78                 PREFIX ""
79         )
80 ENDIF()
81
82 INSTALL(TARGETS uhttpd ${PLUGINS}
83         RUNTIME DESTINATION bin
84         LIBRARY DESTINATION lib
85 )