configure.ac: allow building without cloning submodules

The MS TRX was intentionally added [1] as an optional feature, which
requires a git submodule to be present in order to build libtrxcon.
This feature can be enabled by passing --with-mstrx to the configure.

But autoconf/automake is a mess.  Despite in the root Makefile.am we
are adding full submodule path to the SUBDIRS *conditionally*, the
configure script would still fail if the submodule is not fetched:

  Makefile.am:32: error: required directory
                         ./osmocom-bb/src/host/trxcon
                         does not exist

It would not even enter that directory if it's present, but somehow
it's still required to exist.  For the end user this means that
cloning the submodule becomes a *necessary* step in order to build
osmo-trx from source, even when the MS TRX is not really needed.

The fact that we're unconditionally requiring the submodule, which
is meant to be used by an optional feature feels wrong to me.  It's
also unusual for osmocom projects to require submodules, so it may
(and already did) cause build failures when cloning as usual.

Let's work this problem around by defining LIBTRXCON_DIR variable
in configure.ac and using it in the root Makefile.am.  If the MS
TRX is not enabled explicitly, make autoconf/automake happy by
assigning LIBTRXCON_DIR the submodule's root directory, which is
always present but empty if the submodule is not fetched.

Change-Id: I02ae2b37c82ae2f55e7d9bd92e226f2b8b023968
Related: [1] b7253c6fdc88a3e2e0c8b441dc3c34dfb1c15d24
Related: OS#5599, OS#5846
2 files changed
tree: 5f0e45c58b13d53be5e75bad066dbf7158ce2cc3
  1. CommonLibs/
  2. config/
  3. contrib/
  4. debian/
  5. doc/
  6. GSM/
  7. tests/
  8. Transceiver52M/
  9. utils/
  10. .checkpatch.conf
  11. .clang-format
  12. .gitignore
  13. .gitmodules
  14. .gitreview
  15. configure.ac
  16. COPYING
  17. git-version-gen
  18. LEGAL
  19. Makefile.am
  20. Makefile.common
  21. README.md
  22. TODO-RELEASE
README.md

About OsmoTRX

OsmoTRX is a software-defined radio transceiver that implements the Layer 1 physical layer of a BTS comprising the following 3GPP specifications:

  • TS 05.01 "Physical layer on the radio path"
  • TS 05.02 "Multiplexing and Multiple Access on the Radio Path"
  • TS 05.04 "Modulation"
  • TS 05.10 "Radio subsystem synchronization"

OsmoTRX is originally based on the transceiver code from the OpenBTS project, but setup to operate independently with the purpose of using with non-OpenBTS software and projects, specifically within the Osmocom stack. Used together with OsmoBTS you can get a pretty standard GSM BTS with Abis interface as per the relevant 3GPP specifications.

Homepage

The official homepage of the project is https://osmocom.org/projects/osmotrx/wiki/OsmoTRX

GIT Repository

You can clone from the official osmo-trx.git repository using

    git clone https://gitea.osmocom.org/cellular-infrastructure/osmo-trx`

There is a web interface at https://gitea.osmocom.org/cellular-infrastructure/osmo-trx

Documentation

Doxygen-generated API documentation is generated during the build process, but also available online for each of the sub-libraries at User Manual for OsmoTRX can be generated during the build process, and is also available online at https://ftp.osmocom.org/docs/latest/osmotrx-usermanual.pdf.

Mailing List

Discussions related to OsmoTRX are happening on the openbsc@lists.osmocom.org mailing list, please see https://lists.osmocom.org/mailman/listinfo/openbsc for subscription options and the list archive.

Please observe the Osmocom Mailing List Rules when posting.

Contributing

Our coding standards are described at https://osmocom.org/projects/cellular-infrastructure/wiki/Coding_standards

We us a gerrit based patch submission/review process for managing contributions. Please see https://osmocom.org/projects/cellular-infrastructure/wiki/Gerrit for more details

The current patch queue for OsmoTRX can be seen at https://gerrit.osmocom.org/q/project:osmo-trx+status:open