Merge pull request #10068 from gentoo-root/master
[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:=2.0.6
14 PKG_RELEASE:=1
15
16 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
17 PKG_SOURCE_URL:=https://www.haproxy.org/download/2.0/src
18 PKG_HASH:=01e1da09452010111107ca1b3a8b7f1927731ba0fe4380bacae1c626fdc521e4
19 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION)
20
21 PKG_MAINTAINER:=Thomas Heil <heil@terminal-consulting.de>, \
22 Christian Lachner <gladiac@gmail.com>
23 PKG_LICENSE:=GPL-2.0-only
24 PKG_LICENSE_FILES:=LICENSE
25 PKG_CPE_ID:=cpe:/a:haproxy:haproxy
26
27 include $(INCLUDE_DIR)/package.mk
28
29 define Package/haproxy/Default
30 SUBMENU:=Web Servers/Proxies
31 SECTION:=net
32 CATEGORY:=Network
33 TITLE:=The Reliable, High Performance TCP/HTTP Load Balancer
34 URL:=https://www.haproxy.org/
35 endef
36
37 define Download/lua535
38 FILE:=lua-5.3.5.tar.gz
39 URL:=https://www.lua.org/ftp/
40 HASH:=0c2eed3f960446e1a3e4b9a1ca2f3ff893b6ce41942cf54d5dd59ab4b3b058ac
41 endef
42
43 define Build/Prepare
44 $(call Build/Prepare/Default)
45 ifeq ($(ENABLE_LUA),y)
46 tar -zxvf $(DL_DIR)/lua-5.3.5.tar.gz -C $(PKG_BUILD_DIR)
47 ln -s $(PKG_BUILD_DIR)/lua-5.3.5 $(PKG_BUILD_DIR)/lua
48 endif
49 endef
50
51 define Package/haproxy/Default/conffiles
52 /etc/haproxy.cfg
53 endef
54
55 define Package/haproxy/Default/description
56 Open source Reliable, High Performance TCP/HTTP Load Balancer.
57 endef
58
59 define Package/haproxy
60 DEPENDS+= +libpcre +libltdl +zlib +libpthread +libopenssl +libncurses +libreadline +libatomic
61 TITLE+= (with SSL support)
62 VARIANT:=ssl
63 $(call Package/haproxy/Default)
64 endef
65
66 define Package/haproxy/conffiles
67 $(call Package/haproxy/Default/conffiles)
68 endef
69
70 define Package/haproxy/description
71 $(call Package/haproxy/Default/description)
72 This package is built with SSL and LUA support.
73 endef
74
75 define Package/haproxy-nossl
76 TITLE+= (without SSL support)
77 VARIANT:=nossl
78 DEPENDS+= +libpcre +libltdl +zlib +libpthread +libatomic
79 TITLE+= (without SSL support)
80 $(call Package/haproxy/Default)
81 endef
82
83 define Package/haproxy-nossl/conffiles
84 $(call Package/haproxy/Default/conffiles)
85 endef
86
87 define Package/haproxy-nossl/description
88 $(call Package/haproxy/Default/description)
89 This package is built without SSL support.
90 endef
91
92 ENABLE_LUA:=y
93 ENABLE_REGPARM:=n
94
95 ifeq ($(CONFIG_TARGET_x86),y)
96 ENABLE_REGPARM:=y
97 endif
98
99 ifeq ($(CONFIG_USE_UCLIBC),y)
100 LINUX_TARGET:=linux-uclibc
101 else
102 LINUX_TARGET:=linux-glibc
103 endif
104
105 ifeq ($(BUILD_VARIANT),ssl)
106 ADDON+=USE_OPENSSL=1
107 ADDON+=ADDLIB="-lcrypto -lm "
108 endif
109
110 ifeq ($(ENABLE_LUA),y)
111 ADDON+=USE_LUA=1
112 ADDON+=LUA_LIB_NAME="lua535"
113 ADDON+=LUA_INC="$(STAGING_DIR)/lua-5.3.5/include"
114 ADDON+=LUA_LIB="$(STAGING_DIR)/lua-5.3.5/lib"
115 endif
116
117 ifeq ($(ENABLE_REGPARM),y)
118 ADDON+=USE_REGPARM=1
119 endif
120
121 ifeq ($(ENABLE_LUA),y)
122 define Build/Compile/lua
123 $(MAKE) TARGET=$(LINUX_TARGET) -C $(PKG_BUILD_DIR)/lua \
124 INSTALL_TOP="$(STAGING_DIR)/lua-5.3.5/" \
125 CC="$(TARGET_CC)" \
126 CFLAGS="$(TARGET_CFLAGS) $(TARGET_CPPFLAGS)" \
127 LDFLAGS="$(TARGET_LDFLAGS) -lncurses -lreadline" \
128 LD="$(TARGET_LD)" \
129 linux install
130
131 mv $(STAGING_DIR)/lua-5.3.5/lib/liblua.a $(STAGING_DIR)/lua-5.3.5/lib/liblua535.a
132 endef
133 endif
134
135 define Build/Compile
136 $(call Build/Compile/lua)
137 $(MAKE) TARGET=$(LINUX_TARGET) -C $(PKG_BUILD_DIR) \
138 DESTDIR="$(PKG_INSTALL_DIR)" \
139 CC="$(TARGET_CC)" \
140 PCREDIR="$(STAGING_DIR)/usr/" \
141 SMALL_OPTS="-DBUFSIZE=16384 -DMAXREWRITE=1030 -DSYSTEM_MAXCONN=165530" \
142 USE_LINUX_TPROXY=1 USE_LINUX_SPLICE=1 USE_TFO=1 USE_NS=1 \
143 USE_ZLIB=1 USE_PCRE=1 USE_PCRE_JIT=1 USE_GETADDRINFO=1 \
144 USE_THREAD=1 USE_PTHREAD_PSHARED=1 \
145 VERSION="$(PKG_VERSION)" SUBVERS="-$(PKG_RELEASE)" \
146 VERDATE="$(shell date -d @$(SOURCE_DATE_EPOCH) '+%Y/%m/%d')" IGNOREGIT=1 \
147 $(ADDON) \
148 CFLAGS="$(TARGET_CFLAGS) -fno-strict-aliasing -Wdeclaration-after-statement -fwrapv -Wno-format-truncation -Wno-unused-label -Wno-sign-compare -Wno-unused-parameter -Wno-old-style-declaration -Wno-ignored-qualifiers -Wno-clobbered -Wno-missing-field-initializers -Wno-implicit-fallthrough -Wno-stringop-overflow -Wno-cast-function-type -Wtype-limits -Wshift-negative-value -Wshift-overflow=2 -Wduplicated-cond -Wnull-dereference" \
149 LD="$(TARGET_CC)" \
150 LDFLAGS="$(TARGET_LDFLAGS) -latomic" \
151 EXTRA_OBJS="contrib/prometheus-exporter/service-prometheus.o"
152
153 $(MAKE_VARS) $(MAKE) -C $(PKG_BUILD_DIR) \
154 DESTDIR="$(PKG_INSTALL_DIR)" \
155 LD="$(TARGET_CC)" \
156 LDFLAGS="$(TARGET_LDFLAGS)" \
157 $(MAKE_FLAGS) \
158 install
159
160 $(MAKE_VARS) $(MAKE) -C $(PKG_BUILD_DIR)/contrib/halog \
161 DESTDIR="$(PKG_INSTALL_DIR)" \
162 $(MAKE_FLAGS) \
163 OPTIMIZE="$(TARGET_CFLAGS)" \
164 ADDLIB="-lcrypto" \
165 halog
166 endef
167
168 define Package/haproxy/install
169 $(INSTALL_DIR) $(1)/usr/sbin
170 $(INSTALL_BIN) $(PKG_BUILD_DIR)/haproxy $(1)/usr/sbin/
171 $(INSTALL_DIR) $(1)/etc
172 $(INSTALL_CONF) ./files/haproxy.cfg $(1)/etc/
173 $(INSTALL_DIR) $(1)/etc/init.d
174 $(INSTALL_BIN) ./files/haproxy.init $(1)/etc/init.d/haproxy
175 $(INSTALL_DIR) $(1)/etc/hotplug.d/net
176 $(INSTALL_BIN) ./files/haproxy.hotplug $(1)/etc/hotplug.d/net/90-haproxy
177 endef
178
179 Package/haproxy-nossl/install = $(Package/haproxy/install)
180
181 define Package/halog
182 MENU:=1
183 $(call Package/haproxy)
184 TITLE+= halog
185 DEPENDS:=haproxy
186 endef
187
188 define Package/halog/description
189 HAProxy Log Analyzer
190 endef
191
192 define Package/halog/install
193 $(INSTALL_DIR) $(1)/usr/bin
194 $(INSTALL_BIN) $(PKG_BUILD_DIR)/contrib/halog/halog $(1)/usr/bin/
195 endef
196
197 $(eval $(call Download,lua535))
198 $(eval $(call BuildPackage,haproxy))
199 $(eval $(call BuildPackage,halog))
200 $(eval $(call BuildPackage,haproxy-nossl))