summaryrefslogtreecommitdiffstats
path: root/docs/en/erlang.mk/1/guide/ports.asciidoc
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2019-07-18 09:59:28 +0200
committerLoïc Hoguin <[email protected]>2019-07-18 10:08:46 +0200
commit136d443b5c38bee96f5d995dfea3629ef07564c3 (patch)
tree1d31540baebc43ca0b2dceeda212c44f5da7e7a8 /docs/en/erlang.mk/1/guide/ports.asciidoc
parente031713c0e8bd871248dbbbbdec1ea28609f4431 (diff)
downloadninenines.eu-136d443b5c38bee96f5d995dfea3629ef07564c3.tar.gz
ninenines.eu-136d443b5c38bee96f5d995dfea3629ef07564c3.tar.bz2
ninenines.eu-136d443b5c38bee96f5d995dfea3629ef07564c3.zip
Announce Ranch 2.0.0-rc.1
Adds Ranch 2.0 documentation and removes documentation for very old Cowboy and Ranch, along with Erlang.mk documentation which is available on its own website.
Diffstat (limited to 'docs/en/erlang.mk/1/guide/ports.asciidoc')
-rw-r--r--docs/en/erlang.mk/1/guide/ports.asciidoc134
1 files changed, 0 insertions, 134 deletions
diff --git a/docs/en/erlang.mk/1/guide/ports.asciidoc b/docs/en/erlang.mk/1/guide/ports.asciidoc
deleted file mode 100644
index 907ee366..00000000
--- a/docs/en/erlang.mk/1/guide/ports.asciidoc
+++ /dev/null
@@ -1,134 +0,0 @@
-[[ports]]
-== NIFs and port drivers
-
-Erlang.mk can not only build Erlang projects, but also the C code
-that some projects come with, like NIFs and port drivers.
-
-There are two ways to build the C code: using a custom Makefile,
-or making Erlang.mk do it directly. The C code will be built
-as needed when you run `make`.
-
-// @todo something for easier bootstrapping
-
-=== C source code location and Erlang environment
-
-The C source code should be located in the '$(C_SRC_DIR)' directory.
-It defaults to 'c_src/'. Should you need to modify it, all you
-need to do is to set the variable in your Makefile before including
-Erlang.mk:
-
-[source,make]
-C_SRC_DIR = $(CURDIR)/my_nif_source
-
-When this directory exists, Erlang.mk will automatically create a
-file named '$(C_SRC_ENV)'. This file defaults to '$(C_SRC_DIR)/env.mk'.
-This can also be changed:
-
-[source,make]
-C_SRC_ENV = $(C_SRC_DIR)/erlang_env.mk
-
-It contains a few variable definitions for the environment used for the build:
-
-`ERTS_INCLUDE_DIR`::
- Path to the ERTS include files ('erl_driver.h', 'erl_nif.h' and more).
-`ERL_INTERFACE_INCLUDE_DIR`::
- Path to the Erl_Interface include files ('ei.h' and related).
-`ERL_INTERFACE_LIB_DIR`::
- Path to the Erl_Interface static libraries.
-
-=== Using a custom Makefile
-
-Erlang.mk will automatically run `make` if it detects a Makefile
-in '$(C_SRC_DIR)/Makefile'.
-
-The Makefile should have at least two targets: a default target
-(which can be anything, for example `all`) which is invoked when
-building the C code, and a `clean` target invoked when cleaning
-it.
-
-You can include the 'env.mk' file to benefit from the Erlang
-environment detection:
-
-[source,make]
-include env.mk
-
-=== Using Erlang.mk directly
-
-You don't need to write a Makefile to build C source code, however.
-Erlang.mk comes with rules to build both shared libraries and
-executables, using the source files it finds in '$(C_SRC_DIR)'.
-
-By default, Erlang.mk will create a shared library. To change
-this and create an executable instead, put this in your Makefile
-before including Erlang.mk:
-
-[source,make]
-C_SRC_TYPE = executable
-
-The generated file name varies depending on the type of project
-you have (shared library or executable) and on the platform you
-build the project on.
-
-For shared libraries, the generated file name will be
-'$(C_SRC_OUTPUT)$(C_SRC_SHARED_EXTENSION)', with the default
-being '$(CURDIR)/priv/$(PROJECT)' followed by the extension:
-`.dll` on Windows, `.so` everywhere else.
-
-For executables, the generated file name is
-'$(C_SRC_OUTPUT)$(C_SRC_EXECUTABLE_EXTENSION)', with the same
-default except for the extension: `.exe` on Windows, and otherwise
-nothing.
-
-Erlang.mk sets appropriate compile and linker flags by default.
-These flags vary depending on the platform, and can of course
-be overriden.
-
-`CC`::
- The compiler to be used.
-`CFLAGS`::
- C compiler flags.
-`CXXFLAGS`::
- C++ compiler flags.
-`LDFLAGS`::
- Linker flags.
-`LDLIBS`::
- Libraries to link against.
-
-The source files are automatically gathered from the contents
-of '$(C_SRC_DIR)'. Erlang.mk looks for '.c', '.C', '.cc' and '.cpp'
-source files. You can define the variable `SOURCES` to manually
-list the files to compile.
-
-=== Propagating compile and linker flags to sub-Makefiles
-
-In some cases it might be necessary to propagate the flags
-you just defined to the sub-Makefiles of your local project.
-You generally can't just export those as this could impact
-the building of dependencies.
-
-Makefiles allow you to export variables for specific targets.
-When doing this, the variables will be exported only when
-this target runs, and not for other targets. It is therefore
-possible to export them when building the C code without
-impacting other build steps.
-
-By adding this to your Makefile all five variables will be
-made available to sub-Makefiles when building C code:
-
-[source,make]
-----
-app-c_src: export CC +=
-app-c_src: export CFLAGS +=
-app-c_src: export CPPFLAGS +=
-app-c_src: export LDFLAGS +=
-app-c_src: export LDLIBS +=
-----
-
-Appending an empty string to the existing value is necessary
-because Makefiles expect an assignment for target-specific
-exports. Alternatively you can set a new value:
-
-[source,make]
-----
-app-c_src: export CFLAGS = -O3
-----