d5e53092715e87f5ccf3a34841b1592e569f26ee
[feed/packages.git] / net / haproxy / Makefile
1 #
2 # Copyright (C) 2010-2016 OpenWrt.org
3 # Copyright (C) 2009-2016 Thomas Heil <heil@terminal-consulting.de>
4 # Copyright (C) 2018 Christian Lachner <gladiac@gmail.com>
5 #
6 # This is free software, licensed under the GNU General Public License v2.
7 # See /LICENSE for more information.
8 #
9
10 include $(TOPDIR)/rules.mk
11
12 PKG_NAME:=haproxy
13 PKG_VERSION:=1.8.27
14 PKG_RELEASE:=1
15
16 PKG_SOURCE:=haproxy-$(PKG_VERSION).tar.gz
17 PKG_SOURCE_URL:=https://www.haproxy.org/download/1.8/src/
18 PKG_HASH:=56ba6a21e13215fae56472ad37d5d68c3f19bde9da94c59e70b869eecf48bf50
19
20 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION)
21 PKG_LICENSE:=GPL-2.0
22 MAINTAINER:=Thomas Heil <heil@terminal-consulting.de>, \
23 Christian Lachner <gladiac@gmail.com>
24
25 include $(INCLUDE_DIR)/package.mk
26
27 define Package/haproxy/Default
28 SUBMENU:=Web Servers/Proxies
29 SECTION:=net
30 CATEGORY:=Network
31 TITLE:=The Reliable, High Performance TCP/HTTP Load Balancer
32 URL:=https://www.haproxy.org/
33 endef
34
35 define Download/lua535
36 FILE:=lua-5.3.5.tar.gz
37 URL:=https://www.lua.org/ftp/
38 HASH:=0c2eed3f960446e1a3e4b9a1ca2f3ff893b6ce41942cf54d5dd59ab4b3b058ac
39 endef
40
41 define Build/Prepare
42 $(call Build/Prepare/Default)
43 ifeq ($(ENABLE_LUA),y)
44 tar -zxvf $(DL_DIR)/lua-5.3.5.tar.gz -C $(PKG_BUILD_DIR)
45 ln -s $(PKG_BUILD_DIR)/lua-5.3.5 $(PKG_BUILD_DIR)/lua
46 endif
47 endef
48
49 define Package/haproxy/Default/conffiles
50 /etc/haproxy.cfg
51 endef
52
53 define Package/haproxy/Default/description
54 Open source Reliable, High Performance TCP/HTTP Load Balancer.
55 endef
56
57 define Package/haproxy
58 DEPENDS+= +libpcre +libltdl +zlib +libpthread +libopenssl +libncursesw +libreadline +libatomic +@OPENSSL_WITH_COMPRESSION +@OPENSSL_WITH_DTLS +@OPENSSL_ENGINE_CRYPTO
59 TITLE+= (with SSL support)
60 VARIANT:=ssl
61 $(call Package/haproxy/Default)
62 endef
63
64 define Package/haproxy/conffiles
65 $(call Package/haproxy/Default/conffiles)
66 endef
67
68 define Package/haproxy/description
69 $(call Package/haproxy/Default/description)
70 This package is built with SSL and LUA support.
71 endef
72
73 define Package/haproxy-nossl
74 TITLE+= (without SSL support)
75 VARIANT:=nossl
76 DEPENDS+= +libpcre +libltdl +zlib +libpthread +libatomic
77 TITLE+= (without SSL support)
78 $(call Package/haproxy/Default)
79 endef
80
81 define Package/haproxy-nossl/conffiles
82 $(call Package/haproxy/Default/conffiles)
83 endef
84
85 define Package/haproxy-nossl/description
86 $(call Package/haproxy/Default/description)
87 This package is built without SSL support.
88 endef
89
90 ENABLE_LUA:=y
91 ENABLE_REGPARM:=n
92
93 ifeq ($(CONFIG_TARGET_x86),y)
94 ENABLE_REGPARM:=y
95 endif
96
97 LINUX_TARGET:=linux2628
98
99 ifeq ($(BUILD_VARIANT),ssl)
100 ADDON+=USE_OPENSSL=1
101 ADDON+=ADDLIB="-lcrypto -lm "
102 endif
103
104 ifeq ($(ENABLE_LUA),y)
105 ADDON+=USE_LUA=1
106 ADDON+=LUA_LIB_NAME="lua535"
107 ADDON+=LUA_INC="$(STAGING_DIR)/lua-5.3.5/include"
108 ADDON+=LUA_LIB="$(STAGING_DIR)/lua-5.3.5/lib"
109 endif
110
111 ifeq ($(ENABLE_REGPARM),y)
112 ADDON+=USE_REGPARM=1
113 endif
114
115 ifeq ($(ENABLE_LUA),y)
116 define Build/Compile/lua
117 $(MAKE) TARGET=$(LINUX_TARGET) -C $(PKG_BUILD_DIR)/lua \
118 INSTALL_TOP="$(STAGING_DIR)/lua-5.3.5/" \
119 CC="$(TARGET_CC)" \
120 CFLAGS="$(TARGET_CFLAGS) $(TARGET_CPPFLAGS)" \
121 LDFLAGS="$(TARGET_LDFLAGS) -lncurses -lreadline" \
122 LD="$(TARGET_LD)" \
123 linux install
124
125 mv $(STAGING_DIR)/lua-5.3.5/lib/liblua.a $(STAGING_DIR)/lua-5.3.5/lib/liblua535.a
126 endef
127 endif
128
129 define Build/Compile
130 $(call Build/Compile/lua)
131 $(MAKE) TARGET=$(LINUX_TARGET) -C $(PKG_BUILD_DIR) \
132 DESTDIR="$(PKG_INSTALL_DIR)" \
133 CC="$(TARGET_CC)" \
134 PCREDIR="$(STAGING_DIR)/usr/" \
135 SMALL_OPTS="-DBUFSIZE=16384 -DMAXREWRITE=1030 -DSYSTEM_MAXCONN=165530" \
136 USE_LINUX_TPROXY=1 USE_LINUX_SPLICE=1 USE_TFO=1 \
137 USE_ZLIB=yes USE_PCRE=1 USE_PCRE_JIT=1 USE_GETADDRINFO=1 \
138 VERSION="$(PKG_VERSION)" SUBVERS="-$(PKG_RELEASE)" \
139 VERDATE="$(shell date -d @$(SOURCE_DATE_EPOCH) '+%Y/%m/%d')" IGNOREGIT=1 \
140 $(ADDON) \
141 CFLAGS="$(TARGET_CFLAGS)" \
142 LD="$(TARGET_CC)" \
143 LDFLAGS="$(TARGET_LDFLAGS) -latomic"
144
145 $(MAKE_VARS) $(MAKE) -C $(PKG_BUILD_DIR) \
146 DESTDIR="$(PKG_INSTALL_DIR)" \
147 LD="$(TARGET_CC)" \
148 LDFLAGS="$(TARGET_LDFLAGS)" \
149 $(MAKE_FLAGS) \
150 install
151
152 $(MAKE_VARS) $(MAKE) -C $(PKG_BUILD_DIR)/contrib/halog \
153 DESTDIR="$(PKG_INSTALL_DIR)" \
154 $(MAKE_FLAGS) \
155 OPTIMIZE="$(TARGET_CFLAGS)" \
156 ADDLIB="-lcrypto" \
157 halog
158 endef
159
160 define Package/haproxy/install
161 $(INSTALL_DIR) $(1)/usr/sbin
162 $(INSTALL_BIN) $(PKG_BUILD_DIR)/haproxy $(1)/usr/sbin/
163 $(INSTALL_DIR) $(1)/etc
164 $(INSTALL_CONF) ./files/haproxy.cfg $(1)/etc/
165 $(INSTALL_DIR) $(1)/etc/init.d
166 $(INSTALL_BIN) ./files/haproxy.init $(1)/etc/init.d/haproxy
167 $(INSTALL_DIR) $(1)/etc/hotplug.d/net
168 $(INSTALL_BIN) ./files/haproxy.hotplug $(1)/etc/hotplug.d/net/90-haproxy
169 endef
170
171 Package/haproxy-nossl/install = $(Package/haproxy/install)
172
173 define Package/halog
174 MENU:=1
175 $(call Package/haproxy)
176 TITLE+= halog
177 DEPENDS:=haproxy
178 endef
179
180 define Package/halog/description
181 HAProxy Log Analyzer
182 endef
183
184 define Package/halog/install
185 $(INSTALL_DIR) $(1)/usr/bin
186 $(INSTALL_BIN) $(PKG_BUILD_DIR)/contrib/halog/halog $(1)/usr/bin/
187 endef
188
189 $(eval $(call Download,lua535))
190 $(eval $(call BuildPackage,haproxy))
191 $(eval $(call BuildPackage,halog))
192 $(eval $(call BuildPackage,haproxy-nossl))