xref: /OK3568_Linux_fs/buildroot/package/samba4/samba4.mk (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun################################################################################
2*4882a593Smuzhiyun#
3*4882a593Smuzhiyun# samba4
4*4882a593Smuzhiyun#
5*4882a593Smuzhiyun################################################################################
6*4882a593Smuzhiyun
7*4882a593SmuzhiyunSAMBA4_VERSION = 4.14.10
8*4882a593SmuzhiyunSAMBA4_SITE = https://download.samba.org/pub/samba/stable
9*4882a593SmuzhiyunSAMBA4_SOURCE = samba-$(SAMBA4_VERSION).tar.gz
10*4882a593SmuzhiyunSAMBA4_INSTALL_STAGING = YES
11*4882a593SmuzhiyunSAMBA4_LICENSE = GPL-3.0+
12*4882a593SmuzhiyunSAMBA4_LICENSE_FILES = COPYING
13*4882a593SmuzhiyunSAMBA4_CPE_ID_VENDOR = samba
14*4882a593SmuzhiyunSAMBA4_CPE_ID_PRODUCT = samba
15*4882a593SmuzhiyunSAMBA4_SELINUX_MODULES = samba
16*4882a593SmuzhiyunSAMBA4_DEPENDENCIES = \
17*4882a593Smuzhiyun	host-e2fsprogs host-flex host-heimdal host-nfs-utils \
18*4882a593Smuzhiyun	host-perl host-perl-parse-yapp host-python3 \
19*4882a593Smuzhiyun	cmocka e2fsprogs gnutls popt zlib \
20*4882a593Smuzhiyun	$(if $(BR2_PACKAGE_LIBAIO),libaio) \
21*4882a593Smuzhiyun	$(if $(BR2_PACKAGE_LIBCAP),libcap) \
22*4882a593Smuzhiyun	$(if $(BR2_PACKAGE_READLINE),readline) \
23*4882a593Smuzhiyun	$(TARGET_NLS_DEPENDENCIES)
24*4882a593SmuzhiyunSAMBA4_CFLAGS = $(TARGET_CFLAGS)
25*4882a593SmuzhiyunSAMBA4_LDFLAGS = $(TARGET_LDFLAGS) $(TARGET_NLS_LIBS)
26*4882a593SmuzhiyunSAMBA4_CONF_ENV = \
27*4882a593Smuzhiyun	CFLAGS="$(SAMBA4_CFLAGS)" \
28*4882a593Smuzhiyun	LDFLAGS="$(SAMBA4_LDFLAGS)" \
29*4882a593Smuzhiyun	XSLTPROC=false \
30*4882a593Smuzhiyun	WAF_NO_PREFORK=1
31*4882a593Smuzhiyun
32*4882a593SmuzhiyunSAMBA4_PYTHON = PYTHON="$(HOST_DIR)/bin/python3"
33*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_PYTHON3),y)
34*4882a593SmuzhiyunSAMBA4_PYTHON += PYTHON_CONFIG="$(STAGING_DIR)/usr/bin/python3-config"
35*4882a593SmuzhiyunSAMBA4_DEPENDENCIES += python3
36*4882a593Smuzhiyunelse
37*4882a593SmuzhiyunSAMBA4_CONF_OPTS += --disable-python
38*4882a593Smuzhiyunendif
39*4882a593Smuzhiyun
40*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_LIBTIRPC),y)
41*4882a593SmuzhiyunSAMBA4_CFLAGS += `$(PKG_CONFIG_HOST_BINARY) --cflags libtirpc`
42*4882a593SmuzhiyunSAMBA4_LDFLAGS += `$(PKG_CONFIG_HOST_BINARY) --libs libtirpc`
43*4882a593SmuzhiyunSAMBA4_DEPENDENCIES += libtirpc host-pkgconf
44*4882a593Smuzhiyunendif
45*4882a593Smuzhiyun
46*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_ACL),y)
47*4882a593SmuzhiyunSAMBA4_CONF_OPTS += --with-acl-support
48*4882a593SmuzhiyunSAMBA4_DEPENDENCIES += acl
49*4882a593Smuzhiyunelse
50*4882a593SmuzhiyunSAMBA4_CONF_OPTS += --without-acl-support
51*4882a593Smuzhiyunendif
52*4882a593Smuzhiyun
53*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_CUPS),y)
54*4882a593SmuzhiyunSAMBA4_CONF_ENV += CUPS_CONFIG="$(STAGING_DIR)/usr/bin/cups-config"
55*4882a593SmuzhiyunSAMBA4_CONF_OPTS += --enable-cups
56*4882a593SmuzhiyunSAMBA4_DEPENDENCIES += cups
57*4882a593Smuzhiyunelse
58*4882a593SmuzhiyunSAMBA4_CONF_OPTS += --disable-cups
59*4882a593Smuzhiyunendif
60*4882a593Smuzhiyun
61*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_DBUS),y)
62*4882a593SmuzhiyunSAMBA4_DEPENDENCIES += dbus
63*4882a593SmuzhiyunSAMBA4_SHARED_MODULES += vfs_snapper
64*4882a593Smuzhiyunelse
65*4882a593SmuzhiyunSAMBA4_SHARED_MODULES += !vfs_snapper
66*4882a593Smuzhiyunendif
67*4882a593Smuzhiyun
68*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_DBUS)$(BR2_PACKAGE_AVAHI_DAEMON),yy)
69*4882a593SmuzhiyunSAMBA4_CONF_OPTS += --enable-avahi
70*4882a593SmuzhiyunSAMBA4_DEPENDENCIES += avahi
71*4882a593Smuzhiyunelse
72*4882a593SmuzhiyunSAMBA4_CONF_OPTS += --disable-avahi
73*4882a593Smuzhiyunendif
74*4882a593Smuzhiyun
75*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_GAMIN),y)
76*4882a593SmuzhiyunSAMBA4_CONF_OPTS += --with-fam
77*4882a593SmuzhiyunSAMBA4_DEPENDENCIES += gamin
78*4882a593Smuzhiyunelse
79*4882a593SmuzhiyunSAMBA4_CONF_OPTS += --without-fam
80*4882a593Smuzhiyunendif
81*4882a593Smuzhiyun
82*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_LIBARCHIVE),y)
83*4882a593SmuzhiyunSAMBA4_CONF_OPTS += --with-libarchive
84*4882a593SmuzhiyunSAMBA4_DEPENDENCIES += libarchive
85*4882a593Smuzhiyunelse
86*4882a593SmuzhiyunSAMBA4_CONF_OPTS += --without-libarchive
87*4882a593Smuzhiyunendif
88*4882a593Smuzhiyun
89*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_NCURSES),y)
90*4882a593SmuzhiyunSAMBA4_CONF_ENV += NCURSES_CONFIG="$(STAGING_DIR)/usr/bin/$(NCURSES_CONFIG_SCRIPTS)"
91*4882a593SmuzhiyunSAMBA4_DEPENDENCIES += ncurses
92*4882a593Smuzhiyunelse
93*4882a593SmuzhiyunSAMBA4_CONF_OPTS += --without-regedit
94*4882a593Smuzhiyunendif
95*4882a593Smuzhiyun
96*4882a593Smuzhiyun# The ctdb tests (cluster) need bash and take up some space
97*4882a593Smuzhiyun# They're normally intended for debugging so remove them
98*4882a593Smuzhiyundefine SAMBA4_REMOVE_CTDB_TESTS
99*4882a593Smuzhiyun	rm -rf $(TARGET_DIR)/usr/lib/ctdb-tests
100*4882a593Smuzhiyun	rm -rf $(TARGET_DIR)/usr/share/ctdb-tests
101*4882a593Smuzhiyun	rm -f $(TARGET_DIR)/usr/bin/ctdb_run_*tests
102*4882a593Smuzhiyunendef
103*4882a593SmuzhiyunSAMBA4_POST_INSTALL_TARGET_HOOKS += SAMBA4_REMOVE_CTDB_TESTS
104*4882a593Smuzhiyun
105*4882a593Smuzhiyundefine SAMBA4_CONFIGURE_CMDS
106*4882a593Smuzhiyun	$(INSTALL) -m 0644 package/samba4/samba4-cache.txt $(@D)/cache.txt;
107*4882a593Smuzhiyun	echo 'Checking whether fcntl supports setting/geting hints: $(if $(BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_13),OK,NO)' >>$(@D)/cache.txt;
108*4882a593Smuzhiyun	echo 'Checking uname machine type: $(BR2_ARCH)' >>$(@D)/cache.txt;
109*4882a593Smuzhiyun	(cd $(@D); \
110*4882a593Smuzhiyun		$(SAMBA4_PYTHON) \
111*4882a593Smuzhiyun		python_LDFLAGS="" \
112*4882a593Smuzhiyun		python_LIBDIR="" \
113*4882a593Smuzhiyun		PERL="$(HOST_DIR)/bin/perl" \
114*4882a593Smuzhiyun		$(TARGET_CONFIGURE_OPTS) \
115*4882a593Smuzhiyun		$(SAMBA4_CONF_ENV) \
116*4882a593Smuzhiyun		./buildtools/bin/waf configure \
117*4882a593Smuzhiyun			--prefix=/usr \
118*4882a593Smuzhiyun			--sysconfdir=/etc \
119*4882a593Smuzhiyun			--localstatedir=/var \
120*4882a593Smuzhiyun			--with-libiconv=$(STAGING_DIR)/usr \
121*4882a593Smuzhiyun			--enable-fhs \
122*4882a593Smuzhiyun			--cross-compile \
123*4882a593Smuzhiyun			--cross-answers=$(@D)/cache.txt \
124*4882a593Smuzhiyun			--hostcc=gcc \
125*4882a593Smuzhiyun			--disable-rpath \
126*4882a593Smuzhiyun			--disable-rpath-install \
127*4882a593Smuzhiyun			--disable-iprint \
128*4882a593Smuzhiyun			--without-pam \
129*4882a593Smuzhiyun			--without-dmapi \
130*4882a593Smuzhiyun			--without-gpgme \
131*4882a593Smuzhiyun			--without-ldb-lmdb \
132*4882a593Smuzhiyun			--disable-glusterfs \
133*4882a593Smuzhiyun			--with-cluster-support \
134*4882a593Smuzhiyun			--bundled-libraries='!asn1_compile,!compile_et' \
135*4882a593Smuzhiyun			--with-shared-modules=$(subst $(space),$(comma),$(strip $(SAMBA4_SHARED_MODULES))) \
136*4882a593Smuzhiyun			$(SAMBA4_CONF_OPTS) \
137*4882a593Smuzhiyun	)
138*4882a593Smuzhiyunendef
139*4882a593Smuzhiyun
140*4882a593Smuzhiyundefine SAMBA4_BUILD_CMDS
141*4882a593Smuzhiyun	$(TARGET_MAKE_ENV) $(SAMBA4_PYTHON) $(MAKE) -C $(@D)
142*4882a593Smuzhiyunendef
143*4882a593Smuzhiyun
144*4882a593Smuzhiyundefine SAMBA4_INSTALL_STAGING_CMDS
145*4882a593Smuzhiyun	$(TARGET_MAKE_ENV) $(SAMBA4_PYTHON) $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) install
146*4882a593Smuzhiyunendef
147*4882a593Smuzhiyun
148*4882a593Smuzhiyundefine SAMBA4_INSTALL_TARGET_CMDS
149*4882a593Smuzhiyun	$(TARGET_MAKE_ENV) $(SAMBA4_PYTHON) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install
150*4882a593Smuzhiyunendef
151*4882a593Smuzhiyun
152*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_SAMBA4_AD_DC),y)
153*4882a593Smuzhiyun# host-python-dnspython and host-python-markdown are not strictly
154*4882a593Smuzhiyun# needed on the host, but on the target. however, samba's configure
155*4882a593Smuzhiyun# tests for their availability on the host.
156*4882a593SmuzhiyunSAMBA4_DEPENDENCIES += \
157*4882a593Smuzhiyun	jansson \
158*4882a593Smuzhiyun	host-python-dnspython \
159*4882a593Smuzhiyun	host-python-markdown \
160*4882a593Smuzhiyun	python-dnspython \
161*4882a593Smuzhiyun	python-markdown
162*4882a593Smuzhiyunelse
163*4882a593SmuzhiyunSAMBA4_CONF_OPTS += --without-ad-dc --without-json
164*4882a593Smuzhiyunendif
165*4882a593Smuzhiyun
166*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_SAMBA4_ADS),y)
167*4882a593SmuzhiyunSAMBA4_CONF_OPTS += --with-ads --with-ldap
168*4882a593SmuzhiyunSAMBA4_DEPENDENCIES += openldap
169*4882a593SmuzhiyunSAMBA4_SHARED_MODULES += idmap_ad
170*4882a593Smuzhiyunelse
171*4882a593SmuzhiyunSAMBA4_CONF_OPTS += --without-ads --without-ldap
172*4882a593SmuzhiyunSAMBA4_SHARED_MODULES += !idmap_ad
173*4882a593Smuzhiyunendif
174*4882a593Smuzhiyun
175*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_SAMBA4_SMBTORTURE),)
176*4882a593Smuzhiyundefine SAMBA4_REMOVE_SMBTORTURE
177*4882a593Smuzhiyun	rm -f $(TARGET_DIR)/usr/bin/smbtorture
178*4882a593Smuzhiyunendef
179*4882a593SmuzhiyunSAMBA4_POST_INSTALL_TARGET_HOOKS += SAMBA4_REMOVE_SMBTORTURE
180*4882a593Smuzhiyunendif
181*4882a593Smuzhiyun
182*4882a593Smuzhiyundefine SAMBA4_INSTALL_INIT_SYSV
183*4882a593Smuzhiyun	$(INSTALL) -m 0755 -D package/samba4/S91smb \
184*4882a593Smuzhiyun		$(TARGET_DIR)/etc/init.d/S91smb
185*4882a593Smuzhiyunendef
186*4882a593Smuzhiyun
187*4882a593Smuzhiyunifeq ($(BR2_INIT_SYSTEMD),y)
188*4882a593SmuzhiyunSAMBA4_CONF_OPTS += --systemd-install-services
189*4882a593SmuzhiyunSAMBA4_DEPENDENCIES += systemd
190*4882a593Smuzhiyunendif
191*4882a593Smuzhiyun
192*4882a593Smuzhiyundefine SAMBA4_INSTALL_INIT_SYSTEMD
193*4882a593Smuzhiyun	$(INSTALL) -D -m 644 $(@D)/packaging/systemd/samba.conf.tmp \
194*4882a593Smuzhiyun		$(TARGET_DIR)/usr/lib/tmpfiles.d/samba.conf
195*4882a593Smuzhiyun	printf "d /var/log/samba  755 root root\n" >>$(TARGET_DIR)/usr/lib/tmpfiles.d/samba.conf
196*4882a593Smuzhiyunendef
197*4882a593Smuzhiyun
198*4882a593Smuzhiyun$(eval $(generic-package))
199