2
0

CMakeLists.txt 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. cmake_minimum_required(VERSION 2.6)
  2. INCLUDE(CheckFunctionExists)
  3. PROJECT(rpcd C)
  4. ADD_DEFINITIONS(-Os -Wall -Werror --std=gnu99 -g3 -Wmissing-declarations)
  5. INCLUDE_DIRECTORIES(include)
  6. OPTION(FILE_SUPPORT "File plugin support" ON)
  7. OPTION(IWINFO_SUPPORT "libiwinfo plugin support" ON)
  8. OPTION(RPCSYS_SUPPORT "rpc-sys plugin support" ON)
  9. SET(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "")
  10. IF(APPLE)
  11. INCLUDE_DIRECTORIES(/opt/local/include)
  12. LINK_DIRECTORIES(/opt/local/lib)
  13. ENDIF()
  14. CHECK_FUNCTION_EXISTS(getspnam HAVE_SHADOW)
  15. IF(HAVE_SHADOW)
  16. ADD_DEFINITIONS(-DHAVE_SHADOW)
  17. ENDIF()
  18. FIND_LIBRARY(uci NAMES uci)
  19. FIND_LIBRARY(ubus NAMES ubus)
  20. FIND_LIBRARY(ubox NAMES ubox)
  21. FIND_LIBRARY(blobmsg_json NAMES blobmsg_json)
  22. FIND_LIBRARY(json NAMES json-c json)
  23. FIND_LIBRARY(crypt NAMES crypt)
  24. IF(crypt STREQUAL "crypt-NOTFOUND")
  25. SET(crypt "")
  26. ENDIF()
  27. FIND_PATH(ubus_include_dir libubus.h)
  28. INCLUDE_DIRECTORIES(${ubus_include_dir})
  29. FIND_PATH(ubox_include_dir libubox/blobmsg_json.h)
  30. INCLUDE_DIRECTORIES(${ubox_include_dir})
  31. ADD_EXECUTABLE(rpcd main.c exec.c session.c uci.c rc.c plugin.c)
  32. TARGET_LINK_LIBRARIES(rpcd ${ubox} ${ubus} ${uci} ${blobmsg_json} ${json} ${crypt} dl)
  33. SET(PLUGINS "")
  34. IF(FILE_SUPPORT)
  35. SET(PLUGINS ${PLUGINS} file_plugin)
  36. ADD_LIBRARY(file_plugin MODULE file.c)
  37. TARGET_LINK_LIBRARIES(file_plugin ${ubox} ${ubus})
  38. SET_TARGET_PROPERTIES(file_plugin PROPERTIES OUTPUT_NAME file PREFIX "")
  39. ENDIF()
  40. IF(RPCSYS_SUPPORT)
  41. SET(PLUGINS ${PLUGINS} rpcsys_plugin)
  42. ADD_LIBRARY(rpcsys_plugin MODULE sys.c)
  43. TARGET_LINK_LIBRARIES(rpcsys_plugin ${ubox} ${ubus})
  44. SET_TARGET_PROPERTIES(rpcsys_plugin PROPERTIES OUTPUT_NAME rpcsys PREFIX "")
  45. ENDIF()
  46. IF (IWINFO_SUPPORT)
  47. FIND_LIBRARY(iwinfo NAMES iwinfo)
  48. SET(PLUGINS ${PLUGINS} iwinfo_plugin)
  49. ADD_LIBRARY(iwinfo_plugin MODULE iwinfo.c)
  50. TARGET_LINK_LIBRARIES(iwinfo_plugin ${ubox} ${ubus} ${iwinfo})
  51. SET_TARGET_PROPERTIES(iwinfo_plugin PROPERTIES OUTPUT_NAME iwinfo PREFIX "")
  52. ENDIF()
  53. INSTALL(TARGETS rpcd ${PLUGINS}
  54. RUNTIME DESTINATION sbin
  55. LIBRARY DESTINATION lib
  56. )