1cbb0adeb16816f455da1143ceb2afd8226b1f52
[feed/packages.git] / net / lighttpd / Makefile
1 #
2 # Copyright (C) 2006-2018 OpenWrt.org
3 #
4 # This is free software, licensed under the GNU General Public License v2.
5 # See /LICENSE for more information.
6 #
7
8 include $(TOPDIR)/rules.mk
9
10 PKG_NAME:=lighttpd
11 PKG_VERSION:=1.4.67
12 PKG_RELEASE:=4
13 # release candidate ~rcX testing; remove for release
14 #PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
15
16 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
17 PKG_SOURCE_URL:=https://download.lighttpd.net/lighttpd/releases-1.4.x
18 PKG_HASH:=7e04d767f51a8d824b32e2483ef2950982920d427d1272ef4667f49d6f89f358
19
20 PKG_MAINTAINER:=W. Michael Petullo <mike@flyn.org>
21 PKG_LICENSE:=BSD-3-Clause
22 PKG_LICENSE_FILES:=COPYING
23 PKG_CPE_ID:=cpe:/a:lighttpd:lighttpd
24
25 # list config packages affecting MESON_ARGS
26 REBUILD_MODULES:= \
27 authn_dbi \
28 authn_gssapi \
29 authn_ldap \
30 authn_pam \
31 authn_sasl \
32 deflate \
33 gnutls \
34 magnet \
35 maxminddb \
36 mbedtls \
37 nss \
38 openssl \
39 vhostdb_dbi \
40 vhostdb_ldap \
41 vhostdb_mysql \
42 vhostdb_pgsql \
43 webdav \
44 wolfssl \
45
46 PKG_CONFIG_DEPENDS:= \
47 $(patsubst %,CONFIG_PACKAGE_lighttpd-mod-%,$(REBUILD_MODULES)) \
48 CONFIG_LIGHTTPD_PCRE2 \
49 CONFIG_LIGHTTPD_CRYPTOLIB_NONE \
50 CONFIG_LIGHTTPD_CRYPTOLIB_NETTLE \
51 CONFIG_LIGHTTPD_CRYPTOLIB_MBEDTLS \
52 CONFIG_LIGHTTPD_CRYPTOLIB_WOLFSSL
53
54 PKG_BUILD_DEPENDS:= \
55 LIGHTTPD_PCRE2:pcre2 \
56 LIGHTTPD_CRYPTOLIB_NETTLE:nettle \
57 LIGHTTPD_CRYPTOLIB_MBEDTLS:mbedtls \
58 LIGHTTPD_CRYPTOLIB_WOLFSSL:wolfssl
59
60 include $(INCLUDE_DIR)/package.mk
61 include $(INCLUDE_DIR)/meson.mk
62
63 # choose crypto lib for lighttpd to use for crypto algorithms
64 # (separate from lighttpd TLS modules, which are each standalone)
65 ifdef CONFIG_LIGHTTPD_CRYPTOLIB_NONE)
66 cryptolib=
67 else ifdef CONFIG_LIGHTTPD_CRYPTOLIB_NETTLE
68 cryptolib=libnettle
69 else ifdef CONFIG_LIGHTTPD_CRYPTOLIB_MBEDTLS
70 cryptolib=libmbedtls
71 TARGET_CPPFLAGS += -DFORCE_MBEDTLS_CRYPTO
72 else ifdef CONFIG_LIGHTTPD_CRYPTOLIB_WOLFSSL
73 cryptolib=libwolfssl
74 TARGET_CPPFLAGS += -DFORCE_WOLFSSL_CRYPTO
75 endif
76
77 define Package/lighttpd/Default
78 SECTION:=net
79 CATEGORY:=Network
80 SUBMENU:=Web Servers/Proxies
81 URL:=https://www.lighttpd.net/
82 endef
83
84 define Package/lighttpd
85 $(call Package/lighttpd/Default)
86 MENU:=1
87 DEPENDS:=+libpthread +LIGHTTPD_LOGROTATE:logrotate \
88 $(if $(CONFIG_LIGHTTPD_PCRE2),+libpcre2,) \
89 $(if $(cryptolib),+$(cryptolib),)
90 TITLE:=A flexible and lightweight web server
91 endef
92
93 define Package/lighttpd/config
94 config LIGHTTPD_SSL
95 bool "SSL support (recommended)"
96 depends on PACKAGE_lighttpd
97 default y
98 help
99 Implements SSL support in lighttpd (using libopenssl). This
100 option is enabled by default for backwards compatibility.
101 Select one TLS module below if you enable the SSL engine in
102 your lighttpd configuration file.
103 (mod_gnutls, mod_mbedtls, mod_nss, mod_openssl, mod_wolfssl)
104
105 config LIGHTTPD_SSL_DEPENDS
106 bool
107 depends on LIGHTTPD_SSL
108 default PACKAGE_lighttpd-mod-mbedtls || PACKAGE_lighttpd-mod-wolfssl || PACKAGE_lighttpd-mod-gnutls || PACKAGE_lighttpd-mod-nss
109
110 config LIGHTTPD_SSL_SELECT
111 tristate
112 depends on LIGHTTPD_SSL
113 default m if !LIGHTTPD_SSL_DEPENDS
114 select PACKAGE_lighttpd-mod-openssl
115
116 config LIGHTTPD_PCRE2
117 bool "PCRE2 support (recommended)"
118 depends on PACKAGE_lighttpd
119 default y
120 help
121 PCRE2 regular expressions for lighttpd.conf conditions
122
123 if PACKAGE_lighttpd
124 choice
125 prompt "crypto library"
126 default LIGHTTPD_CRYPTOLIB_NETTLE
127 help
128 library to use for cryptographic algorithms
129
130 config LIGHTTPD_CRYPTOLIB_NONE
131 bool "None"
132
133 config LIGHTTPD_CRYPTOLIB_NETTLE
134 bool "libnettle"
135
136 config LIGHTTPD_CRYPTOLIB_MBEDTLS
137 bool "libmbedtls"
138
139 config LIGHTTPD_CRYPTOLIB_WOLFSSL
140 bool "libwolfssl"
141 endchoice
142 endif
143
144 config LIGHTTPD_LOGROTATE
145 bool "Logrotate support"
146 depends on PACKAGE_lighttpd
147 default n
148 help
149 It adds support for logrotate functionality.
150 endef
151
152 MESON_ARGS += \
153 -Dwith_brotli=false \
154 -Dwith_bzip=false \
155 -Dwith_dbi=$(if $(CONFIG_PACKAGE_lighttpd-mod-authn_dbi)$(CONFIG_PACKAGE_lighttpd-mod-vhostdb_dbi),true,false) \
156 -Dwith_fam=false \
157 -Dwith_gnutls=$(if $(CONFIG_PACKAGE_lighttpd-mod-gnutls),true,false) \
158 -Dwith_krb5=$(if $(CONFIG_PACKAGE_lighttpd-mod-authn_gssapi),true,false) \
159 -Dwith_ldap=$(if $(CONFIG_PACKAGE_lighttpd-mod-authn_ldap)$(CONFIG_PACKAGE_lighttpd-mod-vhostdb_ldap),true,false) \
160 -Dwith_libev=false \
161 -Dwith_libunwind=false \
162 -Dwith_lua=$(if $(CONFIG_PACKAGE_lighttpd-mod-magnet),true,false) \
163 -Dlua_version=lua \
164 -Dwith_maxminddb=$(if $(CONFIG_PACKAGE_lighttpd-mod-maxminddb),true,false) \
165 -Dwith_mbedtls=$(if $(CONFIG_PACKAGE_lighttpd-mod-mbedtls),true,false) \
166 -Dwith_mysql=$(if $(CONFIG_PACKAGE_lighttpd-mod-vhostdb_mysql),true,false) \
167 -Dwith_nettle=$(if $(filter libnettle,$(cryptolib)),true,false) \
168 -Dwith_nss=$(if $(CONFIG_PACKAGE_lighttpd-mod-nss),true,false) \
169 -Dwith_openssl=$(if $(CONFIG_PACKAGE_lighttpd-mod-openssl),true,false) \
170 -Dwith_pam=$(if $(CONFIG_PACKAGE_lighttpd-mod-authn_pam),true,false) \
171 -Dwith_pcre2=$(if $(CONFIG_LIGHTTPD_PCRE2),true,false) \
172 -Dwith_pgsql=$(if $(CONFIG_PACKAGE_lighttpd-mod-vhostdb_pgsql),true,false) \
173 -Dwith_sasl=$(if $(CONFIG_PACKAGE_lighttpd-mod-authn_sasl),true,false) \
174 -Dwith_webdav_locks=$(if $(CONFIG_PACKAGE_lighttpd-mod-webdav),true,false) \
175 -Dwith_webdav_props=$(if $(CONFIG_PACKAGE_lighttpd-mod-webdav),true,false) \
176 -Dwith_wolfssl=$(if $(CONFIG_PACKAGE_lighttpd-mod-wolfssl),true,false) \
177 -Dwith_xattr=false \
178 -Dwith_zlib=$(if $(CONFIG_PACKAGE_lighttpd-mod-deflate),true,false) \
179 -Dwith_zstd=false
180
181 BASE_MODULES:=dirlisting indexfile staticfile
182
183 define Package/lighttpd/conffiles
184 /etc/lighttpd/lighttpd.conf
185 endef
186
187 define Package/lighttpd/install
188 $(INSTALL_DIR) $(1)/etc/lighttpd
189 $(INSTALL_DATA) ./files/lighttpd.conf $(1)/etc/lighttpd/
190 $(INSTALL_DATA) $(PKG_BUILD_DIR)/doc/config/conf.d/mime.conf $(1)/etc/lighttpd/
191 $(INSTALL_DIR) $(1)/etc/lighttpd/conf.d
192 $(INSTALL_DIR) $(1)/etc/init.d
193 $(INSTALL_BIN) ./files/lighttpd.init $(1)/etc/init.d/lighttpd
194 $(INSTALL_DIR) $(1)/usr/lib/lighttpd
195 for m in $(BASE_MODULES); do \
196 $(CP) $(PKG_INSTALL_DIR)/usr/lib/lighttpd/mod_$$$${m}.so $(1)/usr/lib/lighttpd/ ; \
197 done
198 $(INSTALL_DIR) $(1)/usr/sbin
199 $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/lighttpd $(1)/usr/sbin/
200
201 ifneq ($(strip $(CONFIG_LIGHTTPD_LOGROTATE)),)
202 $(INSTALL_DIR) $(1)/etc/logrotate.d
203 $(CP) ./files/lighttpd.logrotate $(1)/etc/logrotate.d/lighttpd.conf
204 endif
205 endef
206
207 define BuildPlugin
208 define Package/lighttpd-mod-$(1)
209 $(call Package/lighttpd/Default)
210 DEPENDS:=lighttpd
211 ifneq ($(3),)
212 DEPENDS+= $(3)
213 endif
214 TITLE:=$(2) module
215 endef
216
217 define Package/lighttpd-mod-$(1)/conffiles
218 /etc/lighttpd/conf.d/$(4)-$(1).conf
219 endef
220
221 ifneq ($(SDK)$(CONFIG_PACKAGE_lighttpd-mod-$(1)),)
222 define Package/lighttpd-mod-$(1)/install
223 $(INSTALL_DIR) $$(1)/usr/lib/lighttpd
224 $(CP) $(PKG_INSTALL_DIR)/usr/lib/lighttpd/mod_$(1).so $$(1)/usr/lib/lighttpd
225 $(INSTALL_DIR) $$(1)/etc/lighttpd/conf.d
226 if [ -f $(PKG_BUILD_DIR)/doc/config/conf.d/$(1).conf ]; then \
227 $(CP) $(PKG_BUILD_DIR)/doc/config/conf.d/$(1).conf $$(1)/etc/lighttpd/conf.d/$(4)-$(1).conf ; \
228 if ! grep -qF 'mod_$(1)' $$(1)/etc/lighttpd/conf.d/$(4)-$(1).conf; then \
229 sed -i "`sed '/^##/ !q' $$(1)/etc/lighttpd/conf.d/$(4)-$(1).conf | wc -l` i\
230 server.modules += ( \"mod_$(1)\" )" $$(1)/etc/lighttpd/conf.d/$(4)-$(1).conf ; \
231 fi \
232 else \
233 echo 'server.modules += ( "mod_$(1)" )' > $$(1)/etc/lighttpd/conf.d/$(4)-$(1).conf ; \
234 fi
235 endef
236 endif
237
238 $$(eval $$(call BuildPackage,lighttpd-mod-$(1)))
239 endef
240
241 $(eval $(call BuildPackage,lighttpd))
242
243 $(eval $(call BuildPlugin,auth,Authentication,$(if $(cryptolib),+PACKAGE_lighttpd-mod-auth:$(cryptolib),),20))
244 $(eval $(call BuildPlugin,authn_dbi,DBI-based authentication,lighttpd-mod-auth $(if $(cryptolib),+PACKAGE_lighttpd-mod-authn_dbi:$(cryptolib),) +PACKAGE_lighttpd-mod-authn_dbi:libdbi,20))
245 $(eval $(call BuildPlugin,authn_file,File-based authentication,lighttpd-mod-auth $(if $(cryptolib),+PACKAGE_lighttpd-mod-authn_file:$(cryptolib),),20))
246 $(eval $(call BuildPlugin,authn_gssapi,Kerberos-based authentication,lighttpd-mod-auth +PACKAGE_lighttpd-mod-authn_gssapi:krb5-libs,20))
247 $(eval $(call BuildPlugin,authn_ldap,LDAP-based authentication,lighttpd-mod-auth +PACKAGE_lighttpd-mod-authn_ldap:libopenldap,20))
248 $(eval $(call BuildPlugin,authn_pam,PAM-based authentication,lighttpd-mod-auth +PACKAGE_lighttpd-mod-authn_pam:libpam,20))
249 $(eval $(call BuildPlugin,authn_sasl,SASL-based authentication,lighttpd-mod-auth +PACKAGE_lighttpd-mod-authn_sasl:libsasl2,20))
250
251 $(eval $(call BuildPlugin,access,Access restrictions,,30))
252 $(eval $(call BuildPlugin,accesslog,Access logging,,30))
253 $(eval $(call BuildPlugin,ajp13,AJP13 Tomcat connector,,30))
254 $(eval $(call BuildPlugin,alias,Directory alias,,30))
255 $(eval $(call BuildPlugin,cgi,CGI,,30))
256 $(eval $(call BuildPlugin,deflate,Compress dynamic output,+PACKAGE_lighttpd-mod-deflate:zlib,30))
257 $(eval $(call BuildPlugin,evhost,Enhanced Virtual-Hosting,,30))
258 $(eval $(call BuildPlugin,expire,Expire,,30))
259 $(eval $(call BuildPlugin,extforward,Extract client,,30))
260 $(eval $(call BuildPlugin,fastcgi,FastCGI,,30))
261 $(eval $(call BuildPlugin,gnutls,TLS using gnutls,@LIGHTTPD_SSL +PACKAGE_lighttpd-mod-gnutls:libgnutls,30))
262 $(eval $(call BuildPlugin,magnet,Magnet,+PACKAGE_lighttpd-mod-magnet:liblua,30))
263 $(eval $(call BuildPlugin,maxminddb,MaxMind DB,+PACKAGE_lighttpd-mod-maxminddb:libmaxminddb,30))
264 $(eval $(call BuildPlugin,mbedtls,TLS using mbedtls,@LIGHTTPD_SSL +PACKAGE_lighttpd-mod-mbedtls:libmbedtls,30))
265 $(eval $(call BuildPlugin,nss,TLS using nss,@LIGHTTPD_SSL +PACKAGE_lighttpd-mod-nss:libnss,30))
266 $(eval $(call BuildPlugin,openssl,TLS using openssl,@LIGHTTPD_SSL +PACKAGE_lighttpd-mod-openssl:libopenssl,30))
267 $(eval $(call BuildPlugin,proxy,Proxy,,30))
268 $(eval $(call BuildPlugin,redirect,URL redirection,$(if $(CONFIG_LIGHTTPD_PCRE2),+PACKAGE_lighttpd-mod-redirect:libpcre2,),10))
269 $(eval $(call BuildPlugin,rewrite,URL rewriting,$(if $(CONFIG_LIGHTTPD_PCRE2),+PACKAGE_lighttpd-mod-rewrite:libpcre2,),30))
270 $(eval $(call BuildPlugin,rrdtool,RRDtool,rrdtool1,30))
271 $(eval $(call BuildPlugin,scgi,SCGI,,30))
272 $(eval $(call BuildPlugin,setenv,Environment variable setting,,30))
273 $(eval $(call BuildPlugin,simple_vhost,Simple virtual hosting,,30))
274 $(eval $(call BuildPlugin,sockproxy,sockproxy,,30))
275 $(eval $(call BuildPlugin,ssi,SSI,,30))
276 $(eval $(call BuildPlugin,staticfile,staticfile,,30))
277 $(eval $(call BuildPlugin,status,Server status display,,30))
278 $(eval $(call BuildPlugin,userdir,User directory,,30))
279 $(eval $(call BuildPlugin,vhostdb,Virtual Host Database,,30))
280 $(eval $(call BuildPlugin,vhostdb_dbi,Virtual Host Database (DBI),lighttpd-mod-vhostdb +PACKAGE_lighttpd-mod-vhostdb_dbi:libdbi,30))
281 $(eval $(call BuildPlugin,vhostdb_ldap,Virtual Host Database (LDAP),lighttpd-mod-vhostdb +PACKAGE_lighttpd-mod-vhostdb_ldap:libopenldap,30))
282 $(eval $(call BuildPlugin,vhostdb_mysql,Virtual Host Database (MariaDB),lighttpd-mod-vhostdb +PACKAGE_lighttpd-mod-vhostdb_mysql:libmariadb,30))
283 $(eval $(call BuildPlugin,vhostdb_pgsql,Virtual Host Database (PostgreSQL),lighttpd-mod-vhostdb +PACKAGE_lighttpd-mod-vhostdb_pgsql:libpq,30))
284 $(eval $(call BuildPlugin,webdav,WebDAV,+PACKAGE_lighttpd-mod-webdav:libsqlite3 +PACKAGE_lighttpd-mod-webdav:libuuid +PACKAGE_lighttpd-mod-webdav:libxml2,30))
285 $(eval $(call BuildPlugin,wolfssl,TLS using wolfssl,@LIGHTTPD_SSL +PACKAGE_lighttpd-mod-wolfssl:libwolfssl,30))
286 $(eval $(call BuildPlugin,wstunnel,Websocket tunneling,$(if $(cryptolib),+PACKAGE_lighttpd-mod-wstunnel:$(cryptolib),),30))