diff options
Diffstat (limited to 'README.md')
-rw-r--r-- | README.md | 113 |
1 files changed, 16 insertions, 97 deletions
@@ -1,23 +1,12 @@ erlang.mk ========= -Common Makefile rules for building and testing Erlang applications. +A build tool for Erlang that just works. -Also features support for dependencies and a package index. +[Check out our upcoming user guide!](doc/src/guide/book.asciidoc) -[Check out our upcoming documentation!](doc/src/guide/book.asciidoc) - -Why erlang.mk? --------------- - -A number of reasons might push someone to use erlang.mk instead of -an Erlang-based build tool, including but not limited to the following: - - * You want a very fast compilation and test cycle - * You want the full power of Unix at your disposal when hooking into your build tool - * You want to be able to easily edit the damn build tool and fix it when it fails - * You want to use the deps mechanism with non-Erlang Makefile-based projects - * Your project will be part of a larger make or automake based environment +The README only contains legacy documentation that was not moved to +the guide yet. Check there if you don't find what you're looking for. Requirements ------------ @@ -25,41 +14,8 @@ Requirements `erlang.mk` requires GNU Make and expects to be ran in a standard unix environment with Erlang installed and in the `$PATH`. -`erlang.mk` uses `wget` for downloading the package index file. - -`erlang.mk` will NOT work if the path contains spaces. This is a -limitation of POSIX compatible make build tools. - -Usage ------ - -Add the file `erlang.mk` to your project, then use the following base -Makefile: - -``` Makefile -PROJECT = my_project -include erlang.mk -``` - -Alternatively you can use the following command to generate a skeleton -of an OTP application: - -``` bash -$ make -f erlang.mk bootstrap -``` - -To generate a skeleton of an OTP library: - -``` bash -$ make -f erlang.mk bootstrap-lib -``` - -Finally if you are going to create a release of this project you may -want to also use the `bootstrap-rel` target. - -You can combine targets to perform many operations. For example, the -shell command `make clean app` will have the effect of recompiling -the application fully, without touching the dependencies. +Common workflow +--------------- A common workflow when editing a file would be to run `make` regularly to see if it compiles (or less often `make clean app` if you want to @@ -67,11 +23,6 @@ recompile everything), followed by `make dialyze` to see if there are any type errors and then `make tests` to run the test suites. The result of the test runs can be browsed from the `logs/index.html` file. -Getting help ------------- - -You can use `make help` to get help about erlang.mk or its plugins. - Packages -------- @@ -152,11 +103,11 @@ when used as dependency. The patching occurs only once, immediately after the package has been fetched. -erlang.mk defines a number of packages to be patched. You can add -more packages to the list by appending the `AUTOPATCH` variable. +The autopatch feature is applied to all dependencies. To disable +it for a dependency, use the `NO_AUTOPATCH` variable: ``` Makefile -AUTOPATCH += gproc +NO_AUTOPATCH += gproc ``` Releases @@ -226,6 +177,11 @@ You can enable verbose mode by calling Make with the variable $ V=1 make ``` +Parallel execution +------------------ + +*Parallel execution is currently disabled.* + Parallel execution can be enabled through the use of the `-j` option. The following output showcases concurrent downloading of dependencies. @@ -255,15 +211,12 @@ Core package functionality The following targets are specific to packages: -`pkg-list` lists all packages in the index. +`search` lists all packages in the index. -`pkg-search q=STRING` searches the index for STRING. +`search q=STRING` searches the index for STRING. Packages are downloaded into `DEPS_DIR` (`./deps/` by default). -The package index file is downloaded from `PKG_FILE_URL` -and saved in `PKG_FILE2`. - Core compiler functionality --------------------------- @@ -294,39 +247,6 @@ If `{id, "git"},` is found in your project's `.app.src`, the extended output of `git describe ...` will replace it. This can be retrieved at runtime via `application:get_key/2`. -Updating erlang.mk ------------------- - -You can update erlang.mk by running `make erlang-mk`. This automated -update will always take the latest erlang.mk version, compile it and -replace the erlang.mk of your project with the updated version. - -If your project includes a `build.config`, erlang.mk will use it -when building the updated version. - -The `ERLANG_MK_BUILD_CONFIG` variable can be used to rename the -`build.config` file. - -The `ERLANG_MK_BUILD_DIR` variable contains the path to the -temporary directory used to build the updated erlang.mk. - -Bootstrap plugin ----------------- - -This plugin is available by default. It adds the following -targets: - -`bootstrap` generates a skeleton of an OTP application. - -`bootstrap-lib` generates a skeleton of an OTP library. - -`bootstrap-rel` generates the files needed to build a release. - -`new` generate a skeleton module based on one of the available -templates. - -`list-templates` lists the available templates. - C/C++ compiler plugin --------------------- @@ -437,7 +357,6 @@ subdirectories names in the compiled module name add `DTL_FULL_PATH=1` into your Makefile - `a/b/templatename.dtl` will be compiled into `a_b_templatename_dtl.beam`. - Escript plugin -------------- |