summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2012-10-04 15:13:59 +0200
committerFelix Fietkau <nbd@openwrt.org>2012-10-04 15:13:59 +0200
commita2fdb9ce87eee1212dcb88a5c5399465e8c89cbc (patch)
treec1599b4f83c41e2bb48b1f598124e037e6ed1e62
parent4e27cbe55a0ef7622c085e6172865773e1c2575e (diff)
downloaduhttpd-a2fdb9ce87eee1212dcb88a5c5399465e8c89cbc.tar.gz
replace the makefile with a cmake file
-rw-r--r--CMakeLists.txt110
-rw-r--r--Makefile89
2 files changed, 110 insertions, 89 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000..c3dccd1
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,110 @@
+cmake_minimum_required(VERSION 2.6)
+
+PROJECT(uhttpd C)
+
+INCLUDE (CheckFunctionExists)
+
+IF(NOT TLS_SUPPORT)
+ SET(TLS_SUPPORT "openssl")
+ENDIF()
+
+OPTION(CGI_SUPPORT "CGI support" ON)
+OPTION(LUA_SUPPORT "Lua support" ON)
+OPTION(UBUS_SUPPORT "ubus support" ON)
+
+ADD_DEFINITIONS(-Os -Wall -Werror --std=gnu99 -Wmissing-declarations)
+
+IF(DEBUG)
+ ADD_DEFINITIONS(-DDEBUG -g3)
+ IF(NO_OPTIMIZE)
+ ADD_DEFINITIONS(-O0)
+ ENDIF()
+ENDIF()
+
+IF(APPLE)
+ INCLUDE_DIRECTORIES(/opt/local/include)
+ LINK_DIRECTORIES(/opt/local/lib)
+
+ SET(CMAKE_SHARED_MODULE_CREATE_C_FLAGS "${CMAKE_SHARED_MODULE_CREATE_C_FLAGS} -undefined dynamic_lookup")
+ENDIF()
+
+CHECK_FUNCTION_EXISTS(getspnam HAVE_SHADOW)
+IF(HAVE_SHADOW)
+ ADD_DEFINITIONS(-DHAVE_SHADOW)
+ENDIF()
+
+SET(SOURCES uhttpd.c uhttpd-file.c uhttpd-utils.c)
+SET(TLS_CFLAGS)
+
+IF(CGI_SUPPORT)
+ SET(SOURCES ${SOURCES} uhttpd-cgi.c)
+ ADD_DEFINITIONS(-DHAVE_CGI)
+ENDIF()
+
+IF(NOT TLS_SUPPORT STREQUAL "none")
+ ADD_DEFINITIONS(-DHAVE_TLS ${TLS_CFLAGS})
+ ADD_LIBRARY(uhttpd_tls MODULE uhttpd-tls.c)
+ SET(PLUGINS ${PLUGINS} uhttpd_tls)
+ENDIF()
+
+IF(TLS_SUPPORT STREQUAL "none")
+ELSEIF(TLS_SUPPORT STREQUAL "openssl")
+ ADD_DEFINITIONS(-DTLS_IS_OPENSSL)
+ TARGET_LINK_LIBRARIES(uhttpd_tls ${TLS_LDFLAGS} ssl)
+ELSEIF(TLS_SUPPORT STREQUAL "cyassl")
+ ADD_DEFINITIONS(-DTLS_IS_CYASSL)
+ TARGET_LINK_LIBRARIES(uhttpd_tls ${TLS_LDFLAGS} cyassl)
+ELSE()
+ MESSAGE(FATAL_ERROR "Invalid TLS provider option, use none|openssl|cyassl")
+ENDIF()
+
+IF(UBUS_SUPPORT)
+ ADD_DEFINITIONS(-DHAVE_UBUS)
+ ADD_LIBRARY(uhttpd_ubus MODULE uhttpd-ubus.c)
+ TARGET_LINK_LIBRARIES(uhttpd_ubus ubox ubus json blobmsg_json)
+ SET(PLUGINS ${PLUGINS} uhttpd_ubus)
+ENDIF()
+
+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()
+
+ ADD_DEFINITIONS(-DHAVE_LUA ${LUA_CFLAGS})
+ ADD_LIBRARY(uhttpd_lua MODULE uhttpd-lua.c)
+ TARGET_LINK_LIBRARIES(uhttpd_lua ${LUA_LIBS} m dl)
+ SET(PLUGINS ${PLUGINS} uhttpd_lua)
+ENDIF()
+
+ADD_EXECUTABLE(uhttpd ${SOURCES})
+
+TARGET_LINK_LIBRARIES(uhttpd ubox dl crypt)
+
+IF(PLUGINS)
+ SET_TARGET_PROPERTIES(${PLUGINS} PROPERTIES
+ PREFIX ""
+ )
+ENDIF()
+
+INSTALL(TARGETS uhttpd ${PLUGINS}
+ RUNTIME DESTINATION bin
+ LIBRARY DESTINATION lib
+)
diff --git a/Makefile b/Makefile
deleted file mode 100644
index 98226ed..0000000
--- a/Makefile
+++ /dev/null
@@ -1,89 +0,0 @@
-CGI_SUPPORT ?= 1
-LUA_SUPPORT ?= 1
-TLS_SUPPORT ?= 1
-UHTTPD_TLS ?= cyassl
-
-CFLAGS ?= -I./lua-5.1.4/src $(TLS_CFLAGS) -O0 -ggdb3
-LDFLAGS ?= -L./lua-5.1.4/src
-
-CFLAGS += -Wall --std=gnu99
-
-ifeq ($(UHTTPD_TLS),openssl)
- TLS_LDFLAGS ?= -L./openssl-0.9.8m -lssl
- TLS_CFLAGS ?= -I./openssl-0.9.8m/include -DTLS_IS_OPENSSL
-else
- TLS_LDFLAGS ?= -L./cyassl-1.4.0/src/.libs -lcyassl
- TLS_CFLAGS ?= -I./cyassl-1.4.0/include -DTLS_IS_CYASSL
-endif
-
-OBJ := uhttpd.o uhttpd-file.o uhttpd-utils.o
-LIB := -Wl,--export-dynamic -lcrypt -ldl
-
-TLSLIB :=
-LUALIB :=
-
-HAVE_SHADOW=$(shell echo 'int main(void){ return !getspnam("root"); }' | \
- $(CC) -include shadow.h -xc -o/dev/null - 2>/dev/null && echo yes)
-
-ifeq ($(HAVE_SHADOW),yes)
- CFLAGS += -DHAVE_SHADOW
-endif
-
-ifeq ($(TLS_SUPPORT),1)
- CFLAGS += -DHAVE_TLS
-endif
-
-ifeq ($(CGI_SUPPORT),1)
- CFLAGS += -DHAVE_CGI
-endif
-
-ifeq ($(LUA_SUPPORT),1)
- CFLAGS += -DHAVE_LUA
-endif
-
-ifeq ($(UBUS_SUPPORT),1)
- CFLAGS += -DHAVE_UBUS
-endif
-
-
-world: compile
-
-ifeq ($(CGI_SUPPORT),1)
- OBJ += uhttpd-cgi.o
-endif
-
-ifeq ($(LUA_SUPPORT),1)
- LUALIB := uhttpd_lua.so
-
- $(LUALIB): uhttpd-lua.c
- $(CC) $(CFLAGS) $(LDFLAGS) $(FPIC) \
- -shared -lm -llua -ldl \
- -o $(LUALIB) uhttpd-lua.c
-endif
-
-ifeq ($(TLS_SUPPORT),1)
- TLSLIB := uhttpd_tls.so
-
- $(TLSLIB): uhttpd-tls.c
- $(CC) $(CFLAGS) $(LDFLAGS) $(FPIC) \
- -shared $(TLS_LDFLAGS) \
- -o $(TLSLIB) uhttpd-tls.c
-endif
-
-ifeq ($(UBUS_SUPPORT),1)
- UBUSLIB := uhttpd_ubus.so
-
- $(UBUSLIB): uhttpd-ubus.c
- $(CC) $(CFLAGS) $(LDFLAGS) $(FPIC) \
- -shared -lubus -ljson -lblobmsg_json \
- -o $(UBUSLIB) uhttpd-ubus.c
-endif
-
-%.o: %.c
- $(CC) $(CFLAGS) -c -o $@ $<
-
-compile: $(OBJ) $(TLSLIB) $(LUALIB) $(UBUSLIB)
- $(CC) -o uhttpd $(LDFLAGS) $(OBJ) $(LIB)
-
-clean:
- rm -f *.o *.so uhttpd