2018-08-22 15:32:21 +00:00
|
|
|
=== WHAT IS THIS?
|
|
|
|
|
|
|
|
* quickly build the entire Osmocom core network stack from source, with a
|
|
|
|
generated top-level makefile (see the rest of this README file below).
|
|
|
|
|
|
|
|
* quickly configure, launch and tear down an entire Osmocom core network on
|
|
|
|
your box (see net/README).
|
|
|
|
|
|
|
|
|
2018-01-06 20:20:28 +00:00
|
|
|
=== Quick Start
|
|
|
|
|
|
|
|
sudo apt install \
|
|
|
|
build-essential gcc g++ make automake autoconf libtool pkg-config \
|
|
|
|
libtalloc-dev libpcsclite-dev libortp-dev libsctp-dev libssl-dev libdbi-dev \
|
|
|
|
libdbd-sqlite3 libsqlite3-dev libpcap-dev libc-ares-dev libgnutls28-dev \
|
|
|
|
libsctp-dev sqlite3
|
|
|
|
|
|
|
|
./gen_makefile.py 3G+2G.deps default.opts iu.opts -I -m make
|
|
|
|
|
|
|
|
cd make
|
|
|
|
make
|
|
|
|
|
|
|
|
- 'make' will ask for sudo password to run 'make install' and 'ldconfig'.
|
|
|
|
To run non-interactively:
|
|
|
|
|
|
|
|
- 'make install':
|
|
|
|
chown $USER: /usr/local
|
|
|
|
Then call gen_makefile.py once without the -I option
|
|
|
|
|
|
|
|
- 'ldconfig':
|
|
|
|
echo "$USER ALL= NOPASSWD: /sbin/ldconfig" > /etc/sudoers.d/ldconfig
|
|
|
|
|
|
|
|
|
2017-08-22 22:13:33 +00:00
|
|
|
=== gen_makefile.py
|
|
|
|
|
2017-08-13 01:22:42 +00:00
|
|
|
This provides a set of top-level makefiles to build variants of the Osmocom
|
|
|
|
source trees. It is inteded for the core network components and related
|
|
|
|
projects, but works generically.
|
|
|
|
|
|
|
|
The idea is to have all your Osmocom git clones in ./src, while keeping one or
|
|
|
|
more separate build trees in ./make-*.
|
|
|
|
|
|
|
|
Run ./gen_makefile.py with a choice of projects (2G only or also 3G?)
|
2017-09-03 21:57:55 +00:00
|
|
|
and a choice of configure options.
|
2017-08-13 01:22:42 +00:00
|
|
|
|
2017-09-20 17:41:09 +00:00
|
|
|
|
2017-09-03 21:57:55 +00:00
|
|
|
Examples:
|
|
|
|
|
|
|
|
Full 2G and 3G support:
|
|
|
|
|
2017-12-10 12:39:08 +00:00
|
|
|
./gen_makefile.py 3G+2G.deps default.opts iu.opts -m make
|
|
|
|
cd make
|
|
|
|
make
|
2017-09-03 21:57:55 +00:00
|
|
|
|
2017-12-10 12:39:08 +00:00
|
|
|
2G only, and a custom dir name of 'make-2G':
|
2017-09-03 21:57:55 +00:00
|
|
|
|
2017-09-06 16:54:58 +00:00
|
|
|
./gen_makefile.py 2G.deps default.opts -m make-2G
|
2017-12-10 12:39:08 +00:00
|
|
|
cd make-2G
|
2017-08-13 01:22:42 +00:00
|
|
|
make
|
|
|
|
|
|
|
|
If you make modifications in one of the source trees, this Makefile will pick
|
|
|
|
it up, rebuild the project and also rebuild all dependencies (according to the
|
|
|
|
*.deps file the Makefile was generated from).
|
|
|
|
|
|
|
|
If you modify the *.deps or *.opts file, you can easily run 'make regen' in a
|
|
|
|
make-* subdir to regenerate the Makefile from the same files.
|
|
|
|
|
|
|
|
In your make-* subdir there are empty status files that are touched for every
|
|
|
|
completed make target. From these, 'make' can detect what needs to be rebuilt.
|
|
|
|
You can manually remove them to force a rebuild of a specific target.
|
|
|
|
|
|
|
|
For example, if you 'rm .make.libosmocore.autoconf', libosmocore and all
|
|
|
|
projects depending on libosmocore will be rebuilt from scratch.
|
|
|
|
|
|
|
|
For more details on the *.opts and *.deps syntax, read the docs at the top of
|
|
|
|
./gen_makefile.py.
|
|
|
|
|
|
|
|
It is also easily possible to keep sources and build trees in various
|
|
|
|
configurations, see the command line options of ./gen_makefile.py.
|
2017-08-22 22:13:33 +00:00
|
|
|
|
|
|
|
|
2018-11-19 01:54:11 +00:00
|
|
|
=== Install in /usr
|
|
|
|
|
|
|
|
By default, the Osmocom install prefix is /usr/local, while (currently) the
|
|
|
|
default systemd *.service files expect binaries installed in /usr/bin. To
|
|
|
|
install in /usr instead, use prefix_usr.opts, which sets --prefix=/usr.
|
|
|
|
|
|
|
|
|
2017-10-01 22:26:12 +00:00
|
|
|
=== Build Environment
|
|
|
|
|
2017-12-10 12:39:08 +00:00
|
|
|
For dependencies, see the "External dependencies" on:
|
2017-10-01 22:26:12 +00:00
|
|
|
|
|
|
|
https://osmocom.org/projects/cellular-infrastructure/wiki/Build_from_Source
|
|
|
|
|
2017-12-10 12:39:08 +00:00
|
|
|
If /usr/local/ is not writable by your user, pass the --sudo-make-install
|
|
|
|
option to gen_makefile.py above (a custom --prefix is not yet supported).
|
|
|
|
|
|
|
|
If your system doesn't have this by default, you will need:
|
2017-10-01 22:26:12 +00:00
|
|
|
|
|
|
|
export LD_LIBRARY_PATH="/usr/local/lib"
|
|
|
|
|
|
|
|
and
|
|
|
|
|
|
|
|
export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig"
|
|
|
|
|
|
|
|
to your environment. To use the installed binaries after installation, also
|
|
|
|
|
|
|
|
export PATH="$PATH:/usr/local/bin"
|
|
|
|
|
|
|
|
|
2017-08-22 22:13:33 +00:00
|
|
|
=== osmo-uninstall.sh
|
|
|
|
|
|
|
|
Remove osmocom built binaries and headers from given prefix,
|
|
|
|
default is /usr/local.
|
2017-09-04 02:32:21 +00:00
|
|
|
|
|
|
|
|
|
|
|
=== src/*
|
|
|
|
|
|
|
|
Find other useful scripts in src/, see src/README.
|