systemd.mk 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246
  1. ################################################################################
  2. #
  3. # systemd
  4. #
  5. ################################################################################
  6. SYSTEMD_VERSION = 229
  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. --with-dbuspolicydir=/etc/dbus-1/system.d \
  32. --with-dbussessionservicedir=/usr/share/dbus-1/services \
  33. --with-dbussystemservicedir=/usr/share/dbus-1/system-services \
  34. --disable-efi \
  35. --disable-gnuefi \
  36. --disable-ldconfig \
  37. --disable-tests \
  38. --disable-dbus \
  39. --without-python
  40. SYSTEMD_CFLAGS = $(TARGET_CFLAGS) -fno-lto
  41. # Override path to kmod, used in kmod-static-nodes.service
  42. SYSTEMD_CONF_ENV = \
  43. CFLAGS="$(SYSTEMD_CFLAGS)" \
  44. ac_cv_path_KMOD=/usr/bin/kmod
  45. define SYSTEMD_RUN_INTLTOOLIZE
  46. cd $(@D) && $(HOST_DIR)/usr/bin/intltoolize --force --automake
  47. endef
  48. SYSTEMD_PRE_CONFIGURE_HOOKS += SYSTEMD_RUN_INTLTOOLIZE
  49. ifeq ($(BR2_PACKAGE_SYSTEMD_COMPAT),y)
  50. SYSTEMD_CONF_OPTS += --enable-compat-libs
  51. else
  52. SYSTEMD_CONF_OPTS += --disable-compat-libs
  53. endif
  54. ifeq ($(BR2_PACKAGE_ACL),y)
  55. SYSTEMD_CONF_OPTS += --enable-acl
  56. SYSTEMD_DEPENDENCIES += acl
  57. else
  58. SYSTEMD_CONF_OPTS += --disable-acl
  59. endif
  60. ifeq ($(BR2_PACKAGE_LIBSECCOMP),y)
  61. SYSTEMD_CONF_OPTS += --enable-seccomp
  62. SYSTEMD_DEPENDENCIES += libseccomp
  63. else
  64. SYSTEMD_CONF_OPTS += --disable-seccomp
  65. endif
  66. ifeq ($(BR2_PACKAGE_SYSTEMD_KDBUS),y)
  67. SYSTEMD_CONF_OPTS += --enable-kdbus
  68. else
  69. SYSTEMD_CONF_OPTS += --disable-kdbus
  70. endif
  71. ifeq ($(BR2_PACKAGE_BZIP2),y)
  72. SYSTEMD_DEPENDENCIES += bzip2
  73. SYSTEMD_CONF_OPTS += --enable-bzip2
  74. else
  75. SYSTEMD_CONF_OPTS += --disable-bzip2
  76. endif
  77. ifeq ($(BR2_PACKAGE_LZ4),y)
  78. SYSTEMD_DEPENDENCIES += lz4
  79. SYSTEMD_CONF_OPTS += --enable-lz4
  80. else
  81. SYSTEMD_CONF_OPTS += --disable-lz4
  82. endif
  83. ifeq ($(BR2_PACKAGE_XZ),y)
  84. SYSTEMD_DEPENDENCIES += xz
  85. SYSTEMD_CONF_OPTS += --enable-xz
  86. else
  87. SYSTEMD_CONF_OPTS += --disable-xz
  88. endif
  89. ifeq ($(BR2_PACKAGE_ZLIB),y)
  90. SYSTEMD_DEPENDENCIES += zlib
  91. SYSTEMD_CONF_OPTS += --enable-zlib
  92. else
  93. SYSTEMD_CONF_OPTS += --disable-zlib
  94. endif
  95. ifeq ($(BR2_PACKAGE_LIBCURL),y)
  96. SYSTEMD_DEPENDENCIES += libcurl
  97. SYSTEMD_CONF_OPTS += --enable-libcurl
  98. else
  99. SYSTEMD_CONF_OPTS += --disable-libcurl
  100. endif
  101. ifeq ($(BR2_PACKAGE_LIBGCRYPT),y)
  102. SYSTEMD_DEPENDENCIES += libgcrypt
  103. SYSTEMD_CONF_OPTS += \
  104. --enable-gcrypt \
  105. --with-libgcrypt-prefix=$(STAGING_DIR)/usr
  106. else
  107. SYSTEMD_CONF_OPTS += --disable-gcrypt
  108. endif
  109. ifeq ($(BR2_PACKAGE_SYSTEMD_JOURNAL_GATEWAY),y)
  110. SYSTEMD_DEPENDENCIES += libmicrohttpd
  111. SYSTEMD_CONF_OPTS += --enable-microhttpd
  112. else
  113. SYSTEMD_CONF_OPTS += --disable-microhttpd
  114. endif
  115. ifeq ($(BR2_PACKAGE_SYSTEMD_BINFMT),y)
  116. SYSTEMD_CONF_OPTS += --enable-binfmt
  117. else
  118. SYSTEMD_CONF_OPTS += --disable-binfmt
  119. endif
  120. ifeq ($(BR2_PACKAGE_SYSTEMD_VCONSOLE),y)
  121. SYSTEMD_CONF_OPTS += --enable-vconsole
  122. else
  123. SYSTEMD_CONF_OPTS += --disable-vconsole
  124. endif
  125. ifeq ($(BR2_PACKAGE_SYSTEMD_NETWORKD),y)
  126. SYSTEMD_CONF_OPTS += --enable-networkd
  127. define SYSTEMD_INSTALL_RESOLVCONF_HOOK
  128. ln -sf ../run/systemd/resolve/resolv.conf \
  129. $(TARGET_DIR)/etc/resolv.conf
  130. endef
  131. else
  132. SYSTEMD_CONF_OPTS += --disable-networkd
  133. define SYSTEMD_INSTALL_SERVICE_NETWORK
  134. $(INSTALL) -D -m 644 package/systemd/network.service \
  135. $(TARGET_DIR)/etc/systemd/system/network.service
  136. mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants
  137. ln -fs ../network.service \
  138. $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/network.service
  139. endef
  140. endif
  141. ifeq ($(BR2_PACKAGE_SYSTEMD_TIMESYNCD),y)
  142. SYSTEMD_CONF_OPTS += --enable-timesyncd
  143. define SYSTEMD_INSTALL_SERVICE_TIMESYNC
  144. mkdir -p $(TARGET_DIR)/etc/systemd/system/sysinit.target.wants
  145. ln -sf ../../../../lib/systemd/system/systemd-timesyncd.service \
  146. $(TARGET_DIR)/etc/systemd/system/sysinit.target.wants/systemd-timesyncd.service
  147. endef
  148. else
  149. SYSTEMD_CONF_OPTS += --disable-timesyncd
  150. endif
  151. ifeq ($(BR2_PACKAGE_SYSTEMD_SMACK_SUPPORT),y)
  152. SYSTEMD_CONF_OPTS += --enable-smack
  153. else
  154. SYSTEMD_CONF_OPTS += --disable-smack
  155. endif
  156. # mq_getattr needs -lrt
  157. SYSTEMD_MAKE_OPTS += LIBS=-lrt
  158. SYSTEMD_MAKE_OPTS += LDFLAGS+=-ldl
  159. define SYSTEMD_INSTALL_INIT_HOOK
  160. ln -fs ../lib/systemd/systemd $(TARGET_DIR)/sbin/init
  161. ln -fs ../bin/systemctl $(TARGET_DIR)/sbin/halt
  162. ln -fs ../bin/systemctl $(TARGET_DIR)/sbin/poweroff
  163. ln -fs ../bin/systemctl $(TARGET_DIR)/sbin/reboot
  164. ln -fs ../../../lib/systemd/system/multi-user.target \
  165. $(TARGET_DIR)/etc/systemd/system/default.target
  166. endef
  167. define SYSTEMD_INSTALL_MACHINEID_HOOK
  168. touch $(TARGET_DIR)/etc/machine-id
  169. endef
  170. define SYSTEMD_SANITIZE_PATH_IN_UNITS
  171. find $(TARGET_DIR)/lib/systemd/system -name '*.service' \
  172. -exec $(SED) 's,$(HOST_DIR),,g' {} \;
  173. endef
  174. SYSTEMD_POST_INSTALL_TARGET_HOOKS += \
  175. SYSTEMD_INSTALL_INIT_HOOK \
  176. SYSTEMD_INSTALL_MACHINEID_HOOK \
  177. SYSTEMD_INSTALL_RESOLVCONF_HOOK \
  178. SYSTEMD_SANITIZE_PATH_IN_UNITS
  179. define SYSTEMD_USERS
  180. systemd-journal -1 systemd-journal -1 * /var/log/journal - - Journal
  181. systemd-journal-gateway -1 systemd-journal-gateway -1 * /var/log/journal - - Journal Gateway
  182. systemd-journal-remote -1 systemd-journal-remote -1 * /var/log/journal/remote - - Journal Remote
  183. systemd-journal-upload -1 systemd-journal-upload -1 * - - - Journal Upload
  184. systemd-resolve -1 systemd-resolve -1 * - - - Network Name Resolution Manager
  185. systemd-bus-proxy -1 systemd-bus-proxy -1 * - - - Proxy D-Bus messages to/from a bus
  186. systemd-timesync -1 systemd-timesync -1 * - - - Network Time Synchronization
  187. systemd-network -1 systemd-network -1 * - - - Network Manager
  188. - - input -1 * - - - Input device group
  189. endef
  190. define SYSTEMD_DISABLE_SERVICE_TTY1
  191. rm -f $(TARGET_DIR)/etc/systemd/system/getty.target.wants/getty@tty1.service
  192. endef
  193. ifneq ($(call qstrip,$(BR2_TARGET_GENERIC_GETTY_PORT)),)
  194. # systemd needs getty.service for VTs and serial-getty.service for serial ttys
  195. define SYSTEMD_INSTALL_SERVICE_TTY
  196. if echo $(BR2_TARGET_GENERIC_GETTY_PORT) | egrep -q 'tty[0-9]*$$'; \
  197. then \
  198. SERVICE="getty"; \
  199. else \
  200. SERVICE="serial-getty"; \
  201. fi; \
  202. ln -fs ../../../../lib/systemd/system/$${SERVICE}@.service \
  203. $(TARGET_DIR)/etc/systemd/system/getty.target.wants/$${SERVICE}@$(BR2_TARGET_GENERIC_GETTY_PORT).service
  204. endef
  205. endif
  206. define SYSTEMD_INSTALL_INIT_SYSTEMD
  207. $(SYSTEMD_DISABLE_SERVICE_TTY1)
  208. $(SYSTEMD_INSTALL_SERVICE_TTY)
  209. $(SYSTEMD_INSTALL_SERVICE_NETWORK)
  210. $(SYSTEMD_INSTALL_SERVICE_TIMESYNC)
  211. endef
  212. $(eval $(autotools-package))