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.
|
|
Replacing $(newline) occurances with \n before passing it to printf
instead of echo ensures valid output accross different platforms.
|
|
|
|
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!
|
|
|
|
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
|
|
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...
|
|
|
|
Fix a bug where deps that use erlang.mk didn't have the -Werror
option suppressed automatically.
|
|
|
|
This commit implements a core_find and core_ls function that
can be used to list files recursively or not.
A few other minute changes are included and a couple hacks
removed.
|
|
Was using $(MODULES) instead of $(2).
|
|
Fixes a previous incomplete PR merged by mistake.
|
|
This removes the need for a .app.src file entirely.
The PROJECT_* variables and the OTP_DEPS variable
allow us to specify everything we need.
REL_DEPS and BUILD_DEPS will be added later on to
allow users to cleanly specify those without adding
them to the .app file.
|
|
|
|
Some projects had their modules section filled incorrectly, this
has been fixed.
Merl (used by erlydtl) had its .app file incorrectly moved to
.app.src despite having its own Makefile. This has been fixed.
A new g++ warning caused some projects with -Werror to fail to
compile, this has been fixed.
The include path given in rebar.config is now properly used.
The project concuerror has been removed temporarily due to a
recent change that broke the auto detection.
The projects ircbot, exmpp and tsung have been removed temporarily
due to broken modules section and will need a custom patch and/or
a PR sent to fix them.
|
|
|
|
|
|
Also added a copyright line in the eunit plugin due to the
extensive work I have done there a few days ago.
|
|
The general idea is that erlang.mk now keeps track of what kind
of build it generated. A test build is valid for all subsequent
test target invocations. A normal build is only valid for itself
and releases.
This rework adds the ability to specify deps to eunit.
The EUNIT_DIR variable is gone in favor of a more global TEST_DIR.
The tests-ct target got renamed to ct and documented.
Many more minor changes were done during the course of testing
these changes.
|
|
Parallel compilation is now only enabled for "make" and "make deps app".
To ensure order we spawn a new Make process for "deps", "app" and
"rel" when the "all" target (or no target) is used.
|
|
|
|
People who don't want export_all simply don't use it. The
warning is annoying for those edge cases where it's actually
useful, as it can't be disabled on a per-file basis.
|
|
Smaller non-verbose output.
|
|
|
|
Fixed a small whitespace issue in the silent output.
|
|
|
|
This is unfortunately unsuited as a plugin due to its dependence on erlc
for compilation. The MIBs must be compiled before an Erlang source.
|
|
|
|
|
|
|
|
git://github.com/crownedgrouse/erlang.mk
Extra changes include:
* Not running the target if the ebin/ directory does not exist
* Moved the target in the appropriate section in the file
|
|
|
|
An empty list is required for the modules tuple, as in
{modules, []}
so a sed call could populate the list. This is mentioned in README, but
can be overlooked.
If the empty tuple is not present, relx will fail on missing dependency
errors. Therefore, fail make if the empty tuple isn't found, to
help the user diagnose the problem.
|
|
|
|
|
|
* The build.config says what gets into the generated erlang.mk.
* The default erlang.mk in the repository hasn't changed yet.
* Clean targets were separated into "clean" and "distclean".
* The "help" target was added to display some help message.
I probably broke a couple things...
|