-
Notifications
You must be signed in to change notification settings - Fork 38
The Jungle of Erlang code
gebi/jungerl
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
How to use the Jungerl ====================================================================== Simple! You just do 'make' to build all the erlang programs. If you want, you can add the bin/ directory to your $PATH, and use the useful programs in there. One is 'jerl', a simple wrapper around 'erl' that adds all the Jungerl applications to the code path. If a program is giving you trouble, just put an empty file called SKIP in its top-level directory. For example, if you want to skip the 'tuntap' program, you can do: touch lib/tuntap/SKIP If you want to compile only one program or library, you can just do 'make conf' and then type make in the lib/PROGRAMNAME directory of your choice. How to add an application to the Jungerl ====================================================================== Each application has its own directory called lib/<appname>. The absolute minimum requirement for an application is to have a Makefile in the lib/<appname> directory with two targets: 'all' should build the program. 'clean' should delete any object files. Realistically, your lib/<appname>/ dir should also have any of these subdirectories that are appropriate: src/ containing erlang sources ebin/ for putting compiled beam files c_src/ containing C sources priv/ containing files you want at runtime (e.g. built from c_src) doc/ (not sure what this is for..) Once you have created your application, you should edit the 'lib/' directory Makefile like this: Add your <appname> to the "LIBS" variable. If you depend on other applications, add a line that says so. (These are down near the bottom.) Note that Applications in the Jungerl should be compatible with the latest released version of Erlang/OTP! Makefile Helpers ---------------------------------------------------------------------- The support/ directory contains a couple of useful include files for your Makefiles: subdirs.mk: Intended for your lib/<appname>/ directory, this defines targets for 'all' and 'clean' that just cd into $(SUBDIRS) (by default c_src and src) and does the same "make" in each of them. include.mk: This defines a bunch of useful things for building C and Erlang programs. For C it has 'configure'-detected CC and CFLAGS variables, and ERL_C_INCLUDE_DIR for <prefix>/lib/erlang/usr/include/ (e.g. for writing drivers) For Erlang it has a 'configure'-detected ERLC, an automatically-detected list of beam files to build (../ebin/*.beam for all *.erl files) called ERL_OBJECTS, and automatically-detected list of headers they depend on (*.hrl and ../include/*.hrl) called ERL_HEADERS, and an implicit rule for building ../ebin/*.beam from *.erl. That probably wasn't very clear, but if you look at how the 'tuntap' program's Makefiles are done then it should be obvious!