Osmocom Top-level Makefile and dev tools
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Neels Hofmeyr 19d8a0d9f2 add no_systemd.opts 4 years ago
net fill_config.py: fix missing config file error msg 4 years ago
src e: rewrite in python for proper arg handling 5 years ago
.gitignore add src scripts 6 years ago
2G.deps fix some deps: sgsn->ggsn and msc->libsmpp34 5 years ago
3G+2G.deps fix some deps: sgsn->ggsn and msc->libsmpp34 5 years ago
README add template-configs, script to launch network 5 years ago
all-tests.opts all-tests.opts: add osmo-mgw, osmo-hlr external tests 5 years ago
default.opts add openbsc.deps to allow building legacy openbsc.git as well 5 years ago
gen_makefile.py gen_makefile: add ALL config opts keyword 4 years ago
iu.opts add openbsc.deps to allow building legacy openbsc.git as well 5 years ago
no_systemd.opts add no_systemd.opts 4 years ago
openbsc.deps add openbsc.deps to allow building legacy openbsc.git as well 5 years ago
osmo-uninstall.sh add osmo-uninstall.sh 6 years ago
sanitize.opts add openbsc.deps to allow building legacy openbsc.git as well 5 years ago
transcoding.opts fix transcoding.opts: osmo-bsc also needs it ATM 6 years ago
werror.opts add werror.opts using 'configure --enable-werror' 5 years ago



* 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).

=== 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' 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

=== gen_makefile.py

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?)
and a choice of configure options.


Full 2G and 3G support:

./gen_makefile.py 3G+2G.deps default.opts iu.opts -m make
cd make

2G only, and a custom dir name of 'make-2G':

./gen_makefile.py 2G.deps default.opts -m make-2G
cd make-2G

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

It is also easily possible to keep sources and build trees in various
configurations, see the command line options of ./gen_makefile.py.

=== Build Environment

For dependencies, see the "External dependencies" on:


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:

export LD_LIBRARY_PATH="/usr/local/lib"


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"

=== osmo-uninstall.sh

Remove osmocom built binaries and headers from given prefix,
default is /usr/local.

=== src/*

Find other useful scripts in src/, see src/README.