aboutsummaryrefslogtreecommitdiffstats
path: root/configure.ac
AgeCommit message (Collapse)AuthorFilesLines
2019-10-24configure: Introduce --disable-libsctp and error by default if libsctp not foundPau Espin Pedrol1-11/+17
This way libosmocore build fails during configuring phase if expected default behavior (building with libsctp support enabled and providing osmo_sock_init2_multiaddr() API) fails. User is still provided with --disable-libsctp option in case he doesn't need those features or his environment doesn't provide required libsctp APIs. Change-Id: I710c9cb1c6da0e5fc94b792df8bf60194a72208f
2019-10-18socket: Introduce API osmo_sock_init2_multiaddr()Pau Espin Pedrol1-0/+11
This API will be used by libosmo-netif's osmo_stream for SCTP sockets, which in turn will be used by libosmo-sccp to support multi-homed connections. Related: OS#3608 Change-Id: Ic8681d9e093216c99c6bca4be81c31ef83688ed1
2019-10-09logging: Introduce mutex API to manage log_target in multi-thread envsPau Espin Pedrol1-0/+3
log_enable_multithread() enables use of locks inside the implementation. Lock use is disabled by default, this way only multi-thread processes need to enable it and suffer related complexity/performance penalties. Locks are required around osmo_log_target_list and items inside it, since targets can be used, modified and deleted by different threads concurrently (for instance, user writing "logging disable" in VTY while another thread is willing to write into that target). Multithread apps and libraries aiming at being used in multithread apps should update their code to use the locks introduced here when containing code iterating over osmo_log_target_list explictly or implicitly by obtaining a log_target (eg. osmo_log_vty2tgt()). Related: OS#4088 Change-Id: Id7711893b34263baacac6caf4d489467053131bb
2019-08-06configure: Allow disabling workaround for TLS bug in old ARM gcc versionsPau Espin Pedrol1-2/+1
Some toolchains (such as sysmobts 201705 one) containing the TLS bug on old ARM gcc versions (<7.3.0) also crash if the initial workaround found is aplied (CFLAGS="-mtls-dialect=gnu2"). In that scenario, let's provide a way to disable the workaround (to avoid "ld" crashing) and warn the user about requirement to build with -O0 to avoid runtime crashes. Related: OS#4062 Related: SYS#4628 Change-Id: I04ff8c702eabcf4f6e7b59e11aece2744267cefe
2019-08-06configure: Autodetect TLS bug on ARM with old gcc and apply workaroundPau Espin Pedrol1-0/+4
Check if compiler being used contains the bug. GCC 7.3.0 is the oldest version containing the fix, and version 6.3.0 is known to contain the bug. Bug is only known to appear so far only on ARM32. If the bug is present, gcc will generate a wrong binary which wil lend up segfaulting when accessing TLS (__thread) variables under certain conditions. Related: OS#4062 Related: SYS#4628 Change-Id: I8acc2cf41b73da0c3290f1cefd79f2bc68b0e77d
2019-04-08add osmo_sockaddr_str APINeels Hofmeyr1-1/+1
For handling RTP IP addresses and ports, osmo-mgw, osmo-bsc and osmo-msc so far have their own separate shims and code duplication around inet_ntoa(), htons(), sockaddr conversions etc. Unify and standardize with this common API. In the MGW endpoint FSM that was introduced in osmo-bsc and which I would like to re-use for osmo-msc (upcoming patch moving that to osmo-mgw), it has turned out that using char* IP address and uint16_t port number types are a convenient common denominator for logging, MGCP message composition and GSM48. Ongoing osmo-msc work also uses this for MNCC. This is of course potentially useful for any other IP+port combinations besides RTP stream handling. Needless to say that most current implementations will probably stay with their current own conversion code for a long time; for current osmo-{bsc,msc,mgw} work (MGW endpoint FSM) though, I would like to move to this API here. Change-Id: Id617265337f09dfb6ddfe111ef5e578cd3dc9f63
2018-12-03configure.ac: check clock_gettime for glib < 2.17Alexander Couzens1-0/+4
glib < 2.17 doesn't support clock_gettime directly, it is available via librt. Change-Id: Ice853d85ffe859b1d4df48b91b050c24d85c861b
2018-09-29Revert "osmo-config-merge: Add manual page"Harald Welte1-14/+0
This reverts commit 6dd00d876e2b947e070f776f90fbb8305a237d21. Unfortunately, it seems older a2x versions don't support "-D" for manpage generation: All the osmocom master builds started to fail with: make[2]: Entering directory '/build/deps/libosmocore/man' a2x --doctype manpage --format manpage -D . osmo-config-merge.adoc a2x: WARNING: --destination-dir option is only applicable to HTML based outputs a2x: ERROR: "xmllint" --nonet --noout --valid "/build/deps/libosmocore/man/osmo-config-merge.xml" returned non-zero exit status 127 Makefile:545: recipe for target 'osmo-config-merge.8' failed Change-Id: I0f45362d3e978c328d962a5c0d883eade27b875c
2018-09-28osmo-config-merge: Add manual pageDaniel Willmann1-0/+14
Change-Id: Ifaa5afe28779a805764caf76a89efb0a3169942e
2018-09-12logging vty: add VTY transcript testNeels Hofmeyr1-0/+15
I am setting out to refactor various details about logging. To show the effect, I am first adding this new test to illustrate the exact effects on the various osmo programs. Add logging_vty_test.c as a standalone program that simply defines a few logging categories and opens a telnet vty to play with. Add logging_vty_test.vty, as an osmo_verify_transcript_vty.py test script. Add --enable-external-tests to configure.ac, to enable running logging_vty_test.vty during 'make check'. Also allow running 'make vty-test' without the need to first configure with --enable-external-tests (a flexibility I've missed many times over in the other osmo source trees). Add a Makefile.am stub for external CTRL tests, basically a copy-paste from osmo-msc.git. I doubt that libosmocore will get python driven CTRL interface testing any time soon, but if so we will know to not run it concurrently. Change-Id: I948e832a33131f8eab98651d6010ceb0ccbc9a9c
2018-06-28Fix embedded (arm-none-eabi) buildsHarald Welte1-0/+2
Due to OS#3360, build testing for arm-none-eabi was unfortunately skipped for a long time. This is a number of fixes that make the compile test pass again. Related: OS#3360 Change-Id: I88e3c8e1a8786ca2a6a023b0d27c74be200a8588
2018-05-26ctrl: Add doxygen API documentation; generate html from itHarald Welte1-0/+1
Closes: OS#3293 Change-Id: I8dc2f24d4bf557ff7bb0f2f46881f9f8d9d7f86f
2018-05-26ctrl: Introduce libosmoctrl.map to avoid unintended exportsHarald Welte1-0/+2
There are some symbols for use between control_cmd.c and control_if.c, which are not supposed to be exported publicly. Let's make sure we keep those symbols local. Change-Id: Ia85f36a9c4b2ebf4003718e0a230959638370320
2018-05-10Add osmo_timerfd_* functions for osmo_fd-wrapped timerfdHarald Welte1-1/+1
Linux offers file descriptor based periodic (interval) timers, which can achieve a higher precision than our userspace based timers and which can be slave'd to CLOCK_MONOTINIC or other clock sources. Let's add some code for osmo_fd wrapped versions that integrate well with our select() abstraction. The code has been used in osmo-bts-trx since June 2017 (change-id I51b19adde14ebb7ef3bb863d45e06243c323e22e), and I'm just renaming and moving it to libosmocore here. After a merge, the osmo-bts implementations can be removed in favor if this one. Change-Id: Ibeffba7c997252c003723bcd5d14122c4ded2fe7
2018-05-04configure: Check separately for lib implementing dlopen and dlsymPau Espin Pedrol1-2/+4
Sometimes the library probiding dlopen is not the same one providing dlsym. This is the case when compiling with AddressSanitizer enabled. In this case, AC_SEARCH_LIBS([dlopen]...) reports no lib is required, but tests using dlsym still require to link against -ldl. Change-Id: Ic619b0885688066b60c97caf1e2c7e5402c1d9f7
2018-03-13configure: add --enable-werrorNeels Hofmeyr1-0/+21
Provide a sane means of adding the -Werror compiler flag. Currently, some of our jenkins.sh add -Werror by passing 'CFLAGS="-Werror"', but that actually *overwrites* all the other CFLAGS we might want to have set. Maintain these exceptions from -Werror: a) deprecation (allow upstream to mark deprecation without breaking builds); b) "#warning" pragmas (allow to remind ourselves of errors without breaking builds) As a last configure step before generating the output files, print the complete CFLAGS and CPPFLAGS by means of AC_MSG_RESULT. Change-Id: Ic5c8e68b64cd890b3309b4b26c7f22bde1edba83
2018-01-21Embedded: add sercomm stubsMax1-0/+2
The sercomm functions are unavailable in case of embedded build. Add stub and link the tests against it. Change-Id: I9bc5cb2f822b1a3ffdc6ec29f46b6bac8288314e
2018-01-21Embedded: disable stats testMax1-0/+4
As of 67bdd80a96bdfc49d1aadbd32cca2b53f123d180 the stats.c is effectively disable so we should disable the corresponding tests as well. Change-Id: I42ff7a6619c0a5926fdc2ec779cf04689c567e15
2017-11-17conv_acc: Our code requires SSSE3, not just SSE3Harald Welte1-1/+1
The accelerated convolutional decoder uses SSSE3 instructions such as PSIGNW (via _mm_sign_epi16) which go beyond what SSE3 offers. So let's make sure we use the right compiler flag (-mssse3) and also the right runtime check. Without this patch, we would use illegal instructions e.g. on Opteron Gen3 such as Opteron 2427, which are also used as build.opensuse.org build hosts (build31 through build36) where we wouldn't pass "make check" as a result. Change-Id: I2754164384109f2821fd98ffb48f625893f2923d Fixes: OS#2386
2017-11-02Enable GnuTLS fallbackMax1-0/+17
On systems with GNU/Linux kernel older than 3.17 (Debian 8 "jessie" for example) the osmo_get_rand_id() would always return failure due to missing getrandom() syscall. To support such systems, let's add fallback code which uses GnuTLS library. It can be disabled explicitly via '--disable-gnutls' option at compile-time, otherwise ./configure will fail if both getrandom() and GnuTLS are not available. When building with '--enable-embedded' the fallback is disabled automatically. Related: OS#1694 Change-Id: Ic77866ce65acf524b768882c751a4f9c0635740b
2017-10-09Add function to generate random identifierMax1-0/+3
The function is a wrapper on top of getrandom() (if available via glibc) or corresponding syscall. If neither is available than failure is always returned. It's intended to generate small random data good enough for session identifiers and keys. To generate long-term cryptographic keys it's better to use special crypto libraries (like GnuTLS for example) instead. As an example it's used to replace old insecure random number generator in osmo-auc-gen utility. Change-Id: I0241b814ea4c4ce1458f7ad76e31d390383c2048 Related: OS#1694
2017-08-31Makefile.am: fix missing LTLDFLAGS for libosmocodingVadim Yanitskiy1-0/+1
Despite the libosmocoding.map is preset since the library release, one was not used in a proper way. The LTLDFLAGS were missing, so let's add them. Change-Id: Idf677825ff642d50bea43c7f970810783e864fdd
2017-08-08Add release target to MakefileMax1-0/+4
Add simple helper target to automate basic release steps: * version bump * prepare release commit * git commit, tag and sign For library projects: * update debian/changelog from TODO-RELEASE * cleanup TODO-RELEASE For non-library projects: * update debian/changelog from git log Note: it requires bumpversion package to be installed, debian/control is adjusted accordingly. The helper itself is installed to facilitate reuse by other libraries. N. B: you still have to manually adjust LIBVERSION in previous commit - see TODO-RELEASE header for details. Use it as follows: make REL=minor release The REL parameter defines which component of the version [1] to bump and can be any of { major, minor, patch }. [1] http://semver.org/ Change-Id: I790ceb958195b9f6cbabfe8c977dc30e2bd7414b Related: OS#1861
2017-07-06configure.ac: Add --disable-doxygen flagPau Espin Pedrol1-1/+7
This flag, when set, allows to unconditionally disable doxygen documentation generation, even if doxygen command is found. Change-Id: Iba1440292116af27b267c7a1fbec1c2336784efe
2017-06-23configure.ac: Fix C(PP)FLAGS for BSD buildPau Espin Pedrol1-4/+4
If we pass CFLAGS params to configure, then the CFLAGS set inside configure.ac are not applied and the build fails if -Werror is enabled because then BUILDING_LIBOSMOCORE is not defined. Seeing the following output at configure time in FreeBSD build: ./configure: CFLAGS+= -fsanitize=address -fsanitize=undefined: not found ./configure: CPPFLAGS+= -fsanitize=address -fsanitize=undefined: not found ./configure: CFLAGS+= -DBUILDING_LIBOSMOCORE -Wall: not found ./configure: CPPFLAGS+= -DBUILDING_LIBOSMOCORE -Wall: not found Change-Id: I692bbc66e5343998eec360a02a3a1fe73478c5c6
2017-06-23configure.ac: Enable -Wall by defaultPau Espin Pedrol1-2/+2
Change-Id: I70f917e05ad46049487710d1752aad2505c96696
2017-06-23doxygen: add missing gb API doc generationNeels Hofmeyr1-0/+1
Files in include/osmocom/gprs/ and src/gb/ are not included in any doxygen generated API docs. Add Doxyfile.gb.in and adjust configure.ac and Makefile.am. Change-Id: Ieb64f497f55368e396872083237c9ff28da2dd93
2017-06-18Fix compilation warning on deprecated macroPau Espin Pedrol1-0/+3
A warning was printed even if the deprecation didn't apply to libosmocore because it is still allowed to use it internally. This patch fixes this case while still printing a warning if external projects build using libosmocore headers. Change-Id: I32212f20756f828af1017482a71e29e4b3adbad4
2017-05-17add libpseudotalloc as super-simplistic talloc replacementHarald Welte1-0/+10
In tightly embedded builds (--enable-embedded), we want the ability to replace talloc with a very simple heap allocator to avoid the complexity of talloc without modifying all our code that assumes talloc. This will break the hierarchical notion of the allocator, but libosmo{core,gsm,coding,codec} don't rely on that anyway. Change-Id: Ie341034076f242a813f081919dd09d845775ad35
2017-05-08configure.ac: check for __builtin_cpu_supports call supportVadim Yanitskiy1-0/+27
The '__builtin_cpu_supports' is a GCC's built-in function which returns a positive integer if the run-time CPU supports specified SIMD feature and returns 0 otherwise. It is required for further SSE optimization of Viterbi decoder. This change adds a new check, whether compiler supports this call. See /gcc/X86-Built-in-Functions.html at gcc.gnu.org for reference. Change-Id: I5d52cfb3e8fab3eedc0293a2842708cbee0f476a
2017-05-07configure.ac: add SIMD detection capabilitiesVadim Yanitskiy1-0/+16
This change adds a check whether compiler supports some SIMD (Single Instruction, Multiple Data) instructions. It is enabled by default, and can be disabled by configure option --disable-simd. The check macro is based on the AX_EXT from autoconf-archive: www.gnu.org/software/autoconf-archive/ax_ext.html And depends on the ax_check_compile_flag macro: www.gnu.org/software/autoconf-archive/ax_check_compile_flag.html Currently only the following SIMD extensions are being checked: AVX2, SSE3, SSE4.1, but adding others is also possible. All found extensions are being defined in the 'config.h' header. Change-Id: Idf8fff984bd936a75c7c307338df88ba4b005817
2017-03-07libosmocoding: migrate transcoding routines from OsmoBTSVadim Yanitskiy1-0/+4
There are some projects, such as GR-GSM and OsmocomBB, which would benefit from using one shared implementation of GSM 05.03 code. So, this commit introduces a new sub-library called libosmocoding, which (for now) provides GSM, GPRS and EDGE transcoding routines, migrated from OsmoBTS. The original GSM 05.03 code from OsmoBTS was relicensed under GPLv2-or-later with permission of copyright holders (Andreas Eversberg, Alexander Chemeris and Tom Tsou). The following data types are currently supported: - xCCH - PDTCH (CS 1-4 and MCS 1-9) - TCH/FR - TCH/HR - TCH/AFS - RCH/AHS - RACH - SCH Change-Id: I0c3256b87686d878e4e716d12393cad5924fdfa1
2017-01-15configure.ac: Disable PCSC related code on EMBEDDEDHarald Welte1-0/+1
The EMBEDDED conditional is used for building inside 'bare iron' embedded devices like OsmocomBB phones. There's no PC/SC in them. Change-Id: I2ef7561d7fdb1ef1c060f8ac73d8588fc0f8eb3f
2017-01-15configure.ac: Introduce --disable-ctrlHarald Welte1-0/+9
Using --disable-ctrl, one can disable the building of libosmoctrl. The 'embedded' target will also automaticall disable ctrl. Change-Id: I6912396338c5b23ae860fef2a55854d6df9a579d
2016-11-16build: make check: disable sim_test when built with --disable-pcscNeels Hofmeyr1-4/+6
Numerous issues caused sim_test to be attempted even though libosmosim was not built: In configure.ac, the ENABLE_PCSC variable lacked an AC_SUBST() to be exported. Furthermore in configure.ac, no value 'yes'/'no' was assigned to the ENABLE_PCSC variable, only to the enable_pcsc value. In testsuite.at, encapsulating the sim_test in 'if ENABLE_PCSC' seems to have no effect, regardless (not even when using a variable that should be defined accurately). So fix with these steps, similarly to how we do it in openbsc: In AC_ARG_ENABLE, directly use 'ENABLE_PCSC' to assign 'yes'/'no'. Export the same using AC_SUBST(). Add tests/atlocal.in to translate ENABLE_PCSC to enable_sim_test (also add atlocal to AC_OUTPUT and distclean). Use enable_sim_test in testuite.at, as seen in openbsc: use AT_CHECK() to indicate skipping the test if enable_sim_test isn't 'yes'. Change-Id: I9e8740c7d2dfbd272e22fee85972ef3fda7184a8
2016-10-12configure: add --enable-sanitize, use in jenkins.shNeels Hofmeyr1-0/+12
--enable-sanitize adds address sanitizer CFLAGS/CPPFLAGS to the entire build. Also pass UBSAN_OPTIONS to the test suite run (only has effect during runtime). Add this flag to jenkins.sh's configure step. To ensure that we get the sanitize results, add 'make check' to jenkins to catch sanitize failures; Keep 'make distcheck' without ASAN; it has its own configure which omits --enable-sanitize. This way we test both with and without ASAN. Change-Id: Idf7f46fa048608c2951f2473cb528f6c8dc2681d
2016-10-01build: be robust against install-sh files above the root dirNeels Hofmeyr1-0/+3
Explicitly set AC_CONFIG_AUX_DIR. To reproduce the error avoided by this patch: rm install-sh # in case it was already generated. touch ../install-sh # yes, outside this source tree autoreconf -fi This will produce an error like ... configure.ac:16: error: required file '../ltmain.sh' not found configure.ac:5: installing '../missing' src/Makefile.am: installing '../depcomp' autoreconf: automake failed with exit status: 1 See also automake (vim `which automake`) and look for 'sub locate_aux_dir'. Change-Id: If2afbe62e9ceeac8052c7b882ff92a548f3af0bf
2016-08-09configure: check for pkg-config presenceNeels Hofmeyr1-0/+15
On a fresh installation, I was puzzled by a configure.ac 'syntax error' for PKG_CHECK_MODULES(TALLOC). It took me some time to figure out that merely pkg-config was missing. Add a check for pkg-config, which isn't as straightforward as I would wish, so comment generously. Change-Id: I2e7cdc37eb59f9947a45fbc5baddbaf71b655bc0
2015-12-05remove our internal copy of talloc, use system libtallocHarald Welte1-53/+2
Shipping our own private copy of talloc was a good idea in 2008, when it was not readily available on most target platforms. Today, the situation is quite different, as it is a standard library on major Linux distributions.
2015-11-21configure: It should be --with-system-talloc, not --enable-system-tallocHarald Welte1-8/+8
As we are making a decision whether we should use an existing system library, we call it --with-system-talloc, rather than --enable-system-talloc.
2015-11-21configure.ac: Use AS_IF() instead of shell-if for PKG_CONFIGHarald Welte1-4/+4
https://autotools.io/pkgconfig/pkg_check_modules.html > If you have the first call to PKG_CHECK_MODULES inside a bash > conditional block, the expansion of PKG_PROG_PKG_CONFIG will also be > conditional > You can solve this problem in two ways; you can either explicitly call > PKG_PROG_PKG_CONFIG outside of any conditional, forcing checking for > pkg-config as soon as possible; or you can rewrite your conditionals > to use the proper syntax
2015-11-21use system-wide libtalloc with --enable-system-tallocHarald Welte1-1/+44
This introduces a new configure flag by which the libosmocore-internal talloc code is not compiled, but rather a system-wide libtalloc is used. When we started openbsc/libosmocore in 2008, libtalloc was not widely present on systems yet. This has changed meanwhile, and we should simply use the system-wide library
2015-09-16build: have a disable-static build succeedJan Engelhardt1-1/+1
When using configure --disable-static, no libosmogsm.a will be created, and the tests fail to link because symbols like _a5_3 and _a5_4 are not exported through the only remaining libosmogsm.so. A method to overcome this is an intermediate private non-distributed library, examples of which are present in e.g. libabc, kmod and systemd. With this, disable-static can now be the default and practical compile time be halved.
2015-08-19build: Enable subdir-objectsSylvain Munaut1-1/+1
This fixes warning (and even build on some newer automake). This should now work in the CI as well thanks to the fix for tests. Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2015-08-18Revert "configure.ac: Add subdir-objects"Holger Hans Peter Freyther1-1/+1
This reverts commit 7c942ba1475a366cc7c8a129fbdd335166ce21c6. With automake 1.14 and using the above option the distclean will fail with: Making distclean in tests gmake[2]: Entering directory '/home/builder/source/workspace/libosmocore/label/FreeBSD_amd64/libosmocore-0.8.0.47-7c94/_build/tests' Makefile:848: ../src/gsm/.deps/a5.Po: No such file or directory Makefile:849: ../src/gsm/.deps/kasumi.Po: No such file or directory gmake[2]: *** No rule to make target '../src/gsm/.deps/kasumi.Po'. Stop. gmake[2]: Leaving directory '/home/builder/source/workspace/libosmocore/label/FreeBSD_amd64/libosmocore-0.8.0.47-7c94/_build/tests' Makefile:506: recipe for target 'distclean-recursive' failed gmake[1]: *** [distclean-recursive] Error 1 gmake[1]: Leaving directory '/home/builder/source/workspace/libosmocore/label/FreeBSD_amd64/libosmocore-0.8.0.47-7c94/_build' Makefile:714: recipe for target 'distcheck' failed As we are not required to use the option, let's fix the build
2015-08-15configure.ac: Add subdir-objectsHarald Welte1-1/+1
Apparently this is required under latest autotools versions.
2014-12-04fix libosmocore build for NuttX targetHarald Welte1-1/+1
this fixes some compilation issues with libosmocore under NuttX, particularly as some #defines are missing or some header files are slightly different.
2014-11-14pcsc: Allow to disable the PCSC dependencyHolger Hans Peter Freyther1-4/+6
* PCSC is enabled by default * --enable-pcsc is enabling it * --disable-pcscis disabling it * Fix the makefile of the utilities to not build pcsc and use the right header files/libraries.
2014-10-26sim: Use autotools for libpcsc-lite linkageHarald Welte1-0/+10
2014-10-26initial checkin of 'libosmosim'Harald Welte1-0/+2