CMakeLists.txt 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. cmake_minimum_required(VERSION 2.6)
  2. PROJECT(procd C)
  3. INCLUDE(GNUInstallDirs)
  4. ADD_DEFINITIONS(-Os -ggdb -Wall -Werror --std=gnu99 -Wmissing-declarations)
  5. SET(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "")
  6. IF(APPLE)
  7. INCLUDE_DIRECTORIES(/opt/local/include)
  8. LINK_DIRECTORIES(/opt/local/lib)
  9. ENDIF()
  10. ADD_LIBRARY(setlbf SHARED service/setlbf.c)
  11. INSTALL(TARGETS setlbf
  12. LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
  13. )
  14. SET(SOURCES procd.c signal.c state.c hotplug-dispatch.c inittab.c rcS.c ubus.c
  15. system.c sysupgrade.c service/service.c service/instance.c
  16. service/validate.c service/trigger.c service/watch.c utils/utils.c)
  17. IF(NOT DISABLE_INIT)
  18. SET(SOURCES ${SOURCES} watchdog.c plug/coldplug.c plug/hotplug.c)
  19. ENDIF()
  20. FIND_LIBRARY(ubox NAMES ubox)
  21. FIND_LIBRARY(ubus NAMES ubus)
  22. FIND_LIBRARY(uci NAMES uci)
  23. FIND_LIBRARY(blobmsg_json NAMES blobmsg_json)
  24. FIND_LIBRARY(json_script NAMES json_script)
  25. FIND_LIBRARY(json NAMES json-c json)
  26. SET(LIBS ${ubox} ${ubus} ${json} ${blobmsg_json} ${json_script})
  27. IF(DEBUG)
  28. ADD_DEFINITIONS(-DUDEV_DEBUG -g3)
  29. ENDIF()
  30. IF(EARLY_PATH)
  31. ADD_DEFINITIONS(-DEARLY_PATH="${EARLY_PATH}")
  32. ENDIF()
  33. IF(ZRAM_TMPFS)
  34. ADD_DEFINITIONS(-DZRAM_TMPFS)
  35. SET(SOURCES_ZRAM initd/zram.c)
  36. ENDIF()
  37. IF(SELINUX)
  38. include(FindPkgConfig)
  39. pkg_search_module(SELINUX REQUIRED libselinux)
  40. add_compile_definitions(WITH_SELINUX)
  41. ENDIF()
  42. add_subdirectory(upgraded)
  43. ADD_EXECUTABLE(procd ${SOURCES})
  44. TARGET_LINK_LIBRARIES(procd ${LIBS})
  45. INSTALL(TARGETS procd
  46. RUNTIME DESTINATION ${CMAKE_INSTALL_SBINDIR}
  47. )
  48. FIND_PATH(ubox_include_dir libubox/uloop.h)
  49. INCLUDE_DIRECTORIES(${ubox_include_dir})
  50. IF(DISABLE_INIT)
  51. ADD_DEFINITIONS(-DDISABLE_INIT)
  52. ELSE()
  53. ADD_EXECUTABLE(init initd/init.c initd/early.c initd/preinit.c initd/mkdev.c sysupgrade.c watchdog.c
  54. utils/utils.c ${SOURCES_ZRAM})
  55. TARGET_INCLUDE_DIRECTORIES(init PUBLIC ${SELINUX_INCLUDE_DIRS})
  56. TARGET_LINK_LIBRARIES(init ${LIBS} ${SELINUX_LIBRARIES})
  57. INSTALL(TARGETS init
  58. RUNTIME DESTINATION ${CMAKE_INSTALL_SBINDIR}
  59. )
  60. ADD_EXECUTABLE(udevtrigger plug/udevtrigger.c)
  61. INSTALL(TARGETS udevtrigger
  62. RUNTIME DESTINATION ${CMAKE_INSTALL_SBINDIR}
  63. )
  64. ENDIF()
  65. ADD_EXECUTABLE(askfirst utils/askfirst.c)
  66. INSTALL(TARGETS askfirst
  67. RUNTIME DESTINATION ${CMAKE_INSTALL_SBINDIR}
  68. )
  69. ADD_CUSTOM_COMMAND(
  70. OUTPUT syscall-names.h
  71. COMMAND ./make_syscall_h.sh ${CMAKE_C_COMPILER} > ./syscall-names.h
  72. DEPENDS ./make_syscall_h.sh
  73. )
  74. ADD_CUSTOM_TARGET(syscall-names-h DEPENDS syscall-names.h)
  75. ADD_CUSTOM_COMMAND(
  76. OUTPUT capabilities-names.h
  77. COMMAND ./make_capabilities_h.sh ${CMAKE_C_COMPILER} > ./capabilities-names.h
  78. DEPENDS ./make_capabilities_h.sh
  79. )
  80. ADD_CUSTOM_TARGET(capabilities-names-h DEPENDS capabilities-names.h)
  81. IF(SECCOMP_SUPPORT)
  82. ADD_DEFINITIONS(-DSECCOMP_SUPPORT)
  83. ADD_LIBRARY(preload-seccomp SHARED jail/preload.c jail/seccomp.c jail/seccomp-oci.c)
  84. TARGET_LINK_LIBRARIES(preload-seccomp dl ${ubox} ${blobmsg_json})
  85. INSTALL(TARGETS preload-seccomp
  86. LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
  87. )
  88. ADD_DEPENDENCIES(preload-seccomp syscall-names-h)
  89. SET(SOURCES_OCI_SECCOMP jail/seccomp-oci.c)
  90. ENDIF()
  91. IF(JAIL_SUPPORT)
  92. ADD_EXECUTABLE(ujail jail/jail.c jail/cgroups.c jail/cgroups-bpf.c jail/elf.c jail/fs.c jail/capabilities.c jail/netifd.c ${SOURCES_OCI_SECCOMP})
  93. TARGET_LINK_LIBRARIES(ujail ${ubox} ${ubus} ${uci} ${blobmsg_json})
  94. INSTALL(TARGETS ujail
  95. RUNTIME DESTINATION ${CMAKE_INSTALL_SBINDIR}
  96. )
  97. ADD_DEPENDENCIES(ujail capabilities-names-h)
  98. IF(SECCOMP_SUPPORT)
  99. ADD_DEPENDENCIES(ujail syscall-names-h)
  100. ENDIF()
  101. ADD_EXECUTABLE(ujail-console jail/console.c)
  102. TARGET_LINK_LIBRARIES(ujail-console ${ubox} ${ubus} ${blobmsg_json})
  103. INSTALL(TARGETS ujail-console
  104. RUNTIME DESTINATION ${CMAKE_INSTALL_SBINDIR}
  105. )
  106. ADD_EXECUTABLE(uxc uxc.c)
  107. TARGET_LINK_LIBRARIES(uxc ${ubox} ${ubus} ${blobmsg_json})
  108. INSTALL(TARGETS uxc
  109. RUNTIME DESTINATION ${CMAKE_INSTALL_SBINDIR}
  110. )
  111. endif()
  112. IF(UTRACE_SUPPORT)
  113. ADD_EXECUTABLE(utrace trace/trace.c)
  114. TARGET_LINK_LIBRARIES(utrace ${ubox} ${json} ${blobmsg_json})
  115. INSTALL(TARGETS utrace
  116. RUNTIME DESTINATION ${CMAKE_INSTALL_SBINDIR}
  117. )
  118. ADD_DEPENDENCIES(utrace syscall-names-h)
  119. ADD_LIBRARY(preload-trace SHARED trace/preload.c)
  120. TARGET_LINK_LIBRARIES(preload-trace dl)
  121. INSTALL(TARGETS preload-trace
  122. LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
  123. )
  124. endif()