aboutsummaryrefslogtreecommitdiffstats
path: root/core/erlc.mk
AgeCommit message (Collapse)Author
2015-12-16Improve file dependency detectionLoïc Hoguin
One case was added, where a -compile attribute specified a list that included a parse_transform. This affected alog, for example. The COMPILE_FIRST variable is now filled from a digraph. This allows us to keep track of the dependency tree properly, rather than rely on luck. This affected erlando. With both of these changes in, a large chunk of the rebar autopatch code can be removed, the part that concerned the auto detection of file dependencies. On the other hand, we still need to honor the erl_first_files configuration value, otherwise the parse_trans project fails to build. While it would be possible to detect these dependencies automatically too, it's probably too complex to bother, at least for now.
2015-11-20Merge branch 'set-x-on-verbose-2' of https://github.com/rabbitmq/erlang.mkLoïc Hoguin
2015-11-18Fix target dependencies and enable parallel again2.0.0-pre.2Loïc Hoguin
We can now use 'make -j 32' again. All tests pass. There might be some issues left with the areas that are not fully tested yet (some plugins). A few changes in behavior: * 'make app' will also do 'make deps' unless SKIP_DEPS is set. You can use 'make app-build' instead to just build the application. * 'make rel' will also do 'make app' (and therefore deps). There are no alternative target to keep the old behavior at this time.
2015-11-17Use `:` as a noop instead of `echo -n`Jean-Sébastien Pédron
The `-n` flag is not standard and not portable. It is supported by many Bourne shell to suppress the trailing newline character. But some old shells do not support this and "-n" is printed. This is the case for instance on some old versions of Mac OS X where `/bin/sh` is Bash 3.2.
2015-11-17V=2 causes `set -x` to be set on forked shellsJean-Sébastien Pédron
2015-10-19Force rebuilds on Makefile/.app.src changesLoïc Hoguin
Everything will be rebuilt when the Makefile or any included Makefile (like Erlang.mk or plugins) change. Only the .app will be rebuilt when the .app.src file changes.
2015-10-12ErlyDTL files generate to beam directlyLoïc Hoguin
2015-09-29Merge branch 'app_file_newlines' of https://github.com/ingwinlu/erlang.mkLoïc Hoguin
2015-09-29Add support for APPS_DIRLoïc Hoguin
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.
2015-09-26retain newlines in generated .app filederwinlu
Replacing $(newline) occurances with \n before passing it to printf instead of echo ensures valid output accross different platforms.
2015-09-26only newline for id if neededderwinlu
2015-09-18Test "no .app.src" by default, test legacy with LEGACY=1Loïc Hoguin
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.
2015-09-17Only set id to git --describe when we are a dependencyLoïc Hoguin
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!
2015-09-11Fix bug where ERLC_EXCLUDE'd modules were in .app fileLoïc Hoguin
2015-09-10Replace a @ with a $(verbose)Loïc Hoguin
We have nothing to hide.
2015-09-09erlc.mk: Fix "no Erlang application" supportJean-Sébastien Pédron
2015-09-06Add NO_MAKEDEP: don't rebuild .d file if it already existsLoïc Hoguin
This is useful only for projects that are stable and rarely need to rebuild it. Check the guide additions for more info.
2015-09-06Use epp:parse_file/3 for compat with older OTP versionsLoïc Hoguin
R16B03 in particular is missing epp:parse_file/2.
2015-09-04Don't recompile everything when one mib file changesLoïc Hoguin
Fixes a bug detected with the test introduced in the previous commit.
2015-09-03Fix bug where intermediate files from .asn1 wouldn't get cleanedLoïc Hoguin
Dirty, dirty files!
2015-09-03Generate `$(PROJECT).d` before calling `make app-build`Jean-Sébastien Pédron
This ensures all generated dependencies are prepared and the .d file is ready before the actual build is started.
2015-09-03Fix list of modules in the .app fileLoïc Hoguin
2015-09-03Improve the dependency trackingLoïc Hoguin
* 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
2015-09-02erlc.mk: Remove the target touching source filesJean-Sébastien Pédron
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.
2015-09-02erlc.mk: Use double-colon targets for source files targetsJean-Sébastien Pédron
When files are generated, this avoids a warning because the target would be redefined.
2015-09-02Add dependency tracking (makedep)Loïc Hoguin
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...
2015-08-14Fix a bug where modules were missing on first makeLoïc Hoguin
2015-07-21Don't use warning_as_errors for erlang.mk-style depsLoïc Hoguin
Fix a bug where deps that use erlang.mk didn't have the -Werror option suppressed automatically.
2015-07-04Add $(verbose) to avoid completely silencing commandsLoïc Hoguin
2015-07-02Reduce dependency on external programsLoïc Hoguin
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.
2015-06-15Fix details in .app templateLoïc Hoguin
Was using $(MODULES) instead of $(2).
2015-06-15Add corresponding space in the replace regexLoïc Hoguin
Fixes a previous incomplete PR merged by mistake.
2015-06-14Generate the .app file directly from the MakefileLoïc Hoguin
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.
2015-06-13Merge branch 'fix-modules-attr-app-src' of https://github.com/efcasado/erlang.mkLoïc Hoguin
2015-06-01More autopatch fixesLoïc Hoguin
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.
2015-05-31Allow whitespace characters in the modules attributeEnrique Fernandez
2015-05-14Add ASN.1 compilation supportLoïc Hoguin
2015-01-12Update copyright yearLoïc Hoguin
Also added a copyright line in the eunit plugin due to the extensive work I have done there a few days ago.
2015-01-10Introduce test builds and unify testing tools interfaceLoïc Hoguin
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.
2015-01-07Fix parallel compilationLoïc Hoguin
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.
2014-12-23Build deps, app, rel targets really in that orderDanil Zagoskin
2014-11-25Remove +warn_export_all from the enabled warnings by defaultLoïc Hoguin
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.
2014-11-25Group clean-app commandsLoïc Hoguin
Smaller non-verbose output.
2014-11-19Don't try to compile mibs if the mibs/ directory is missingLoïc Hoguin
2014-11-19Merge branch 'compile-mibs' of git://github.com/danielwhite/erlang.mkLoïc Hoguin
Fixed a small whitespace issue in the silent output.
2014-11-18Add support for excluding erl filesEnrique Fernandez
2014-11-15Support for compiling SNMP MIBsDaniel White
This is unfortunately unsuited as a plugin due to its dependence on erlc for compilation. The MIBs must be compiled before an Erlang source.
2014-10-30erlc: update {id, git} in .app.src with git describe outputDave Cottlehuber
2014-08-20Stop printing `-n` when running `make` on OSXDaniel Kempkens
2014-08-15Silence erlc-include target when include/ is missingLoïc Hoguin