1################################################################################
2#
3# freeradius-server
4#
5################################################################################
6
7FREERADIUS_SERVER_VERSION = 3.2.3
8FREERADIUS_SERVER_SOURCE = \
9	freeradius-server-$(FREERADIUS_SERVER_VERSION).tar.bz2
10FREERADIUS_SERVER_SITE = https://freeradius.org/ftp/pub/freeradius
11FREERADIUS_SERVER_LICENSE = GPL-2.0
12FREERADIUS_SERVER_LICENSE_FILES = COPYRIGHT
13FREERADIUS_SERVER_CPE_ID_VENDOR = freeradius
14FREERADIUS_SERVER_CPE_ID_PRODUCT = freeradius
15FREERADIUS_SERVER_DEPENDENCIES = libtalloc
16FREERADIUS_SERVER_AUTORECONF = YES
17
18# We're patching src/modules/rlm_krb5/configure.ac
19define FREERADIUS_SERVER_RUN_KRB5_AUTORECONF
20	cd $(@D)/src/modules/rlm_krb5; $(AUTORECONF) -I$(@D)/m4
21endef
22FREERADIUS_SERVER_PRE_CONFIGURE_HOOKS += FREERADIUS_SERVER_RUN_KRB5_AUTORECONF
23
24# We're patching src/modules/rlm_python3/configure.ac
25define FREERADIUS_SERVER_RUN_PYTHON3_AUTORECONF
26	cd $(@D)/src/modules/rlm_python3; $(AUTORECONF) -I$(@D)/m4
27endef
28FREERADIUS_SERVER_PRE_CONFIGURE_HOOKS += FREERADIUS_SERVER_RUN_PYTHON3_AUTORECONF
29
30# some compiler checks are not supported while cross compiling.
31# instead of removing those checks, we cache the answers
32FREERADIUS_SERVER_CONF_OPTS += \
33	ax_cv_cc_bounded_attribute=no \
34	ax_cv_cc_builtin_bswap64=no \
35	ax_cv_cc_builtin_choose_expr=no \
36	ax_cv_cc_builtin_types_compatible_p=no
37
38# Some paths are looked up in $PATH but used on the target.
39# Set them explicitly so they are still valid if it's in some other
40# place on the host. Note that some of those don't necessarily exist
41# on the target - in that case, the script will simply fail to work.
42# Note that some paths are actually used during the build, those
43# shouldn't be set explicitly here!
44FREERADIUS_SERVER_CONF_OPTS += \
45	ac_cv_path_RUSERS=/usr/bin/rusers \
46	ac_cv_path_SNMPGET=/usr/bin/snmpget \
47	ac_cv_path_SNMPWALK=/usr/bin/snmpwalk
48
49# Modules for which we don't have the dependencies must be disabled
50# explicitly, to avoid that they're searched on the host.
51FREERADIUS_SERVER_CONF_OPTS += \
52	--without-rlm_eap_ike \
53	--without-rlm_eap_tnc \
54	--without-rlm_perl \
55	--without-rlm_python \
56	--without-rlm_sql_iodbc \
57	--without-rlm_sql_oracle \
58	--without-rlm_sql_freetds \
59	--without-rlm_yubikey
60
61ifeq ($(BR2_PACKAGE_COLLECTD),y)
62FREERADIUS_SERVER_CONF_OPTS += --with-collectdclient
63FREERADIUS_SERVER_DEPENDENCIES += collectd
64else
65FREERADIUS_SERVER_CONF_OPTS += --without-collectdclient
66endif
67
68ifeq ($(BR2_PACKAGE_GDBM),y)
69FREERADIUS_SERVER_CONF_OPTS += \
70	--with-rlm_counter \
71	--with-rlm_ippool
72FREERADIUS_SERVER_DEPENDENCIES += gdbm
73else
74FREERADIUS_SERVER_CONF_OPTS += \
75	--without-rlm_counter \
76	--without-rlm_ippool
77endif
78
79ifeq ($(BR2_PACKAGE_HIREDIS),y)
80FREERADIUS_SERVER_CONF_OPTS += \
81	--with-rlm_cache_redis \
82	--with-rlm_redis \
83	--with-rlm_rediswho
84FREERADIUS_SERVER_DEPENDENCIES += hiredis
85else
86FREERADIUS_SERVER_CONF_OPTS += \
87	--without-rlm_cache_redis \
88	--without-rlm_redis \
89	--without-rlm_rediswho
90endif
91
92ifeq ($(BR2_PACKAGE_JSON_C)$(BR2_PACKAGE_LIBCURL),yy)
93FREERADIUS_SERVER_CONF_OPTS += --with-rlm_rest
94FREERADIUS_SERVER_DEPENDENCIES += json-c libcurl
95else
96FREERADIUS_SERVER_CONF_OPTS += --without-rlm_rest
97endif
98
99ifeq ($(BR2_PACKAGE_LIBCAP),y)
100FREERADIUS_SERVER_CONF_OPTS += --with-libcap
101FREERADIUS_SERVER_DEPENDENCIES += libcap
102else
103FREERADIUS_SERVER_CONF_OPTS += --without-libcap
104endif
105
106ifeq ($(BR2_PACKAGE_LIBKRB5),y)
107FREERADIUS_SERVER_CONF_OPTS += \
108	ac_cv_path_krb5_config=$(STAGING_DIR)/usr/bin/krb5-config \
109	--with-rlm_krb5
110FREERADIUS_SERVER_DEPENDENCIES += libkrb5
111else
112FREERADIUS_SERVER_CONF_OPTS += --without-rlm_krb5
113endif
114
115ifeq ($(BR2_PACKAGE_LIBPCAP),y)
116FREERADIUS_SERVER_CONF_OPTS += --with-pcap
117FREERADIUS_SERVER_DEPENDENCIES += libpcap
118else
119FREERADIUS_SERVER_CONF_OPTS += --without-pcap
120endif
121
122ifeq ($(BR2_PACKAGE_LIBXCRYPT),y)
123FREERADIUS_SERVER_DEPENDENCIES += libxcrypt
124endif
125
126ifeq ($(BR2_PACKAGE_LINUX_PAM),y)
127FREERADIUS_SERVER_CONF_OPTS += --with-rlm_pam
128FREERADIUS_SERVER_DEPENDENCIES += linux-pam
129else
130FREERADIUS_SERVER_CONF_OPTS += --without-rlm_pam
131endif
132
133ifeq ($(BR2_PACKAGE_OPENLDAP),y)
134FREERADIUS_SERVER_CONF_OPTS += --with-rlm_ldap
135FREERADIUS_SERVER_DEPENDENCIES += openldap
136else
137FREERADIUS_SERVER_CONF_OPTS += --without-rlm_ldap
138endif
139
140ifeq ($(BR2_PACKAGE_MEMCACHED),y)
141FREERADIUS_SERVER_CONF_OPTS += --with-rlm_cache_memcached
142FREERADIUS_SERVER_DEPENDENCIES += memcached
143else
144FREERADIUS_SERVER_CONF_OPTS += --without-rlm_cache_memcached
145endif
146
147ifeq ($(BR2_PACKAGE_MARIADB),y)
148FREERADIUS_SERVER_CONF_OPTS += --with-rlm_sql_mysql
149FREERADIUS_SERVER_DEPENDENCIES += mariadb
150else
151FREERADIUS_SERVER_CONF_OPTS += --without-rlm_sql_mysql
152endif
153
154ifeq ($(BR2_PACKAGE_PCRE),y)
155FREERADIUS_SERVER_CONF_OPTS += --with-pcre
156FREERADIUS_SERVER_DEPENDENCIES += pcre
157else
158FREERADIUS_SERVER_CONF_OPTS += --without-pcre
159endif
160
161ifeq ($(BR2_PACKAGE_PYTHON3),y)
162FREERADIUS_SERVER_CONF_OPTS += \
163	--with-rlm_python3 \
164	--with-rlm-python3-config-bin=$(STAGING_DIR)/usr/bin/python3-config
165FREERADIUS_SERVER_DEPENDENCIES += python3
166else
167FREERADIUS_SERVER_CONF_OPTS += --without-rlm_python3
168endif
169
170ifeq ($(BR2_PACKAGE_READLINE),y)
171FREERADIUS_SERVER_CONF_OPTS += --with-readline
172FREERADIUS_SERVER_DEPENDENCIES += readline
173else
174FREERADIUS_SERVER_CONF_OPTS += --without-readline
175endif
176
177ifeq ($(BR2_PACKAGE_SQLITE),y)
178FREERADIUS_SERVER_CONF_OPTS += --with-rlm_sql_sqlite
179FREERADIUS_SERVER_DEPENDENCIES += sqlite
180else
181FREERADIUS_SERVER_CONF_OPTS += --without-rlm_sql_sqlite
182endif
183
184ifeq ($(BR2_PACKAGE_UNIXODBC),y)
185FREERADIUS_SERVER_CONF_OPTS += --with-rlm_sql_unixodbc
186FREERADIUS_SERVER_DEPENDENCIES += unixodbc
187else
188FREERADIUS_SERVER_CONF_OPTS += --without-rlm_sql_unixodbc
189endif
190
191ifeq ($(BR2_PACKAGE_POSTGRESQL),y)
192FREERADIUS_SERVER_CONF_OPTS += --with-rlm_sql_postgresql
193FREERADIUS_SERVER_DEPENDENCIES += postgresql
194else
195FREERADIUS_SERVER_CONF_OPTS += --without-rlm_sql_postgresql
196endif
197
198ifeq ($(BR2_PACKAGE_LIBOPENSSL),y)
199FREERADIUS_SERVER_DEPENDENCIES += openssl
200FREERADIUS_SERVER_CONF_OPTS += \
201	--with-openssl \
202	--with-rlm_eap \
203	--with-rlm_eap_pwd
204else
205FREERADIUS_SERVER_CONF_OPTS += \
206	--without-openssl \
207	--without-rlm_eap \
208	--without-rlm_eap_pwd
209endif
210
211ifeq ($(BR2_PACKAGE_PCRE),y)
212FREERADIUS_SERVER_CONF_OPTS += --with-pcre
213FREERADIUS_SERVER_DEPENDENCIES += pcre
214else
215FREERADIUS_SERVER_CONF_OPTS += --without-pcre
216endif
217
218ifeq ($(BR2_PACKAGE_RUBY),y)
219FREERADIUS_SERVER_CONF_OPTS += --with-rlm_ruby
220FREERADIUS_SERVER_DEPENDENCIES += ruby
221else
222FREERADIUS_SERVER_CONF_OPTS += --without-rlm_ruby
223endif
224
225ifeq ($(BR2_INIT_SYSTEMD),y)
226FREERADIUS_SERVER_CONF_OPTS += --with-systemd
227FREERADIUS_SERVER_DEPENDENCIES += systemd
228else
229FREERADIUS_SERVER_CONF_OPTS += --without-systemd
230endif
231
232# TARGET_DIR is set to empty to avoid creation of symlinks in hardcoded host directories
233# freeradius Makefile does not support an alternate DESTDIR, instead it uses the magic $(R) variable
234FREERADIUS_SERVER_MAKE_ENV = R=$(TARGET_DIR) TARGET_DIR=""
235
236# use MAKE1 because make install does not support parallel build
237FREERADIUS_SERVER_MAKE = $(MAKE1)
238
239define FREERADIUS_SERVER_INSTALL_INIT_SYSTEMD
240	$(INSTALL) -D -m 644 package/freeradius-server/radiusd.service \
241		$(TARGET_DIR)/usr/lib/systemd/system/radiusd.service
242endef
243
244$(eval $(autotools-package))
245