View Source make (tools v3.6)
A Make Utility for Erlang
The module make provides a set of functions similar to the UNIX type Make
functions.
Emakefile
make:all/0,1 and make:files/1,2 first looks for
{emake, Emake} in options, then in the current working directory for a file
named Emakefile. If present Emake should contain elements like this:
Modules.
{Modules,Options}.Modules is an atom or a list of atoms. It can be
- a module name, e.g.
file1 - a module name in another directory, e.g.
'../foo/file3' - a set of modules specified with a wildcards, e.g.
'file*' - a wildcard indicating all modules in current directory, i.e.
'*' - a list of any of the above, e.g.
['file*','../foo/file3','File4']
Options is a list of compiler options.
Emakefile is read from top to bottom. If a module matches more than one entry,
the first match is valid. For example, the following Emakefile means that
file1 shall be compiled with the options [debug_info,{i,"../foo"}], while
all other files in the current directory shall be compiled with only the
debug_info flag.
{'file1',[debug_info,{i,"../foo"}]}.
{'*',[debug_info]}.See Also
Summary
Functions
This function determines the set of modules to compile and the compile options
to use, by first looking for the emake make option, if not present reads the
configuration from a file named Emakefile (see below). If no such file is
found, the set of modules to compile defaults to all modules in the current
working directory.
Equivalent to files/2
files/1,2 does exactly the same thing as all/0,1 but for the
specified ModFiles, which is a list of module or file names. The file
extension .erl may be omitted.
Functions
-spec all() -> up_to_date | error.
Equivalent to all/1
-spec all(Options) -> up_to_date | error when Options :: [Option], Option :: noexec | load | netload | {emake, Emake} | compile:option(), Emake :: [EmakeElement], EmakeElement :: Modules | {Modules, [compile:option()]}, Modules :: atom() | [atom()].
This function determines the set of modules to compile and the compile options
to use, by first looking for the emake make option, if not present reads the
configuration from a file named Emakefile (see below). If no such file is
found, the set of modules to compile defaults to all modules in the current
working directory.
Traversing the set of modules, it then recompiles every module for which at least one of the following conditions apply:
- there is no object file, or
- the source file has been modified since it was last compiled, or,
- an include file has been modified since the source file was last compiled.
As a side effect, the function prints the name of each module it tries to
compile. If compilation fails for a module, the make procedure stops and error
is returned.
Options is a list of make- and compiler options. The following make options
exist:
noexec
No execution mode. Just prints the name of each module that needs to be compiled.load
Load mode. Loads all recompiled modules.netload
Net load mode. Loads all recompiled modules on all known nodes.{emake, Emake}
Rather than reading theEmakefilespecify configuration explicitly.
All items in Options that are not make options are assumed to be compiler
options and are passed as-is to compile:file/2. Options defaults to [].
-spec files(ModFiles) -> up_to_date | error when ModFiles :: [(Module :: module()) | (File :: file:filename())].
Equivalent to files/2
-spec files(ModFiles, Options) -> up_to_date | error when ModFiles :: [(Module :: module()) | (File :: file:filename())], Options :: [Option], Option :: noexec | load | netload | compile:option().
files/1,2 does exactly the same thing as all/0,1 but for the
specified ModFiles, which is a list of module or file names. The file
extension .erl may be omitted.
The Emakefile (if it exists) in the current directory is searched for compiler
options for each module. If a given module does not exist in Emakefile or if
Emakefile does not exist, the module is still compiled.