diff --git a/README.md b/README.md index 2a55742..c328bbf 100644 --- a/README.md +++ b/README.md @@ -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"} -]}. \ No newline at end of file +]}. +``` \ No newline at end of file