blob: cba4a0c378016970be4d0a1c4b86765b4e3297cc [file] [log] [blame]
Alexander Chemeris040b3052013-06-16 14:29:54 +04001dnl
2dnl Copyright 2008, 2009, 2010 Free Software Foundation, Inc.
3dnl
4dnl This software is distributed under the terms of the GNU Public License.
5dnl See the COPYING file in the main directory for details.
6dnl
7dnl This program is free software: you can redistribute it and/or modify
8dnl it under the terms of the GNU General Public License as published by
9dnl the Free Software Foundation, either version 3 of the License, or
10dnl (at your option) any later version.
11dnl
12dnl This program is distributed in the hope that it will be useful,
13dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
14dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15dnl GNU General Public License for more details.
16dnl
17dnl You should have received a copy of the GNU General Public License
18dnl along with this program. If not, see <http://www.gnu.org/licenses/>.
19dnl
20
Harald Weltedb9c1b52017-10-28 17:49:36 +020021AC_INIT([osmo-trx],
22 m4_esyscmd([./git-version-gen .tarball-veresion]),
23 [openbsc@lists.osmocom.org])
Alexander Chemeris040b3052013-06-16 14:29:54 +040024AC_PREREQ(2.57)
25AC_CONFIG_SRCDIR([Transceiver52M/Makefile.am])
Pau Espin Pedrol82f83ce2018-01-09 15:09:31 +010026AC_CONFIG_AUX_DIR([.])
Thomas Tsou3eaae802013-08-20 19:31:14 -040027AC_CONFIG_MACRO_DIR([config])
Alexander Chemeris040b3052013-06-16 14:29:54 +040028AM_CONFIG_HEADER(config.h)
Pau Espin Pedrol2ac788b2018-01-09 17:44:49 +010029AC_CONFIG_TESTDIR(tests)
Alexander Chemeris040b3052013-06-16 14:29:54 +040030
31AC_CANONICAL_BUILD
32AC_CANONICAL_HOST
33AC_CANONICAL_TARGET
34
Tom Tsou2cc2ddd2015-04-06 18:02:56 -070035AM_INIT_AUTOMAKE([subdir-objects])
Alexander Chemeris040b3052013-06-16 14:29:54 +040036
37dnl Linux kernel KBuild style compile messages
38m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
39
Max099a44a2017-08-28 12:10:55 +020040dnl include release helper
41RELMAKE='-include osmo-release.mk'
42AC_SUBST([RELMAKE])
43
Alexander Chemeris040b3052013-06-16 14:29:54 +040044AM_PROG_AS
45AC_PROG_CXX
Tom Tsou8ca237b2017-06-09 11:15:58 -070046AX_CXX_COMPILE_STDCXX_11
Alexander Chemeris040b3052013-06-16 14:29:54 +040047AC_PROG_LN_S
48AC_PROG_MAKE_SET
49AC_PROG_INSTALL
50AC_PATH_PROG([RM_PROG], [rm])
51
Pau Espin Pedrolc92dad32018-02-20 13:22:58 +010052dnl check for pkg-config (explained in detail in libosmocore/configure.ac)
53AC_PATH_PROG(PKG_CONFIG_INSTALLED, pkg-config, no)
54if test "x$PKG_CONFIG_INSTALLED" = "xno"; then
55 AC_MSG_WARN([You need to install pkg-config])
56fi
57PKG_PROG_PKG_CONFIG([0.20])
58
Alexander Chemeris040b3052013-06-16 14:29:54 +040059AC_LIBTOOL_WIN32_DLL
60AC_ENABLE_SHARED dnl do build shared libraries
61AC_DISABLE_STATIC dnl don't build static libraries
62AC_PROG_LIBTOOL
63
64dnl Checks for header files.
65AC_HEADER_STDC
66dnl This is required for GnuRadio includes to understand endianess correctly:
67AC_CHECK_HEADERS([byteswap.h])
68
69dnl Checks for typedefs, structures, and compiler characteristics.
70AC_C_CONST
71AC_C_INLINE
72AC_TYPE_SIZE_T
73AC_HEADER_TIME
74AC_C_BIGENDIAN
75
Pau Espin Pedrol8b843e52018-02-20 14:44:39 +010076PKG_CHECK_MODULES(LIBOSMOCORE, libosmocore >= 0.10.0)
77
Alexander Chemeris040b3052013-06-16 14:29:54 +040078AC_ARG_WITH(usrp1, [
79 AS_HELP_STRING([--with-usrp1],
80 [enable USRP1 gnuradio based transceiver])
81])
82
Alexander Chemeris040b3052013-06-16 14:29:54 +040083AC_ARG_WITH(singledb, [
84 AS_HELP_STRING([--with-singledb],
85 [enable single daughterboard use on USRP1])
86])
87
Thomas Tsou7e4e5362013-10-30 21:18:55 -040088AC_ARG_WITH(neon, [
89 AS_HELP_STRING([--with-neon],
90 [enable ARM NEON support])
91])
92
93AC_ARG_WITH(neon-vfpv4, [
94 AS_HELP_STRING([--with-neon-vfpv4],
95 [enable ARM NEON FMA support])
96])
97
Tom Tsou66133312015-05-18 16:26:33 -070098AC_ARG_WITH(sse, [
99 AS_HELP_STRING([--with-sse],
100 [enable x86 SSE support (default)])
101])
102
Thomas Tsou7e4e5362013-10-30 21:18:55 -0400103AS_IF([test "x$with_neon" = "xyes"], [
104 AC_DEFINE(HAVE_NEON, 1, Support ARM NEON)
105])
106
107AS_IF([test "x$with_neon_vfpv4" = "xyes"], [
108 AC_DEFINE(HAVE_NEON, 1, Support ARM NEON)
109 AC_DEFINE(HAVE_NEON_FMA, 1, Support ARM NEON with FMA)
110])
111
Alexander Chemeris040b3052013-06-16 14:29:54 +0400112AS_IF([test "x$with_usrp1" = "xyes"], [
Thomas Tsouc0641242013-10-11 14:55:31 -0400113 PKG_CHECK_MODULES(USRP, usrp >= 3.3)
Alexander Chemeris040b3052013-06-16 14:29:54 +0400114])
115
Thomas Tsoufffd9872013-11-04 10:20:21 -0800116AS_IF([test "x$with_usrp1" != "xyes"],[
Tom Tsou72bf7622017-03-07 14:16:46 -0800117 PKG_CHECK_MODULES(UHD, uhd >= 003.011,
118 [AC_DEFINE(USE_UHD_3_11, 1, UHD version 3.11.0 or higher)],
119 [PKG_CHECK_MODULES(UHD, uhd >= 003.009,
120 [AC_DEFINE(USE_UHD_3_9, 1, UHD version 3.9.0 or higher)],
121 [PKG_CHECK_MODULES(UHD, uhd >= 003.005)]
122 )]
Tom Tsou80cb0802017-01-19 13:44:02 -0800123 )
124 AC_DEFINE(USE_UHD, 1, All UHD versions)
Alexander Chemeris040b3052013-06-16 14:29:54 +0400125])
126
Alexander Chemeris040b3052013-06-16 14:29:54 +0400127AS_IF([test "x$with_singledb" = "xyes"], [
128 AC_DEFINE(SINGLEDB, 1, Define to 1 for single daughterboard)
129])
130
Thomas Tsoufffd9872013-11-04 10:20:21 -0800131# Find and define supported SIMD extensions
Tom Tsou66133312015-05-18 16:26:33 -0700132AS_IF([test "x$with_sse" != "xno"], [
Philipp Maiere8ae9fc2017-03-20 12:08:42 +0100133 AX_SSE
134], [
135 AM_CONDITIONAL(HAVE_SSE3, false)
136 AM_CONDITIONAL(HAVE_SSE4_1, false)
Tom Tsou66133312015-05-18 16:26:33 -0700137])
Thomas Tsoufffd9872013-11-04 10:20:21 -0800138
Vadim Yanitskiyee573572017-05-20 01:34:34 +0300139dnl Check if the compiler supports specified GCC's built-in function
140AC_DEFUN([CHECK_BUILTIN_SUPPORT], [
141 AC_CACHE_CHECK(
142 [whether ${CC} has $1 built-in],
143 [osmo_cv_cc_has_builtin], [
144 AC_LINK_IFELSE([
145 AC_LANG_PROGRAM([], [
146 __builtin_cpu_supports("sse");
147 ])
148 ],
149 [AS_VAR_SET([osmo_cv_cc_has_builtin], [yes])],
150 [AS_VAR_SET([osmo_cv_cc_has_builtin], [no])])
151 ]
152 )
153
154 AS_IF([test yes = AS_VAR_GET([osmo_cv_cc_has_builtin])], [
155 AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_$1), 1,
156 [Define to 1 if compiler has the '$1' built-in function])
157 ], [
158 AC_MSG_WARN($2)
159 ])
160])
161
162dnl Check if the compiler supports runtime SIMD detection
163CHECK_BUILTIN_SUPPORT([__builtin_cpu_supports],
164 [Runtime SIMD detection will be disabled])
165
Alexander Chemeris040b3052013-06-16 14:29:54 +0400166AM_CONDITIONAL(USRP1, [test "x$with_usrp1" = "xyes"])
Thomas Tsou7e4e5362013-10-30 21:18:55 -0400167AM_CONDITIONAL(ARCH_ARM, [test "x$with_neon" = "xyes" || test "x$with_neon_vfpv4" = "xyes"])
168AM_CONDITIONAL(ARCH_ARM_A15, [test "x$with_neon_vfpv4" = "xyes"])
Alexander Chemeris040b3052013-06-16 14:29:54 +0400169
Alexander Chemeris040b3052013-06-16 14:29:54 +0400170PKG_CHECK_MODULES(LIBUSB, libusb-1.0)
Alexander Huemer6fafd332018-01-12 15:04:02 +0100171PKG_CHECK_MODULES(FFTWF, fftw3f)
Alexander Chemeris040b3052013-06-16 14:29:54 +0400172
Neels Hofmeyr24575a62016-07-05 13:00:18 +0200173AC_CHECK_HEADER([boost/config.hpp],[],
174 [AC_MSG_ERROR([boost/config.hpp not found, install e.g. libboost-dev])])
175
Alexander Chemeris040b3052013-06-16 14:29:54 +0400176dnl Output files
177AC_CONFIG_FILES([\
178 Makefile \
179 CommonLibs/Makefile \
180 GSM/Makefile \
181 Transceiver52M/Makefile \
Thomas Tsou7e4e5362013-10-30 21:18:55 -0400182 Transceiver52M/arm/Makefile \
Thomas Tsou17bbb9b2013-10-30 21:24:40 -0400183 Transceiver52M/x86/Makefile \
Pau Espin Pedrol2ac788b2018-01-09 17:44:49 +0100184 tests/Makefile \
185 tests/CommonLibs/Makefile \
Pau Espin Pedrolc2ba4272018-01-10 13:06:22 +0100186 tests/Transceiver52M/Makefile \
Thomas Tsou7e4e5362013-10-30 21:18:55 -0400187])
Alexander Chemeris040b3052013-06-16 14:29:54 +0400188
189AC_OUTPUT