aboutsummaryrefslogtreecommitdiffstats
path: root/core/erlc.mk
AgeCommit message (Collapse)Author
2017-04-25core/erlc.mk: added src subfolders support in makedep.erlOleksiy Kebkal
2017-04-10Only makedep and build asn1/xrl/mib files when necessaryLoïc Hoguin
Because we were unconditionally including the makedep file, it would be built even if the target was unrelated (like "make help"), and it would also trigger building of xrl and other files that produce Erlang code. Instead the makedep file is now included as a wildcard: if it exists it gets included, if it doesn't it's not, and if it's created in the middle of execution it gets included only then. More details on the technique can be found at http://make.mad-scientist.net/papers/advanced-auto-dependency-generation/ A test has been added to make sure the behavior does not come back at a later time.
2017-01-12Set ASN.1 compilation options using ERLC_ASN1_OPTS2017.01.12Klas Johansson
`ERLC_ASN1_OPTS` can be used to pass compiler options when compiling ASN.1 files. By default, Erlang.mk will leave this empty, but it can be redefined in a Makefile.
2016-12-19core/erlc.mk: Quote application name in .appJean-Sébastien Pédron
2016-10-30Use := instead of = for list of filesLoïc Hoguin
This will make sure we don't look twice. Also make a single call to find the common file formats rather than many calls.
2016-10-28Use an intermediate timestamp file to know when to touch source filesJean-Sébastien Pédron
The previous approach spawned a shell for every single source files. As we disable parallel make jobs, this is very time consuming. The new approach uses an intermediate timestamp file in $(ERLANG_MK_TMP) to record the last modification of any of $(MAKEFILE_LIST) and touch all source files in one command. Then, the .app file depends on this timestamp file. We test the existence of this timestamp file: if if doesn't exist, don't touch source files, they will be built anyway. $(PROJECT).d now depends directly on $(MAKEFILE_LIST); before, this dependency was indirect through $(ERL_FILES). Also, once $(ERL_FILES) were touched, we do the same with $(PROJECT).d because there is no need to regen it because of this.
2016-10-23Support PROJECT_APP_EXTRA_KEYS to add keys to the .app fileJean-Sébastien Pédron
This allows to add standard keys which do not have a corresponding `PROJECT_` Makefile variable, as well as non-standard keys.
2016-10-21Update Copyright notices2016.10.21Loïc Hoguin
2016-10-19Escape % in app_file templatenevar
2016-10-19Add PROJECT_ENVnevar
Fix #587
2016-10-19Added implementation to resolve test.Micah Warren
2016-06-07Add PROJECT_MOD var to make the app callback module configurableJared Flatow
2016-03-19Merge branch 'tag_with_slash' of https://github.com/jeanparpaillon/erlang.mkLoïc Hoguin
2016-03-17Do not use grep Extended Modederwinlu
Extended Mode uses { and } as special characters. Making grep implementations other then GNU grep fail (see http://www.gnu.org/software/grep/manual/grep.html#Basic-vs-Extended).
2016-02-01Fix .app compilation when a git tag contains a '/'Jean Parpaillon
2015-12-17More improvements to file dependency detectionLoïc Hoguin
This makes i18n work. It worked before, but I didn't know, and broke it. Next commit will add i18n to the index to ensure this doesn't happen again.
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