Osmocom Top-level Makefile and dev tools
Go to file
Neels Hofmeyr 9f7ac17795 default.opts: drop obsolete configure options for osmo-bsc
Change-Id: I298542b7f97cfca104f363ee3d04b98455ccf5c8
2017-12-06 00:30:39 +01:00
src g: use python to pass args transparently 2017-11-21 13:03:10 +01:00
.gitignore add src scripts 2017-08-22 15:58:51 +02:00
2G.deps 2G deps: add missing dep sgsn -> sccp 2017-09-09 17:33:17 +02:00
3G+2G.deps use osmo-ggsn.git, no longer openggsn 2017-09-07 00:51:30 +02:00
README README: add deps link and env vars hint 2017-10-02 00:26:12 +02:00
all-tests.opts all-tests.opts: add osmo-mgw, osmo-hlr external tests 2017-09-26 13:55:07 +02:00
compile_warnings_as_errors.opts add compile_warnings_as_errors.opts 2017-11-01 22:06:59 +01:00
default.opts default.opts: drop obsolete configure options for osmo-bsc 2017-12-06 00:30:39 +01:00
gen_makefile.py drop .version on autoconf step 2017-11-14 09:43:27 +01:00
iu.opts Revert "move iu.opts to no-iu.opts, change to --disable-iu" 2017-09-06 18:57:30 +02:00
osmo-uninstall.sh add osmo-uninstall.sh 2017-08-23 00:13:33 +02:00
sanitize.opts add sanitize.opts 2017-11-21 13:02:18 +01:00
transcoding.opts fix transcoding.opts: osmo-bsc also needs it ATM 2017-08-22 19:34:02 +02:00

README

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

For the clone step to work, you must either provide the --url argument to
gen_makefile like
  ./gen_makefile --url git://git.osmocom.org
OR add an SSH config to reach gerrit.osmocom.org as ssh://go; add this to your
~/.ssh/config:
  host go
  hostname gerrit.osmocom.org
  port 29418


Examples:

Full 2G and 3G support:

  ./gen_makefile.py --url=git://git.osmocom.org 3G+2G.deps default.opts iu.opts

2G only (requires to pass no-iu.opts), and a custom dir name of 'make-2G':

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

This generates a new dir containing a Makefile. When you run make in it, this
will clone the source trees (if not present yet) and build all of them in the
right order:

  cd make-3G+2G-default+iu
  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.


=== Build Environment

For dependencies, see

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

Furthermore, note that the makefiles by default install to /usr/local/*,
so if your system doesn't have this by default, you should probably add

  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.