X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fuhttpd.git;a=blobdiff_plain;f=CMakeLists.txt;h=7ae8ba4d13d64df719c2593e38f22991cf87139f;hp=48addacbff76317b57d360f4b3f602202e4f283a;hb=a235636a2687fafb9c474e4b134a59ff66425c92;hpb=58c5fd1f9a72db878e29958a4c4e1b65db5b2e07 diff --git a/CMakeLists.txt b/CMakeLists.txt index 48addac..7ae8ba4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,12 +1,88 @@ cmake_minimum_required(VERSION 2.6) PROJECT(uhttpd C) -ADD_DEFINITIONS(-O2 -Wall -Werror -Wmissing-declarations --std=gnu99 -g3) + +INCLUDE (CheckFunctionExists) + +SET(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "") +ADD_DEFINITIONS(-D_FILE_OFFSET_BITS=64 -Os -Wall -Werror -Wmissing-declarations --std=gnu99 -g3) + +OPTION(TLS_SUPPORT "TLS support" ON) +OPTION(LUA_SUPPORT "Lua support" ON) +OPTION(UBUS_SUPPORT "ubus support" ON) IF(APPLE) INCLUDE_DIRECTORIES(/opt/local/include) LINK_DIRECTORIES(/opt/local/lib) ENDIF() -ADD_EXECUTABLE(uhttpd main.c listen.c client.c utils.c file.c auth.c cgi.c relay.c proc.c) -TARGET_LINK_LIBRARIES(uhttpd ubox ubus) +FIND_LIBRARY(LIBS crypt) +IF(LIBS STREQUAL "LIBS-NOTFOUND") + SET(LIBS "") +ENDIF() + +FIND_PATH(ubox_include_dir libubox/usock.h) +INCLUDE_DIRECTORIES(${ubox_include_dir}) + +SET(SOURCES main.c listen.c client.c utils.c file.c auth.c cgi.c relay.c proc.c plugin.c handler.c) +IF(TLS_SUPPORT) + SET(SOURCES ${SOURCES} tls.c) + ADD_DEFINITIONS(-DHAVE_TLS) +ENDIF() + +CHECK_FUNCTION_EXISTS(getspnam HAVE_SHADOW) +IF(HAVE_SHADOW) + ADD_DEFINITIONS(-DHAVE_SHADOW) +ENDIF() + +ADD_EXECUTABLE(uhttpd ${SOURCES}) +FIND_LIBRARY(libjson NAMES json-c json) +TARGET_LINK_LIBRARIES(uhttpd ubox dl json_script blobmsg_json ${libjson} ${LIBS}) + +SET(PLUGINS "") +IF(LUA_SUPPORT) + FIND_PROGRAM(PKG_CONFIG pkg-config) + + IF(NOT LUA_CFLAGS AND PKG_CONFIG) + EXECUTE_PROCESS( + COMMAND pkg-config --silence-errors --cflags lua5.1 + OUTPUT_VARIABLE LUA_CFLAGS + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + ENDIF() + + IF(NOT LUA_LIBS AND PKG_CONFIG) + EXECUTE_PROCESS( + COMMAND pkg-config --silence-errors --libs lua5.1 + OUTPUT_VARIABLE LUA_LIBS + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + ENDIF() + + IF(NOT LUA_LIBS) + SET(LUA_LIBS "lua") + ENDIF() + + SET(PLUGINS ${PLUGINS} uhttpd_lua) + ADD_DEFINITIONS(-DHAVE_LUA ${LUA_CFLAGS}) + ADD_LIBRARY(uhttpd_lua MODULE lua.c) + TARGET_LINK_LIBRARIES(uhttpd_lua ${LUA_LIBS} m dl) +ENDIF() + +IF(UBUS_SUPPORT) + SET(PLUGINS ${PLUGINS} uhttpd_ubus) + ADD_DEFINITIONS(-DHAVE_UBUS) + ADD_LIBRARY(uhttpd_ubus MODULE ubus.c) + TARGET_LINK_LIBRARIES(uhttpd_ubus ubus ubox blobmsg_json ${libjson}) +ENDIF() + +IF(PLUGINS) + SET_TARGET_PROPERTIES(${PLUGINS} PROPERTIES + PREFIX "" + ) +ENDIF() + +INSTALL(TARGETS uhttpd ${PLUGINS} + RUNTIME DESTINATION bin + LIBRARY DESTINATION lib +)