aboutsummaryrefslogtreecommitdiffstats
path: root/core
AgeCommit message (Collapse)Author
2016-11-20Only delete ebin when fetching Erlang.mk projectsLoïc Hoguin
Erlang.mk projects either have a .app.src, or just the Makefile with an optional .app file for compatibility.
2016-11-20Better .app autopatch handlingLoïc Hoguin
If we have a .app and a .app.src we delete the .app. If we have a Rebar project with a .app file, rename it to .app.src and continue with autopatch. If we have a non-Rebar project, leave the .app file, and then... For all cases, delete the ebin/ folder after autopatch completes.
2016-11-19Don't autopatch if rebar is mentioned in commentsLoïc Hoguin
2016-10-30Fix running Dialyzer on apps/* when they have depsLoïc Hoguin
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-28Add "make relup"Loïc Hoguin
The initial documentation is a bit rough. It's getting late and I'd like to have this in sooner rather than later. :-)
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-27Fix Hex package downloads on FreeBSDLoïc Hoguin
Error has been detected during the nightly packages build.
2016-10-25Use curl to fetch Hex dependenciesLoïc Hoguin
2016-10-25Use curl instead of wget/erl for fetching filesLoïc Hoguin
After a lot of soul searching and experiments, I am opting to using curl for fetching files. It works with very little manipulation on all supported systems. Some might need it installed, but most come with it. While wget was working, it had TLS validation deactivated because some users didn't have CA certificates on their system or wget was not configured properly. This does not seem to be a problem with curl as far as I tested, in particular on OSX. The fallback to use Erlang was also insecure, and probably not the best idea. Let's keep things simple. Curl is required.
2016-10-25core/deps-tools.mk: New targets `fetch-deps` and `list-deps`Jean-Sébastien Pédron
.. to fetch and list deps recurvively. Therefore, they work on direct dependencies, dependencies' dependencies, and so on. Nothing is built with those targets. The following targets are also available to work on other kinds of dependencies: make fetch-doc-deps make fetch-rel-deps make fetch-test-deps make fetch-shell-deps make list-doc-deps make list-rel-deps make list-test-deps make list-shell-deps In all cases, they include "normal" and eg. "test" dependencies of the top-level project, then only "normal" dependencies' dependencies. It's possible to include several kinds in one go: make fetch-deps DEP_TYPES='doc test' make list-deps DEP_TYPES='doc test' As it may be difficult to use the output of `make list-*` because the list could appear after other targets output (like dependencies fetching), the list is available in files pointed by the following variables: $(ERLANG_MK_RECURSIVE_DEPS_LIST) $(ERLANG_MK_RECURSIVE_DOC_DEPS_LIST) $(ERLANG_MK_RECURSIVE_REL_DEPS_LIST) $(ERLANG_MK_RECURSIVE_TEST_DEPS_LIST) $(ERLANG_MK_RECURSIVE_SHELL_DEPS_LIST) Internally, `list-deps` is simply implemented on top of `fetch-deps`: the latter fills a sorted log with all the directories it traversed. `list-deps` finally just prints the log file to stdout. Fixes #560.
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-21Erlang.mk is rolling releasesLoïc Hoguin
2016-10-21Deprecate Make 3Loïc Hoguin
A warning will be displayed for the time being while we keep compatibility. Also improves installation docs for Unix.
2016-10-19Escape % in app_file templatenevar
2016-10-19Add PROJECT_ENVnevar
Fix #587
2016-10-19Added implementation to resolve test.Micah Warren
2016-10-19merge PortSpec env into each output envHesaam Farhang
2016-10-09Support C compiler flag overrides for dependenciesFrank Hunleth
This change makes it possible to override the ERL_CFLAGS and ERL_LDFLAGS Makefile variables in project dependencies. For the main project, the ability to override variables associated with C compilation already existed in plugins/c_src.mk. With this change, the C compiler flag semantics are similar for both the main project and dependencies. This is important for cases where the automatically determined values for the ERTS include and library directories are incorrect. This happens in cross-compiled environments where they point to the host's include and library directories. However, the desired behaviour is to have them point to those that have been cross-compiled for the target.
2016-10-04Update rebar (should be correct this time)Loïc Hoguin
2016-10-04Revert "Update rebar in autopatch"Loïc Hoguin
This reverts commit d5c32474e0690a32371fb8fb0b5d2db2c567269b.
2016-10-04Update rebar in autopatchLoïc Hoguin
This should fix some Windows issues.
2016-07-14Build apps/* only onceKrister Svanlund
Replicating the behavior for deps/*. With refactoring from Loïc.
2016-06-09Clean up output from a previous commitLoïc Hoguin
2016-06-07Add PROJECT_MOD var to make the app callback module configurableJared Flatow
2016-05-17Fix for issue 447.Daniel Goertzen
Create ebin dir for all apps_dir apps before building any of them.
2016-03-19Merge branch 'tag_with_slash' of https://github.com/jeanparpaillon/erlang.mkLoïc Hoguin
2016-03-19Merge branch 'erlc-opts-sed' of https://github.com/Gatzy118/erlang.mkLoïc Hoguin
2016-03-19Merge branch 'fix_grep' of https://github.com/ingwinlu/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-03-02Properly write hex dependencies in rebar.config for Rebar3Loïc Hoguin
2016-02-01Fix .app compilation when a git tag contains a '/'Jean Parpaillon
2016-01-24Quote paths in autopatch generated MakefileLoïc Hoguin
Fixes build of a few projects on Windows.
2016-01-14Remove unnecessary whitespace from generated rebar.configLoïc Hoguin
2016-01-08Add a function to convert ERLC_OPTS to an Erlang listLoïc Hoguin
For easier reusability in Erlang.mk and plugins.
2016-01-06Remove spaces after commas globallyNick Gates
When preparing erlc_opts, remove all comma/whitespace pairs instead of just the first
2015-12-29If the rebar binary is present, this is a rebar depLoïc Hoguin
Fixes syslog.
2015-12-24Add EUnit tests and documentationLoïc Hoguin
Also includes a fix for multi-application repositories.
2015-12-24Fix an issue running EUnit tests on 'make check'Loïc Hoguin
Rebuilding cleanly first prevented rebuilding in test-mode again.
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-12-15Detect Erlang.mk before RebarLoïc Hoguin
This allows us to avoid autopatching when the Makefile of an Erlang.mk project contains the word "rebar". Had to update elvis and xref_runner to master for now because of incompatibilities. The problem went unnoticed for a while because they were autopatched.
2015-12-14Fix for bcrypt compilation on OSX El CapitanBrujo Benavides
2015-12-09autopatch: do not run autoreconf if configure script already existsJean Parpaillon
2015-12-04Autopatch: handle $(PROJECT).app.src.script filesLoïc Hoguin
This fixes issues when including ErlyDTL in a release.
2015-11-21Merge branch 'late-autopatch' of https://github.com/rabbitmq/erlang.mkLoïc Hoguin
2015-11-21deps.mk: In dep_target, call dep_autopatch during the second evalJean-Sébastien Pédron
... not the first. dep_autopatch can be an expensive macro, in particular because it executes Erlang. So if NO_AUTOPATCH is set, it's best to avoid calling dep_autopatch as the result will be unused anyway. While here, add a test for autopatched rebar-based dependencies.
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.