Age | Commit message (Collapse) | Author |
|
|
|
This changes adds Rebar-like "apps/" functionality.
From this commit onward, Erlang.mk supports 4 types of repositories:
- Repo with an Erlang app at root level + deps/
- Repo with an Erlang app at root level + apps/ deps/
- Repo with no app at root level + deps/
- Repo with no app at root level + apps/ deps/
Example usage:
- make new-app in=webchat
- make new t=gen_server n=my_chat in=webchat
- make
Replace new-app with new-lib to create an OTP library instead of
an OTP application.
|
|
OSX find has this terrible behavior:
$ find test/core_app_asn1/src/ -type f -name \*
test/core_app_asn1/src//CAP.erl
test/core_app_asn1/src//Def.erl
test/core_app_asn1/src//use_cap.erl
test/core_app_asn1/src//use_def.erl
It's been long fixed everywhere else. Change the core_find function
to remove the trailing / if any before calling find.
|
|
The errors were happening in the rebar.config generation
code. In addition to the fix, three tests were added:
a project that uses a pt from its own code with -compile
directives, a project that uses a pt from a dep with the
pt set as ERLC_OPTS, and the inclusion of parse transform
options in the generated rebar.config when compatibility
is desired.
|
|
Fix IGNORE_DEPS not being propagated downward.
Fix IGNORE_DEPS handling with autopatched Rebar projects,
where the user defined value was overriden with the one
from autopatching.
|
|
Also improves the handling of the legacy fetch method. It is now
enabled only for dependencies, and not for the top-level application.
This should force Erlang.mk users to update their definitions.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Also fixes two bugs with the new "no .app.src" method.
All tests now pass with both methods.
We can now test specific cases with make check c=$CASE.
|
|
This way we can commit the .app file once and it won't
change until we actually change something. Much better
for "no .app.src" file method.
We are getting close to making this method the default!
|
|
This is a preliminary work, good enough to be used in some,
but not all, projects. Tests cover the current functionality.
Documentation has been written but will be committed at a
later stage, as it covers more than just this target (the
target is documented as part of a "Compatibility with other
build tools" chapter).
|
|
|
|
This makes a lot of Erlang.mk work on Windows under the msys2
environment. The msys2 environment is damn close to native,
so it will most likely be good enough for a lot of folks.
|
|
|
|
Removes $(ERLANG_MK_TMP) directory on distclean.
* add distclean-tmp target
* add core-clean-tmp test
|
|
|
|
We have nothing to hide.
|
|
|
|
|
|
|
|
This is useful only for projects that are stable and rarely
need to rebuild it. Check the guide additions for more info.
|
|
R16B03 in particular is missing epp:parse_file/2.
|
|
Fixes a bug detected with the test introduced in the previous commit.
|
|
Dirty, dirty files!
|
|
This ensures all generated dependencies are prepared and the .d file is
ready before the actual build is started.
|
|
|
|
* Move the .app generation to the .app rule (don't remake it
for no reasons when nothing needs to be done)
* Rever the previous double colon commit; add touch $@ in depend
* Move the creation of ebin/ directory in its own rule
* Temporarily remove the ignore on missing depend file
|
|
https://github.com/rabbitmq/erlang.mk
|
|
|
|
The touch(1) happens after `$(PROJECT).d` is generated. Therefore, with
the next run of make, `$(PROJECT).d` is considered obsolete and
recreated. Source files are touched again, and so on.
This makes the whole project to be rebuilt with every run of make.
|
|
When files are generated, this avoids a warning because the target would
be redefined.
|
|
This is a very large change of a central part of Erlang.mk.
I will admit that I am not quite confident on that one. If
you do have issues following this change, please open a
ticket and I will look at it immediately.
At this point, it works for me, but I wouldn't be surprised
to hear about a few minor issues.
This commit introduces a dependency file $(PROJECT).d which
contains Makefile rules between Erlang source files and
headers, behaviors and parse_transforms. This allows us
to rebuild only the files that are needed.
The $(PROJECT).d is generated automatically when missing,
and when any of the files change.
It is possible to hook before and after this generation,
by defining a $(PROJECT).d:: rule. This allows users to
generate Erlang files which are then compiled by Erlang.mk
automatically (and to track their dependencies, of course).
Here goes nothing...
|
|
Native find is much faster. As for future Windows work,
this is no problem, as the retained solution involves
using find.exe from GnuWin.
|
|
Two reasons for doing this:
* The current solution for enforcing sequential operations makes
a lot of things slower. Either we do it properly or we don't.
* Most of Erlang.mk is sequential by nature. There is very little
to gain from Make's own parallel building. Something more
interesting would be to enable fetching of dependencies
concurrently by other means, and enable compilation of
Erlang files concurrently (requires patching OTP).
|
|
Plugins can automatically be fetched and included from
dependencies. All that is needed is to add either the
dependency name or the name + path of the plugin to the
DEP_PLUGINS variable.
Useful for allowing tools to easily add support for new
targets, adding templates or for putting the whole build
ecosystem in one common dependency.
|
|
Fixes riak_control generating JS files.
|
|
Among the improvements:
* Work with current versions of ErlyDTL
* Add DTL_PATH, defaulting to templates/
* Add DTL_SUFFIX, defaulting to _dtl (suffix of output module names)
* Simplify the Erlang code and port to the erlang function
The erlang function can now accept any command-line argument for
erl as optional second argument.
|
|
Currently build.config can be placed in a different directory via
something like:
ERLANG_MK_BUILD_CONFIG = tools/build.config
but if the name is changed:
ERLANG_MK_BUILD_CONFIG = .erlang-mk.config
it will be ignored.
|
|
|
|
This commit does a few things:
* Fix svn and cp fetch methods
* Resolve what commands to run for fetching directly in make
* Make it easier to add fetch methods in the future
* Move legacy fetching into its own method for compatibility
* Don't require three words for hex; two are enough
|
|
|
|
Fix a bug where deps that use erlang.mk didn't have the -Werror
option suppressed automatically.
|
|
|
|
|
|
By default templates use tabs. Unfortunately there are misguided
heretics who prefer spaces. Bummer.
Two variables are introduced:
* SP=<number> can be set to use <number> spaces per indentation level.
* WS=<string> can be set to use <string> for each indentation level.
Most users will just want to use SP, for example:
make new t=gen_server n=my_server SP=4
Note that people who want tabs don't have to do anything; tabs
are still the default.
WS is reserved for advanced users. Normal Make rules apply: all
whitespaces are trimmed. To specify 4 spaces using WS, you can
do the following:
make new t=gen_server n=my_server WS='$(empty) $(empty)'
Ugly, right? So just use SP.
Finally, SP and WS can be put in your Makefile directly.
In fact, erlang.mk will automatically add SP to a newly
created project if it was used during creation. For example:
make -f erlang.mk bootstrap SP=2
So in time we should only need to make a note in the docs
at project creation time, as there is very little value
after that point.
|