mirror of
https://github.com/ninenines/cowboy.git
synced 2025-07-14 12:20:24 +00:00
Add AUTO_CI_WINDOWS variable
This commit is contained in:
parent
185d928e1a
commit
344cec95b4
2 changed files with 164 additions and 86 deletions
1
Makefile
1
Makefile
|
@ -32,6 +32,7 @@ DEP_EARLY_PLUGINS = ci.erlang.mk
|
||||||
AUTO_CI_OTP ?= OTP-19+
|
AUTO_CI_OTP ?= OTP-19+
|
||||||
AUTO_CI_HIPE ?= OTP-LATEST
|
AUTO_CI_HIPE ?= OTP-LATEST
|
||||||
# AUTO_CI_ERLLVM ?= OTP-LATEST
|
# AUTO_CI_ERLLVM ?= OTP-LATEST
|
||||||
|
AUTO_CI_WINDOWS ?= OTP-19+
|
||||||
|
|
||||||
# Standard targets.
|
# Standard targets.
|
||||||
|
|
||||||
|
|
249
erlang.mk
vendored
249
erlang.mk
vendored
|
@ -17,7 +17,7 @@
|
||||||
ERLANG_MK_FILENAME := $(realpath $(lastword $(MAKEFILE_LIST)))
|
ERLANG_MK_FILENAME := $(realpath $(lastword $(MAKEFILE_LIST)))
|
||||||
export ERLANG_MK_FILENAME
|
export ERLANG_MK_FILENAME
|
||||||
|
|
||||||
ERLANG_MK_VERSION = 2017.07.06-1-gff27159
|
ERLANG_MK_VERSION = 2017.08.28-19-g8e3d863
|
||||||
ERLANG_MK_WITHOUT =
|
ERLANG_MK_WITHOUT =
|
||||||
|
|
||||||
# Make 3.81 and 3.82 are deprecated.
|
# Make 3.81 and 3.82 are deprecated.
|
||||||
|
@ -199,6 +199,87 @@ endif
|
||||||
# The erlang.mk package index is bundled in the default erlang.mk build.
|
# The erlang.mk package index is bundled in the default erlang.mk build.
|
||||||
# Search for the string "copyright" to skip to the rest of the code.
|
# Search for the string "copyright" to skip to the rest of the code.
|
||||||
|
|
||||||
|
# Copyright (c) 2015-2017, Loïc Hoguin <essen@ninenines.eu>
|
||||||
|
# This file is part of erlang.mk and subject to the terms of the ISC License.
|
||||||
|
|
||||||
|
.PHONY: distclean-kerl
|
||||||
|
|
||||||
|
KERL_INSTALL_DIR ?= $(HOME)/erlang
|
||||||
|
|
||||||
|
ifeq ($(strip $(KERL)),)
|
||||||
|
KERL := $(ERLANG_MK_TMP)/kerl/kerl
|
||||||
|
endif
|
||||||
|
|
||||||
|
export KERL
|
||||||
|
|
||||||
|
KERL_GIT ?= https://github.com/kerl/kerl
|
||||||
|
KERL_COMMIT ?= master
|
||||||
|
|
||||||
|
KERL_MAKEFLAGS ?=
|
||||||
|
|
||||||
|
OTP_GIT ?= https://github.com/erlang/otp
|
||||||
|
|
||||||
|
define kerl_otp_target
|
||||||
|
ifeq ($(wildcard $(KERL_INSTALL_DIR)/$(1)),)
|
||||||
|
$(KERL_INSTALL_DIR)/$(1): $(KERL)
|
||||||
|
MAKEFLAGS="$(KERL_MAKEFLAGS)" $(KERL) build git $(OTP_GIT) $(1) $(1)
|
||||||
|
$(KERL) install $(1) $(KERL_INSTALL_DIR)/$(1)
|
||||||
|
endif
|
||||||
|
endef
|
||||||
|
|
||||||
|
define kerl_hipe_target
|
||||||
|
ifeq ($(wildcard $(KERL_INSTALL_DIR)/$1-native),)
|
||||||
|
$(KERL_INSTALL_DIR)/$1-native: $(KERL)
|
||||||
|
KERL_CONFIGURE_OPTIONS=--enable-native-libs \
|
||||||
|
MAKEFLAGS="$(KERL_MAKEFLAGS)" $(KERL) build git $(OTP_GIT) $1 $1-native
|
||||||
|
$(KERL) install $1-native $(KERL_INSTALL_DIR)/$1-native
|
||||||
|
endif
|
||||||
|
endef
|
||||||
|
|
||||||
|
$(KERL):
|
||||||
|
$(verbose) mkdir -p $(ERLANG_MK_TMP)
|
||||||
|
$(gen_verbose) git clone --depth 1 $(KERL_GIT) $(ERLANG_MK_TMP)/kerl
|
||||||
|
$(verbose) cd $(ERLANG_MK_TMP)/kerl && git checkout $(KERL_COMMIT)
|
||||||
|
$(verbose) chmod +x $(KERL)
|
||||||
|
|
||||||
|
distclean:: distclean-kerl
|
||||||
|
|
||||||
|
distclean-kerl:
|
||||||
|
$(gen_verbose) rm -rf $(KERL)
|
||||||
|
|
||||||
|
# Allow users to select which version of Erlang/OTP to use for a project.
|
||||||
|
|
||||||
|
ERLANG_OTP ?=
|
||||||
|
ERLANG_HIPE ?=
|
||||||
|
|
||||||
|
# Use kerl to enforce a specific Erlang/OTP version for a project.
|
||||||
|
ifneq ($(strip $(ERLANG_OTP)),)
|
||||||
|
export PATH := $(KERL_INSTALL_DIR)/$(ERLANG_OTP)/bin:$(PATH)
|
||||||
|
SHELL := env PATH=$(PATH) $(SHELL)
|
||||||
|
$(eval $(call kerl_otp_target,$(ERLANG_OTP)))
|
||||||
|
|
||||||
|
# Build Erlang/OTP only if it doesn't already exist.
|
||||||
|
ifeq ($(wildcard $(KERL_INSTALL_DIR)/$(ERLANG_OTP))$(BUILD_ERLANG_OTP),)
|
||||||
|
$(info Building Erlang/OTP $(ERLANG_OTP)... Please wait...)
|
||||||
|
$(shell $(MAKE) $(KERL_INSTALL_DIR)/$(ERLANG_OTP) ERLANG_OTP=$(ERLANG_OTP) BUILD_ERLANG_OTP=1 >&2)
|
||||||
|
endif
|
||||||
|
|
||||||
|
else
|
||||||
|
# Same for a HiPE enabled VM.
|
||||||
|
ifneq ($(strip $(ERLANG_HIPE)),)
|
||||||
|
export PATH := $(KERL_INSTALL_DIR)/$(ERLANG_HIPE)-native/bin:$(PATH)
|
||||||
|
SHELL := env PATH=$(PATH) $(SHELL)
|
||||||
|
$(eval $(call kerl_hipe_target,$(ERLANG_HIPE)))
|
||||||
|
|
||||||
|
# Build Erlang/OTP only if it doesn't already exist.
|
||||||
|
ifeq ($(wildcard $(KERL_INSTALL_DIR)/$(ERLANG_HIPE))$(BUILD_ERLANG_OTP),)
|
||||||
|
$(info Building HiPE-enabled Erlang/OTP $(ERLANG_OTP)... Please wait...)
|
||||||
|
$(shell $(MAKE) $(KERL_INSTALL_DIR)/$(ERLANG_HIPE) ERLANG_HIPE=$(ERLANG_HIPE) BUILD_ERLANG_OTP=1 >&2)
|
||||||
|
endif
|
||||||
|
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
PACKAGES += aberth
|
PACKAGES += aberth
|
||||||
pkg_aberth_name = aberth
|
pkg_aberth_name = aberth
|
||||||
pkg_aberth_description = Generic BERT-RPC server in Erlang
|
pkg_aberth_description = Generic BERT-RPC server in Erlang
|
||||||
|
@ -1519,6 +1600,14 @@ pkg_erwa_fetch = git
|
||||||
pkg_erwa_repo = https://github.com/bwegh/erwa
|
pkg_erwa_repo = https://github.com/bwegh/erwa
|
||||||
pkg_erwa_commit = master
|
pkg_erwa_commit = master
|
||||||
|
|
||||||
|
PACKAGES += escalus
|
||||||
|
pkg_escalus_name = escalus
|
||||||
|
pkg_escalus_description = An XMPP client library in Erlang for conveniently testing XMPP servers
|
||||||
|
pkg_escalus_homepage = https://github.com/esl/escalus
|
||||||
|
pkg_escalus_fetch = git
|
||||||
|
pkg_escalus_repo = https://github.com/esl/escalus
|
||||||
|
pkg_escalus_commit = master
|
||||||
|
|
||||||
PACKAGES += espec
|
PACKAGES += espec
|
||||||
pkg_espec_name = espec
|
pkg_espec_name = espec
|
||||||
pkg_espec_description = ESpec: Behaviour driven development framework for Erlang
|
pkg_espec_description = ESpec: Behaviour driven development framework for Erlang
|
||||||
|
@ -3615,6 +3704,14 @@ pkg_stripe_fetch = git
|
||||||
pkg_stripe_repo = https://github.com/mattsta/stripe-erlang
|
pkg_stripe_repo = https://github.com/mattsta/stripe-erlang
|
||||||
pkg_stripe_commit = v1
|
pkg_stripe_commit = v1
|
||||||
|
|
||||||
|
PACKAGES += subproc
|
||||||
|
pkg_subproc_name = subproc
|
||||||
|
pkg_subproc_description = unix subprocess manager with {active,once|false} modes
|
||||||
|
pkg_subproc_homepage = http://dozzie.jarowit.net/trac/wiki/subproc
|
||||||
|
pkg_subproc_fetch = git
|
||||||
|
pkg_subproc_repo = https://github.com/dozzie/subproc
|
||||||
|
pkg_subproc_commit = v0.1.0
|
||||||
|
|
||||||
PACKAGES += supervisor3
|
PACKAGES += supervisor3
|
||||||
pkg_supervisor3_name = supervisor3
|
pkg_supervisor3_name = supervisor3
|
||||||
pkg_supervisor3_description = OTP supervisor with additional strategies
|
pkg_supervisor3_description = OTP supervisor with additional strategies
|
||||||
|
@ -3794,9 +3891,9 @@ pkg_trie_commit = master
|
||||||
PACKAGES += triq
|
PACKAGES += triq
|
||||||
pkg_triq_name = triq
|
pkg_triq_name = triq
|
||||||
pkg_triq_description = Trifork QuickCheck
|
pkg_triq_description = Trifork QuickCheck
|
||||||
pkg_triq_homepage = https://github.com/krestenkrab/triq
|
pkg_triq_homepage = https://github.com/triqng/triq
|
||||||
pkg_triq_fetch = git
|
pkg_triq_fetch = git
|
||||||
pkg_triq_repo = https://github.com/krestenkrab/triq
|
pkg_triq_repo = https://github.com/triqng/triq.git
|
||||||
pkg_triq_commit = master
|
pkg_triq_commit = master
|
||||||
|
|
||||||
PACKAGES += tunctl
|
PACKAGES += tunctl
|
||||||
|
@ -4288,7 +4385,7 @@ endef
|
||||||
# if given. Do it for all 3 possible Makefile file names.
|
# if given. Do it for all 3 possible Makefile file names.
|
||||||
ifeq ($(NO_AUTOPATCH_ERLANG_MK),)
|
ifeq ($(NO_AUTOPATCH_ERLANG_MK),)
|
||||||
define dep_autopatch_erlang_mk
|
define dep_autopatch_erlang_mk
|
||||||
$t for f in Makefile makefile GNUmakefile; do \
|
for f in Makefile makefile GNUmakefile; do \
|
||||||
if [ -f $(DEPS_DIR)/$1/$$f ]; then \
|
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; \
|
sed -i.bak s/'include *erlang.mk'/'include $$(if $$(ERLANG_MK_FILENAME),$$(ERLANG_MK_FILENAME),erlang.mk)'/ $(DEPS_DIR)/$1/$$f; \
|
||||||
fi \
|
fi \
|
||||||
|
@ -4357,6 +4454,10 @@ define dep_autopatch_rebar.erl
|
||||||
Write("C_SRC_TYPE = rebar\n"),
|
Write("C_SRC_TYPE = rebar\n"),
|
||||||
Write("DRV_CFLAGS = -fPIC\nexport DRV_CFLAGS\n"),
|
Write("DRV_CFLAGS = -fPIC\nexport DRV_CFLAGS\n"),
|
||||||
Write(["ERLANG_ARCH = ", rebar_utils:wordsize(), "\nexport ERLANG_ARCH\n"]),
|
Write(["ERLANG_ARCH = ", rebar_utils:wordsize(), "\nexport ERLANG_ARCH\n"]),
|
||||||
|
ToList = fun
|
||||||
|
(V) when is_atom(V) -> atom_to_list(V);
|
||||||
|
(V) when is_list(V) -> "'\\"" ++ V ++ "\\"'"
|
||||||
|
end,
|
||||||
fun() ->
|
fun() ->
|
||||||
Write("ERLC_OPTS = +debug_info\nexport ERLC_OPTS\n"),
|
Write("ERLC_OPTS = +debug_info\nexport ERLC_OPTS\n"),
|
||||||
case lists:keyfind(erl_opts, 1, Conf) of
|
case lists:keyfind(erl_opts, 1, Conf) of
|
||||||
|
@ -4364,16 +4465,18 @@ define dep_autopatch_rebar.erl
|
||||||
{_, ErlOpts} ->
|
{_, ErlOpts} ->
|
||||||
lists:foreach(fun
|
lists:foreach(fun
|
||||||
({d, D}) ->
|
({d, D}) ->
|
||||||
Write("ERLC_OPTS += -D" ++ atom_to_list(D) ++ "=1\n");
|
Write("ERLC_OPTS += -D" ++ ToList(D) ++ "=1\n");
|
||||||
|
({d, DKey, DVal}) ->
|
||||||
|
Write("ERLC_OPTS += -D" ++ ToList(DKey) ++ "=" ++ ToList(DVal) ++ "\n");
|
||||||
({i, I}) ->
|
({i, I}) ->
|
||||||
Write(["ERLC_OPTS += -I ", I, "\n"]);
|
Write(["ERLC_OPTS += -I ", I, "\n"]);
|
||||||
({platform_define, Regex, D}) ->
|
({platform_define, Regex, D}) ->
|
||||||
case rebar_utils:is_arch(Regex) of
|
case rebar_utils:is_arch(Regex) of
|
||||||
true -> Write("ERLC_OPTS += -D" ++ atom_to_list(D) ++ "=1\n");
|
true -> Write("ERLC_OPTS += -D" ++ ToList(D) ++ "=1\n");
|
||||||
false -> ok
|
false -> ok
|
||||||
end;
|
end;
|
||||||
({parse_transform, PT}) ->
|
({parse_transform, PT}) ->
|
||||||
Write("ERLC_OPTS += +'{parse_transform, " ++ atom_to_list(PT) ++ "}'\n");
|
Write("ERLC_OPTS += +'{parse_transform, " ++ ToList(PT) ++ "}'\n");
|
||||||
(_) -> ok
|
(_) -> ok
|
||||||
end, ErlOpts)
|
end, ErlOpts)
|
||||||
end,
|
end,
|
||||||
|
@ -4586,7 +4689,10 @@ endef
|
||||||
define dep_autopatch_appsrc_script.erl
|
define dep_autopatch_appsrc_script.erl
|
||||||
AppSrc = "$(call core_native_path,$(DEPS_DIR)/$1/src/$1.app.src)",
|
AppSrc = "$(call core_native_path,$(DEPS_DIR)/$1/src/$1.app.src)",
|
||||||
AppSrcScript = AppSrc ++ ".script",
|
AppSrcScript = AppSrc ++ ".script",
|
||||||
Bindings = erl_eval:new_bindings(),
|
{ok, Conf0} = file:consult(AppSrc),
|
||||||
|
Bindings0 = erl_eval:new_bindings(),
|
||||||
|
Bindings1 = erl_eval:add_binding('CONFIG', Conf0, Bindings0),
|
||||||
|
Bindings = erl_eval:add_binding('SCRIPT', AppSrcScript, Bindings1),
|
||||||
{ok, [Conf]} = file:script(AppSrcScript, Bindings),
|
{ok, [Conf]} = file:script(AppSrcScript, Bindings),
|
||||||
ok = file:write_file(AppSrc, io_lib:format("~p.~n", [Conf])),
|
ok = file:write_file(AppSrc, io_lib:format("~p.~n", [Conf])),
|
||||||
halt()
|
halt()
|
||||||
|
@ -4600,7 +4706,11 @@ define dep_autopatch_appsrc.erl
|
||||||
true ->
|
true ->
|
||||||
{ok, [{application, $(1), L0}]} = file:consult(AppSrcIn),
|
{ok, [{application, $(1), L0}]} = file:consult(AppSrcIn),
|
||||||
L1 = lists:keystore(modules, 1, L0, {modules, []}),
|
L1 = lists:keystore(modules, 1, L0, {modules, []}),
|
||||||
L2 = case lists:keyfind(vsn, 1, L1) of {_, git} -> lists:keyreplace(vsn, 1, L1, {vsn, "git"}); _ -> L1 end,
|
L2 = case lists:keyfind(vsn, 1, L1) of
|
||||||
|
{_, git} -> lists:keyreplace(vsn, 1, L1, {vsn, "git"});
|
||||||
|
{_, {cmd, _}} -> lists:keyreplace(vsn, 1, L1, {vsn, "cmd"});
|
||||||
|
_ -> L1
|
||||||
|
end,
|
||||||
L3 = case lists:keyfind(registered, 1, L2) of false -> [{registered, []}|L2]; _ -> L2 end,
|
L3 = case lists:keyfind(registered, 1, L2) of false -> [{registered, []}|L2]; _ -> L2 end,
|
||||||
ok = file:write_file(AppSrcOut, io_lib:format("~p.~n", [{application, $(1), L3}])),
|
ok = file:write_file(AppSrcOut, io_lib:format("~p.~n", [{application, $(1), L3}])),
|
||||||
case AppSrcOut of AppSrcIn -> ok; _ -> ok = file:delete(AppSrcIn) end
|
case AppSrcOut of AppSrcIn -> ok; _ -> ok = file:delete(AppSrcIn) end
|
||||||
|
@ -4841,7 +4951,7 @@ define app_file
|
||||||
{id$(comma)$(space)"$(1)"}$(comma))
|
{id$(comma)$(space)"$(1)"}$(comma))
|
||||||
{modules, [$(call comma_list,$(2))]},
|
{modules, [$(call comma_list,$(2))]},
|
||||||
{registered, []},
|
{registered, []},
|
||||||
{applications, [$(call comma_list,kernel stdlib $(OTP_DEPS) $(LOCAL_DEPS) $(DEPS))]},
|
{applications, [$(call comma_list,kernel stdlib $(OTP_DEPS) $(LOCAL_DEPS) $(foreach dep,$(DEPS),$(call dep_name,$(dep))))]},
|
||||||
{env, $(subst \,\\,$(PROJECT_ENV))}$(if $(findstring {,$(PROJECT_APP_EXTRA_KEYS)),$(comma)$(newline)$(tab)$(subst \,\\,$(PROJECT_APP_EXTRA_KEYS)),)
|
{env, $(subst \,\\,$(PROJECT_ENV))}$(if $(findstring {,$(PROJECT_APP_EXTRA_KEYS)),$(comma)$(newline)$(tab)$(subst \,\\,$(PROJECT_APP_EXTRA_KEYS)),)
|
||||||
]}.
|
]}.
|
||||||
endef
|
endef
|
||||||
|
@ -4853,7 +4963,7 @@ define app_file
|
||||||
{id$(comma)$(space)"$(1)"}$(comma))
|
{id$(comma)$(space)"$(1)"}$(comma))
|
||||||
{modules, [$(call comma_list,$(2))]},
|
{modules, [$(call comma_list,$(2))]},
|
||||||
{registered, [$(call comma_list,$(PROJECT)_sup $(PROJECT_REGISTERED))]},
|
{registered, [$(call comma_list,$(PROJECT)_sup $(PROJECT_REGISTERED))]},
|
||||||
{applications, [$(call comma_list,kernel stdlib $(OTP_DEPS) $(LOCAL_DEPS) $(DEPS))]},
|
{applications, [$(call comma_list,kernel stdlib $(OTP_DEPS) $(LOCAL_DEPS) $(foreach dep,$(DEPS),$(call dep_name,$(dep))))]},
|
||||||
{mod, {$(PROJECT_MOD), []}},
|
{mod, {$(PROJECT_MOD), []}},
|
||||||
{env, $(subst \,\\,$(PROJECT_ENV))}$(if $(findstring {,$(PROJECT_APP_EXTRA_KEYS)),$(comma)$(newline)$(tab)$(subst \,\\,$(PROJECT_APP_EXTRA_KEYS)),)
|
{env, $(subst \,\\,$(PROJECT_ENV))}$(if $(findstring {,$(PROJECT_APP_EXTRA_KEYS)),$(comma)$(newline)$(tab)$(subst \,\\,$(PROJECT_APP_EXTRA_KEYS)),)
|
||||||
]}.
|
]}.
|
||||||
|
@ -5274,7 +5384,7 @@ install-docs:: install-asciidoc
|
||||||
install-asciidoc: asciidoc-manual
|
install-asciidoc: asciidoc-manual
|
||||||
$(foreach s,$(MAN_SECTIONS),\
|
$(foreach s,$(MAN_SECTIONS),\
|
||||||
mkdir -p $(MAN_INSTALL_PATH)/man$s/ && \
|
mkdir -p $(MAN_INSTALL_PATH)/man$s/ && \
|
||||||
install -g `id -u` -o `id -g` -m 0644 doc/man$s/*.gz $(MAN_INSTALL_PATH)/man$s/;)
|
install -g `id -g` -o `id -u` -m 0644 doc/man$s/*.gz $(MAN_INSTALL_PATH)/man$s/;)
|
||||||
|
|
||||||
distclean-asciidoc-manual:
|
distclean-asciidoc-manual:
|
||||||
$(gen_verbose) rm -rf $(addprefix doc/man,$(MAN_SECTIONS))
|
$(gen_verbose) rm -rf $(addprefix doc/man,$(MAN_SECTIONS))
|
||||||
|
@ -5974,10 +6084,10 @@ else
|
||||||
$(call render_template,bs_erl_nif,src/$n.erl)
|
$(call render_template,bs_erl_nif,src/$n.erl)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# Copyright (c) 2015-2016, Loïc Hoguin <essen@ninenines.eu>
|
# Copyright (c) 2015-2017, Loïc Hoguin <essen@ninenines.eu>
|
||||||
# This file is part of erlang.mk and subject to the terms of the ISC License.
|
# This file is part of erlang.mk and subject to the terms of the ISC License.
|
||||||
|
|
||||||
.PHONY: ci ci-prepare ci-setup distclean-kerl
|
.PHONY: ci ci-prepare ci-setup
|
||||||
|
|
||||||
CI_OTP ?=
|
CI_OTP ?=
|
||||||
CI_HIPE ?=
|
CI_HIPE ?=
|
||||||
|
@ -5995,24 +6105,9 @@ ifeq ($(strip $(CI_OTP) $(CI_HIPE) $(CI_ERLLVM)),)
|
||||||
ci::
|
ci::
|
||||||
else
|
else
|
||||||
|
|
||||||
ifeq ($(strip $(KERL)),)
|
|
||||||
KERL := $(ERLANG_MK_TMP)/kerl/kerl
|
|
||||||
endif
|
|
||||||
|
|
||||||
export KERL
|
|
||||||
|
|
||||||
KERL_GIT ?= https://github.com/kerl/kerl
|
|
||||||
KERL_COMMIT ?= master
|
|
||||||
|
|
||||||
KERL_MAKEFLAGS ?=
|
|
||||||
|
|
||||||
OTP_GIT ?= https://github.com/erlang/otp
|
|
||||||
|
|
||||||
CI_INSTALL_DIR ?= $(HOME)/erlang
|
|
||||||
|
|
||||||
ci:: $(addprefix ci-,$(CI_OTP) $(addsuffix -native,$(CI_HIPE)) $(addsuffix -erllvm,$(CI_ERLLVM)))
|
ci:: $(addprefix ci-,$(CI_OTP) $(addsuffix -native,$(CI_HIPE)) $(addsuffix -erllvm,$(CI_ERLLVM)))
|
||||||
|
|
||||||
ci-prepare: $(addprefix $(CI_INSTALL_DIR)/,$(CI_OTP) $(addsuffix -native,$(CI_HIPE)))
|
ci-prepare: $(addprefix $(KERL_INSTALL_DIR)/,$(CI_OTP) $(addsuffix -native,$(CI_HIPE)))
|
||||||
|
|
||||||
ci-setup::
|
ci-setup::
|
||||||
|
|
||||||
|
@ -6022,10 +6117,10 @@ ci_verbose_0 = @echo " CI " $(1);
|
||||||
ci_verbose = $(ci_verbose_$(V))
|
ci_verbose = $(ci_verbose_$(V))
|
||||||
|
|
||||||
define ci_target
|
define ci_target
|
||||||
ci-$1: $(CI_INSTALL_DIR)/$2
|
ci-$1: $(KERL_INSTALL_DIR)/$2
|
||||||
$(verbose) $(MAKE) --no-print-directory clean
|
$(verbose) $(MAKE) --no-print-directory clean
|
||||||
$(ci_verbose) \
|
$(ci_verbose) \
|
||||||
PATH="$(CI_INSTALL_DIR)/$2/bin:$(PATH)" \
|
PATH="$(KERL_INSTALL_DIR)/$2/bin:$(PATH)" \
|
||||||
CI_OTP_RELEASE="$1" \
|
CI_OTP_RELEASE="$1" \
|
||||||
CT_OPTS="-label $1" \
|
CT_OPTS="-label $1" \
|
||||||
CI_VM="$3" \
|
CI_VM="$3" \
|
||||||
|
@ -6037,32 +6132,8 @@ $(foreach otp,$(CI_OTP),$(eval $(call ci_target,$(otp),$(otp),otp)))
|
||||||
$(foreach otp,$(CI_HIPE),$(eval $(call ci_target,$(otp)-native,$(otp)-native,native)))
|
$(foreach otp,$(CI_HIPE),$(eval $(call ci_target,$(otp)-native,$(otp)-native,native)))
|
||||||
$(foreach otp,$(CI_ERLLVM),$(eval $(call ci_target,$(otp)-erllvm,$(otp)-native,erllvm)))
|
$(foreach otp,$(CI_ERLLVM),$(eval $(call ci_target,$(otp)-erllvm,$(otp)-native,erllvm)))
|
||||||
|
|
||||||
define ci_otp_target
|
$(foreach otp,$(CI_OTP),$(eval $(call kerl_otp_target,$(otp))))
|
||||||
ifeq ($(wildcard $(CI_INSTALL_DIR)/$(1)),)
|
$(foreach otp,$(sort $(CI_HIPE) $(CI_ERLLLVM)),$(eval $(call kerl_hipe_target,$(otp))))
|
||||||
$(CI_INSTALL_DIR)/$(1): $(KERL)
|
|
||||||
MAKEFLAGS="$(KERL_MAKEFLAGS)" $(KERL) build git $(OTP_GIT) $(1) $(1)
|
|
||||||
$(KERL) install $(1) $(CI_INSTALL_DIR)/$(1)
|
|
||||||
endif
|
|
||||||
endef
|
|
||||||
|
|
||||||
$(foreach otp,$(CI_OTP),$(eval $(call ci_otp_target,$(otp))))
|
|
||||||
|
|
||||||
define ci_hipe_target
|
|
||||||
ifeq ($(wildcard $(CI_INSTALL_DIR)/$1-native),)
|
|
||||||
$(CI_INSTALL_DIR)/$1-native: $(KERL)
|
|
||||||
KERL_CONFIGURE_OPTIONS=--enable-native-libs \
|
|
||||||
MAKEFLAGS="$(KERL_MAKEFLAGS)" $(KERL) build git $(OTP_GIT) $1 $1-native
|
|
||||||
$(KERL) install $1-native $(CI_INSTALL_DIR)/$1-native
|
|
||||||
endif
|
|
||||||
endef
|
|
||||||
|
|
||||||
$(foreach otp,$(sort $(CI_HIPE) $(CI_ERLLLVM)),$(eval $(call ci_hipe_target,$(otp))))
|
|
||||||
|
|
||||||
$(KERL):
|
|
||||||
$(verbose) mkdir -p $(ERLANG_MK_TMP)
|
|
||||||
$(gen_verbose) git clone --depth 1 $(KERL_GIT) $(ERLANG_MK_TMP)/kerl
|
|
||||||
$(verbose) cd $(ERLANG_MK_TMP)/kerl && git checkout $(KERL_COMMIT)
|
|
||||||
$(verbose) chmod +x $(KERL)
|
|
||||||
|
|
||||||
help::
|
help::
|
||||||
$(verbose) printf "%s\n" "" \
|
$(verbose) printf "%s\n" "" \
|
||||||
|
@ -6072,10 +6143,6 @@ help::
|
||||||
"The CI_OTP variable must be defined with the Erlang versions" \
|
"The CI_OTP variable must be defined with the Erlang versions" \
|
||||||
"that must be tested. For example: CI_OTP = OTP-17.3.4 OTP-17.5.3"
|
"that must be tested. For example: CI_OTP = OTP-17.3.4 OTP-17.5.3"
|
||||||
|
|
||||||
distclean:: distclean-kerl
|
|
||||||
|
|
||||||
distclean-kerl:
|
|
||||||
$(gen_verbose) rm -rf $(KERL)
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# Copyright (c) 2013-2016, Loïc Hoguin <essen@ninenines.eu>
|
# Copyright (c) 2013-2016, Loïc Hoguin <essen@ninenines.eu>
|
||||||
|
@ -6232,12 +6299,13 @@ endif
|
||||||
|
|
||||||
EDOC_OPTS ?=
|
EDOC_OPTS ?=
|
||||||
EDOC_SRC_DIRS ?=
|
EDOC_SRC_DIRS ?=
|
||||||
|
EDOC_OUTPUT ?= doc
|
||||||
|
|
||||||
define edoc.erl
|
define edoc.erl
|
||||||
SrcPaths = lists:foldl(fun(P, Acc) ->
|
SrcPaths = lists:foldl(fun(P, Acc) ->
|
||||||
filelib:wildcard(atom_to_list(P) ++ "/{src,c_src}") ++ Acc
|
filelib:wildcard(atom_to_list(P) ++ "/{src,c_src}") ++ Acc
|
||||||
end, [], [$(call comma_list,$(patsubst %,'%',$(EDOC_SRC_DIRS)))]),
|
end, [], [$(call comma_list,$(patsubst %,'%',$(EDOC_SRC_DIRS)))]),
|
||||||
DefaultOpts = [{source_path, SrcPaths}, {subpackages, false}],
|
DefaultOpts = [{dir, "$(EDOC_OUTPUT)"}, {source_path, SrcPaths}, {subpackages, false}],
|
||||||
edoc:application($(1), ".", [$(2)] ++ DefaultOpts),
|
edoc:application($(1), ".", [$(2)] ++ DefaultOpts),
|
||||||
halt(0).
|
halt(0).
|
||||||
endef
|
endef
|
||||||
|
@ -6256,7 +6324,7 @@ edoc: distclean-edoc doc-deps
|
||||||
$(gen_verbose) $(call erlang,$(call edoc.erl,$(PROJECT),$(EDOC_OPTS)))
|
$(gen_verbose) $(call erlang,$(call edoc.erl,$(PROJECT),$(EDOC_OPTS)))
|
||||||
|
|
||||||
distclean-edoc:
|
distclean-edoc:
|
||||||
$(gen_verbose) rm -f doc/*.css doc/*.html doc/*.png doc/edoc-info
|
$(gen_verbose) rm -f $(EDOC_OUTPUT)/*.css $(EDOC_OUTPUT)/*.html $(EDOC_OUTPUT)/*.png $(EDOC_OUTPUT)/edoc-info
|
||||||
|
|
||||||
# Copyright (c) 2013-2016, Loïc Hoguin <essen@ninenines.eu>
|
# 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.
|
# This file is part of erlang.mk and subject to the terms of the ISC License.
|
||||||
|
@ -6408,7 +6476,7 @@ define eunit.erl
|
||||||
case "$(COVER)" of
|
case "$(COVER)" of
|
||||||
"" -> ok;
|
"" -> ok;
|
||||||
_ ->
|
_ ->
|
||||||
cover:export("eunit.coverdata")
|
cover:export("$(COVER_DATA_DIR)/eunit.coverdata")
|
||||||
end,
|
end,
|
||||||
halt()
|
halt()
|
||||||
endef
|
endef
|
||||||
|
@ -6417,10 +6485,10 @@ EUNIT_ERL_OPTS += -pa $(TEST_DIR) $(DEPS_DIR)/*/ebin $(APPS_DIR)/*/ebin $(CURDIR
|
||||||
|
|
||||||
ifdef t
|
ifdef t
|
||||||
ifeq (,$(findstring :,$(t)))
|
ifeq (,$(findstring :,$(t)))
|
||||||
eunit: test-build
|
eunit: test-build cover-data-dir
|
||||||
$(gen_verbose) $(call erlang,$(call eunit.erl,['$(t)']),$(EUNIT_ERL_OPTS))
|
$(gen_verbose) $(call erlang,$(call eunit.erl,['$(t)']),$(EUNIT_ERL_OPTS))
|
||||||
else
|
else
|
||||||
eunit: test-build
|
eunit: test-build cover-data-dir
|
||||||
$(gen_verbose) $(call erlang,$(call eunit.erl,fun $(t)/0),$(EUNIT_ERL_OPTS))
|
$(gen_verbose) $(call erlang,$(call eunit.erl,fun $(t)/0),$(EUNIT_ERL_OPTS))
|
||||||
endif
|
endif
|
||||||
else
|
else
|
||||||
|
@ -6430,7 +6498,7 @@ EUNIT_TEST_MODS = $(notdir $(basename $(call core_find,$(TEST_DIR)/,*.erl)))
|
||||||
EUNIT_MODS = $(foreach mod,$(EUNIT_EBIN_MODS) $(filter-out \
|
EUNIT_MODS = $(foreach mod,$(EUNIT_EBIN_MODS) $(filter-out \
|
||||||
$(patsubst %,%_tests,$(EUNIT_EBIN_MODS)),$(EUNIT_TEST_MODS)),'$(mod)')
|
$(patsubst %,%_tests,$(EUNIT_EBIN_MODS)),$(EUNIT_TEST_MODS)),'$(mod)')
|
||||||
|
|
||||||
eunit: test-build $(if $(IS_APP),,apps-eunit)
|
eunit: test-build $(if $(IS_APP),,apps-eunit) cover-data-dir
|
||||||
$(gen_verbose) $(call erlang,$(call eunit.erl,[$(call comma_list,$(EUNIT_MODS))]),$(EUNIT_ERL_OPTS))
|
$(gen_verbose) $(call erlang,$(call eunit.erl,[$(call comma_list,$(EUNIT_MODS))]),$(EUNIT_ERL_OPTS))
|
||||||
|
|
||||||
ifneq ($(ALL_APPS_DIRS),)
|
ifneq ($(ALL_APPS_DIRS),)
|
||||||
|
@ -6458,7 +6526,7 @@ define proper_check.erl
|
||||||
case atom_to_list(F) of
|
case atom_to_list(F) of
|
||||||
"prop_" ++ _ ->
|
"prop_" ++ _ ->
|
||||||
io:format("Testing ~p:~p/0~n", [M, F]),
|
io:format("Testing ~p:~p/0~n", [M, F]),
|
||||||
proper:quickcheck(M:F());
|
proper:quickcheck(M:F(), nocolors);
|
||||||
_ ->
|
_ ->
|
||||||
true
|
true
|
||||||
end
|
end
|
||||||
|
@ -6468,7 +6536,7 @@ define proper_check.erl
|
||||||
case $(1) of
|
case $(1) of
|
||||||
all -> [true] =:= lists:usort([Module(M) || M <- [$(call comma_list,$(3))]]);
|
all -> [true] =:= lists:usort([Module(M) || M <- [$(call comma_list,$(3))]]);
|
||||||
module -> Module($(2));
|
module -> Module($(2));
|
||||||
function -> proper:quickcheck($(2))
|
function -> proper:quickcheck($(2), nocolors)
|
||||||
end
|
end
|
||||||
of
|
of
|
||||||
true -> halt(0);
|
true -> halt(0);
|
||||||
|
@ -6551,7 +6619,7 @@ distclean-relx-rel:
|
||||||
# Run target.
|
# Run target.
|
||||||
|
|
||||||
ifeq ($(wildcard $(RELX_CONFIG)),)
|
ifeq ($(wildcard $(RELX_CONFIG)),)
|
||||||
run:
|
run::
|
||||||
else
|
else
|
||||||
|
|
||||||
define get_relx_release.erl
|
define get_relx_release.erl
|
||||||
|
@ -6575,7 +6643,7 @@ ifeq ($(PLATFORM),msys2)
|
||||||
RELX_REL_EXT := .cmd
|
RELX_REL_EXT := .cmd
|
||||||
endif
|
endif
|
||||||
|
|
||||||
run: all
|
run:: all
|
||||||
$(verbose) $(RELX_OUTPUT_DIR)/$(RELX_REL_NAME)/bin/$(RELX_REL_NAME)$(RELX_REL_EXT) console
|
$(verbose) $(RELX_OUTPUT_DIR)/$(RELX_REL_NAME)/bin/$(RELX_REL_NAME)$(RELX_REL_EXT) console
|
||||||
|
|
||||||
help::
|
help::
|
||||||
|
@ -6641,7 +6709,10 @@ ifeq ($(filter triq,$(DEPS) $(TEST_DEPS)),triq)
|
||||||
tests:: triq
|
tests:: triq
|
||||||
|
|
||||||
define triq_check.erl
|
define triq_check.erl
|
||||||
code:add_pathsa(["$(call core_native_path,$(CURDIR)/ebin)", "$(call core_native_path,$(DEPS_DIR)/*/ebin)"]),
|
code:add_pathsa([
|
||||||
|
"$(call core_native_path,$(CURDIR)/ebin)",
|
||||||
|
"$(call core_native_path,$(DEPS_DIR)/*/ebin)",
|
||||||
|
"$(call core_native_path,$(TEST_DIR))"]),
|
||||||
try
|
try
|
||||||
case $(1) of
|
case $(1) of
|
||||||
all -> [true] =:= lists:usort([triq:check(M) || M <- [$(call comma_list,$(3))]]);
|
all -> [true] =:= lists:usort([triq:check(M) || M <- [$(call comma_list,$(3))]]);
|
||||||
|
@ -6668,7 +6739,8 @@ triq: test-build
|
||||||
endif
|
endif
|
||||||
else
|
else
|
||||||
triq: test-build
|
triq: test-build
|
||||||
$(eval MODULES := $(patsubst %,'%',$(sort $(notdir $(basename $(wildcard ebin/*.beam))))))
|
$(eval MODULES := $(patsubst %,'%',$(sort $(notdir $(basename \
|
||||||
|
$(wildcard ebin/*.beam) $(call core_find,$(TEST_DIR)/,*.beam))))))
|
||||||
$(gen_verbose) $(call erlang,$(call triq_check.erl,all,undefined,$(MODULES)))
|
$(gen_verbose) $(call erlang,$(call triq_check.erl,all,undefined,$(MODULES)))
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
@ -6717,23 +6789,20 @@ distclean-xref:
|
||||||
# Copyright (c) 2015, Viktor Söderqvist <viktor@zuiderkwast.se>
|
# Copyright (c) 2015, Viktor Söderqvist <viktor@zuiderkwast.se>
|
||||||
# This file is part of erlang.mk and subject to the terms of the ISC License.
|
# This file is part of erlang.mk and subject to the terms of the ISC License.
|
||||||
|
|
||||||
COVER_REPORT_DIR = cover
|
COVER_REPORT_DIR ?= cover
|
||||||
|
COVER_DATA_DIR ?= $(CURDIR)
|
||||||
|
|
||||||
# Hook in coverage to ct
|
# Hook in coverage to ct
|
||||||
|
|
||||||
ifdef COVER
|
ifdef COVER
|
||||||
ifdef CT_RUN
|
ifdef CT_RUN
|
||||||
ifneq ($(wildcard $(TEST_DIR)),)
|
ifneq ($(wildcard $(TEST_DIR)),)
|
||||||
# All modules in 'ebin'
|
|
||||||
COVER_MODS = $(notdir $(basename $(call core_ls,ebin/*.beam)))
|
|
||||||
|
|
||||||
test-build:: $(TEST_DIR)/ct.cover.spec
|
test-build:: $(TEST_DIR)/ct.cover.spec
|
||||||
|
|
||||||
$(TEST_DIR)/ct.cover.spec:
|
$(TEST_DIR)/ct.cover.spec: cover-data-dir
|
||||||
$(verbose) echo Cover mods: $(COVER_MODS)
|
|
||||||
$(gen_verbose) printf "%s\n" \
|
$(gen_verbose) printf "%s\n" \
|
||||||
'{incl_mods,[$(subst $(space),$(comma),$(COVER_MODS))]}.' \
|
"{incl_app, '$(PROJECT)', details}." \
|
||||||
'{export,"$(CURDIR)/ct.coverdata"}.' > $@
|
'{export,"$(abspath $(COVER_DATA_DIR))/ct.coverdata"}.' > $@
|
||||||
|
|
||||||
CT_RUN += -cover $(TEST_DIR)/ct.cover.spec
|
CT_RUN += -cover $(TEST_DIR)/ct.cover.spec
|
||||||
endif
|
endif
|
||||||
|
@ -6747,6 +6816,13 @@ ifneq ($(COVER_REPORT_DIR),)
|
||||||
tests::
|
tests::
|
||||||
$(verbose) $(MAKE) --no-print-directory cover-report
|
$(verbose) $(MAKE) --no-print-directory cover-report
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
cover-data-dir: | $(COVER_DATA_DIR)
|
||||||
|
|
||||||
|
$(COVER_DATA_DIR):
|
||||||
|
$(verbose) mkdir -p $(COVER_DATA_DIR)
|
||||||
|
else
|
||||||
|
cover-data-dir:
|
||||||
endif
|
endif
|
||||||
|
|
||||||
clean:: coverdata-clean
|
clean:: coverdata-clean
|
||||||
|
@ -6769,19 +6845,19 @@ help::
|
||||||
|
|
||||||
# Plugin specific targets
|
# Plugin specific targets
|
||||||
|
|
||||||
COVERDATA = $(filter-out all.coverdata,$(wildcard *.coverdata))
|
COVERDATA = $(filter-out $(COVER_DATA_DIR)/all.coverdata,$(wildcard $(COVER_DATA_DIR)/*.coverdata))
|
||||||
|
|
||||||
.PHONY: coverdata-clean
|
.PHONY: coverdata-clean
|
||||||
coverdata-clean:
|
coverdata-clean:
|
||||||
$(gen_verbose) rm -f *.coverdata $(TEST_DIR)/ct.cover.spec
|
$(gen_verbose) rm -f $(COVER_DATA_DIR)/*.coverdata $(TEST_DIR)/ct.cover.spec
|
||||||
|
|
||||||
# Merge all coverdata files into one.
|
# Merge all coverdata files into one.
|
||||||
define cover_export.erl
|
define cover_export.erl
|
||||||
$(foreach f,$(COVERDATA),cover:import("$(f)") == ok orelse halt(1),)
|
$(foreach f,$(COVERDATA),cover:import("$(f)") == ok orelse halt(1),)
|
||||||
cover:export("$@"), halt(0).
|
cover:export("$(COVER_DATA_DIR)/$@"), halt(0).
|
||||||
endef
|
endef
|
||||||
|
|
||||||
all.coverdata: $(COVERDATA)
|
all.coverdata: $(COVERDATA) cover-data-dir
|
||||||
$(gen_verbose) $(call erlang,$(cover_export.erl))
|
$(gen_verbose) $(call erlang,$(cover_export.erl))
|
||||||
|
|
||||||
# These are only defined if COVER_REPORT_DIR is non-empty. Set COVER_REPORT_DIR to
|
# These are only defined if COVER_REPORT_DIR is non-empty. Set COVER_REPORT_DIR to
|
||||||
|
@ -6792,6 +6868,7 @@ ifneq ($(COVER_REPORT_DIR),)
|
||||||
|
|
||||||
cover-report-clean:
|
cover-report-clean:
|
||||||
$(gen_verbose) rm -rf $(COVER_REPORT_DIR)
|
$(gen_verbose) rm -rf $(COVER_REPORT_DIR)
|
||||||
|
$(if $(shell ls -A $(COVER_DATA_DIR)/),,$(verbose) rmdir $(COVER_DATA_DIR))
|
||||||
|
|
||||||
ifeq ($(COVERDATA),)
|
ifeq ($(COVERDATA),)
|
||||||
cover-report:
|
cover-report:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue