1################################################################################
2#
3# petitboot
4#
5################################################################################
6
7PETITBOOT_VERSION = 1.15
8PETITBOOT_SOURCE = petitboot-v$(PETITBOOT_VERSION).tar.gz
9PETITBOOT_SITE = https://github.com/open-power/petitboot/releases/download/v$(PETITBOOT_VERSION)
10PETITBOOT_DEPENDENCIES = \
11	elfutils \
12	ncurses \
13	udev \
14	host-bison \
15	host-flex \
16	lvm2 \
17	$(if $(BR2_PACKAGE_LIBXCRYPT),libxcrypt) \
18	$(TARGET_NLS_DEPENDENCIES)
19PETITBOOT_LICENSE = GPL-2.0
20PETITBOOT_LICENSE_FILES = COPYING
21
22PETITBOOT_CONF_ENV = LDFLAGS="$(TARGET_LDFLAGS) $(TARGET_NLS_LIBS)"
23PETITBOOT_CONF_OPTS = \
24	--enable-crypt \
25	--enable-platform-auto \
26	--disable-mtd \
27	--with-ncurses \
28	--without-signed-boot \
29	--without-twin-fbdev \
30	--without-twin-x11 \
31	$(if $(BR2_PACKAGE_BUSYBOX),--enable-busybox,--disable-busybox) \
32	HOST_PROG_KEXEC=/usr/sbin/kexec \
33	HOST_PROG_SHUTDOWN=/usr/libexec/petitboot/bb-kexec-reboot
34
35# HPA and Busybox tftp are supported. HPA tftp is part of Buildroot's tftpd
36# package.
37ifeq ($(BR2_PACKAGE_TFTPD),y)
38PETITBOOT_CONF_OPTS += --with-tftp=hpa
39else ifeq ($(BR2_PACKAGE_BUSYBOX),y)
40PETITBOOT_CONF_OPTS += --with-tftp=busybox
41else
42# This actually means "autodetect", there's no way to really disable.
43PETITBOOT_CONF_OPTS += --without-tftp
44endif
45
46ifeq ($(BR2_PACKAGE_DTC),y)
47PETITBOOT_DEPENDENCIES += dtc
48PETITBOOT_CONF_OPTS += --with-fdt
49define PETITBOOT_POST_INSTALL_DTB
50	$(INSTALL) -D -m 0755 $(@D)/utils/hooks/30-dtb-updates \
51		$(TARGET_DIR)/etc/petitboot/boot.d/30-dtb-updates
52endef
53PETITBOOT_POST_INSTALL_TARGET_HOOKS += PETITBOOT_POST_INSTALL_DTB
54else
55PETITBOOT_CONF_OPTS += --without-fdt
56endif
57
58PETITBOOT_GETTY_PORT = $(patsubst %,'%',$(call qstrip,$(BR2_PACKAGE_PETITBOOT_GETTY_PORT)))
59
60define PETITBOOT_POST_INSTALL
61	$(INSTALL) -D -m 0755 $(@D)/utils/bb-kexec-reboot \
62		$(TARGET_DIR)/usr/libexec/petitboot/bb-kexec-reboot
63	$(INSTALL) -D -m 0755 $(@D)/utils/hooks/01-create-default-dtb \
64		$(TARGET_DIR)/etc/petitboot/boot.d/01-create-default-dtb
65	$(INSTALL) -D -m 0755 $(@D)/utils/hooks/90-sort-dtb \
66		$(TARGET_DIR)/etc/petitboot/boot.d/90-sort-dtb
67	$(INSTALL) -D -m 0755 $(PETITBOOT_PKGDIR)/S15pb-discover \
68		$(TARGET_DIR)/etc/init.d/S15pb-discover
69	$(INSTALL) -D -m 0755 $(PETITBOOT_PKGDIR)/pb-console \
70		$(TARGET_DIR)/etc/init.d/pb-console
71
72	mkdir -p $(TARGET_DIR)/etc/udev/rules.d
73	for port in $(PETITBOOT_GETTY_PORT); do \
74		printf 'SUBSYSTEM=="tty", KERNEL=="%s", RUN+="/etc/init.d/pb-console start $$name"\n' "$$port"; \
75	done > $(TARGET_DIR)/etc/udev/rules.d/petitboot-console-ui.rules
76
77	mkdir -p $(TARGET_DIR)/usr/share/udhcpc/default.script.d/
78	ln -sf /usr/sbin/pb-udhcpc \
79		$(TARGET_DIR)/usr/share/udhcpc/default.script.d/
80endef
81
82PETITBOOT_POST_INSTALL_TARGET_HOOKS += PETITBOOT_POST_INSTALL
83
84$(eval $(autotools-package))
85