|
@@ -15,8 +15,10 @@
|
|
|
.PHONY: all app apps deps search rel relup docs install-docs check tests clean distclean help erlang-mk
|
|
|
|
|
|
ERLANG_MK_FILENAME := $(realpath $(lastword $(MAKEFILE_LIST)))
|
|
|
+export ERLANG_MK_FILENAME
|
|
|
|
|
|
-ERLANG_MK_VERSION = 2016.11.03-4-g9e9b7d2
|
|
|
+ERLANG_MK_VERSION = 2017.05.18
|
|
|
+ERLANG_MK_WITHOUT =
|
|
|
|
|
|
# Make 3.81 and 3.82 are deprecated.
|
|
|
|
|
@@ -183,13 +185,14 @@ ERLANG_MK_COMMIT ?=
|
|
|
ERLANG_MK_BUILD_CONFIG ?= build.config
|
|
|
ERLANG_MK_BUILD_DIR ?= .erlang.mk.build
|
|
|
|
|
|
+erlang-mk: WITHOUT ?= $(ERLANG_MK_WITHOUT)
|
|
|
erlang-mk:
|
|
|
git clone $(ERLANG_MK_REPO) $(ERLANG_MK_BUILD_DIR)
|
|
|
ifdef ERLANG_MK_COMMIT
|
|
|
cd $(ERLANG_MK_BUILD_DIR) && git checkout $(ERLANG_MK_COMMIT)
|
|
|
endif
|
|
|
if [ -f $(ERLANG_MK_BUILD_CONFIG) ]; then cp $(ERLANG_MK_BUILD_CONFIG) $(ERLANG_MK_BUILD_DIR)/build.config; fi
|
|
|
- $(MAKE) -C $(ERLANG_MK_BUILD_DIR)
|
|
|
+ $(MAKE) -C $(ERLANG_MK_BUILD_DIR) WITHOUT='$(strip $(WITHOUT))'
|
|
|
cp $(ERLANG_MK_BUILD_DIR)/erlang.mk ./erlang.mk
|
|
|
rm -rf $(ERLANG_MK_BUILD_DIR)
|
|
|
|
|
@@ -404,14 +407,6 @@ pkg_bootstrap_fetch = git
|
|
|
pkg_bootstrap_repo = https://github.com/schlagert/bootstrap
|
|
|
pkg_bootstrap_commit = master
|
|
|
|
|
|
-PACKAGES += boss_db
|
|
|
-pkg_boss_db_name = boss_db
|
|
|
-pkg_boss_db_description = BossDB: a sharded, caching, pooling, evented ORM for Erlang
|
|
|
-pkg_boss_db_homepage = https://github.com/ErlyORM/boss_db
|
|
|
-pkg_boss_db_fetch = git
|
|
|
-pkg_boss_db_repo = https://github.com/ErlyORM/boss_db
|
|
|
-pkg_boss_db_commit = master
|
|
|
-
|
|
|
PACKAGES += boss
|
|
|
pkg_boss_name = boss
|
|
|
pkg_boss_description = Erlang web MVC, now featuring Comet
|
|
@@ -420,6 +415,14 @@ pkg_boss_fetch = git
|
|
|
pkg_boss_repo = https://github.com/ChicagoBoss/ChicagoBoss
|
|
|
pkg_boss_commit = master
|
|
|
|
|
|
+PACKAGES += boss_db
|
|
|
+pkg_boss_db_name = boss_db
|
|
|
+pkg_boss_db_description = BossDB: a sharded, caching, pooling, evented ORM for Erlang
|
|
|
+pkg_boss_db_homepage = https://github.com/ErlyORM/boss_db
|
|
|
+pkg_boss_db_fetch = git
|
|
|
+pkg_boss_db_repo = https://github.com/ErlyORM/boss_db
|
|
|
+pkg_boss_db_commit = master
|
|
|
+
|
|
|
PACKAGES += brod
|
|
|
pkg_brod_name = brod
|
|
|
pkg_brod_description = Kafka client in Erlang
|
|
@@ -524,6 +527,14 @@ pkg_chumak_fetch = git
|
|
|
pkg_chumak_repo = https://github.com/chovencorp/chumak
|
|
|
pkg_chumak_commit = master
|
|
|
|
|
|
+PACKAGES += cl
|
|
|
+pkg_cl_name = cl
|
|
|
+pkg_cl_description = OpenCL binding for Erlang
|
|
|
+pkg_cl_homepage = https://github.com/tonyrog/cl
|
|
|
+pkg_cl_fetch = git
|
|
|
+pkg_cl_repo = https://github.com/tonyrog/cl
|
|
|
+pkg_cl_commit = master
|
|
|
+
|
|
|
PACKAGES += classifier
|
|
|
pkg_classifier_name = classifier
|
|
|
pkg_classifier_description = An Erlang Bayesian Filter and Text Classifier
|
|
@@ -540,14 +551,6 @@ pkg_clique_fetch = git
|
|
|
pkg_clique_repo = https://github.com/basho/clique
|
|
|
pkg_clique_commit = develop
|
|
|
|
|
|
-PACKAGES += cl
|
|
|
-pkg_cl_name = cl
|
|
|
-pkg_cl_description = OpenCL binding for Erlang
|
|
|
-pkg_cl_homepage = https://github.com/tonyrog/cl
|
|
|
-pkg_cl_fetch = git
|
|
|
-pkg_cl_repo = https://github.com/tonyrog/cl
|
|
|
-pkg_cl_commit = master
|
|
|
-
|
|
|
PACKAGES += cloudi_core
|
|
|
pkg_cloudi_core_name = cloudi_core
|
|
|
pkg_cloudi_core_description = CloudI internal service runtime
|
|
@@ -564,13 +567,13 @@ pkg_cloudi_service_api_requests_fetch = git
|
|
|
pkg_cloudi_service_api_requests_repo = https://github.com/CloudI/cloudi_service_api_requests
|
|
|
pkg_cloudi_service_api_requests_commit = master
|
|
|
|
|
|
-PACKAGES += cloudi_service_db_cassandra_cql
|
|
|
-pkg_cloudi_service_db_cassandra_cql_name = cloudi_service_db_cassandra_cql
|
|
|
-pkg_cloudi_service_db_cassandra_cql_description = Cassandra CQL CloudI Service
|
|
|
-pkg_cloudi_service_db_cassandra_cql_homepage = http://cloudi.org/
|
|
|
-pkg_cloudi_service_db_cassandra_cql_fetch = git
|
|
|
-pkg_cloudi_service_db_cassandra_cql_repo = https://github.com/CloudI/cloudi_service_db_cassandra_cql
|
|
|
-pkg_cloudi_service_db_cassandra_cql_commit = master
|
|
|
+PACKAGES += cloudi_service_db
|
|
|
+pkg_cloudi_service_db_name = cloudi_service_db
|
|
|
+pkg_cloudi_service_db_description = CloudI Database (in-memory/testing/generic)
|
|
|
+pkg_cloudi_service_db_homepage = http://cloudi.org/
|
|
|
+pkg_cloudi_service_db_fetch = git
|
|
|
+pkg_cloudi_service_db_repo = https://github.com/CloudI/cloudi_service_db
|
|
|
+pkg_cloudi_service_db_commit = master
|
|
|
|
|
|
PACKAGES += cloudi_service_db_cassandra
|
|
|
pkg_cloudi_service_db_cassandra_name = cloudi_service_db_cassandra
|
|
@@ -580,6 +583,14 @@ pkg_cloudi_service_db_cassandra_fetch = git
|
|
|
pkg_cloudi_service_db_cassandra_repo = https://github.com/CloudI/cloudi_service_db_cassandra
|
|
|
pkg_cloudi_service_db_cassandra_commit = master
|
|
|
|
|
|
+PACKAGES += cloudi_service_db_cassandra_cql
|
|
|
+pkg_cloudi_service_db_cassandra_cql_name = cloudi_service_db_cassandra_cql
|
|
|
+pkg_cloudi_service_db_cassandra_cql_description = Cassandra CQL CloudI Service
|
|
|
+pkg_cloudi_service_db_cassandra_cql_homepage = http://cloudi.org/
|
|
|
+pkg_cloudi_service_db_cassandra_cql_fetch = git
|
|
|
+pkg_cloudi_service_db_cassandra_cql_repo = https://github.com/CloudI/cloudi_service_db_cassandra_cql
|
|
|
+pkg_cloudi_service_db_cassandra_cql_commit = master
|
|
|
+
|
|
|
PACKAGES += cloudi_service_db_couchdb
|
|
|
pkg_cloudi_service_db_couchdb_name = cloudi_service_db_couchdb
|
|
|
pkg_cloudi_service_db_couchdb_description = CouchDB CloudI Service
|
|
@@ -604,14 +615,6 @@ pkg_cloudi_service_db_memcached_fetch = git
|
|
|
pkg_cloudi_service_db_memcached_repo = https://github.com/CloudI/cloudi_service_db_memcached
|
|
|
pkg_cloudi_service_db_memcached_commit = master
|
|
|
|
|
|
-PACKAGES += cloudi_service_db
|
|
|
-pkg_cloudi_service_db_name = cloudi_service_db
|
|
|
-pkg_cloudi_service_db_description = CloudI Database (in-memory/testing/generic)
|
|
|
-pkg_cloudi_service_db_homepage = http://cloudi.org/
|
|
|
-pkg_cloudi_service_db_fetch = git
|
|
|
-pkg_cloudi_service_db_repo = https://github.com/CloudI/cloudi_service_db
|
|
|
-pkg_cloudi_service_db_commit = master
|
|
|
-
|
|
|
PACKAGES += cloudi_service_db_mysql
|
|
|
pkg_cloudi_service_db_mysql_name = cloudi_service_db_mysql
|
|
|
pkg_cloudi_service_db_mysql_description = MySQL CloudI Service
|
|
@@ -1036,14 +1039,6 @@ pkg_edown_fetch = git
|
|
|
pkg_edown_repo = https://github.com/uwiger/edown
|
|
|
pkg_edown_commit = master
|
|
|
|
|
|
-PACKAGES += eep_app
|
|
|
-pkg_eep_app_name = eep_app
|
|
|
-pkg_eep_app_description = Embedded Event Processing
|
|
|
-pkg_eep_app_homepage = https://github.com/darach/eep-erl
|
|
|
-pkg_eep_app_fetch = git
|
|
|
-pkg_eep_app_repo = https://github.com/darach/eep-erl
|
|
|
-pkg_eep_app_commit = master
|
|
|
-
|
|
|
PACKAGES += eep
|
|
|
pkg_eep_name = eep
|
|
|
pkg_eep_description = Erlang Easy Profiling (eep) application provides a way to analyze application performance and call hierarchy
|
|
@@ -1052,6 +1047,14 @@ pkg_eep_fetch = git
|
|
|
pkg_eep_repo = https://github.com/virtan/eep
|
|
|
pkg_eep_commit = master
|
|
|
|
|
|
+PACKAGES += eep_app
|
|
|
+pkg_eep_app_name = eep_app
|
|
|
+pkg_eep_app_description = Embedded Event Processing
|
|
|
+pkg_eep_app_homepage = https://github.com/darach/eep-erl
|
|
|
+pkg_eep_app_fetch = git
|
|
|
+pkg_eep_app_repo = https://github.com/darach/eep-erl
|
|
|
+pkg_eep_app_commit = master
|
|
|
+
|
|
|
PACKAGES += efene
|
|
|
pkg_efene_name = efene
|
|
|
pkg_efene_description = Alternative syntax for the Erlang Programming Language focusing on simplicity, ease of use and programmer UX
|
|
@@ -1076,14 +1079,6 @@ pkg_ehsa_fetch = hg
|
|
|
pkg_ehsa_repo = https://bitbucket.org/a12n/ehsa
|
|
|
pkg_ehsa_commit = default
|
|
|
|
|
|
-PACKAGES += ejabberd
|
|
|
-pkg_ejabberd_name = ejabberd
|
|
|
-pkg_ejabberd_description = Robust, ubiquitous and massively scalable Jabber / XMPP Instant Messaging platform
|
|
|
-pkg_ejabberd_homepage = https://github.com/processone/ejabberd
|
|
|
-pkg_ejabberd_fetch = git
|
|
|
-pkg_ejabberd_repo = https://github.com/processone/ejabberd
|
|
|
-pkg_ejabberd_commit = master
|
|
|
-
|
|
|
PACKAGES += ej
|
|
|
pkg_ej_name = ej
|
|
|
pkg_ej_description = Helper module for working with Erlang terms representing JSON
|
|
@@ -1092,6 +1087,14 @@ pkg_ej_fetch = git
|
|
|
pkg_ej_repo = https://github.com/seth/ej
|
|
|
pkg_ej_commit = master
|
|
|
|
|
|
+PACKAGES += ejabberd
|
|
|
+pkg_ejabberd_name = ejabberd
|
|
|
+pkg_ejabberd_description = Robust, ubiquitous and massively scalable Jabber / XMPP Instant Messaging platform
|
|
|
+pkg_ejabberd_homepage = https://github.com/processone/ejabberd
|
|
|
+pkg_ejabberd_fetch = git
|
|
|
+pkg_ejabberd_repo = https://github.com/processone/ejabberd
|
|
|
+pkg_ejabberd_commit = master
|
|
|
+
|
|
|
PACKAGES += ejwt
|
|
|
pkg_ejwt_name = ejwt
|
|
|
pkg_ejwt_description = erlang library for JSON Web Token
|
|
@@ -1252,6 +1255,14 @@ pkg_eredis_pool_fetch = git
|
|
|
pkg_eredis_pool_repo = https://github.com/hiroeorz/eredis_pool
|
|
|
pkg_eredis_pool_commit = master
|
|
|
|
|
|
+PACKAGES += erl_streams
|
|
|
+pkg_erl_streams_name = erl_streams
|
|
|
+pkg_erl_streams_description = Streams in Erlang
|
|
|
+pkg_erl_streams_homepage = https://github.com/epappas/erl_streams
|
|
|
+pkg_erl_streams_fetch = git
|
|
|
+pkg_erl_streams_repo = https://github.com/epappas/erl_streams
|
|
|
+pkg_erl_streams_commit = master
|
|
|
+
|
|
|
PACKAGES += erlang_cep
|
|
|
pkg_erlang_cep_name = erlang_cep
|
|
|
pkg_erlang_cep_description = A basic CEP package written in erlang
|
|
@@ -1428,14 +1439,6 @@ pkg_erlport_fetch = git
|
|
|
pkg_erlport_repo = https://github.com/hdima/erlport
|
|
|
pkg_erlport_commit = master
|
|
|
|
|
|
-PACKAGES += erlsha2
|
|
|
-pkg_erlsha2_name = erlsha2
|
|
|
-pkg_erlsha2_description = SHA-224, SHA-256, SHA-384, SHA-512 implemented in Erlang NIFs.
|
|
|
-pkg_erlsha2_homepage = https://github.com/vinoski/erlsha2
|
|
|
-pkg_erlsha2_fetch = git
|
|
|
-pkg_erlsha2_repo = https://github.com/vinoski/erlsha2
|
|
|
-pkg_erlsha2_commit = master
|
|
|
-
|
|
|
PACKAGES += erlsh
|
|
|
pkg_erlsh_name = erlsh
|
|
|
pkg_erlsh_description = Erlang shell tools
|
|
@@ -1444,6 +1447,14 @@ pkg_erlsh_fetch = git
|
|
|
pkg_erlsh_repo = https://github.com/proger/erlsh
|
|
|
pkg_erlsh_commit = master
|
|
|
|
|
|
+PACKAGES += erlsha2
|
|
|
+pkg_erlsha2_name = erlsha2
|
|
|
+pkg_erlsha2_description = SHA-224, SHA-256, SHA-384, SHA-512 implemented in Erlang NIFs.
|
|
|
+pkg_erlsha2_homepage = https://github.com/vinoski/erlsha2
|
|
|
+pkg_erlsha2_fetch = git
|
|
|
+pkg_erlsha2_repo = https://github.com/vinoski/erlsha2
|
|
|
+pkg_erlsha2_commit = master
|
|
|
+
|
|
|
PACKAGES += erlsom
|
|
|
pkg_erlsom_name = erlsom
|
|
|
pkg_erlsom_description = XML parser for Erlang
|
|
@@ -1452,14 +1463,6 @@ pkg_erlsom_fetch = git
|
|
|
pkg_erlsom_repo = https://github.com/willemdj/erlsom
|
|
|
pkg_erlsom_commit = master
|
|
|
|
|
|
-PACKAGES += erl_streams
|
|
|
-pkg_erl_streams_name = erl_streams
|
|
|
-pkg_erl_streams_description = Streams in Erlang
|
|
|
-pkg_erl_streams_homepage = https://github.com/epappas/erl_streams
|
|
|
-pkg_erl_streams_fetch = git
|
|
|
-pkg_erl_streams_repo = https://github.com/epappas/erl_streams
|
|
|
-pkg_erl_streams_commit = master
|
|
|
-
|
|
|
PACKAGES += erlubi
|
|
|
pkg_erlubi_name = erlubi
|
|
|
pkg_erlubi_description = Ubigraph Erlang Client (and Process Visualizer)
|
|
@@ -1540,14 +1543,6 @@ pkg_etap_fetch = git
|
|
|
pkg_etap_repo = https://github.com/ngerakines/etap
|
|
|
pkg_etap_commit = master
|
|
|
|
|
|
-PACKAGES += etest_http
|
|
|
-pkg_etest_http_name = etest_http
|
|
|
-pkg_etest_http_description = etest Assertions around HTTP (client-side)
|
|
|
-pkg_etest_http_homepage = https://github.com/wooga/etest_http
|
|
|
-pkg_etest_http_fetch = git
|
|
|
-pkg_etest_http_repo = https://github.com/wooga/etest_http
|
|
|
-pkg_etest_http_commit = master
|
|
|
-
|
|
|
PACKAGES += etest
|
|
|
pkg_etest_name = etest
|
|
|
pkg_etest_description = A lightweight, convention over configuration test framework for Erlang
|
|
@@ -1556,6 +1551,14 @@ pkg_etest_fetch = git
|
|
|
pkg_etest_repo = https://github.com/wooga/etest
|
|
|
pkg_etest_commit = master
|
|
|
|
|
|
+PACKAGES += etest_http
|
|
|
+pkg_etest_http_name = etest_http
|
|
|
+pkg_etest_http_description = etest Assertions around HTTP (client-side)
|
|
|
+pkg_etest_http_homepage = https://github.com/wooga/etest_http
|
|
|
+pkg_etest_http_fetch = git
|
|
|
+pkg_etest_http_repo = https://github.com/wooga/etest_http
|
|
|
+pkg_etest_http_commit = master
|
|
|
+
|
|
|
PACKAGES += etoml
|
|
|
pkg_etoml_name = etoml
|
|
|
pkg_etoml_description = TOML language erlang parser
|
|
@@ -1564,14 +1567,6 @@ pkg_etoml_fetch = git
|
|
|
pkg_etoml_repo = https://github.com/kalta/etoml
|
|
|
pkg_etoml_commit = master
|
|
|
|
|
|
-PACKAGES += eunit_formatters
|
|
|
-pkg_eunit_formatters_name = eunit_formatters
|
|
|
-pkg_eunit_formatters_description = Because eunit's output sucks. Let's make it better.
|
|
|
-pkg_eunit_formatters_homepage = https://github.com/seancribbs/eunit_formatters
|
|
|
-pkg_eunit_formatters_fetch = git
|
|
|
-pkg_eunit_formatters_repo = https://github.com/seancribbs/eunit_formatters
|
|
|
-pkg_eunit_formatters_commit = master
|
|
|
-
|
|
|
PACKAGES += eunit
|
|
|
pkg_eunit_name = eunit
|
|
|
pkg_eunit_description = The EUnit lightweight unit testing framework for Erlang - this is the canonical development repository.
|
|
@@ -1580,6 +1575,14 @@ pkg_eunit_fetch = git
|
|
|
pkg_eunit_repo = https://github.com/richcarl/eunit
|
|
|
pkg_eunit_commit = master
|
|
|
|
|
|
+PACKAGES += eunit_formatters
|
|
|
+pkg_eunit_formatters_name = eunit_formatters
|
|
|
+pkg_eunit_formatters_description = Because eunit's output sucks. Let's make it better.
|
|
|
+pkg_eunit_formatters_homepage = https://github.com/seancribbs/eunit_formatters
|
|
|
+pkg_eunit_formatters_fetch = git
|
|
|
+pkg_eunit_formatters_repo = https://github.com/seancribbs/eunit_formatters
|
|
|
+pkg_eunit_formatters_commit = master
|
|
|
+
|
|
|
PACKAGES += euthanasia
|
|
|
pkg_euthanasia_name = euthanasia
|
|
|
pkg_euthanasia_description = Merciful killer for your Erlang processes
|
|
@@ -1716,6 +1719,14 @@ pkg_fn_fetch = git
|
|
|
pkg_fn_repo = https://github.com/reiddraper/fn
|
|
|
pkg_fn_commit = master
|
|
|
|
|
|
+PACKAGES += folsom
|
|
|
+pkg_folsom_name = folsom
|
|
|
+pkg_folsom_description = Expose Erlang Events and Metrics
|
|
|
+pkg_folsom_homepage = https://github.com/boundary/folsom
|
|
|
+pkg_folsom_fetch = git
|
|
|
+pkg_folsom_repo = https://github.com/boundary/folsom
|
|
|
+pkg_folsom_commit = master
|
|
|
+
|
|
|
PACKAGES += folsom_cowboy
|
|
|
pkg_folsom_cowboy_name = folsom_cowboy
|
|
|
pkg_folsom_cowboy_description = A Cowboy based Folsom HTTP Wrapper.
|
|
@@ -1732,14 +1743,6 @@ pkg_folsomite_fetch = git
|
|
|
pkg_folsomite_repo = https://github.com/campanja/folsomite
|
|
|
pkg_folsomite_commit = master
|
|
|
|
|
|
-PACKAGES += folsom
|
|
|
-pkg_folsom_name = folsom
|
|
|
-pkg_folsom_description = Expose Erlang Events and Metrics
|
|
|
-pkg_folsom_homepage = https://github.com/boundary/folsom
|
|
|
-pkg_folsom_fetch = git
|
|
|
-pkg_folsom_repo = https://github.com/boundary/folsom
|
|
|
-pkg_folsom_commit = master
|
|
|
-
|
|
|
PACKAGES += fs
|
|
|
pkg_fs_name = fs
|
|
|
pkg_fs_description = Erlang FileSystem Listener
|
|
@@ -2036,14 +2039,6 @@ pkg_iota_fetch = git
|
|
|
pkg_iota_repo = https://github.com/jpgneves/iota
|
|
|
pkg_iota_commit = master
|
|
|
|
|
|
-PACKAGES += ircd
|
|
|
-pkg_ircd_name = ircd
|
|
|
-pkg_ircd_description = A pluggable IRC daemon application/library for Erlang.
|
|
|
-pkg_ircd_homepage = https://github.com/tonyg/erlang-ircd
|
|
|
-pkg_ircd_fetch = git
|
|
|
-pkg_ircd_repo = https://github.com/tonyg/erlang-ircd
|
|
|
-pkg_ircd_commit = master
|
|
|
-
|
|
|
PACKAGES += irc_lib
|
|
|
pkg_irc_lib_name = irc_lib
|
|
|
pkg_irc_lib_description = Erlang irc client library
|
|
@@ -2052,6 +2047,14 @@ pkg_irc_lib_fetch = git
|
|
|
pkg_irc_lib_repo = https://github.com/OtpChatBot/irc_lib
|
|
|
pkg_irc_lib_commit = master
|
|
|
|
|
|
+PACKAGES += ircd
|
|
|
+pkg_ircd_name = ircd
|
|
|
+pkg_ircd_description = A pluggable IRC daemon application/library for Erlang.
|
|
|
+pkg_ircd_homepage = https://github.com/tonyg/erlang-ircd
|
|
|
+pkg_ircd_fetch = git
|
|
|
+pkg_ircd_repo = https://github.com/tonyg/erlang-ircd
|
|
|
+pkg_ircd_commit = master
|
|
|
+
|
|
|
PACKAGES += iris
|
|
|
pkg_iris_name = iris
|
|
|
pkg_iris_description = Iris Erlang binding
|
|
@@ -2124,6 +2127,22 @@ pkg_joxa_fetch = git
|
|
|
pkg_joxa_repo = https://github.com/joxa/joxa
|
|
|
pkg_joxa_commit = master
|
|
|
|
|
|
+PACKAGES += json
|
|
|
+pkg_json_name = json
|
|
|
+pkg_json_description = a high level json library for erlang (17.0+)
|
|
|
+pkg_json_homepage = https://github.com/talentdeficit/json
|
|
|
+pkg_json_fetch = git
|
|
|
+pkg_json_repo = https://github.com/talentdeficit/json
|
|
|
+pkg_json_commit = master
|
|
|
+
|
|
|
+PACKAGES += json_rec
|
|
|
+pkg_json_rec_name = json_rec
|
|
|
+pkg_json_rec_description = JSON to erlang record
|
|
|
+pkg_json_rec_homepage = https://github.com/justinkirby/json_rec
|
|
|
+pkg_json_rec_fetch = git
|
|
|
+pkg_json_rec_repo = https://github.com/justinkirby/json_rec
|
|
|
+pkg_json_rec_commit = master
|
|
|
+
|
|
|
PACKAGES += jsone
|
|
|
pkg_jsone_name = jsone
|
|
|
pkg_jsone_description = An Erlang library for encoding, decoding JSON data.
|
|
@@ -2140,14 +2159,6 @@ pkg_jsonerl_fetch = git
|
|
|
pkg_jsonerl_repo = https://github.com/lambder/jsonerl
|
|
|
pkg_jsonerl_commit = master
|
|
|
|
|
|
-PACKAGES += json
|
|
|
-pkg_json_name = json
|
|
|
-pkg_json_description = a high level json library for erlang (17.0+)
|
|
|
-pkg_json_homepage = https://github.com/talentdeficit/json
|
|
|
-pkg_json_fetch = git
|
|
|
-pkg_json_repo = https://github.com/talentdeficit/json
|
|
|
-pkg_json_commit = master
|
|
|
-
|
|
|
PACKAGES += jsonpath
|
|
|
pkg_jsonpath_name = jsonpath
|
|
|
pkg_jsonpath_description = Fast Erlang JSON data retrieval and updates via javascript-like notation
|
|
@@ -2156,14 +2167,6 @@ pkg_jsonpath_fetch = git
|
|
|
pkg_jsonpath_repo = https://github.com/GeneStevens/jsonpath
|
|
|
pkg_jsonpath_commit = master
|
|
|
|
|
|
-PACKAGES += json_rec
|
|
|
-pkg_json_rec_name = json_rec
|
|
|
-pkg_json_rec_description = JSON to erlang record
|
|
|
-pkg_json_rec_homepage = https://github.com/justinkirby/json_rec
|
|
|
-pkg_json_rec_fetch = git
|
|
|
-pkg_json_rec_repo = https://github.com/justinkirby/json_rec
|
|
|
-pkg_json_rec_commit = master
|
|
|
-
|
|
|
PACKAGES += jsonx
|
|
|
pkg_jsonx_name = jsonx
|
|
|
pkg_jsonx_description = JSONX is an Erlang library for efficient decode and encode JSON, written in C.
|
|
@@ -2292,14 +2295,6 @@ pkg_kvs_fetch = git
|
|
|
pkg_kvs_repo = https://github.com/synrc/kvs
|
|
|
pkg_kvs_commit = master
|
|
|
|
|
|
-PACKAGES += lager_amqp_backend
|
|
|
-pkg_lager_amqp_backend_name = lager_amqp_backend
|
|
|
-pkg_lager_amqp_backend_description = AMQP RabbitMQ Lager backend
|
|
|
-pkg_lager_amqp_backend_homepage = https://github.com/jbrisbin/lager_amqp_backend
|
|
|
-pkg_lager_amqp_backend_fetch = git
|
|
|
-pkg_lager_amqp_backend_repo = https://github.com/jbrisbin/lager_amqp_backend
|
|
|
-pkg_lager_amqp_backend_commit = master
|
|
|
-
|
|
|
PACKAGES += lager
|
|
|
pkg_lager_name = lager
|
|
|
pkg_lager_description = A logging framework for Erlang/OTP.
|
|
@@ -2308,6 +2303,14 @@ pkg_lager_fetch = git
|
|
|
pkg_lager_repo = https://github.com/basho/lager
|
|
|
pkg_lager_commit = master
|
|
|
|
|
|
+PACKAGES += lager_amqp_backend
|
|
|
+pkg_lager_amqp_backend_name = lager_amqp_backend
|
|
|
+pkg_lager_amqp_backend_description = AMQP RabbitMQ Lager backend
|
|
|
+pkg_lager_amqp_backend_homepage = https://github.com/jbrisbin/lager_amqp_backend
|
|
|
+pkg_lager_amqp_backend_fetch = git
|
|
|
+pkg_lager_amqp_backend_repo = https://github.com/jbrisbin/lager_amqp_backend
|
|
|
+pkg_lager_amqp_backend_commit = master
|
|
|
+
|
|
|
PACKAGES += lager_syslog
|
|
|
pkg_lager_syslog_name = lager_syslog
|
|
|
pkg_lager_syslog_description = Syslog backend for lager
|
|
@@ -2484,6 +2487,14 @@ pkg_mavg_fetch = git
|
|
|
pkg_mavg_repo = https://github.com/EchoTeam/mavg
|
|
|
pkg_mavg_commit = master
|
|
|
|
|
|
+PACKAGES += mc_erl
|
|
|
+pkg_mc_erl_name = mc_erl
|
|
|
+pkg_mc_erl_description = mc-erl is a server for Minecraft 1.4.7 written in Erlang.
|
|
|
+pkg_mc_erl_homepage = https://github.com/clonejo/mc-erl
|
|
|
+pkg_mc_erl_fetch = git
|
|
|
+pkg_mc_erl_repo = https://github.com/clonejo/mc-erl
|
|
|
+pkg_mc_erl_commit = master
|
|
|
+
|
|
|
PACKAGES += mcd
|
|
|
pkg_mcd_name = mcd
|
|
|
pkg_mcd_description = Fast memcached protocol client in pure Erlang
|
|
@@ -2500,14 +2511,6 @@ pkg_mcerlang_fetch = git
|
|
|
pkg_mcerlang_repo = https://github.com/fredlund/McErlang
|
|
|
pkg_mcerlang_commit = master
|
|
|
|
|
|
-PACKAGES += mc_erl
|
|
|
-pkg_mc_erl_name = mc_erl
|
|
|
-pkg_mc_erl_description = mc-erl is a server for Minecraft 1.4.7 written in Erlang.
|
|
|
-pkg_mc_erl_homepage = https://github.com/clonejo/mc-erl
|
|
|
-pkg_mc_erl_fetch = git
|
|
|
-pkg_mc_erl_repo = https://github.com/clonejo/mc-erl
|
|
|
-pkg_mc_erl_commit = master
|
|
|
-
|
|
|
PACKAGES += meck
|
|
|
pkg_meck_name = meck
|
|
|
pkg_meck_description = A mocking library for Erlang
|
|
@@ -2772,14 +2775,6 @@ pkg_nprocreg_fetch = git
|
|
|
pkg_nprocreg_repo = https://github.com/nitrogen/nprocreg
|
|
|
pkg_nprocreg_commit = master
|
|
|
|
|
|
-PACKAGES += oauth2
|
|
|
-pkg_oauth2_name = oauth2
|
|
|
-pkg_oauth2_description = Erlang Oauth2 implementation
|
|
|
-pkg_oauth2_homepage = https://github.com/kivra/oauth2
|
|
|
-pkg_oauth2_fetch = git
|
|
|
-pkg_oauth2_repo = https://github.com/kivra/oauth2
|
|
|
-pkg_oauth2_commit = master
|
|
|
-
|
|
|
PACKAGES += oauth
|
|
|
pkg_oauth_name = oauth
|
|
|
pkg_oauth_description = An Erlang OAuth 1.0 implementation
|
|
@@ -2788,6 +2783,14 @@ pkg_oauth_fetch = git
|
|
|
pkg_oauth_repo = https://github.com/tim/erlang-oauth
|
|
|
pkg_oauth_commit = master
|
|
|
|
|
|
+PACKAGES += oauth2
|
|
|
+pkg_oauth2_name = oauth2
|
|
|
+pkg_oauth2_description = Erlang Oauth2 implementation
|
|
|
+pkg_oauth2_homepage = https://github.com/kivra/oauth2
|
|
|
+pkg_oauth2_fetch = git
|
|
|
+pkg_oauth2_repo = https://github.com/kivra/oauth2
|
|
|
+pkg_oauth2_commit = master
|
|
|
+
|
|
|
PACKAGES += octopus
|
|
|
pkg_octopus_name = octopus
|
|
|
pkg_octopus_description = Small and flexible pool manager written in Erlang
|
|
@@ -2972,14 +2975,6 @@ pkg_procket_fetch = git
|
|
|
pkg_procket_repo = https://github.com/msantos/procket
|
|
|
pkg_procket_commit = master
|
|
|
|
|
|
-PACKAGES += proper
|
|
|
-pkg_proper_name = proper
|
|
|
-pkg_proper_description = PropEr: a QuickCheck-inspired property-based testing tool for Erlang.
|
|
|
-pkg_proper_homepage = http://proper.softlab.ntua.gr
|
|
|
-pkg_proper_fetch = git
|
|
|
-pkg_proper_repo = https://github.com/manopapad/proper
|
|
|
-pkg_proper_commit = master
|
|
|
-
|
|
|
PACKAGES += prop
|
|
|
pkg_prop_name = prop
|
|
|
pkg_prop_description = An Erlang code scaffolding and generator system.
|
|
@@ -2988,6 +2983,14 @@ pkg_prop_fetch = git
|
|
|
pkg_prop_repo = https://github.com/nuex/prop
|
|
|
pkg_prop_commit = master
|
|
|
|
|
|
+PACKAGES += proper
|
|
|
+pkg_proper_name = proper
|
|
|
+pkg_proper_description = PropEr: a QuickCheck-inspired property-based testing tool for Erlang.
|
|
|
+pkg_proper_homepage = http://proper.softlab.ntua.gr
|
|
|
+pkg_proper_fetch = git
|
|
|
+pkg_proper_repo = https://github.com/manopapad/proper
|
|
|
+pkg_proper_commit = master
|
|
|
+
|
|
|
PACKAGES += props
|
|
|
pkg_props_name = props
|
|
|
pkg_props_description = Property structure library
|
|
@@ -3060,14 +3063,6 @@ pkg_quickrand_fetch = git
|
|
|
pkg_quickrand_repo = https://github.com/okeuday/quickrand
|
|
|
pkg_quickrand_commit = master
|
|
|
|
|
|
-PACKAGES += rabbit_exchange_type_riak
|
|
|
-pkg_rabbit_exchange_type_riak_name = rabbit_exchange_type_riak
|
|
|
-pkg_rabbit_exchange_type_riak_description = Custom RabbitMQ exchange type for sticking messages in Riak
|
|
|
-pkg_rabbit_exchange_type_riak_homepage = https://github.com/jbrisbin/riak-exchange
|
|
|
-pkg_rabbit_exchange_type_riak_fetch = git
|
|
|
-pkg_rabbit_exchange_type_riak_repo = https://github.com/jbrisbin/riak-exchange
|
|
|
-pkg_rabbit_exchange_type_riak_commit = master
|
|
|
-
|
|
|
PACKAGES += rabbit
|
|
|
pkg_rabbit_name = rabbit
|
|
|
pkg_rabbit_description = RabbitMQ Server
|
|
@@ -3076,6 +3071,14 @@ pkg_rabbit_fetch = git
|
|
|
pkg_rabbit_repo = https://github.com/rabbitmq/rabbitmq-server.git
|
|
|
pkg_rabbit_commit = master
|
|
|
|
|
|
+PACKAGES += rabbit_exchange_type_riak
|
|
|
+pkg_rabbit_exchange_type_riak_name = rabbit_exchange_type_riak
|
|
|
+pkg_rabbit_exchange_type_riak_description = Custom RabbitMQ exchange type for sticking messages in Riak
|
|
|
+pkg_rabbit_exchange_type_riak_homepage = https://github.com/jbrisbin/riak-exchange
|
|
|
+pkg_rabbit_exchange_type_riak_fetch = git
|
|
|
+pkg_rabbit_exchange_type_riak_repo = https://github.com/jbrisbin/riak-exchange
|
|
|
+pkg_rabbit_exchange_type_riak_commit = master
|
|
|
+
|
|
|
PACKAGES += rack
|
|
|
pkg_rack_name = rack
|
|
|
pkg_rack_description = Rack handler for erlang
|
|
@@ -3220,14 +3223,6 @@ pkg_rfc4627_jsonrpc_fetch = git
|
|
|
pkg_rfc4627_jsonrpc_repo = https://github.com/tonyg/erlang-rfc4627
|
|
|
pkg_rfc4627_jsonrpc_commit = master
|
|
|
|
|
|
-PACKAGES += riakc
|
|
|
-pkg_riakc_name = riakc
|
|
|
-pkg_riakc_description = Erlang clients for Riak.
|
|
|
-pkg_riakc_homepage = https://github.com/basho/riak-erlang-client
|
|
|
-pkg_riakc_fetch = git
|
|
|
-pkg_riakc_repo = https://github.com/basho/riak-erlang-client
|
|
|
-pkg_riakc_commit = master
|
|
|
-
|
|
|
PACKAGES += riak_control
|
|
|
pkg_riak_control_name = riak_control
|
|
|
pkg_riak_control_description = Webmachine-based administration interface for Riak.
|
|
@@ -3260,14 +3255,6 @@ pkg_riak_ensemble_fetch = git
|
|
|
pkg_riak_ensemble_repo = https://github.com/basho/riak_ensemble
|
|
|
pkg_riak_ensemble_commit = master
|
|
|
|
|
|
-PACKAGES += riakhttpc
|
|
|
-pkg_riakhttpc_name = riakhttpc
|
|
|
-pkg_riakhttpc_description = Riak Erlang client using the HTTP interface
|
|
|
-pkg_riakhttpc_homepage = https://github.com/basho/riak-erlang-http-client
|
|
|
-pkg_riakhttpc_fetch = git
|
|
|
-pkg_riakhttpc_repo = https://github.com/basho/riak-erlang-http-client
|
|
|
-pkg_riakhttpc_commit = master
|
|
|
-
|
|
|
PACKAGES += riak_kv
|
|
|
pkg_riak_kv_name = riak_kv
|
|
|
pkg_riak_kv_description = Riak Key/Value Store
|
|
@@ -3276,14 +3263,6 @@ pkg_riak_kv_fetch = git
|
|
|
pkg_riak_kv_repo = https://github.com/basho/riak_kv
|
|
|
pkg_riak_kv_commit = master
|
|
|
|
|
|
-PACKAGES += riaknostic
|
|
|
-pkg_riaknostic_name = riaknostic
|
|
|
-pkg_riaknostic_description = A diagnostic tool for Riak installations, to find common errors asap
|
|
|
-pkg_riaknostic_homepage = https://github.com/basho/riaknostic
|
|
|
-pkg_riaknostic_fetch = git
|
|
|
-pkg_riaknostic_repo = https://github.com/basho/riaknostic
|
|
|
-pkg_riaknostic_commit = master
|
|
|
-
|
|
|
PACKAGES += riak_pg
|
|
|
pkg_riak_pg_name = riak_pg
|
|
|
pkg_riak_pg_description = Distributed process groups with riak_core.
|
|
@@ -3300,14 +3279,6 @@ pkg_riak_pipe_fetch = git
|
|
|
pkg_riak_pipe_repo = https://github.com/basho/riak_pipe
|
|
|
pkg_riak_pipe_commit = master
|
|
|
|
|
|
-PACKAGES += riakpool
|
|
|
-pkg_riakpool_name = riakpool
|
|
|
-pkg_riakpool_description = erlang riak client pool
|
|
|
-pkg_riakpool_homepage = https://github.com/dweldon/riakpool
|
|
|
-pkg_riakpool_fetch = git
|
|
|
-pkg_riakpool_repo = https://github.com/dweldon/riakpool
|
|
|
-pkg_riakpool_commit = master
|
|
|
-
|
|
|
PACKAGES += riak_sysmon
|
|
|
pkg_riak_sysmon_name = riak_sysmon
|
|
|
pkg_riak_sysmon_description = Simple OTP app for managing Erlang VM system_monitor event messages
|
|
@@ -3324,6 +3295,38 @@ pkg_riak_test_fetch = git
|
|
|
pkg_riak_test_repo = https://github.com/basho/riak_test
|
|
|
pkg_riak_test_commit = master
|
|
|
|
|
|
+PACKAGES += riakc
|
|
|
+pkg_riakc_name = riakc
|
|
|
+pkg_riakc_description = Erlang clients for Riak.
|
|
|
+pkg_riakc_homepage = https://github.com/basho/riak-erlang-client
|
|
|
+pkg_riakc_fetch = git
|
|
|
+pkg_riakc_repo = https://github.com/basho/riak-erlang-client
|
|
|
+pkg_riakc_commit = master
|
|
|
+
|
|
|
+PACKAGES += riakhttpc
|
|
|
+pkg_riakhttpc_name = riakhttpc
|
|
|
+pkg_riakhttpc_description = Riak Erlang client using the HTTP interface
|
|
|
+pkg_riakhttpc_homepage = https://github.com/basho/riak-erlang-http-client
|
|
|
+pkg_riakhttpc_fetch = git
|
|
|
+pkg_riakhttpc_repo = https://github.com/basho/riak-erlang-http-client
|
|
|
+pkg_riakhttpc_commit = master
|
|
|
+
|
|
|
+PACKAGES += riaknostic
|
|
|
+pkg_riaknostic_name = riaknostic
|
|
|
+pkg_riaknostic_description = A diagnostic tool for Riak installations, to find common errors asap
|
|
|
+pkg_riaknostic_homepage = https://github.com/basho/riaknostic
|
|
|
+pkg_riaknostic_fetch = git
|
|
|
+pkg_riaknostic_repo = https://github.com/basho/riaknostic
|
|
|
+pkg_riaknostic_commit = master
|
|
|
+
|
|
|
+PACKAGES += riakpool
|
|
|
+pkg_riakpool_name = riakpool
|
|
|
+pkg_riakpool_description = erlang riak client pool
|
|
|
+pkg_riakpool_homepage = https://github.com/dweldon/riakpool
|
|
|
+pkg_riakpool_fetch = git
|
|
|
+pkg_riakpool_repo = https://github.com/dweldon/riakpool
|
|
|
+pkg_riakpool_commit = master
|
|
|
+
|
|
|
PACKAGES += rivus_cep
|
|
|
pkg_rivus_cep_name = rivus_cep
|
|
|
pkg_rivus_cep_description = Complex event processing in Erlang
|
|
@@ -3644,14 +3647,6 @@ pkg_switchboard_fetch = git
|
|
|
pkg_switchboard_repo = https://github.com/thusfresh/switchboard
|
|
|
pkg_switchboard_commit = master
|
|
|
|
|
|
-PACKAGES += sync
|
|
|
-pkg_sync_name = sync
|
|
|
-pkg_sync_description = On-the-fly recompiling and reloading in Erlang.
|
|
|
-pkg_sync_homepage = https://github.com/rustyio/sync
|
|
|
-pkg_sync_fetch = git
|
|
|
-pkg_sync_repo = https://github.com/rustyio/sync
|
|
|
-pkg_sync_commit = master
|
|
|
-
|
|
|
PACKAGES += syn
|
|
|
pkg_syn_name = syn
|
|
|
pkg_syn_description = A global Process Registry and Process Group manager for Erlang.
|
|
@@ -3660,6 +3655,14 @@ pkg_syn_fetch = git
|
|
|
pkg_syn_repo = https://github.com/ostinelli/syn
|
|
|
pkg_syn_commit = master
|
|
|
|
|
|
+PACKAGES += sync
|
|
|
+pkg_sync_name = sync
|
|
|
+pkg_sync_description = On-the-fly recompiling and reloading in Erlang.
|
|
|
+pkg_sync_homepage = https://github.com/rustyio/sync
|
|
|
+pkg_sync_fetch = git
|
|
|
+pkg_sync_repo = https://github.com/rustyio/sync
|
|
|
+pkg_sync_commit = master
|
|
|
+
|
|
|
PACKAGES += syntaxerl
|
|
|
pkg_syntaxerl_name = syntaxerl
|
|
|
pkg_syntaxerl_description = Syntax checker for Erlang
|
|
@@ -3732,6 +3735,14 @@ pkg_tirerl_fetch = git
|
|
|
pkg_tirerl_repo = https://github.com/inaka/tirerl
|
|
|
pkg_tirerl_commit = master
|
|
|
|
|
|
+PACKAGES += toml
|
|
|
+pkg_toml_name = toml
|
|
|
+pkg_toml_description = TOML (0.4.0) config parser
|
|
|
+pkg_toml_homepage = http://dozzie.jarowit.net/trac/wiki/TOML
|
|
|
+pkg_toml_fetch = git
|
|
|
+pkg_toml_repo = https://github.com/dozzie/toml
|
|
|
+pkg_toml_commit = v0.2.0
|
|
|
+
|
|
|
PACKAGES += traffic_tools
|
|
|
pkg_traffic_tools_name = traffic_tools
|
|
|
pkg_traffic_tools_description = Simple traffic limiting library
|
|
@@ -4012,14 +4023,6 @@ pkg_yaws_fetch = git
|
|
|
pkg_yaws_repo = https://github.com/klacke/yaws
|
|
|
pkg_yaws_commit = master
|
|
|
|
|
|
-PACKAGES += zabbix_sender
|
|
|
-pkg_zabbix_sender_name = zabbix_sender
|
|
|
-pkg_zabbix_sender_description = Zabbix trapper for sending data to Zabbix in pure Erlang
|
|
|
-pkg_zabbix_sender_homepage = https://github.com/stalkermn/zabbix_sender
|
|
|
-pkg_zabbix_sender_fetch = git
|
|
|
-pkg_zabbix_sender_repo = https://github.com/stalkermn/zabbix_sender.git
|
|
|
-pkg_zabbix_sender_commit = master
|
|
|
-
|
|
|
PACKAGES += zab_engine
|
|
|
pkg_zab_engine_name = zab_engine
|
|
|
pkg_zab_engine_description = zab propotocol implement by erlang
|
|
@@ -4028,6 +4031,14 @@ pkg_zab_engine_fetch = git
|
|
|
pkg_zab_engine_repo = https://github.com/xinmingyao/zab_engine
|
|
|
pkg_zab_engine_commit = master
|
|
|
|
|
|
+PACKAGES += zabbix_sender
|
|
|
+pkg_zabbix_sender_name = zabbix_sender
|
|
|
+pkg_zabbix_sender_description = Zabbix trapper for sending data to Zabbix in pure Erlang
|
|
|
+pkg_zabbix_sender_homepage = https://github.com/stalkermn/zabbix_sender
|
|
|
+pkg_zabbix_sender_fetch = git
|
|
|
+pkg_zabbix_sender_repo = https://github.com/stalkermn/zabbix_sender.git
|
|
|
+pkg_zabbix_sender_commit = master
|
|
|
+
|
|
|
PACKAGES += zeta
|
|
|
pkg_zeta_name = zeta
|
|
|
pkg_zeta_description = HTTP access log parser in Erlang
|
|
@@ -4098,7 +4109,7 @@ endif
|
|
|
# Copyright (c) 2013-2016, Loïc Hoguin <essen@ninenines.eu>
|
|
|
# This file is part of erlang.mk and subject to the terms of the ISC License.
|
|
|
|
|
|
-.PHONY: distclean-deps
|
|
|
+.PHONY: distclean-deps clean-tmp-deps.log
|
|
|
|
|
|
# Configuration.
|
|
|
|
|
@@ -4118,11 +4129,32 @@ export DEPS_DIR
|
|
|
REBAR_DEPS_DIR = $(DEPS_DIR)
|
|
|
export REBAR_DEPS_DIR
|
|
|
|
|
|
+# External "early" plugins (see core/plugins.mk for regular plugins).
|
|
|
+# They both use the core_dep_plugin macro.
|
|
|
+
|
|
|
+define core_dep_plugin
|
|
|
+ifeq ($(2),$(PROJECT))
|
|
|
+-include $$(patsubst $(PROJECT)/%,%,$(1))
|
|
|
+else
|
|
|
+-include $(DEPS_DIR)/$(1)
|
|
|
+
|
|
|
+$(DEPS_DIR)/$(1): $(DEPS_DIR)/$(2) ;
|
|
|
+endif
|
|
|
+endef
|
|
|
+
|
|
|
+DEP_EARLY_PLUGINS ?=
|
|
|
+
|
|
|
+$(foreach p,$(DEP_EARLY_PLUGINS),\
|
|
|
+ $(eval $(if $(findstring /,$p),\
|
|
|
+ $(call core_dep_plugin,$p,$(firstword $(subst /, ,$p))),\
|
|
|
+ $(call core_dep_plugin,$p/early-plugins.mk,$p))))
|
|
|
+
|
|
|
dep_name = $(if $(dep_$(1)),$(1),$(if $(pkg_$(1)_name),$(pkg_$(1)_name),$(1)))
|
|
|
dep_repo = $(patsubst git://github.com/%,https://github.com/%, \
|
|
|
$(if $(dep_$(1)),$(word 2,$(dep_$(1))),$(pkg_$(1)_repo)))
|
|
|
dep_commit = $(if $(dep_$(1)_commit),$(dep_$(1)_commit),$(if $(dep_$(1)),$(word 3,$(dep_$(1))),$(pkg_$(1)_commit)))
|
|
|
|
|
|
+LOCAL_DEPS_DIRS = $(foreach a,$(LOCAL_DEPS),$(if $(wildcard $(APPS_DIR)/$(a)),$(APPS_DIR)/$(a)))
|
|
|
ALL_APPS_DIRS = $(if $(wildcard $(APPS_DIR)/),$(filter-out $(APPS_DIR),$(shell find $(APPS_DIR) -maxdepth 1 -type d)))
|
|
|
ALL_DEPS_DIRS = $(addprefix $(DEPS_DIR)/,$(foreach dep,$(filter-out $(IGNORE_DEPS),$(BUILD_DEPS) $(DEPS)),$(call dep_name,$(dep))))
|
|
|
|
|
@@ -4145,10 +4177,7 @@ dep_verbose = $(dep_verbose_$(V))
|
|
|
|
|
|
# Core targets.
|
|
|
|
|
|
-ifdef IS_APP
|
|
|
-apps::
|
|
|
-else
|
|
|
-apps:: $(ALL_APPS_DIRS)
|
|
|
+apps:: $(ALL_APPS_DIRS) clean-tmp-deps.log
|
|
|
ifeq ($(IS_APP)$(IS_DEP),)
|
|
|
$(verbose) rm -f $(ERLANG_MK_TMP)/apps.log
|
|
|
endif
|
|
@@ -4156,45 +4185,47 @@ endif
|
|
|
# Create ebin directory for all apps to make sure Erlang recognizes them
|
|
|
# as proper OTP applications when using -include_lib. This is a temporary
|
|
|
# fix, a proper fix would be to compile apps/* in the right order.
|
|
|
- $(verbose) for dep in $(ALL_APPS_DIRS) ; do \
|
|
|
- mkdir -p $$dep/ebin || exit $$?; \
|
|
|
+ifndef IS_APP
|
|
|
+ $(verbose) set -e; for dep in $(ALL_APPS_DIRS) ; do \
|
|
|
+ mkdir -p $$dep/ebin; \
|
|
|
done
|
|
|
- $(verbose) for dep in $(ALL_APPS_DIRS) ; do \
|
|
|
+endif
|
|
|
+# at the toplevel: if LOCAL_DEPS is defined with at least one local app, only
|
|
|
+# compile that list of apps. otherwise, compile everything.
|
|
|
+# within an app: compile all LOCAL_DEPS that are (uncompiled) local apps
|
|
|
+ $(verbose) set -e; for dep in $(if $(LOCAL_DEPS_DIRS)$(IS_APP),$(LOCAL_DEPS_DIRS),$(ALL_APPS_DIRS)) ; do \
|
|
|
if grep -qs ^$$dep$$ $(ERLANG_MK_TMP)/apps.log; then \
|
|
|
:; \
|
|
|
else \
|
|
|
echo $$dep >> $(ERLANG_MK_TMP)/apps.log; \
|
|
|
- $(MAKE) -C $$dep IS_APP=1 || exit $$?; \
|
|
|
+ $(MAKE) -C $$dep IS_APP=1; \
|
|
|
fi \
|
|
|
done
|
|
|
+
|
|
|
+clean-tmp-deps.log:
|
|
|
+ifeq ($(IS_APP)$(IS_DEP),)
|
|
|
+ $(verbose) rm -f $(ERLANG_MK_TMP)/deps.log
|
|
|
endif
|
|
|
|
|
|
ifneq ($(SKIP_DEPS),)
|
|
|
deps::
|
|
|
else
|
|
|
-ifeq ($(ALL_DEPS_DIRS),)
|
|
|
-deps:: apps
|
|
|
-else
|
|
|
-deps:: $(ALL_DEPS_DIRS) apps
|
|
|
-ifeq ($(IS_APP)$(IS_DEP),)
|
|
|
- $(verbose) rm -f $(ERLANG_MK_TMP)/deps.log
|
|
|
-endif
|
|
|
+deps:: $(ALL_DEPS_DIRS) apps clean-tmp-deps.log
|
|
|
$(verbose) mkdir -p $(ERLANG_MK_TMP)
|
|
|
- $(verbose) for dep in $(ALL_DEPS_DIRS) ; do \
|
|
|
+ $(verbose) set -e; for dep in $(ALL_DEPS_DIRS) ; do \
|
|
|
if grep -qs ^$$dep$$ $(ERLANG_MK_TMP)/deps.log; then \
|
|
|
:; \
|
|
|
else \
|
|
|
echo $$dep >> $(ERLANG_MK_TMP)/deps.log; \
|
|
|
if [ -f $$dep/GNUmakefile ] || [ -f $$dep/makefile ] || [ -f $$dep/Makefile ]; then \
|
|
|
- $(MAKE) -C $$dep IS_DEP=1 || exit $$?; \
|
|
|
+ $(MAKE) -C $$dep IS_DEP=1; \
|
|
|
else \
|
|
|
- echo "Error: No Makefile to build dependency $$dep."; \
|
|
|
+ echo "Error: No Makefile to build dependency $$dep." >&2; \
|
|
|
exit 2; \
|
|
|
fi \
|
|
|
fi \
|
|
|
done
|
|
|
endif
|
|
|
-endif
|
|
|
|
|
|
# Deps related targets.
|
|
|
|
|
@@ -4203,17 +4234,18 @@ endif
|
|
|
# in practice only Makefile is needed so far.
|
|
|
define dep_autopatch
|
|
|
if [ -f $(DEPS_DIR)/$(1)/erlang.mk ]; then \
|
|
|
+ rm -rf $(DEPS_DIR)/$1/ebin/; \
|
|
|
$(call erlang,$(call dep_autopatch_appsrc.erl,$(1))); \
|
|
|
$(call dep_autopatch_erlang_mk,$(1)); \
|
|
|
elif [ -f $(DEPS_DIR)/$(1)/Makefile ]; then \
|
|
|
- if [ 0 != `grep -c "include ../\w*\.mk" $(DEPS_DIR)/$(1)/Makefile` ]; then \
|
|
|
+ if [ -f $(DEPS_DIR)/$1/rebar.lock ]; then \
|
|
|
+ $(call dep_autopatch2,$1); \
|
|
|
+ elif [ 0 != `grep -c "include ../\w*\.mk" $(DEPS_DIR)/$(1)/Makefile` ]; then \
|
|
|
$(call dep_autopatch2,$(1)); \
|
|
|
- elif [ 0 != `grep -ci rebar $(DEPS_DIR)/$(1)/Makefile` ]; then \
|
|
|
+ elif [ 0 != `grep -ci "^[^#].*rebar" $(DEPS_DIR)/$(1)/Makefile` ]; then \
|
|
|
$(call dep_autopatch2,$(1)); \
|
|
|
- elif [ -n "`find $(DEPS_DIR)/$(1)/ -type f -name \*.mk -not -name erlang.mk -exec grep -i rebar '{}' \;`" ]; then \
|
|
|
+ elif [ -n "`find $(DEPS_DIR)/$(1)/ -type f -name \*.mk -not -name erlang.mk -exec grep -i "^[^#].*rebar" '{}' \;`" ]; then \
|
|
|
$(call dep_autopatch2,$(1)); \
|
|
|
- else \
|
|
|
- $(call erlang,$(call dep_autopatch_app.erl,$(1))); \
|
|
|
fi \
|
|
|
else \
|
|
|
if [ ! -d $(DEPS_DIR)/$(1)/src/ ]; then \
|
|
@@ -4225,11 +4257,14 @@ define dep_autopatch
|
|
|
endef
|
|
|
|
|
|
define dep_autopatch2
|
|
|
+ ! test -f $(DEPS_DIR)/$1/ebin/$1.app || \
|
|
|
+ mv -n $(DEPS_DIR)/$1/ebin/$1.app $(DEPS_DIR)/$1/src/$1.app.src; \
|
|
|
+ rm -f $(DEPS_DIR)/$1/ebin/$1.app; \
|
|
|
if [ -f $(DEPS_DIR)/$1/src/$1.app.src.script ]; then \
|
|
|
$(call erlang,$(call dep_autopatch_appsrc_script.erl,$(1))); \
|
|
|
fi; \
|
|
|
$(call erlang,$(call dep_autopatch_appsrc.erl,$(1))); \
|
|
|
- if [ -f $(DEPS_DIR)/$(1)/rebar -o -f $(DEPS_DIR)/$(1)/rebar.config -o -f $(DEPS_DIR)/$(1)/rebar.config.script ]; then \
|
|
|
+ if [ -f $(DEPS_DIR)/$(1)/rebar -o -f $(DEPS_DIR)/$(1)/rebar.config -o -f $(DEPS_DIR)/$(1)/rebar.config.script -o -f $(DEPS_DIR)/$1/rebar.lock ]; then \
|
|
|
$(call dep_autopatch_fetch_rebar); \
|
|
|
$(call dep_autopatch_rebar,$(1)); \
|
|
|
else \
|
|
@@ -4241,11 +4276,15 @@ define dep_autopatch_noop
|
|
|
printf "noop:\n" > $(DEPS_DIR)/$(1)/Makefile
|
|
|
endef
|
|
|
|
|
|
-# Overwrite erlang.mk with the current file by default.
|
|
|
+# Replace "include erlang.mk" with a line that will load the parent Erlang.mk
|
|
|
+# if given. Do it for all 3 possible Makefile file names.
|
|
|
ifeq ($(NO_AUTOPATCH_ERLANG_MK),)
|
|
|
define dep_autopatch_erlang_mk
|
|
|
- echo "include $(call core_relpath,$(dir $(ERLANG_MK_FILENAME)),$(DEPS_DIR)/app)/erlang.mk" \
|
|
|
- > $(DEPS_DIR)/$1/erlang.mk
|
|
|
+ $t for f in Makefile makefile GNUmakefile; do \
|
|
|
+ if [ -f $(DEPS_DIR)/$1/$$f ]; then \
|
|
|
+ sed -i.bak s/'include *erlang.mk'/'include $$(if $$(ERLANG_MK_FILENAME),$$(ERLANG_MK_FILENAME),erlang.mk)'/ $(DEPS_DIR)/$1/$$f; \
|
|
|
+ fi \
|
|
|
+ done
|
|
|
endef
|
|
|
else
|
|
|
define dep_autopatch_erlang_mk
|
|
@@ -4488,7 +4527,7 @@ define dep_autopatch_rebar.erl
|
|
|
end,
|
|
|
[PortSpec(S) || S <- PortSpecs]
|
|
|
end,
|
|
|
- Write("\ninclude $(call core_relpath,$(dir $(ERLANG_MK_FILENAME)),$(DEPS_DIR)/app)/erlang.mk"),
|
|
|
+ Write("\ninclude $$\(if $$\(ERLANG_MK_FILENAME),$$\(ERLANG_MK_FILENAME),erlang.mk)"),
|
|
|
RunPlugin = fun(Plugin, Step) ->
|
|
|
case erlang:function_exported(Plugin, Step, 2) of
|
|
|
false -> ok;
|
|
@@ -4536,22 +4575,6 @@ define dep_autopatch_rebar.erl
|
|
|
halt()
|
|
|
endef
|
|
|
|
|
|
-define dep_autopatch_app.erl
|
|
|
- UpdateModules = fun(App) ->
|
|
|
- case filelib:is_regular(App) of
|
|
|
- false -> ok;
|
|
|
- true ->
|
|
|
- {ok, [{application, '$(1)', L0}]} = file:consult(App),
|
|
|
- Mods = filelib:fold_files("$(call core_native_path,$(DEPS_DIR)/$1/src)", "\\\\.erl$$", true,
|
|
|
- fun (F, Acc) -> [list_to_atom(filename:rootname(filename:basename(F)))|Acc] end, []),
|
|
|
- L = lists:keystore(modules, 1, L0, {modules, Mods}),
|
|
|
- ok = file:write_file(App, io_lib:format("~p.~n", [{application, '$(1)', L}]))
|
|
|
- end
|
|
|
- end,
|
|
|
- UpdateModules("$(call core_native_path,$(DEPS_DIR)/$1/ebin/$1.app)"),
|
|
|
- halt()
|
|
|
-endef
|
|
|
-
|
|
|
define dep_autopatch_appsrc_script.erl
|
|
|
AppSrc = "$(call core_native_path,$(DEPS_DIR)/$1/src/$1.app.src)",
|
|
|
AppSrcScript = AppSrc ++ ".script",
|
|
@@ -4599,6 +4622,10 @@ define dep_fetch_cp
|
|
|
cp -R $(call dep_repo,$(1)) $(DEPS_DIR)/$(call dep_name,$(1));
|
|
|
endef
|
|
|
|
|
|
+define dep_fetch_ln
|
|
|
+ ln -s $(call dep_repo,$(1)) $(DEPS_DIR)/$(call dep_name,$(1));
|
|
|
+endef
|
|
|
+
|
|
|
# Hex only has a package version. No need to look in the Erlang.mk packages.
|
|
|
define dep_fetch_hex
|
|
|
mkdir -p $(ERLANG_MK_TMP)/hex $(DEPS_DIR)/$1; \
|
|
@@ -4634,7 +4661,7 @@ $(DEPS_DIR)/$(call dep_name,$1):
|
|
|
$(eval DEP_NAME := $(call dep_name,$1))
|
|
|
$(eval DEP_STR := $(if $(filter-out $1,$(DEP_NAME)),$1,"$1 ($(DEP_NAME))"))
|
|
|
$(verbose) if test -d $(APPS_DIR)/$(DEP_NAME); then \
|
|
|
- echo "Error: Dependency" $(DEP_STR) "conflicts with application found in $(APPS_DIR)/$(DEP_NAME)."; \
|
|
|
+ echo "Error: Dependency" $(DEP_STR) "conflicts with application found in $(APPS_DIR)/$(DEP_NAME)." >&2; \
|
|
|
exit 17; \
|
|
|
fi
|
|
|
$(verbose) mkdir -p $(DEPS_DIR)
|
|
@@ -4676,15 +4703,15 @@ ifndef IS_APP
|
|
|
clean:: clean-apps
|
|
|
|
|
|
clean-apps:
|
|
|
- $(verbose) for dep in $(ALL_APPS_DIRS) ; do \
|
|
|
- $(MAKE) -C $$dep clean IS_APP=1 || exit $$?; \
|
|
|
+ $(verbose) set -e; for dep in $(ALL_APPS_DIRS) ; do \
|
|
|
+ $(MAKE) -C $$dep clean IS_APP=1; \
|
|
|
done
|
|
|
|
|
|
distclean:: distclean-apps
|
|
|
|
|
|
distclean-apps:
|
|
|
- $(verbose) for dep in $(ALL_APPS_DIRS) ; do \
|
|
|
- $(MAKE) -C $$dep distclean IS_APP=1 || exit $$?; \
|
|
|
+ $(verbose) set -e; for dep in $(ALL_APPS_DIRS) ; do \
|
|
|
+ $(MAKE) -C $$dep distclean IS_APP=1; \
|
|
|
done
|
|
|
endif
|
|
|
|
|
@@ -4704,84 +4731,6 @@ ERLANG_MK_RECURSIVE_REL_DEPS_LIST = $(ERLANG_MK_TMP)/recursive-rel-deps-list.log
|
|
|
ERLANG_MK_RECURSIVE_TEST_DEPS_LIST = $(ERLANG_MK_TMP)/recursive-test-deps-list.log
|
|
|
ERLANG_MK_RECURSIVE_SHELL_DEPS_LIST = $(ERLANG_MK_TMP)/recursive-shell-deps-list.log
|
|
|
|
|
|
-# External plugins.
|
|
|
-
|
|
|
-DEP_PLUGINS ?=
|
|
|
-
|
|
|
-define core_dep_plugin
|
|
|
--include $(DEPS_DIR)/$(1)
|
|
|
-
|
|
|
-$(DEPS_DIR)/$(1): $(DEPS_DIR)/$(2) ;
|
|
|
-endef
|
|
|
-
|
|
|
-$(foreach p,$(DEP_PLUGINS),\
|
|
|
- $(eval $(if $(findstring /,$p),\
|
|
|
- $(call core_dep_plugin,$p,$(firstword $(subst /, ,$p))),\
|
|
|
- $(call core_dep_plugin,$p/plugins.mk,$p))))
|
|
|
-
|
|
|
-# Copyright (c) 2013-2016, Loïc Hoguin <essen@ninenines.eu>
|
|
|
-# This file is part of erlang.mk and subject to the terms of the ISC License.
|
|
|
-
|
|
|
-# Configuration.
|
|
|
-
|
|
|
-DTL_FULL_PATH ?=
|
|
|
-DTL_PATH ?= templates/
|
|
|
-DTL_SUFFIX ?= _dtl
|
|
|
-DTL_OPTS ?=
|
|
|
-
|
|
|
-# Verbosity.
|
|
|
-
|
|
|
-dtl_verbose_0 = @echo " DTL " $(filter %.dtl,$(?F));
|
|
|
-dtl_verbose = $(dtl_verbose_$(V))
|
|
|
-
|
|
|
-# Core targets.
|
|
|
-
|
|
|
-DTL_PATH := $(abspath $(DTL_PATH))
|
|
|
-DTL_FILES := $(sort $(call core_find,$(DTL_PATH),*.dtl))
|
|
|
-
|
|
|
-ifneq ($(DTL_FILES),)
|
|
|
-
|
|
|
-DTL_NAMES = $(addsuffix $(DTL_SUFFIX),$(DTL_FILES:$(DTL_PATH)/%.dtl=%))
|
|
|
-DTL_MODULES = $(if $(DTL_FULL_PATH),$(subst /,_,$(DTL_NAMES)),$(notdir $(DTL_NAMES)))
|
|
|
-BEAM_FILES += $(addsuffix .beam,$(addprefix ebin/,$(DTL_MODULES)))
|
|
|
-
|
|
|
-ifneq ($(words $(DTL_FILES)),0)
|
|
|
-# Rebuild templates when the Makefile changes.
|
|
|
-$(ERLANG_MK_TMP)/last-makefile-change-erlydtl: $(MAKEFILE_LIST)
|
|
|
- @mkdir -p $(ERLANG_MK_TMP)
|
|
|
- @if test -f $@; then \
|
|
|
- touch $(DTL_FILES); \
|
|
|
- fi
|
|
|
- @touch $@
|
|
|
-
|
|
|
-ebin/$(PROJECT).app:: $(ERLANG_MK_TMP)/last-makefile-change-erlydtl
|
|
|
-endif
|
|
|
-
|
|
|
-define erlydtl_compile.erl
|
|
|
- [begin
|
|
|
- Module0 = case "$(strip $(DTL_FULL_PATH))" of
|
|
|
- "" ->
|
|
|
- filename:basename(F, ".dtl");
|
|
|
- _ ->
|
|
|
- "$(DTL_PATH)/" ++ F2 = filename:rootname(F, ".dtl"),
|
|
|
- re:replace(F2, "/", "_", [{return, list}, global])
|
|
|
- end,
|
|
|
- Module = list_to_atom(string:to_lower(Module0) ++ "$(DTL_SUFFIX)"),
|
|
|
- case erlydtl:compile(F, Module, [$(DTL_OPTS)] ++ [{out_dir, "ebin/"}, return_errors]) of
|
|
|
- ok -> ok;
|
|
|
- {ok, _} -> ok
|
|
|
- end
|
|
|
- end || F <- string:tokens("$(1)", " ")],
|
|
|
- halt().
|
|
|
-endef
|
|
|
-
|
|
|
-ebin/$(PROJECT).app:: $(DTL_FILES) | ebin/
|
|
|
- $(if $(strip $?),\
|
|
|
- $(dtl_verbose) $(call erlang,$(call erlydtl_compile.erl,$(call core_native_path,$?)),\
|
|
|
- -pa ebin/ $(DEPS_DIR)/erlydtl/ebin/))
|
|
|
-
|
|
|
-endif
|
|
|
-
|
|
|
# Copyright (c) 2015-2016, Loïc Hoguin <essen@ninenines.eu>
|
|
|
# This file is part of erlang.mk and subject to the terms of the ISC License.
|
|
|
|
|
@@ -4801,10 +4750,9 @@ endef
|
|
|
|
|
|
define compile_proto.erl
|
|
|
[begin
|
|
|
- Dir = filename:dirname(filename:dirname(F)),
|
|
|
protobuffs_compile:generate_source(F,
|
|
|
- [{output_include_dir, Dir ++ "/include"},
|
|
|
- {output_src_dir, Dir ++ "/ebin"}])
|
|
|
+ [{output_include_dir, "./include"},
|
|
|
+ {output_src_dir, "./ebin"}])
|
|
|
end || F <- string:tokens("$(1)", " ")],
|
|
|
halt().
|
|
|
endef
|
|
@@ -4828,6 +4776,8 @@ COMPILE_FIRST_PATHS = $(addprefix src/,$(addsuffix .erl,$(COMPILE_FIRST)))
|
|
|
ERLC_EXCLUDE ?=
|
|
|
ERLC_EXCLUDE_PATHS = $(addprefix src/,$(addsuffix .erl,$(ERLC_EXCLUDE)))
|
|
|
|
|
|
+ERLC_ASN1_OPTS ?=
|
|
|
+
|
|
|
ERLC_MIB_OPTS ?=
|
|
|
COMPILE_MIB_FIRST ?=
|
|
|
COMPILE_MIB_FIRST_PATHS = $(addprefix mibs/,$(addsuffix .mib,$(COMPILE_MIB_FIRST)))
|
|
@@ -4877,7 +4827,7 @@ endif
|
|
|
|
|
|
ifeq ($(wildcard src/$(PROJECT_MOD).erl),)
|
|
|
define app_file
|
|
|
-{application, $(PROJECT), [
|
|
|
+{application, '$(PROJECT)', [
|
|
|
{description, "$(PROJECT_DESCRIPTION)"},
|
|
|
{vsn, "$(PROJECT_VERSION)"},$(if $(IS_DEP),
|
|
|
{id$(comma)$(space)"$(1)"}$(comma))
|
|
@@ -4889,7 +4839,7 @@ define app_file
|
|
|
endef
|
|
|
else
|
|
|
define app_file
|
|
|
-{application, $(PROJECT), [
|
|
|
+{application, '$(PROJECT)', [
|
|
|
{description, "$(PROJECT_DESCRIPTION)"},
|
|
|
{vsn, "$(PROJECT_VERSION)"},$(if $(IS_DEP),
|
|
|
{id$(comma)$(space)"$(1)"}$(comma))
|
|
@@ -4920,7 +4870,7 @@ ERL_FILES += $(addprefix src/,$(patsubst %.asn1,%.erl,$(notdir $(ASN1_FILES))))
|
|
|
|
|
|
define compile_asn1
|
|
|
$(verbose) mkdir -p include/
|
|
|
- $(asn1_verbose) erlc -v -I include/ -o asn1/ +noobj $(1)
|
|
|
+ $(asn1_verbose) erlc -v -I include/ -o asn1/ +noobj $(ERLC_ASN1_OPTS) $(1)
|
|
|
$(verbose) mv asn1/*.erl src/
|
|
|
$(verbose) mv asn1/*.hrl include/
|
|
|
$(verbose) mv asn1/*.asn1db include/
|
|
@@ -5002,7 +4952,12 @@ define makedep.erl
|
|
|
(F, Mod, include_lib, "$1/include/" ++ Hrl) -> AddHd(F, Mod, "include/" ++ Hrl);
|
|
|
(F, Mod, include_lib, Hrl) -> AddHd(F, Mod, "include/" ++ Hrl);
|
|
|
(F, Mod, import, {Imp, _}) ->
|
|
|
- case filelib:is_file("src/" ++ atom_to_list(Imp) ++ ".erl") of
|
|
|
+ IsFile =
|
|
|
+ case lists:keyfind(Imp, 1, Modules) of
|
|
|
+ false -> false;
|
|
|
+ {_, FilePath} -> filelib:is_file(FilePath)
|
|
|
+ end,
|
|
|
+ case IsFile of
|
|
|
false -> ok;
|
|
|
true -> Add(Mod, Imp)
|
|
|
end;
|
|
@@ -5026,9 +4981,17 @@ define makedep.erl
|
|
|
end || F <- ErlFiles],
|
|
|
Depend = sofs:to_external(sofs:relation_to_family(sofs:relation(ets:tab2list(E)))),
|
|
|
CompileFirst = [X || X <- lists:reverse(digraph_utils:topsort(G)), [] =/= digraph:in_neighbours(G, X)],
|
|
|
+ TargetPath = fun(Target) ->
|
|
|
+ case lists:keyfind(Target, 1, Modules) of
|
|
|
+ false -> "";
|
|
|
+ {_, DepFile} ->
|
|
|
+ DirSubname = tl(string:tokens(filename:dirname(DepFile), "/")),
|
|
|
+ string:join(DirSubname ++ [atom_to_list(Target)], "/")
|
|
|
+ end
|
|
|
+ end,
|
|
|
ok = file:write_file("$(1)", [
|
|
|
[[F, "::", [[" ", D] || D <- Deps], "; @touch \$$@\n"] || {F, Deps} <- Depend],
|
|
|
- "\nCOMPILE_FIRST +=", [[" ", atom_to_list(CF)] || CF <- CompileFirst], "\n"
|
|
|
+ "\nCOMPILE_FIRST +=", [[" ", TargetPath(CF)] || CF <- CompileFirst], "\n"
|
|
|
]),
|
|
|
halt()
|
|
|
endef
|
|
@@ -5052,7 +5015,7 @@ $(ERL_FILES) $(CORE_FILES) $(ASN1_FILES) $(MIB_FILES) $(XRL_FILES) $(YRL_FILES):
|
|
|
ebin/$(PROJECT).app:: $(ERLANG_MK_TMP)/last-makefile-change
|
|
|
endif
|
|
|
|
|
|
--include $(PROJECT).d
|
|
|
+include $(wildcard $(PROJECT).d)
|
|
|
|
|
|
ebin/$(PROJECT).app:: ebin/
|
|
|
|
|
@@ -5113,7 +5076,7 @@ ifneq ($(SKIP_DEPS),)
|
|
|
doc-deps:
|
|
|
else
|
|
|
doc-deps: $(ALL_DOC_DEPS_DIRS)
|
|
|
- $(verbose) for dep in $(ALL_DOC_DEPS_DIRS) ; do $(MAKE) -C $$dep; done
|
|
|
+ $(verbose) set -e; for dep in $(ALL_DOC_DEPS_DIRS) ; do $(MAKE) -C $$dep; done
|
|
|
endif
|
|
|
|
|
|
# Copyright (c) 2015-2016, Loïc Hoguin <essen@ninenines.eu>
|
|
@@ -5133,7 +5096,7 @@ ifneq ($(SKIP_DEPS),)
|
|
|
rel-deps:
|
|
|
else
|
|
|
rel-deps: $(ALL_REL_DEPS_DIRS)
|
|
|
- $(verbose) for dep in $(ALL_REL_DEPS_DIRS) ; do $(MAKE) -C $$dep; done
|
|
|
+ $(verbose) set -e; for dep in $(ALL_REL_DEPS_DIRS) ; do $(MAKE) -C $$dep; done
|
|
|
endif
|
|
|
|
|
|
# Copyright (c) 2015-2016, Loïc Hoguin <essen@ninenines.eu>
|
|
@@ -5158,7 +5121,7 @@ ifneq ($(SKIP_DEPS),)
|
|
|
test-deps:
|
|
|
else
|
|
|
test-deps: $(ALL_TEST_DEPS_DIRS)
|
|
|
- $(verbose) for dep in $(ALL_TEST_DEPS_DIRS) ; do $(MAKE) -C $$dep IS_DEP=1; done
|
|
|
+ $(verbose) set -e; for dep in $(ALL_TEST_DEPS_DIRS) ; do $(MAKE) -C $$dep IS_DEP=1; done
|
|
|
endif
|
|
|
|
|
|
ifneq ($(wildcard $(TEST_DIR)),)
|
|
@@ -5277,6 +5240,7 @@ MAN_VERSION ?= $(PROJECT_VERSION)
|
|
|
define asciidoc2man.erl
|
|
|
try
|
|
|
[begin
|
|
|
+ io:format(" ADOC ~s~n", [F]),
|
|
|
ok = asciideck:to_manpage(asciideck:parse_file(F), #{
|
|
|
compress => gzip,
|
|
|
outdir => filename:dirname(F),
|
|
@@ -5285,7 +5249,8 @@ try
|
|
|
})
|
|
|
end || F <- [$(shell echo $(addprefix $(comma)\",$(addsuffix \",$1)) | sed 's/^.//')]],
|
|
|
halt(0)
|
|
|
-catch _:_ ->
|
|
|
+catch C:E ->
|
|
|
+ io:format("Exception ~p:~p~nStacktrace: ~p~n", [C, E, erlang:get_stacktrace()]),
|
|
|
halt(1)
|
|
|
end.
|
|
|
endef
|
|
@@ -5754,9 +5719,6 @@ endif
|
|
|
ifndef t
|
|
|
$(error Usage: $(MAKE) new t=TEMPLATE n=NAME [in=APP])
|
|
|
endif
|
|
|
-ifndef tpl_$(t)
|
|
|
- $(error Unknown template)
|
|
|
-endif
|
|
|
ifndef n
|
|
|
$(error Usage: $(MAKE) new t=TEMPLATE n=NAME [in=APP])
|
|
|
endif
|
|
@@ -6123,6 +6085,7 @@ CT_SUITES := $(sort $(subst _SUITE.erl,,$(notdir $(call core_find,$(TEST_DIR)/,*
|
|
|
endif
|
|
|
endif
|
|
|
CT_SUITES ?=
|
|
|
+CT_LOGS_DIR ?= $(CURDIR)/logs
|
|
|
|
|
|
# Core targets.
|
|
|
|
|
@@ -6145,15 +6108,18 @@ CT_RUN = ct_run \
|
|
|
-noinput \
|
|
|
-pa $(CURDIR)/ebin $(DEPS_DIR)/*/ebin $(APPS_DIR)/*/ebin $(TEST_DIR) \
|
|
|
-dir $(TEST_DIR) \
|
|
|
- -logdir $(CURDIR)/logs
|
|
|
+ -logdir $(CT_LOGS_DIR)
|
|
|
|
|
|
ifeq ($(CT_SUITES),)
|
|
|
ct: $(if $(IS_APP),,apps-ct)
|
|
|
else
|
|
|
+# We do not run tests if we are in an apps/* with no test directory.
|
|
|
+ifneq ($(IS_APP)$(wildcard $(TEST_DIR)),1)
|
|
|
ct: test-build $(if $(IS_APP),,apps-ct)
|
|
|
- $(verbose) mkdir -p $(CURDIR)/logs/
|
|
|
+ $(verbose) mkdir -p $(CT_LOGS_DIR)
|
|
|
$(gen_verbose) $(CT_RUN) -sname ct_$(PROJECT) -suite $(addsuffix _SUITE,$(CT_SUITES)) $(CT_OPTS)
|
|
|
endif
|
|
|
+endif
|
|
|
|
|
|
ifneq ($(ALL_APPS_DIRS),)
|
|
|
define ct_app_target
|
|
@@ -6179,14 +6145,14 @@ endif
|
|
|
|
|
|
define ct_suite_target
|
|
|
ct-$(1): test-build
|
|
|
- $(verbose) mkdir -p $(CURDIR)/logs/
|
|
|
+ $(verbose) mkdir -p $(CT_LOGS_DIR)
|
|
|
$(gen_verbose) $(CT_RUN) -sname ct_$(PROJECT) -suite $(addsuffix _SUITE,$(1)) $(CT_EXTRA) $(CT_OPTS)
|
|
|
endef
|
|
|
|
|
|
$(foreach test,$(CT_SUITES),$(eval $(call ct_suite_target,$(test))))
|
|
|
|
|
|
distclean-ct:
|
|
|
- $(gen_verbose) rm -rf $(CURDIR)/logs/
|
|
|
+ $(gen_verbose) rm -rf $(CT_LOGS_DIR)
|
|
|
|
|
|
# Copyright (c) 2013-2016, Loïc Hoguin <essen@ninenines.eu>
|
|
|
# This file is part of erlang.mk and subject to the terms of the ISC License.
|
|
@@ -6232,8 +6198,10 @@ define filter_opts.erl
|
|
|
endef
|
|
|
|
|
|
$(DIALYZER_PLT): deps app
|
|
|
- $(verbose) dialyzer --build_plt --apps erts kernel stdlib $(PLT_APPS) $(OTP_DEPS) $(LOCAL_DEPS) \
|
|
|
- `test -f $(ERLANG_MK_TMP)/deps.log && cat $(ERLANG_MK_TMP)/deps.log`
|
|
|
+ $(eval DEPS_LOG := $(shell test -f $(ERLANG_MK_TMP)/deps.log && \
|
|
|
+ while read p; do test -d $$p/ebin && echo $$p/ebin; done <$(ERLANG_MK_TMP)/deps.log))
|
|
|
+ $(verbose) dialyzer --build_plt --apps erts kernel stdlib \
|
|
|
+ $(PLT_APPS) $(OTP_DEPS) $(LOCAL_DEPS) $(DEPS_LOG)
|
|
|
|
|
|
plt: $(DIALYZER_PLT)
|
|
|
|
|
@@ -6255,10 +6223,20 @@ endif
|
|
|
# Configuration.
|
|
|
|
|
|
EDOC_OPTS ?=
|
|
|
+EDOC_SRC_DIRS ?=
|
|
|
+
|
|
|
+define edoc.erl
|
|
|
+ SrcPaths = lists:foldl(fun(P, Acc) ->
|
|
|
+ filelib:wildcard(atom_to_list(P) ++ "/{src,c_src}") ++ Acc
|
|
|
+ end, [], [$(call comma_list,$(patsubst %,'%',$(EDOC_SRC_DIRS)))]),
|
|
|
+ DefaultOpts = [{source_path, SrcPaths}, {subpackages, false}],
|
|
|
+ edoc:application($(1), ".", [$(2)] ++ DefaultOpts),
|
|
|
+ halt(0).
|
|
|
+endef
|
|
|
|
|
|
# Core targets.
|
|
|
|
|
|
-ifneq ($(wildcard doc/overview.edoc),)
|
|
|
+ifneq ($(strip $(EDOC_SRC_DIRS)$(wildcard doc/overview.edoc)),)
|
|
|
docs:: edoc
|
|
|
endif
|
|
|
|
|
@@ -6267,11 +6245,74 @@ distclean:: distclean-edoc
|
|
|
# Plugin-specific targets.
|
|
|
|
|
|
edoc: distclean-edoc doc-deps
|
|
|
- $(gen_verbose) $(ERL) -eval 'edoc:application($(PROJECT), ".", [$(EDOC_OPTS)]), halt().'
|
|
|
+ $(gen_verbose) $(call erlang,$(call edoc.erl,$(PROJECT),$(EDOC_OPTS)))
|
|
|
|
|
|
distclean-edoc:
|
|
|
$(gen_verbose) rm -f doc/*.css doc/*.html doc/*.png doc/edoc-info
|
|
|
|
|
|
+# Copyright (c) 2013-2016, Loïc Hoguin <essen@ninenines.eu>
|
|
|
+# This file is part of erlang.mk and subject to the terms of the ISC License.
|
|
|
+
|
|
|
+# Configuration.
|
|
|
+
|
|
|
+DTL_FULL_PATH ?=
|
|
|
+DTL_PATH ?= templates/
|
|
|
+DTL_SUFFIX ?= _dtl
|
|
|
+DTL_OPTS ?=
|
|
|
+
|
|
|
+# Verbosity.
|
|
|
+
|
|
|
+dtl_verbose_0 = @echo " DTL " $(filter %.dtl,$(?F));
|
|
|
+dtl_verbose = $(dtl_verbose_$(V))
|
|
|
+
|
|
|
+# Core targets.
|
|
|
+
|
|
|
+DTL_PATH := $(abspath $(DTL_PATH))
|
|
|
+DTL_FILES := $(sort $(call core_find,$(DTL_PATH),*.dtl))
|
|
|
+
|
|
|
+ifneq ($(DTL_FILES),)
|
|
|
+
|
|
|
+DTL_NAMES = $(addsuffix $(DTL_SUFFIX),$(DTL_FILES:$(DTL_PATH)/%.dtl=%))
|
|
|
+DTL_MODULES = $(if $(DTL_FULL_PATH),$(subst /,_,$(DTL_NAMES)),$(notdir $(DTL_NAMES)))
|
|
|
+BEAM_FILES += $(addsuffix .beam,$(addprefix ebin/,$(DTL_MODULES)))
|
|
|
+
|
|
|
+ifneq ($(words $(DTL_FILES)),0)
|
|
|
+# Rebuild templates when the Makefile changes.
|
|
|
+$(ERLANG_MK_TMP)/last-makefile-change-erlydtl: $(MAKEFILE_LIST)
|
|
|
+ @mkdir -p $(ERLANG_MK_TMP)
|
|
|
+ @if test -f $@; then \
|
|
|
+ touch $(DTL_FILES); \
|
|
|
+ fi
|
|
|
+ @touch $@
|
|
|
+
|
|
|
+ebin/$(PROJECT).app:: $(ERLANG_MK_TMP)/last-makefile-change-erlydtl
|
|
|
+endif
|
|
|
+
|
|
|
+define erlydtl_compile.erl
|
|
|
+ [begin
|
|
|
+ Module0 = case "$(strip $(DTL_FULL_PATH))" of
|
|
|
+ "" ->
|
|
|
+ filename:basename(F, ".dtl");
|
|
|
+ _ ->
|
|
|
+ "$(DTL_PATH)/" ++ F2 = filename:rootname(F, ".dtl"),
|
|
|
+ re:replace(F2, "/", "_", [{return, list}, global])
|
|
|
+ end,
|
|
|
+ Module = list_to_atom(string:to_lower(Module0) ++ "$(DTL_SUFFIX)"),
|
|
|
+ case erlydtl:compile(F, Module, [$(DTL_OPTS)] ++ [{out_dir, "ebin/"}, return_errors]) of
|
|
|
+ ok -> ok;
|
|
|
+ {ok, _} -> ok
|
|
|
+ end
|
|
|
+ end || F <- string:tokens("$(1)", " ")],
|
|
|
+ halt().
|
|
|
+endef
|
|
|
+
|
|
|
+ebin/$(PROJECT).app:: $(DTL_FILES) | ebin/
|
|
|
+ $(if $(strip $?),\
|
|
|
+ $(dtl_verbose) $(call erlang,$(call erlydtl_compile.erl,$(call core_native_path,$?)),\
|
|
|
+ -pa ebin/ $(DEPS_DIR)/erlydtl/ebin/))
|
|
|
+
|
|
|
+endif
|
|
|
+
|
|
|
# Copyright (c) 2016, Loïc Hoguin <essen@ninenines.eu>
|
|
|
# Copyright (c) 2014, Dave Cottlehuber <dch@skunkwerks.at>
|
|
|
# This file is part of erlang.mk and subject to the terms of the ISC License.
|
|
@@ -6319,7 +6360,7 @@ escript:: escript-zip
|
|
|
$(verbose) chmod +x $(ESCRIPT_FILE)
|
|
|
|
|
|
distclean-escript:
|
|
|
- $(gen_verbose) rm -f $(ESCRIPT_NAME)
|
|
|
+ $(gen_verbose) rm -f $(ESCRIPT_FILE)
|
|
|
|
|
|
# Copyright (c) 2015-2016, Loïc Hoguin <essen@ninenines.eu>
|
|
|
# Copyright (c) 2014, Enrique Fernandez <enrique.fernandez@erlang-solutions.com>
|
|
@@ -6386,7 +6427,9 @@ eunit: test-build $(if $(IS_APP),,apps-eunit)
|
|
|
|
|
|
ifneq ($(ALL_APPS_DIRS),)
|
|
|
apps-eunit:
|
|
|
- $(verbose) for app in $(ALL_APPS_DIRS); do $(MAKE) -C $$app eunit IS_APP=1; done
|
|
|
+ $(verbose) eunit_retcode=0 ; for app in $(ALL_APPS_DIRS); do $(MAKE) -C $$app eunit IS_APP=1; \
|
|
|
+ [ $$? -ne 0 ] && eunit_retcode=1 ; done ; \
|
|
|
+ exit $$eunit_retcode
|
|
|
endif
|
|
|
endif
|
|
|
|
|
@@ -6403,6 +6446,12 @@ RELX_CONFIG ?= $(CURDIR)/relx.config
|
|
|
RELX_URL ?= https://github.com/erlware/relx/releases/download/v3.19.0/relx
|
|
|
RELX_OPTS ?=
|
|
|
RELX_OUTPUT_DIR ?= _rel
|
|
|
+RELX_REL_EXT ?=
|
|
|
+RELX_TAR ?= 1
|
|
|
+
|
|
|
+ifdef SFX
|
|
|
+ RELX_TAR = 1
|
|
|
+endif
|
|
|
|
|
|
ifeq ($(firstword $(RELX_OPTS)),-o)
|
|
|
RELX_OUTPUT_DIR = $(word 2,$(RELX_OPTS))
|
|
@@ -6429,10 +6478,10 @@ $(RELX):
|
|
|
$(verbose) chmod +x $(RELX)
|
|
|
|
|
|
relx-rel: $(RELX) rel-deps app
|
|
|
- $(verbose) $(RELX) -c $(RELX_CONFIG) $(RELX_OPTS) release tar
|
|
|
+ $(verbose) $(RELX) -c $(RELX_CONFIG) $(RELX_OPTS) release $(if $(filter 1,$(RELX_TAR)),tar)
|
|
|
|
|
|
relx-relup: $(RELX) rel-deps app
|
|
|
- $(verbose) $(RELX) -c $(RELX_CONFIG) $(RELX_OPTS) release relup tar
|
|
|
+ $(verbose) $(RELX) -c $(RELX_CONFIG) $(RELX_OPTS) release relup $(if $(filter 1,$(RELX_TAR)),tar)
|
|
|
|
|
|
distclean-relx-rel:
|
|
|
$(gen_verbose) rm -rf $(RELX_OUTPUT_DIR)
|
|
@@ -6444,8 +6493,14 @@ run:
|
|
|
else
|
|
|
|
|
|
define get_relx_release.erl
|
|
|
- {ok, Config} = file:consult("$(RELX_CONFIG)"),
|
|
|
- {release, {Name, Vsn}, _} = lists:keyfind(release, 1, Config),
|
|
|
+ {ok, Config} = file:consult("$(call core_native_path,$(RELX_CONFIG))"),
|
|
|
+ {release, {Name, Vsn0}, _} = lists:keyfind(release, 1, Config),
|
|
|
+ Vsn = case Vsn0 of
|
|
|
+ {cmd, Cmd} -> os:cmd(Cmd);
|
|
|
+ semver -> "";
|
|
|
+ {semver, _} -> "";
|
|
|
+ VsnStr -> Vsn0
|
|
|
+ end,
|
|
|
io:format("~s ~s", [Name, Vsn]),
|
|
|
halt(0).
|
|
|
endef
|
|
@@ -6454,8 +6509,12 @@ RELX_REL := $(shell $(call erlang,$(get_relx_release.erl)))
|
|
|
RELX_REL_NAME := $(word 1,$(RELX_REL))
|
|
|
RELX_REL_VSN := $(word 2,$(RELX_REL))
|
|
|
|
|
|
+ifeq ($(PLATFORM),msys2)
|
|
|
+RELX_REL_EXT := .cmd
|
|
|
+endif
|
|
|
+
|
|
|
run: all
|
|
|
- $(verbose) $(RELX_OUTPUT_DIR)/$(RELX_REL_NAME)/bin/$(RELX_REL_NAME) console
|
|
|
+ $(verbose) $(RELX_OUTPUT_DIR)/$(RELX_REL_NAME)/bin/$(RELX_REL_NAME)$(RELX_REL_EXT) console
|
|
|
|
|
|
help::
|
|
|
$(verbose) printf "%s\n" "" \
|
|
@@ -6490,11 +6549,25 @@ help::
|
|
|
$(foreach dep,$(SHELL_DEPS),$(eval $(call dep_target,$(dep))))
|
|
|
|
|
|
build-shell-deps: $(ALL_SHELL_DEPS_DIRS)
|
|
|
- $(verbose) for dep in $(ALL_SHELL_DEPS_DIRS) ; do $(MAKE) -C $$dep ; done
|
|
|
+ $(verbose) set -e; for dep in $(ALL_SHELL_DEPS_DIRS) ; do $(MAKE) -C $$dep ; done
|
|
|
|
|
|
shell: build-shell-deps
|
|
|
$(gen_verbose) $(SHELL_ERL) -pa $(SHELL_PATHS) $(SHELL_OPTS)
|
|
|
|
|
|
+# Copyright (c) 2017, Jean-Sébastien Pédron <jean-sebastien@rabbitmq.com>
|
|
|
+# This file is contributed to erlang.mk and subject to the terms of the ISC License.
|
|
|
+
|
|
|
+.PHONY: show-ERL_LIBS show-ERLC_OPTS show-TEST_ERLC_OPTS
|
|
|
+
|
|
|
+show-ERL_LIBS:
|
|
|
+ @echo $(ERL_LIBS)
|
|
|
+
|
|
|
+show-ERLC_OPTS:
|
|
|
+ @$(foreach opt,$(ERLC_OPTS) -pa ebin -I include,echo "$(opt)";)
|
|
|
+
|
|
|
+show-TEST_ERLC_OPTS:
|
|
|
+ @$(foreach opt,$(TEST_ERLC_OPTS) -pa ebin -I include,echo "$(opt)";)
|
|
|
+
|
|
|
# Copyright (c) 2015-2016, Loïc Hoguin <essen@ninenines.eu>
|
|
|
# This file is part of erlang.mk and subject to the terms of the ISC License.
|
|
|
|
|
@@ -6555,14 +6628,14 @@ endif
|
|
|
XREFR ?= $(CURDIR)/xrefr
|
|
|
export XREFR
|
|
|
|
|
|
-XREFR_URL ?= https://github.com/inaka/xref_runner/releases/download/0.2.2/xrefr
|
|
|
+XREFR_URL ?= https://github.com/inaka/xref_runner/releases/download/1.1.0/xrefr
|
|
|
|
|
|
# Core targets.
|
|
|
|
|
|
help::
|
|
|
- $(verbose) printf "%s\n" "" \
|
|
|
- "Xref targets:" \
|
|
|
- " xref Run Xrefr using $XREF_CONFIG as config file if defined"
|
|
|
+ $(verbose) printf '%s\n' '' \
|
|
|
+ 'Xref targets:' \
|
|
|
+ ' xref Run Xrefr using $$XREF_CONFIG as config file if defined'
|
|
|
|
|
|
distclean:: distclean-xref
|
|
|
|
|
@@ -6588,6 +6661,7 @@ COVER_REPORT_DIR = cover
|
|
|
|
|
|
ifdef COVER
|
|
|
ifdef CT_RUN
|
|
|
+ifneq ($(wildcard $(TEST_DIR)),)
|
|
|
# All modules in 'ebin'
|
|
|
COVER_MODS = $(notdir $(basename $(call core_ls,ebin/*.beam)))
|
|
|
|
|
@@ -6602,6 +6676,7 @@ $(TEST_DIR)/ct.cover.spec:
|
|
|
CT_RUN += -cover $(TEST_DIR)/ct.cover.spec
|
|
|
endif
|
|
|
endif
|
|
|
+endif
|
|
|
|
|
|
# Core targets
|
|
|
|
|
@@ -6623,7 +6698,7 @@ help::
|
|
|
"Cover targets:" \
|
|
|
" cover-report Generate a HTML coverage report from previously collected" \
|
|
|
" cover data." \
|
|
|
- " all.coverdata Merge {eunit,ct}.coverdata into one coverdata file." \
|
|
|
+ " all.coverdata Merge all coverdata files into all.coverdata." \
|
|
|
"" \
|
|
|
"If COVER=1 is set, coverage data is generated by the targets eunit and ct. The" \
|
|
|
"target tests additionally generates a HTML coverage report from the combined" \
|
|
@@ -6636,13 +6711,16 @@ COVERDATA = $(filter-out all.coverdata,$(wildcard *.coverdata))
|
|
|
|
|
|
.PHONY: coverdata-clean
|
|
|
coverdata-clean:
|
|
|
- $(gen_verbose) rm -f *.coverdata ct.cover.spec
|
|
|
+ $(gen_verbose) rm -f *.coverdata $(TEST_DIR)/ct.cover.spec
|
|
|
|
|
|
# Merge all coverdata files into one.
|
|
|
+define cover_export.erl
|
|
|
+ $(foreach f,$(COVERDATA),cover:import("$(f)") == ok orelse halt(1),)
|
|
|
+ cover:export("$@"), halt(0).
|
|
|
+endef
|
|
|
+
|
|
|
all.coverdata: $(COVERDATA)
|
|
|
- $(gen_verbose) $(ERL) -eval ' \
|
|
|
- $(foreach f,$(COVERDATA),cover:import("$(f)") == ok orelse halt(1),) \
|
|
|
- cover:export("$@"), halt(0).'
|
|
|
+ $(gen_verbose) $(call erlang,$(cover_export.erl))
|
|
|
|
|
|
# These are only defined if COVER_REPORT_DIR is non-empty. Set COVER_REPORT_DIR to
|
|
|
# empty if you want the coverdata files but not the HTML report.
|
|
@@ -6660,7 +6738,7 @@ else
|
|
|
# Modules which include eunit.hrl always contain one line without coverage
|
|
|
# because eunit defines test/0 which is never called. We compensate for this.
|
|
|
EUNIT_HRL_MODS = $(subst $(space),$(comma),$(shell \
|
|
|
- grep -e '^\s*-include.*include/eunit\.hrl"' src/*.erl \
|
|
|
+ grep -H -e '^\s*-include.*include/eunit\.hrl"' src/*.erl \
|
|
|
| sed "s/^src\/\(.*\)\.erl:.*/'\1'/" | uniq))
|
|
|
|
|
|
define cover_report.erl
|
|
@@ -6695,7 +6773,7 @@ define cover_report.erl
|
|
|
endef
|
|
|
|
|
|
cover-report:
|
|
|
- $(gen_verbose) mkdir -p $(COVER_REPORT_DIR)
|
|
|
+ $(verbose) mkdir -p $(COVER_REPORT_DIR)
|
|
|
$(gen_verbose) $(call erlang,$(cover_report.erl))
|
|
|
|
|
|
endif
|
|
@@ -6748,6 +6826,18 @@ sfx:
|
|
|
endif
|
|
|
endif
|
|
|
|
|
|
+# Copyright (c) 2013-2017, Loïc Hoguin <essen@ninenines.eu>
|
|
|
+# This file is part of erlang.mk and subject to the terms of the ISC License.
|
|
|
+
|
|
|
+# External plugins.
|
|
|
+
|
|
|
+DEP_PLUGINS ?=
|
|
|
+
|
|
|
+$(foreach p,$(DEP_PLUGINS),\
|
|
|
+ $(eval $(if $(findstring /,$p),\
|
|
|
+ $(call core_dep_plugin,$p,$(firstword $(subst /, ,$p))),\
|
|
|
+ $(call core_dep_plugin,$p/plugins.mk,$p))))
|
|
|
+
|
|
|
# Copyright (c) 2013-2015, Loïc Hoguin <essen@ninenines.eu>
|
|
|
# Copyright (c) 2015-2016, Jean-Sébastien Pédron <jean-sebastien@rabbitmq.com>
|
|
|
# This file is part of erlang.mk and subject to the terms of the ISC License.
|
|
@@ -6815,22 +6905,20 @@ ifeq ($(IS_APP)$(IS_DEP),)
|
|
|
$(verbose) rm -f $(ERLANG_MK_RECURSIVE_TMP_LIST)
|
|
|
endif
|
|
|
ifndef IS_APP
|
|
|
- $(verbose) for dep in $(ALL_APPS_DIRS) ; do \
|
|
|
+ $(verbose) set -e; for dep in $(ALL_APPS_DIRS) ; do \
|
|
|
$(MAKE) -C $$dep $@ \
|
|
|
IS_APP=1 \
|
|
|
- ERLANG_MK_RECURSIVE_TMP_LIST=$(ERLANG_MK_RECURSIVE_TMP_LIST) \
|
|
|
- || exit $$?; \
|
|
|
+ ERLANG_MK_RECURSIVE_TMP_LIST=$(ERLANG_MK_RECURSIVE_TMP_LIST); \
|
|
|
done
|
|
|
endif
|
|
|
- $(verbose) for dep in $^ ; do \
|
|
|
+ $(verbose) set -e; for dep in $^ ; do \
|
|
|
if ! grep -qs ^$$dep$$ $(ERLANG_MK_RECURSIVE_TMP_LIST); then \
|
|
|
echo $$dep >> $(ERLANG_MK_RECURSIVE_TMP_LIST); \
|
|
|
- if grep -qs -E "^[[:blank:]]*include[[:blank:]]+(erlang\.mk|.*/erlang\.mk)$$" \
|
|
|
+ if grep -qs -E "^[[:blank:]]*include[[:blank:]]+(erlang\.mk|.*/erlang\.mk|.*ERLANG_MK_FILENAME.*)$$" \
|
|
|
$$dep/GNUmakefile $$dep/makefile $$dep/Makefile; then \
|
|
|
$(MAKE) -C $$dep fetch-deps \
|
|
|
IS_DEP=1 \
|
|
|
- ERLANG_MK_RECURSIVE_TMP_LIST=$(ERLANG_MK_RECURSIVE_TMP_LIST) \
|
|
|
- || exit $$?; \
|
|
|
+ ERLANG_MK_RECURSIVE_TMP_LIST=$(ERLANG_MK_RECURSIVE_TMP_LIST); \
|
|
|
fi \
|
|
|
fi \
|
|
|
done
|