diff options
Diffstat (limited to 'README.md')
-rw-r--r-- | README.md | 353 |
1 files changed, 0 insertions, 353 deletions
diff --git a/README.md b/README.md deleted file mode 100644 index 600ce50..0000000 --- a/README.md +++ /dev/null @@ -1,353 +0,0 @@ -erlang.mk -========= - -A build tool for Erlang that just works. - -[Check out our upcoming user guide!](doc/src/guide/book.asciidoc) - -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 ------------- - -`erlang.mk` requires GNU Make and expects to be ran in a standard -unix environment with Erlang installed and in the `$PATH`. - -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 -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. - -Compiling and dependencies --------------------------- - -Gone! [Check out our upcoming user guide!](doc/src/guide/book.asciidoc) - -Releases --------- - -If a `relx.config` file is present, erlang.mk will download `relx` -automatically and build the release into the `_rel` folder. This -is the default command when the file exists. - -No special configuration is required for this to work. - -Extending Erlang.mk -------------------- - -You may add additional operations to them by using the double -colons. Make will run all targets sharing the same name when -invoked. - -``` Makefile -clean:: - @rm anotherfile -``` - -You can enable verbose mode by calling Make with the variable -`V` set to 1. - -``` bash -$ make V=1 -``` - -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. - -``` bash -$ make -j32 -Cloning into '/home/essen/ninenines/cowboy/deps/ranch'... -Cloning into '/home/essen/ninenines/cowboy/deps/cowlib'... -``` - -The `-O` option will ensure that output from different -targets is grouped, which is particularly useful when -running tests with different frameworks at the same time. -The disadvantage of this option however is that there is -no output until the target is completed. - -The``MAKEFLAGS` variable can be used to set it permanently -on your system. It can be set in your `.zshrc`, `.bashrc` -or equivalent file. - -``` bash -MAKEFLAGS="-j32 -O" -``` - -C/C++ compiler plugin ---------------------- - -This plugin is available by default. It is meant to -simplify the management of projects that include C -and/or C++ source code, like NIFs for example. - -If the file `$(C_SRC_DIR)/Makefile` exists, then the plugin -simply calls it when needed. Otherwise it tries to compile -it directly. - -You can use a different directory than `./c_src` by setting -the `C_SRC_DIR` variable. - -You can override the output file by setting the `C_SRC_OUTPUT` -variable. - -You can override the temporary file containing information -about Erlang's environment by setting the `C_SRC_ENV` variable. -This file is automatically generated on first run. - -The `CC`, `CXX`, `CFLAGS`, `CXXFLAGS`, `LDLIBS` and `LDFLAGS` variables -may be modified or replaced with any value of your choosing. -The defaults are system dependent. - -Common_test plugin ------------------- - -This plugin is available by default. It adds the following -target: - -`ct` runs all test suites for this application. - -There is nothing to configure to use it, simply create your -test suites in the `./test/` directory and erlang.mk will -figure everything out automatically. - -You can override the list of suites that will run when using -`make tests` by setting the `CT_SUITES` variable. - -You can add extra `ct_run` options by defining the `CT_OPTS` -variable. For more information please see `erl -man ct_run`. - -You can run an individual test suite by using the special `ct-*` -targets. For example if you have a common_test suite named `spdy` -and you want to run only this suite and not the others, you can -use the `make ct-spdy` command. - -Dialyzer plugin ---------------- - -This plugin is available by default. It adds the following -targets: - -`plt` builds the PLT file for this application. - -`dialyze` runs Dialyzer. - -The PLT file is built in `./$(PROJECT).plt` by default. -You can override this location by setting the `DIALYZER_PLT` -variable. - -The `PLT_APPS` variable lists the applications that will be -included in the PLT file. There is no need to specify `erts`, -`kernel`, `stdlib` or the project's dependencies here, as they -are automatically added. - -Dialyzer options can be modified by defining the `DIALYZER_OPTS` -variable. The directories to be analyzed can be overriden using -the `DIALYZER_DIRS` variable. It defaults to analyzing source -files recursively found in `src/`. For more information please -see `erl -man dialyzer`. - -EDoc plugin ------------ - -This plugin is available by default. - -EDoc options can be specified in Erlang format by defining -the `EDOC_OPTS` variable. For more information please see -`erl -man edoc`. - -Elvis plugin ------------- - -This plugin is available by default. It adds the following -target: - -`elvis` runs Elvis style checker for this application. - -The `ELVIS_CONFIG` variable specifies the location of the -configuration file which holds the rules to be applied. -If there's no `elvis.config` file the default one will be -downloaded. When the `ELVIS` variable points to a non-existing -file then the `elvis` executable will be downloaded as well. -Any other option should go in the `ELVIS_OPTS` variable. - -ErlyDTL plugin --------------- - -This plugin is available by default. It adds automatic -compilation of ErlyDTL templates found in `templates/*.dtl` -or any subdirectory. - -By default it ignores names of subdirectories and compiles -`a/b/templatename.dtl` into `templatename_dtl.beam`. To include -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 --------------- - -This plugin is available by default. It adds the following -target: - -`escript` which creates a shell-executable archive named -the same as your `$(PROJECT)`, containing the following files -from your application and its dependencies: - -* `*.beam` -* contents of `priv/` -* `sys.config` for your application - -There are a number of optional configuration parameters: - -* `ESCRIPT_NAME` if a different output file is required -* `ESCRIPT_COMMENT` to alter the comment line in the escript header -* `ESCRIPT_BEAMS` for the paths searched for `*.beam` files to include -* `ESCRIPT_SYS_CONFIG` defaults to `rel/sys.config` -* `ESCRIPT_EMU_ARGS` for the parameters used to start the VM -* `ESCRIPT_SHEBANG` for the line used by your shell to start `escript` -* `ESCRIPT_STATIC` for non-beam directories to be included as well - -Refer to http://www.erlang.org/doc/man/escript.html for -more information on `escript` functionality in general. - -EUnit plugin ------------- - -This plugin is available by default. It adds the following -target: - -`eunit` which runs all the EUnit tests found in `ebin` or -the test directory specified in `TEST_DIR`. - -`EUNIT_OPTS` can be used to specify EUnit-specific options -(e.g. `verbose`) that will be used when calling -`eunit:test/2`. This configuration parameter is empty -by default.. Note that EUnit options are specified as -a comma-separated list of options. - -Relx plugin ------------ - -This plugin is available by default. - -You can change the location of the `relx` executable -(downloaded automatically) by defining the `RELX` variable, -and the location of the configuration file by defining -the `RELX_CONFIG` variable. - -The URL used to download `relx` can be overriden by setting -the `RELX_URL` variable. - -You can change the generated releases location by setting -the `RELX_OUTPUT_DIR` variable. Any other option should go -in the `RELX_OPTS` variable. - -If `RELX_OPTS` includes the `-o` option (instead of using -`RELX_OUTPUT_DIR`, then that option must be the first in -the list, otherwise erlang.mk will fail to find it and -will not be able to clean up the release directory. - -Shell plugin ------------- - -This plugin is available by default. - -`SHELL_DEPS` adds the specified modules only when `make shell` -or `make build-shell-deps` is run. For example, to include a module -reloader and TDD test runner, one might add `SHELL_DEPS = tddreloader` -to the Makefile. - -You can add extra `erl` options by defining the `SHELL_OPTS` variable. -For more information please see `erl -man erl`. - -`SHELL_PATH` adds paths to the shell's library search path. By default -this option sets the paths to `-pa ../$(PROJECT)/ebin $(DEPS_DIR)/*/ebin`. - -Triq plugin ------------ - -This plugin is available by default. It adds the following -target: - -`triq` will check all the properties found in `ebin` or -the test directory specified in `TEST_DIR`. - -You can use the `t` variable to give a specific module -or function to run, for example: - -``` bash -$ make triq t=cow_http_hd -``` - -Or: - -``` bash -$ make triq t=cow_http_hd:prop_parse_accept -``` - -Xref plugin ------------- - -This plugin is available by default. It adds the following -target: - -`xref` Erlang Xref Runner (inspired in rebar's rebar_xref) - -The `XREF_CONFIG` variable specifies the location of the -configuration file which holds the checks to be applied. -If there is no `xref.config` all `xref` checks will be -applied to the binaries located in the `/ebin` directory. - -Contributing ------------- - -You can contribute by providing feedback, creating patches, -adding packages to the index or new features as plugins. - -To add a package to the index, please use the `pkg_add.sh` -script. To use it, first fork the repository, then please -follow the example below: - -``` bash -$ git clone https://github.com/$YOURUSERNAME/erlang.mk -$ cd erlang.mk -$ ./pkg_add.sh cowboy git https://github.com/ninenines/cowboy 1.0.0 http://ninenines.eu "Small, fast and modular HTTP server." -$ git push origin master -``` - -Then open a pull request. The arguments given to the script -are, in order, the project name, the download method used, -the repository URL, the commit/tag/branch/version to pull, -a link to the package's website and finally its description. -Make sure to put double quotes around the description. - -You can submit as many packages as you want in one pull -request as long as you follow the instructions above. - -For patches or plugins, you have to edit the `core/*.mk` -or `plugins/*.mk` files. If you submit a new plugin, you also -need to add it to the `build.config` file. - -Make sure to keep the commit title short, to have a single -commit per package/feature/fix and you're good to submit -a pull request! And again, please don't forget to run make -and to commit the updated erlang.mk or index files along -with your other changes. Thanks! - -Support -------- - - * Official IRC Channel: #ninenines on irc.freenode.net - * [Mailing Lists](http://lists.ninenines.eu) |