branch Attitude Adjustment packages
[12.09/packages.git] / lang / erlang / Makefile
1 #
2 # Copyright (C) 2009-2012 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:=erlang
11 PKG_VERSION:=R15B01
12 PKG_RELEASE:=4
13
14 PKG_SOURCE:=otp_src_$(PKG_VERSION).tar.gz
15 PKG_SOURCE_URL:= http://www.erlang.org/download/ \
16         http://erlang.mirror.su.se/     
17 PKG_MD5SUM:=f12d00f6e62b36ad027d6c0c08905fad
18
19 PKG_BUILD_DEPENDS:=erlang/host openssl
20
21 HOST_BUILD_DIR:=$(BUILD_DIR_HOST)/otp_src_$(PKG_VERSION)
22 PKG_BUILD_DIR:=$(BUILD_DIR)/otp_src_$(PKG_VERSION)
23
24 include $(INCLUDE_DIR)/host-build.mk
25 include $(INCLUDE_DIR)/package.mk
26
27 define Package/erlang/Default
28   SUBMENU:=Erlang
29   SECTION:=lang
30   CATEGORY:=Languages
31   TITLE:=Erlang/OTP programming language
32   URL:=http://www.erlang.org/
33 endef
34
35 define Package/erlang/Default/description
36  Erlang/OTP is a general-purpose programming language and runtime 
37  environment. Erlang has built-in support for concurrency, distribution 
38  and fault tolerance.
39 endef
40
41
42 define Package/erlang
43 $(call Package/erlang/Default)
44   DEPENDS+= +libncurses +librt +zlib
45   PROVIDES:= erlang-erts=5.9 erlang-kernel=2.15 erlang-sasl=2.2 erlang-stdlib=1.18
46 endef
47
48 define Package/erlang/description
49 $(call Package/erlang/Default/description)
50  .
51  This package contains the runtime implementation and a minimal set of 
52  modules (erts, kernel, sasl & stdlib).
53 endef
54
55
56 define Package/erlang-asn1
57 $(call Package/erlang/Default)
58   TITLE:=Abstract Syntax Notation One (ASN.1) support
59   VERSION:=1.6.19
60   DEPENDS+= +erlang +erlang-syntax-tools
61 endef
62
63 define Package/erlang-asn1/description
64 $(call Package/erlang/Default/description)
65  .
66  This Erlang/OTP package provides Abstract Syntax Notation One (ASN.1) 
67  support.
68 endef
69
70
71 define Package/erlang-compiler
72 $(call Package/erlang/Default)
73   TITLE:=Byte code compiler
74   VERSION:=4.8
75   DEPENDS+= +erlang +erlang-hipe
76 endef
77
78 define Package/erlang-compiler/description
79 $(call Package/erlang/Default/description)
80  .
81  This Erlang/OTP package provides a byte code compiler for Erlang which 
82  produces highly compact code.
83 endef
84
85
86 define Package/erlang-crypto
87 $(call Package/erlang/Default)
88   TITLE:=Cryptography support
89   VERSION:=2.1
90   DEPENDS+= +erlang +libopenssl
91 endef
92
93 define Package/erlang-crypto/description
94 $(call Package/erlang/Default/description)
95  .
96  This Erlang/OTP package provides functions for computation of message 
97  digests, and encryption and decryption functions.
98 endef
99
100
101 define Package/erlang-hipe
102 $(call Package/erlang/Default)
103   TITLE:=High Performance Erlang
104   VERSION:=3.9
105   DEPENDS+= +erlang
106 endef
107
108 define Package/erlang-hipe/description
109 $(call Package/erlang/Default/description)
110  .
111  This Erlang/OTP package provides HiPE (High Performance Erlang) 
112  support.
113 endef
114
115
116 define Package/erlang-inets
117 $(call Package/erlang/Default)
118   TITLE:=Internet clients and servers
119   VERSION:=5.8
120   DEPENDS+= +erlang
121 endef
122
123 define Package/erlang-inets/description
124 $(call Package/erlang/Default/description)
125  .
126  This Erlang/OTP package provides a container for Internet clients and 
127  servers. Currently a FTP client, a HTTP client and server, and a tftp 
128  client and server have been incorporated in Inets.
129 endef
130
131
132 define Package/erlang-mnesia
133 $(call Package/erlang/Default)
134   TITLE:=Distributed database
135   VERSION:=4.6
136   DEPENDS+= +erlang
137 endef
138
139 define Package/erlang-mnesia/description
140 $(call Package/erlang/Default/description)
141  .
142  This Erlang/OTP package provides a distributed DataBase Management 
143  System (DBMS), appropriate for telecommunications applications and 
144  other Erlang applications which require continuous operation and 
145  exhibit soft real-time properties.
146 endef
147
148
149 define Package/erlang-runtime-tools
150 $(call Package/erlang/Default)
151   TITLE:=Low-profile debugging/tracing tools
152   VERSION:=1.8.7
153   DEPENDS+= +erlang
154 endef
155
156 define Package/erlang-runtime-tools/description
157 $(call Package/erlang/Default/description)
158  .
159  This Erlang/OTP package provides low footprint tracing/debugging tools 
160  suitable for inclusion in a production system.
161 endef
162
163
164 define Package/erlang-snmp
165 $(call Package/erlang/Default)
166   TITLE:=Simple Network Management Protocol (SNMP) support
167   VERSION:=4.21.4
168   DEPENDS+= +erlang +erlang-asn1
169 endef
170
171 define Package/erlang-snmp/description
172 $(call Package/erlang/Default/description)
173  .
174  This Erlang/OTP package provides Simple Network Management Protocol 
175  (SNMP) support including a MIB compiler and tools for creating SNMP 
176  agents.
177 endef
178
179
180 define Package/erlang-ssh
181 $(call Package/erlang/Default)
182   TITLE:=Secure Shell (SSH) support
183   VERSION:=2.0.9
184   DEPENDS+= +erlang +erlang-crypto
185 endef
186
187 define Package/erlang-ssh/description
188 $(call Package/erlang/Default/description)
189  .
190  This Erlang/OTP package provides an implementation of the Secure Shell 
191  protocol, with SSH & SFTP support.
192 endef
193
194
195 define Package/erlang-ssl
196 $(call Package/erlang/Default)
197   TITLE:=Secure Sockets Layer (SSL) support
198   VERSION:=5.0
199   DEPENDS+= +erlang +erlang-crypto
200 endef
201
202 define Package/erlang-ssl/description
203 $(call Package/erlang/Default/description)
204  .
205  This Erlang/OTP package provides support for secure communication over 
206  sockets. 
207 endef
208
209
210 define Package/erlang-syntax-tools
211 $(call Package/erlang/Default)
212   TITLE:=Abstract Erlang syntax trees handling support
213   VERSION:=1.6.7.2
214   DEPENDS+= +erlang
215 endef
216
217 define Package/erlang-syntax-tools/description
218 $(call Package/erlang/Default/description)
219  .
220  This Erlang/OTP package provides support for handling abstract Erlang 
221  syntax trees.
222 endef
223
224
225 # Host
226
227 HOST_CONFIGURE_ARGS += \
228         --disable-hipe \
229         --disable-smp-support \
230         --without-javac \
231         --without-ssl
232
233 define Host/Compile
234         $(MAKE) -C $(HOST_BUILD_DIR) all
235 endef
236
237 define Host/Install
238         $(MAKE) -C $(HOST_BUILD_DIR) install
239 endef
240
241
242 # Target
243
244 CONFIGURE_ARGS += \
245         --disable-hipe \
246         --disable-smp-support \
247         --without-javac \
248         --enable-dynamic-ssl-lib
249
250 CONFIGURE_VARS += \
251         SHLIB_LD="$(TARGET_CC)" \
252         TARGET_ARCH="$(TARGET_ARCH)" \
253         ac_cv_func_mmap_fixed_mapped=yes \
254         ac_cv_path_WX_CONFIG_PATH=no \
255         erl_xcomp_getaddrinfo=no \
256         erl_xcomp_sysroot="$(STAGING_DIR)"
257
258 EXTRA_LDFLAGS+=-lz
259
260 define Build/Compile
261         $(MAKE) -C $(PKG_BUILD_DIR) \
262                 noboot
263         $(MAKE) -C $(PKG_BUILD_DIR) \
264                 INSTALL_PREFIX="$(PKG_INSTALL_DIR)" \
265                 install
266 endef
267
268 define Package/erlang/install
269         $(INSTALL_DIR) $(1)/usr/bin
270         for f in epmd erl erlc escript run_erl; do \
271                 $(CP) $(PKG_INSTALL_DIR)/usr/bin/$$$$f $(1)/usr/bin/ ; \
272         done
273         $(INSTALL_DIR) $(1)/usr/lib/erlang/bin
274         for f in erl erlc escript run_erl start start.boot start.script start_clean.boot start_erl start_sasl.boot to_erl; do \
275                 $(CP) $(PKG_INSTALL_DIR)/usr/lib/erlang/bin/$$$$f $(1)/usr/lib/erlang/bin/ ; \
276         done
277         $(INSTALL_DIR) $(1)/usr/lib/erlang/lib
278         for m in erts kernel sasl stdlib; do \
279                 $(CP) $(PKG_INSTALL_DIR)/usr/lib/erlang/lib/$$$$m-* $(1)/usr/lib/erlang/lib/ ; \
280                 rm -rf $(1)/usr/lib/erlang/lib/$$$$m-*/examples ; \
281                 rm -rf $(1)/usr/lib/erlang/lib/$$$$m-*/src ; \
282         done
283         $(INSTALL_DIR) $(1)/usr/lib/erlang
284         $(CP) $(PKG_INSTALL_DIR)/usr/lib/erlang/erts-* $(1)/usr/lib/erlang/
285         rm -rf $(1)/usr/lib/erlang/erts-*/{doc,include,lib,man,src}
286         rm -rf $(1)/usr/lib/erlang/erts-*/bin/*.src
287         $(INSTALL_DIR) $(1)/usr/lib/erlang/releases
288         $(CP) $(PKG_INSTALL_DIR)/usr/lib/erlang/releases/* $(1)/usr/lib/erlang/releases/
289         $(SED) 's,%ERL_ROOT%,/usr/lib/erlang,g' \
290                 $(1)/usr/lib/erlang/releases/RELEASES.src
291         mv -f $(1)/usr/lib/erlang/releases/RELEASES.src \
292                 $(1)/usr/lib/erlang/releases/RELEASES
293         for f in bin/erl bin/start erts-*/bin/erl erts-*/bin/start; do \
294                 $(SED) 's,^\(ROOTDIR\)=.*,\1=/usr/lib/erlang,g' \
295                         $(1)/usr/lib/erlang/$$$$f ; \
296         done
297 endef
298
299
300 define BuildModule
301
302   define Package/erlang-$(1)/install
303         $(INSTALL_DIR) $$(1)/usr/lib/erlang/lib
304         for m in $(2); do \
305                 $(CP) $(PKG_INSTALL_DIR)/usr/lib/erlang/lib/$$$$$$$$m-* $$(1)/usr/lib/erlang/lib/ ; \
306                 rm -rf $$(1)/usr/lib/erlang/lib/$$$$$$$$m-*/{examples,priv/obj,src} ; \
307         done
308   endef
309
310   $$(eval $$(call BuildPackage,erlang-$(1)))
311
312 endef
313
314
315 $(eval $(call HostBuild))
316 $(eval $(call BuildPackage,erlang))
317 $(eval $(call BuildModule,asn1,asn1))
318 $(eval $(call BuildModule,compiler,compiler))
319 $(eval $(call BuildModule,crypto,crypto))
320 $(eval $(call BuildModule,hipe,hipe))
321 $(eval $(call BuildModule,inets,inets))
322 $(eval $(call BuildModule,mnesia,mnesia))
323 $(eval $(call BuildModule,runtime-tools,runtime_tools))
324 $(eval $(call BuildModule,snmp,snmp))
325 $(eval $(call BuildModule,ssh,ssh))
326 $(eval $(call BuildModule,ssl,ssl))
327 $(eval $(call BuildModule,syntax-tools,syntax_tools))