Add CMake definitions for plugins
[project/rpcd.git] / CMakeLists.txt
1 cmake_minimum_required(VERSION 2.6)
2
3 PROJECT(luci-rpcd C)
4 ADD_DEFINITIONS(-Os -Wall -Werror --std=gnu99 -g3 -Wmissing-declarations)
5
6 OPTION(FILE_SUPPORT "File plugin support" ON)
7 OPTION(LUCI2_SUPPORT "LuCI2 plugin support" ON)
8 OPTION(IWINFO_SUPPORT "libiwinfo plugin support" ON)
9
10 SET(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "")
11
12 IF(APPLE)
13   INCLUDE_DIRECTORIES(/opt/local/include)
14   LINK_DIRECTORIES(/opt/local/lib)
15 ENDIF()
16
17 FIND_LIBRARY(json NAMES json-c json)
18
19 ADD_EXECUTABLE(luci-rpcd main.c exec.c session.c uci.c plugin.c)
20 TARGET_LINK_LIBRARIES(luci-rpcd ubox ubus uci dl blobmsg_json ${json})
21
22 SET(PLUGINS "")
23
24 IF(FILE_SUPPORT)
25   SET(PLUGINS ${PLUGINS} file_plugin)
26   ADD_LIBRARY(file_plugin MODULE file.c)
27   TARGET_LINK_LIBRARIES(file_plugin ubox ubus)
28   SET_TARGET_PROPERTIES(file_plugin PROPERTIES OUTPUT_NAME file PREFIX "")
29 ENDIF()
30
31 IF(LUCI2_SUPPORT)
32   SET(PLUGINS ${PLUGINS} luci2_plugin)
33   ADD_LIBRARY(luci2_plugin MODULE luci2.c)
34   TARGET_LINK_LIBRARIES(luci2_plugin ubox ubus)
35   SET_TARGET_PROPERTIES(luci2_plugin PROPERTIES OUTPUT_NAME luci2 PREFIX "")
36 ENDIF()
37
38 IF (IWINFO_SUPPORT)
39   SET(PLUGINS ${PLUGINS} iwinfo_plugin)
40   ADD_LIBRARY(iwinfo_plugin MODULE iwinfo.c)
41   TARGET_LINK_LIBRARIES(iwinfo_plugin ubox ubus iwinfo)
42   SET_TARGET_PROPERTIES(iwinfo_plugin PROPERTIES OUTPUT_NAME iwinfo PREFIX "")
43 ENDIF()
44
45 INSTALL(TARGETS luci-rpcd ${PLUGINS}
46         RUNTIME DESTINATION sbin
47         LIBRARY DESTINATION lib
48 )