diff options
Diffstat (limited to 'HOWTO/INSTALL.md')
-rw-r--r-- | HOWTO/INSTALL.md | 62 |
1 files changed, 26 insertions, 36 deletions
diff --git a/HOWTO/INSTALL.md b/HOWTO/INSTALL.md index 3dde37bfec..533960ef99 100644 --- a/HOWTO/INSTALL.md +++ b/HOWTO/INSTALL.md @@ -297,12 +297,29 @@ Some of the available `configure` options are: you can build using a fallback implementation based on mutexes or spinlocks. Performance of the SMP runtime system will however suffer immensely without an implementation for native atomic memory accesses. +* `--enable-static-{nifs,drivers}` - To allow usage of nifs and drivers on OSs + that do not support dynamic linking of libraries it is possible to statically + link nifs and drivers with the main Erlang VM binary. This is done by passing + a comma seperated list to the archives that you want to statically link. e.g. + `--enable-static-nifs=/home/$USER/my_nif.a`. The path has to be absolute and the + name of the archive has to be the same as the module, i.e. `my_nif` in the + example above. This is also true for drivers, but then it is the driver name + that has to be the same as the filename. You also have to define + `STATIC_ERLANG_{NIF,DRIVER}` when compiling the .o files for the nif/driver. + If your nif/driver depends on some other dynamic library, you now have to link + that to the Erlang VM binary. This is easily achived by passing `LIBS=-llibname` + to configure. * `--without-$app` - By default all applications in Erlang/OTP will be included in a release. If this is not wanted it is possible to specify that Erlang/OTP should be compiled without that applications, i.e. `--without-wx`. There is no automatic dependency handling inbetween applications. So if you disable an application that another depends on, you also have to disable the dependant application. +* `--enable-dirty-schedulers` - Enable the **experimental** dirty schedulers + functionality. Note that the dirty schedulers functionality is experimental, + and **not supported**. This functionality **will** be subject to backward + incompatible changes. Note that you should **not** enable the dirty scheduler + functionality on production systems. It is only provided for testing. If you or your system has special requirements please read the `Makefile` for additional configuration information. @@ -315,7 +332,7 @@ Erlang/OTP system which you can try by typing `bin/erl`. This should start up Erlang/OTP and give you a prompt: $ bin/erl - Erlang %OTP-REL% (erts-%ERTS-VSN%) [source] [smp:4:4] [rq:4] [async-threads:0] [kernel-poll:false] + Erlang/OTP %OTP-REL% [erts-%ERTS-VSN%] [source] [smp:4:4] [async-threads:0] [kernel-poll:false] Eshell V%ERTS-VSN% (abort with ^G) 1> _ @@ -668,39 +685,11 @@ If you develop linked-in drivers (shared library) you need to link using include `-fno-common` in `CFLAGS` when compiling. Use `.so` as the library suffix. -Use the `--enable-darwin-64bit` configure flag to build a 64-bit -binaries on Mac OS X. +Install `Xcode` from the `AppStore` if it is not already installed. -Building a fast Erlang VM on Mac OS Lion ----------------------------------------- - -Starting with Xcode 4.2, Apple no longer includes a "real" `gcc` -compiler (not based on the LLVM). Building with `llvm-gcc` or `clang` -will work, but the performance of the Erlang run-time system will not -be the best possible. - -Note that if you have `gcc-4.2` installed and included in `PATH` -(from a previous version of Xcode), `configure` will automatically -make sure that `gcc-4.2` will be used to compile `beam_emu.c` -(the source file most in need of `gcc`). - -If you don't have `gcc-4.2.` and want to build a run-time system with -the best possible performance, do like this: - -Install Xcode from the AppStore if it is not already installed. - -If you have Xcode 4.3, or later, you will also need to download +If you have Xcode 4.3, or later, you will also need to download "Command Line Tools" via the Downloads preference pane in Xcode. -Some tools may still be lacking or out-of-date, we recommend using -[Homebrew](https://github.com/mxcl/homebrew/wiki/installation) or -Macports to update those tools. - -Install MacPorts (<http://www.macports.org/>). Then: - - $ sudo port selfupdate - $ sudo port install gcc45 +universal - ### Building with wxErlang ### If you want to build the `wx` application, you will need to get wxWidgets-3.0 (or later) @@ -708,13 +697,14 @@ If you want to build the `wx` application, you will need to get wxWidgets-3.0 (o or get it from github: $ git clone [email protected]:wxWidgets/wxWidgets.git -Be aware that the wxWidgets-3.0 is a new release of wxWidgets, it is not as matured +Be aware that the wxWidgets-3.0 is a new release of wxWidgets, it is not as matured as the old releases and the MacOsX port still lags behind the other ports. -Configure and build wxWidgets: +Configure and build wxWidgets (on Mavericks - 10.9): - $ ./configure --with-cocoa --prefix=/usr/local - % Optional version and static libs: --with-macosx-version-min=10.9 --disable-shared + $ ./configure --with-cocoa --prefix=/usr/local + or without support for old versions and with static libs + $ ./configure --with-cocoa --prefix=/usr/local --with-macosx-version-min=10.9 --disable-shared $ make $ sudo make install $ export PATH=/usr/local/bin:$PATH @@ -779,7 +769,7 @@ Copyright and License %CopyrightBegin% -Copyright Ericsson AB 1998-2013. All Rights Reserved. +Copyright Ericsson AB 1998-2014. All Rights Reserved. The contents of this file are subject to the Erlang Public License, Version 1.1, (the "License"); you may not use this file except in |