|
|
@ -17,77 +17,78 @@ default_env |
|
|
|
|
|
|
|
After that eNpc should read your old rebar.config `port_specs` and `port_env` settings as expected (it is rebar2's port compiler after all...). |
|
|
|
|
|
|
|
%% Supported configuration variables: |
|
|
|
%% |
|
|
|
%% * port_specs - Erlang list of tuples of the forms |
|
|
|
%% {ArchRegex, TargetFile, Sources, Options} |
|
|
|
%% {ArchRegex, TargetFile, Sources} |
|
|
|
%% {TargetFile, Sources} |
|
|
|
%% |
|
|
|
%% Note that if you want to use any of the rebar3 variables |
|
|
|
%% below you must MUST use a ${}-style to get the expansion |
|
|
|
%% to work. e.g. to expand REBAR_DEPS_DIR, do something like: |
|
|
|
%% |
|
|
|
%% {port_specs, [{"priv/nif.so", |
|
|
|
%% ["c_src/nif.c", |
|
|
|
%% "${REBAR_DEPS_DIR}/foo/bar.c"]}]}. |
|
|
|
%% |
|
|
|
%% This is a _very_ good way to be able to use your code both |
|
|
|
%% as a top level app and a dependency. |
|
|
|
%% |
|
|
|
%% CAVEAT! Not using {} is broken for the moment. |
|
|
|
%% |
|
|
|
%% * port_env - Erlang list of key/value pairs which will control |
|
|
|
%% the environment when running the compiler and linker. |
|
|
|
%% Variables set in the surrounding system shell are taken |
|
|
|
%% into consideration when expanding port_env. Note that |
|
|
|
%% for ERL_LDFLAGS, -lerl_interface is used for only those |
|
|
|
%% Erlang/OTP versions where it exists (those prior to |
|
|
|
%% version 23.0). |
|
|
|
%% |
|
|
|
%% By default, the following variables are defined: |
|
|
|
%% CC - C compiler |
|
|
|
%% CXX - C++ compiler |
|
|
|
%% CFLAGS - C compiler |
|
|
|
%% CXXFLAGS - C++ compiler |
|
|
|
%% LDFLAGS - Link flags |
|
|
|
%% ERL_CFLAGS - default -I paths for erts and ei |
|
|
|
%% ERL_LDFLAGS - default -L and -lerl_interface -lei |
|
|
|
%% DRV_CFLAGS - flags that will be used for compiling |
|
|
|
%% DRV_LDFLAGS - flags that will be used for linking |
|
|
|
%% EXE_CFLAGS - flags that will be used for compiling |
|
|
|
%% EXE_LDFLAGS - flags that will be used for linking |
|
|
|
%% ERL_EI_LIBDIR - ei library directory |
|
|
|
%% DRV_CXX_TEMPLATE - C++ command template |
|
|
|
%% DRV_CC_TEMPLATE - C command template |
|
|
|
%% DRV_LINK_TEMPLATE - C Linker command template |
|
|
|
%% DRV_LINK_CXX_TEMPLATE - C++ Linker command template |
|
|
|
%% EXE_CXX_TEMPLATE - C++ command template |
|
|
|
%% EXE_CC_TEMPLATE - C command template |
|
|
|
%% EXE_LINK_TEMPLATE - C Linker command template |
|
|
|
%% EXE_LINK_CXX_TEMPLATE - C++ Linker command template |
|
|
|
%% |
|
|
|
%% Note that if you wish to extend (vs. replace) these variables, |
|
|
|
%% you MUST include a shell-style reference in your definition. |
|
|
|
%% e.g. to extend CFLAGS, do something like: |
|
|
|
%% |
|
|
|
%% {port_env, [{"CFLAGS", "$CFLAGS -MyOtherOptions"}]} |
|
|
|
%% |
|
|
|
%% It is also possible to specify platform specific options |
|
|
|
%% by specifying a triplet where the first string is a regex |
|
|
|
%% that is checked against Erlang's system architecture string. |
|
|
|
%% e.g. to specify a CFLAG that only applies to x86_64 on linux |
|
|
|
%% do: |
|
|
|
%% |
|
|
|
%% {port_env, [{"x86_64.*-linux", "CFLAGS", |
|
|
|
%% "$CFLAGS -X86Options"}]} |
|
|
|
%% |
|
|
|
%% Cross-arch environment variables to configure toolchain: |
|
|
|
%% GET_ARCH to set the tool chain name to use |
|
|
|
%% GET_ARCH_WORDSIZE (optional - to determine word size)" |
|
|
|
%% word size is 32 |
|
|
|
%% GET_ARCH_VSN (optional - " |
|
|
|
%% l version of CC/CXX is requested), |
|
|
|
### |
|
|
|
``` |
|
|
|
Supported configuration variables: |
|
|
|
* port_specs - Erlang list of tuples of the forms |
|
|
|
{ArchRegex, TargetFile, Sources, Options} |
|
|
|
{ArchRegex, TargetFile, Sources} |
|
|
|
{TargetFile, Sources} |
|
|
|
|
|
|
|
Note that if you want to use any of the rebar3 variables |
|
|
|
below you must MUST use a ${}-style to get the expansion |
|
|
|
to work. e.g. to expand REBAR_DEPS_DIR, do something like: |
|
|
|
|
|
|
|
{port_specs, [{"priv/nif.so", |
|
|
|
["c_src/nif.c", |
|
|
|
"${REBAR_DEPS_DIR}/foo/bar.c"]}]}. |
|
|
|
|
|
|
|
This is a _very_ good way to be able to use your code both |
|
|
|
as a top level app and a dependency. |
|
|
|
|
|
|
|
CAVEAT! Not using {} is broken for the moment. |
|
|
|
|
|
|
|
* port_env - Erlang list of key/value pairs which will control |
|
|
|
the environment when running the compiler and linker. |
|
|
|
Variables set in the surrounding system shell are taken |
|
|
|
into consideration when expanding port_env. Note that |
|
|
|
for ERL_LDFLAGS, -lerl_interface is used for only those |
|
|
|
Erlang/OTP versions where it exists (those prior to |
|
|
|
version 23.0). |
|
|
|
|
|
|
|
By default, the following variables are defined: |
|
|
|
CC - C compiler |
|
|
|
CXX - C++ compiler |
|
|
|
CFLAGS - C compiler |
|
|
|
CXXFLAGS - C++ compiler |
|
|
|
LDFLAGS - Link flags |
|
|
|
ERL_CFLAGS - default -I paths for erts and ei |
|
|
|
ERL_LDFLAGS - default -L and -lerl_interface -lei |
|
|
|
DRV_CFLAGS - flags that will be used for compiling |
|
|
|
DRV_LDFLAGS - flags that will be used for linking |
|
|
|
EXE_CFLAGS - flags that will be used for compiling |
|
|
|
EXE_LDFLAGS - flags that will be used for linking |
|
|
|
ERL_EI_LIBDIR - ei library directory |
|
|
|
DRV_CXX_TEMPLATE - C++ command template |
|
|
|
DRV_CC_TEMPLATE - C command template |
|
|
|
DRV_LINK_TEMPLATE - C Linker command template |
|
|
|
DRV_LINK_CXX_TEMPLATE - C++ Linker command template |
|
|
|
EXE_CXX_TEMPLATE - C++ command template |
|
|
|
EXE_CC_TEMPLATE - C command template |
|
|
|
EXE_LINK_TEMPLATE - C Linker command template |
|
|
|
EXE_LINK_CXX_TEMPLATE - C++ Linker command template |
|
|
|
|
|
|
|
Note that if you wish to extend (vs. replace) these variables, |
|
|
|
you MUST include a shell-style reference in your definition. |
|
|
|
e.g. to extend CFLAGS, do something like: |
|
|
|
|
|
|
|
{port_env, [{"CFLAGS", "$CFLAGS -MyOtherOptions"}]} |
|
|
|
|
|
|
|
It is also possible to specify platform specific options |
|
|
|
by specifying a triplet where the first string is a regex |
|
|
|
that is checked against Erlang's system architecture string. |
|
|
|
e.g. to specify a CFLAG that only applies to x86_64 on linux |
|
|
|
do: |
|
|
|
|
|
|
|
{port_env, [{"x86_64.*-linux", "CFLAGS", |
|
|
|
"$CFLAGS -X86Options"}]} |
|
|
|
|
|
|
|
Cross-arch environment variables to configure toolchain: |
|
|
|
GET_ARCH to set the tool chain name to use |
|
|
|
GET_ARCH_WORDSIZE (optional - to determine word size)" |
|
|
|
word size is 32 |
|
|
|
GET_ARCH_VSN (optional - " |
|
|
|
l version of CC/CXX is requested), |
|
|
|
|
|
|
|
|
|
|
|
{port_specs, [ |
|
|
@ -119,4 +120,5 @@ After that eNpc should read your old rebar.config `port_specs` and `port_env` se |
|
|
|
{"darwin10.*-32$", "LDFLAGS", "-arch i386"}, |
|
|
|
|
|
|
|
{"win32", "CXXFLAGS", "$CXXFLAGS /O2 /DNDEBUG"} |
|
|
|
]}. |
|
|
|
]}. |
|
|
|
``` |