# HG changeset patch # User Michael Spacefalcon # Date 1403568964 0 # Node ID aad742029813bb2ac4eee2dc1148808fa1a79e5f # Parent 6500e1817d9b6d901bc66e0e694b21ce80148631 doc/Compiling: everything except gsm-fw diff -r 6500e1817d9b -r aad742029813 doc/Compiling --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/doc/Compiling Tue Jun 24 00:16:04 2014 +0000 @@ -0,0 +1,67 @@ +There are 3 parts to the complete FreeCalypso software suite which are built +independently of each other: + +* The tools that run on a GNU/Linux PC or other host system are the most + straightforward: there is a top level Makefile (named Makefile.hosttools if + you looking at a development source snapshot, will be renamed to just + Makefile in packaged releases of the host tools) that coordinates building + and installing all of them. + +* The gsm-fw tree, which will eventually become our main GSM firmware, needs to + be built with a GNU cross-compiler toolchain for ARM7. This firmware can be + built for several different target devices and with different feature + configurations, hence there is no singular build for it - it's more like the + Linux kernel in terms of its build configuration management. + +* We also have a few utilities which need to be compiled to run on Calypso + targets, but which are not part of gsm-fw; they are gathered in the + target-utils tree. They are built with the same GNU toolchain for ARM7 as + gsm-fw, but don't have any fancy configuration system. + +Building and installing FreeCalypso host tools +============================================== + +If you are working with a packaged FC host tools release, just run 'make', then +'make install' as root. If you are working with a development source snapshot, +do 'make -f Makefile.hosttools' instead. + +The "standard" install directories are /usr/local/bin for binaries and +/usr/local/share/freecalypso for helper files. If you need to change these +paths to something else, you'll need to edit a bunch of individual component +Makefiles, and possibly also some source files like loadtools/defpath.c - +sorry, FreeCalypso is not GNU and does not use autotools. + +Building and installing the ARM7 toolchain +========================================== + +The current "official" GNU ARM toolchain for FreeCalypso consists of +binutils-2.21.1, gcc-4.5.4 and newlib-2.0.0 with a specific set of patches and +build configuration options. Build it as follows: + +1. Download these 3 source tarballs for the standard GNU+newlib components: + + binutils-2.21.1a.tar.bz2 + gcc-core-4.5.4.tar.bz2 + newlib-2.0.0.tar.gz + +2. Run the build+install.sh script in the toolchain directory. Read the + comments in the script first for the usage instructions. + +The toolchain thus built will need to be in your PATH before you can compile +gsm-fw or target-utils. + +Please note: the toolchain that is prescribed for FreeCalypso as above is +*believed* to be equivalent to the one used by OsmocomBB, but there are no +guarantees. Use any other toolchain at your own risk. + +Compiling target-utils +====================== + +Running 'make' in the target-utils tree with the ARM7 toolchain present in your +PATH will result in compalstage and loadagent being built; these are the two +components needed in order to use FreeCalypso loadtools. Run 'make install' to +install these target binaries in /usr/local/share/freecalypso, which is where +loadtools will look for them. + +Run 'make all' in target-utils to build some other components that aren't +really needed.