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


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


=== 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 choice of configure options.


Examples:

CN with full 2G and 3G support:

  ./gen_makefile.py default.opts iu.opts -m make
  cd make
  make cn

Other make targets exist for specific use cases:

  - 'usrp':
    Build the CN, OsmoBSC, OsmoBTS and OsmoTRX (default, e.g. when connecting
    to an USRP)

  - 'cn-bsc':
    Build the CN and OsmoBSC (e.g. when connecting to an external sysmoBTS)

  - 'osmo-msc':
    Build only the OsmoMSC project and its dependencies (this can be used for
    any project in all.deps).

  - '.make.osmo-ttcn3-hacks.clone'
    Clone the osmo-ttcn3-hacks git repository (it cannot be built by osmo-dev,
    but cloning it is still useful.)

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
all.deps).

If you modify the all.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 all.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.


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


=== Systemd Service Files

If you encounter problems installing *.service files, no_systemd.opts may help:

Systemd recommends installing service files in the distribution's single
service file location; that may sound sane, but if that location is
/lib/systemd/system, that means even a --prefix=/home/private/prefix ends up
trying to install service files system-wide in /lib/systemd/system, making all
attempts to install to a user-writable location fail.

no_systemd.opts disables installing *.service files.


=== Build Environment

For dependencies, see the "External dependencies" on:

  https://osmocom.org/projects/cellular-infrastructure/wiki/Build_from_Source

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"

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"


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


=== ttcn3/ttcn3.sh

Run a given testsuite with docker, so it behaves exactly the same as when
jenkins runs it [1], but use osmo-dev to build all related Osmocom components
and the testsuite, and mount them inside the docker containers. After building
the docker containers for the first time (which takes rather long), this gives
short test cycles: just modify something, run the script again and the relevant
objects will be built directly, already built objects do not need to be
rebuilt. (This is a big speed improvement over just using docker containers as
you don't need to push your sources to a git server first, have the docker
containers fetch the git sources and build the modified component from scratch
again.)

The docker containers are used, so we don't have to maintain a second set of
configs which works without docker (that was tried before, and found not to be
feasible).

Example usage:

  ./ttcn3/ttcn3.sh mgw
  IMAGE_SUFFIX=latest ./ttcn3/ttcn3.sh mgw

More about the testsuites:
https://osmocom.org/projects/cellular-infrastructure/wiki/Titan_TTCN3_Testsuites

[1] https://jenkins.osmocom.org/jenkins/view/TTCN3/

=== Troubleshooting

When using sanitize.opts, osmo-trx is not built with the address sanitizer
enabled. Linking a sanitizer-enabled libosmocore will not work.
