Permalink
Switch branches/tags
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
52 lines (35 sloc) 2.05 KB

Installing Duktape as a system library

Duktape can be installed as a system library, e.g. as part of a Unix distribution, as follows:

  • Run tools/configure.py to create prepared Duktape header and source files with options suitable for the target system. As a general rule you should use the defaults unless they conflict with the target system.
    • On some systems you may need to override byte order, alignment requirements, Date built-in provider, etc.
    • When compiling as a Windows DLL use the --dll option which ensures symbol visibility declspec attributes are used correctly.
    • See http://wiki.duktape.org/Configuring.html for more details and examples.
  • Build a system specific installation package with:
    • duktape.c compiled into a static/dynamic library, installed into system library paths.
    • duktape.h and duk_config.h, installed into system include paths.
  • A user application then simply ensures that:
    • The system include path containing duktape.h and duk_config.h is in the include path.
    • The system library path containing the Duktape static/dynamic library is in the library path.
    • Link with the the static/dynamic Duktape library.
    • Ensure that the standard math library is linked (-lm).

There a few limitations in this approach:

  • A user application cannot use custom config options because the active options are encapsulated in duk_config.h and affect the compilation of the shared Duktape library. This issue exists with all libraries with custom features affecting library compilation but may be emphasized for Duktape because there are a lot of config options.
  • Technically the Duktape library and the user application should be compiled with the same compiler. When using different compilers, basic types or struct alignment rules (among other things) may differ. In practice it's unlikely you'll run into problems, at least when using mainline compilers like gcc and clang.