systemd.mk 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261
  1. ################################################################################
  2. #
  3. # systemd
  4. #
  5. ################################################################################
  6. SYSTEMD_VERSION = 230
  7. SYSTEMD_SITE = $(call github,systemd,systemd,v$(SYSTEMD_VERSION))
  8. SYSTEMD_LICENSE = LGPLv2.1+, GPLv2+ (udev), Public Domain (few source files, see README)
  9. SYSTEMD_LICENSE_FILES = LICENSE.GPL2 LICENSE.LGPL2.1 README
  10. SYSTEMD_INSTALL_STAGING = YES
  11. SYSTEMD_DEPENDENCIES = \
  12. host-intltool \
  13. libcap \
  14. util-linux \
  15. kmod \
  16. host-gperf
  17. SYSTEMD_PROVIDES = udev
  18. SYSTEMD_AUTORECONF = YES
  19. # Make sure that systemd will always be built after busybox so that we have
  20. # a consistent init setup between two builds
  21. ifeq ($(BR2_PACKAGE_BUSYBOX),y)
  22. SYSTEMD_DEPENDENCIES += busybox
  23. endif
  24. SYSTEMD_CONF_OPTS += \
  25. --with-rootprefix= \
  26. --enable-static=no \
  27. --disable-manpages \
  28. --disable-selinux \
  29. --disable-pam \
  30. --disable-libcryptsetup \
  31. --disable-efi \
  32. --disable-gnuefi \
  33. --disable-ldconfig \
  34. --disable-tests \
  35. --with-default-dnssec=no \
  36. --without-python
  37. SYSTEMD_CFLAGS = $(TARGET_CFLAGS) -fno-lto
  38. # Override path to kmod, used in kmod-static-nodes.service
  39. SYSTEMD_CONF_ENV = \
  40. CFLAGS="$(SYSTEMD_CFLAGS)" \
  41. ac_cv_path_KMOD=/usr/bin/kmod
  42. define SYSTEMD_RUN_INTLTOOLIZE
  43. cd $(@D) && $(HOST_DIR)/usr/bin/intltoolize --force --automake
  44. endef
  45. SYSTEMD_PRE_CONFIGURE_HOOKS += SYSTEMD_RUN_INTLTOOLIZE
  46. ifeq ($(BR2_PACKAGE_SYSTEMD_COMPAT),y)
  47. SYSTEMD_CONF_OPTS += --enable-compat-libs
  48. else
  49. SYSTEMD_CONF_OPTS += --disable-compat-libs
  50. endif
  51. ifeq ($(BR2_PACKAGE_ACL),y)
  52. SYSTEMD_CONF_OPTS += --enable-acl
  53. SYSTEMD_DEPENDENCIES += acl
  54. else
  55. SYSTEMD_CONF_OPTS += --disable-acl
  56. endif
  57. ifeq ($(BR2_PACKAGE_LIBSECCOMP),y)
  58. SYSTEMD_CONF_OPTS += --enable-seccomp
  59. SYSTEMD_DEPENDENCIES += libseccomp
  60. else
  61. SYSTEMD_CONF_OPTS += --disable-seccomp
  62. endif
  63. ifeq ($(BR2_PACKAGE_SYSTEMD_KDBUS),y)
  64. SYSTEMD_CONF_OPTS += --enable-kdbus
  65. else
  66. SYSTEMD_CONF_OPTS += --disable-kdbus
  67. endif
  68. ifeq ($(BR2_PACKAGE_BZIP2),y)
  69. SYSTEMD_DEPENDENCIES += bzip2
  70. SYSTEMD_CONF_OPTS += --enable-bzip2
  71. else
  72. SYSTEMD_CONF_OPTS += --disable-bzip2
  73. endif
  74. ifeq ($(BR2_PACKAGE_LZ4),y)
  75. SYSTEMD_DEPENDENCIES += lz4
  76. SYSTEMD_CONF_OPTS += --enable-lz4
  77. else
  78. SYSTEMD_CONF_OPTS += --disable-lz4
  79. endif
  80. ifeq ($(BR2_PACKAGE_XZ),y)
  81. SYSTEMD_DEPENDENCIES += xz
  82. SYSTEMD_CONF_OPTS += --enable-xz
  83. else
  84. SYSTEMD_CONF_OPTS += --disable-xz
  85. endif
  86. ifeq ($(BR2_PACKAGE_ZLIB),y)
  87. SYSTEMD_DEPENDENCIES += zlib
  88. SYSTEMD_CONF_OPTS += --enable-zlib
  89. else
  90. SYSTEMD_CONF_OPTS += --disable-zlib
  91. endif
  92. ifeq ($(BR2_PACKAGE_LIBCURL),y)
  93. SYSTEMD_DEPENDENCIES += libcurl
  94. SYSTEMD_CONF_OPTS += --enable-libcurl
  95. else
  96. SYSTEMD_CONF_OPTS += --disable-libcurl
  97. endif
  98. ifeq ($(BR2_PACKAGE_LIBGCRYPT),y)
  99. SYSTEMD_DEPENDENCIES += libgcrypt
  100. SYSTEMD_CONF_OPTS += \
  101. --enable-gcrypt \
  102. --with-libgcrypt-prefix=$(STAGING_DIR)/usr \
  103. --with-libgpg-error-prefix=$(STAGING_DIR)/usr
  104. else
  105. SYSTEMD_CONF_OPTS += --disable-gcrypt
  106. endif
  107. ifeq ($(BR2_PACKAGE_SYSTEMD_JOURNAL_GATEWAY),y)
  108. SYSTEMD_DEPENDENCIES += libmicrohttpd
  109. SYSTEMD_CONF_OPTS += --enable-microhttpd
  110. else
  111. SYSTEMD_CONF_OPTS += --disable-microhttpd
  112. endif
  113. ifeq ($(BR2_PACKAGE_SYSTEMD_HWDB),y)
  114. SYSTEMD_CONF_OPTS += --enable-hwdb
  115. else
  116. SYSTEMD_CONF_OPTS += --disable-hwdb
  117. endif
  118. ifeq ($(BR2_PACKAGE_SYSTEMD_BINFMT),y)
  119. SYSTEMD_CONF_OPTS += --enable-binfmt
  120. else
  121. SYSTEMD_CONF_OPTS += --disable-binfmt
  122. endif
  123. ifeq ($(BR2_PACKAGE_SYSTEMD_VCONSOLE),y)
  124. SYSTEMD_CONF_OPTS += --enable-vconsole
  125. else
  126. SYSTEMD_CONF_OPTS += --disable-vconsole
  127. endif
  128. ifeq ($(BR2_PACKAGE_SYSTEMD_BOOTCHART),y)
  129. SYSTEMD_CONF_OPTS += --enable-bootchart
  130. else
  131. SYSTEMD_CONF_OPTS += --disable-bootchart
  132. endif
  133. ifeq ($(BR2_PACKAGE_SYSTEMD_QUOTACHECK),y)
  134. SYSTEMD_CONF_OPTS += --enable-quotacheck
  135. else
  136. SYSTEMD_CONF_OPTS += --disable-quotacheck
  137. endif
  138. ifeq ($(BR2_PACKAGE_SYSTEMD_NETWORKD),y)
  139. SYSTEMD_CONF_OPTS += --enable-networkd
  140. define SYSTEMD_INSTALL_RESOLVCONF_HOOK
  141. ln -sf ../run/systemd/resolve/resolv.conf \
  142. $(TARGET_DIR)/etc/resolv.conf
  143. endef
  144. else
  145. SYSTEMD_CONF_OPTS += --disable-networkd
  146. define SYSTEMD_INSTALL_SERVICE_NETWORK
  147. $(INSTALL) -D -m 644 package/systemd/network.service \
  148. $(TARGET_DIR)/etc/systemd/system/network.service
  149. mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants
  150. ln -fs ../network.service \
  151. $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/network.service
  152. endef
  153. endif
  154. ifeq ($(BR2_PACKAGE_SYSTEMD_TIMESYNCD),y)
  155. SYSTEMD_CONF_OPTS += --enable-timesyncd
  156. define SYSTEMD_INSTALL_SERVICE_TIMESYNC
  157. mkdir -p $(TARGET_DIR)/etc/systemd/system/sysinit.target.wants
  158. ln -sf ../../../../lib/systemd/system/systemd-timesyncd.service \
  159. $(TARGET_DIR)/etc/systemd/system/sysinit.target.wants/systemd-timesyncd.service
  160. endef
  161. else
  162. SYSTEMD_CONF_OPTS += --disable-timesyncd
  163. endif
  164. ifeq ($(BR2_PACKAGE_SYSTEMD_SMACK_SUPPORT),y)
  165. SYSTEMD_CONF_OPTS += --enable-smack
  166. else
  167. SYSTEMD_CONF_OPTS += --disable-smack
  168. endif
  169. # mq_getattr needs -lrt
  170. SYSTEMD_MAKE_OPTS += LIBS=-lrt
  171. SYSTEMD_MAKE_OPTS += LDFLAGS+=-ldl
  172. define SYSTEMD_INSTALL_INIT_HOOK
  173. ln -fs ../lib/systemd/systemd $(TARGET_DIR)/sbin/init
  174. ln -fs ../bin/systemctl $(TARGET_DIR)/sbin/halt
  175. ln -fs ../bin/systemctl $(TARGET_DIR)/sbin/poweroff
  176. ln -fs ../bin/systemctl $(TARGET_DIR)/sbin/reboot
  177. ln -fs ../../../lib/systemd/system/multi-user.target \
  178. $(TARGET_DIR)/etc/systemd/system/default.target
  179. endef
  180. define SYSTEMD_INSTALL_MACHINEID_HOOK
  181. touch $(TARGET_DIR)/etc/machine-id
  182. endef
  183. SYSTEMD_POST_INSTALL_TARGET_HOOKS += \
  184. SYSTEMD_INSTALL_INIT_HOOK \
  185. SYSTEMD_INSTALL_MACHINEID_HOOK \
  186. SYSTEMD_INSTALL_RESOLVCONF_HOOK
  187. define SYSTEMD_USERS
  188. systemd-journal -1 systemd-journal -1 * /var/log/journal - - Journal
  189. systemd-journal-gateway -1 systemd-journal-gateway -1 * /var/log/journal - - Journal Gateway
  190. systemd-journal-remote -1 systemd-journal-remote -1 * /var/log/journal/remote - - Journal Remote
  191. systemd-journal-upload -1 systemd-journal-upload -1 * - - - Journal Upload
  192. systemd-resolve -1 systemd-resolve -1 * - - - Network Name Resolution Manager
  193. systemd-bus-proxy -1 systemd-bus-proxy -1 * - - - Proxy D-Bus messages to/from a bus
  194. systemd-timesync -1 systemd-timesync -1 * - - - Network Time Synchronization
  195. systemd-network -1 systemd-network -1 * - - - Network Manager
  196. - - input -1 * - - - Input device group
  197. endef
  198. define SYSTEMD_DISABLE_SERVICE_TTY1
  199. rm -f $(TARGET_DIR)/etc/systemd/system/getty.target.wants/getty@tty1.service
  200. endef
  201. ifneq ($(call qstrip,$(BR2_TARGET_GENERIC_GETTY_PORT)),)
  202. # systemd needs getty.service for VTs and serial-getty.service for serial ttys
  203. # also patch the file to use the correct baud-rate, the default baudrate is 115200 so look for that
  204. define SYSTEMD_INSTALL_SERVICE_TTY
  205. if echo $(BR2_TARGET_GENERIC_GETTY_PORT) | egrep -q 'tty[0-9]*$$'; \
  206. then \
  207. SERVICE="getty"; \
  208. else \
  209. SERVICE="serial-getty"; \
  210. fi; \
  211. ln -fs ../../../../lib/systemd/system/$${SERVICE}@.service \
  212. $(TARGET_DIR)/etc/systemd/system/getty.target.wants/$${SERVICE}@$(BR2_TARGET_GENERIC_GETTY_PORT).service; \
  213. if [ $(call qstrip,$(BR2_TARGET_GENERIC_GETTY_BAUDRATE)) -gt 0 ] ; \
  214. then \
  215. $(SED) 's,115200,$(BR2_TARGET_GENERIC_GETTY_BAUDRATE),' $(TARGET_DIR)/lib/systemd/system/$${SERVICE}@.service; \
  216. fi
  217. endef
  218. endif
  219. define SYSTEMD_INSTALL_INIT_SYSTEMD
  220. $(SYSTEMD_DISABLE_SERVICE_TTY1)
  221. $(SYSTEMD_INSTALL_SERVICE_TTY)
  222. $(SYSTEMD_INSTALL_SERVICE_NETWORK)
  223. $(SYSTEMD_INSTALL_SERVICE_TIMESYNC)
  224. endef
  225. $(eval $(autotools-package))