blob: aae151b62eb7cf7d6e8ba97c54604c3e89b86c7c [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],
Martin Hauke20259cb2018-04-08 19:53:37 +020022 m4_esyscmd([./git-version-gen .tarball-version]),
Harald Weltedb9c1b52017-10-28 17:49:36 +020023 [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
Pau Espin Pedrol5ea18172018-02-20 16:48:15 +010045AC_PROG_CC
Alexander Chemeris040b3052013-06-16 14:29:54 +040046AC_PROG_CXX
Tom Tsou8ca237b2017-06-09 11:15:58 -070047AX_CXX_COMPILE_STDCXX_11
Alexander Chemeris040b3052013-06-16 14:29:54 +040048AC_PROG_LN_S
49AC_PROG_MAKE_SET
50AC_PROG_INSTALL
51AC_PATH_PROG([RM_PROG], [rm])
52
Pau Espin Pedrolc92dad32018-02-20 13:22:58 +010053dnl check for pkg-config (explained in detail in libosmocore/configure.ac)
54AC_PATH_PROG(PKG_CONFIG_INSTALLED, pkg-config, no)
55if test "x$PKG_CONFIG_INSTALLED" = "xno"; then
56 AC_MSG_WARN([You need to install pkg-config])
57fi
58PKG_PROG_PKG_CONFIG([0.20])
59
Alexander Chemeris040b3052013-06-16 14:29:54 +040060AC_LIBTOOL_WIN32_DLL
61AC_ENABLE_SHARED dnl do build shared libraries
62AC_DISABLE_STATIC dnl don't build static libraries
63AC_PROG_LIBTOOL
64
65dnl Checks for header files.
66AC_HEADER_STDC
67dnl This is required for GnuRadio includes to understand endianess correctly:
68AC_CHECK_HEADERS([byteswap.h])
69
70dnl Checks for typedefs, structures, and compiler characteristics.
71AC_C_CONST
72AC_C_INLINE
73AC_TYPE_SIZE_T
74AC_HEADER_TIME
75AC_C_BIGENDIAN
76
Pau Espin Pedrold0ac9262018-05-03 16:23:30 +020077PKG_CHECK_MODULES(LIBOSMOCORE, libosmocore >= 0.11.0)
78PKG_CHECK_MODULES(LIBOSMOVTY, libosmovty >= 0.11.0)
79PKG_CHECK_MODULES(LIBOSMOCTRL, libosmoctrl >= 0.11.0)
Pau Espin Pedrol8b843e52018-02-20 14:44:39 +010080
Pau Espin Pedrol53bdb7f2018-04-16 14:27:38 +020081AC_ARG_ENABLE(sanitize,
82 [AS_HELP_STRING(
83 [--enable-sanitize],
84 [Compile with address sanitizer enabled],
85 )],
86 [sanitize=$enableval], [sanitize="no"])
87if test x"$sanitize" = x"yes"
88then
89 CPPFLAGS="$CPPFLAGS -fsanitize=address -fsanitize=undefined"
90 LDFLAGS="$LDFLAGS -fsanitize=address -fsanitize=undefined"
91fi
92
Pau Espin Pedrolf3d7f442018-04-24 18:49:03 +020093AC_ARG_WITH(uhd, [
94 AS_HELP_STRING([--with-uhd],
95 [enable UHD based transceiver])
96])
97
Alexander Chemeris040b3052013-06-16 14:29:54 +040098AC_ARG_WITH(usrp1, [
99 AS_HELP_STRING([--with-usrp1],
100 [enable USRP1 gnuradio based transceiver])
101])
102
Pau Espin Pedrol1f50fed2018-04-25 11:12:06 +0200103AC_ARG_WITH(lms, [
104 AS_HELP_STRING([--with-lms],
105 [enable LimeSuite gnuradio based transceiver])
106])
107
Alexander Chemeris040b3052013-06-16 14:29:54 +0400108AC_ARG_WITH(singledb, [
109 AS_HELP_STRING([--with-singledb],
110 [enable single daughterboard use on USRP1])
111])
112
Thomas Tsou7e4e5362013-10-30 21:18:55 -0400113AC_ARG_WITH(neon, [
114 AS_HELP_STRING([--with-neon],
115 [enable ARM NEON support])
116])
117
118AC_ARG_WITH(neon-vfpv4, [
119 AS_HELP_STRING([--with-neon-vfpv4],
120 [enable ARM NEON FMA support])
121])
122
Tom Tsou66133312015-05-18 16:26:33 -0700123AC_ARG_WITH(sse, [
124 AS_HELP_STRING([--with-sse],
125 [enable x86 SSE support (default)])
126])
127
Thomas Tsou7e4e5362013-10-30 21:18:55 -0400128AS_IF([test "x$with_neon" = "xyes"], [
129 AC_DEFINE(HAVE_NEON, 1, Support ARM NEON)
130])
131
132AS_IF([test "x$with_neon_vfpv4" = "xyes"], [
133 AC_DEFINE(HAVE_NEON, 1, Support ARM NEON)
134 AC_DEFINE(HAVE_NEON_FMA, 1, Support ARM NEON with FMA)
135])
136
Alexander Chemeris040b3052013-06-16 14:29:54 +0400137AS_IF([test "x$with_usrp1" = "xyes"], [
Thomas Tsouc0641242013-10-11 14:55:31 -0400138 PKG_CHECK_MODULES(USRP, usrp >= 3.3)
Alexander Chemeris040b3052013-06-16 14:29:54 +0400139])
140
Pau Espin Pedrol1f50fed2018-04-25 11:12:06 +0200141AS_IF([test "x$with_lms" = "xyes"], [
142 PKG_CHECK_MODULES(LMS, LimeSuite)
143])
144
Pau Espin Pedrolf3d7f442018-04-24 18:49:03 +0200145AS_IF([test "x$with_uhd" != "xno"],[
Tom Tsou72bf7622017-03-07 14:16:46 -0800146 PKG_CHECK_MODULES(UHD, uhd >= 003.011,
147 [AC_DEFINE(USE_UHD_3_11, 1, UHD version 3.11.0 or higher)],
148 [PKG_CHECK_MODULES(UHD, uhd >= 003.009,
149 [AC_DEFINE(USE_UHD_3_9, 1, UHD version 3.9.0 or higher)],
150 [PKG_CHECK_MODULES(UHD, uhd >= 003.005)]
151 )]
Tom Tsou80cb0802017-01-19 13:44:02 -0800152 )
Alexander Chemeris040b3052013-06-16 14:29:54 +0400153])
154
Alexander Chemeris040b3052013-06-16 14:29:54 +0400155AS_IF([test "x$with_singledb" = "xyes"], [
156 AC_DEFINE(SINGLEDB, 1, Define to 1 for single daughterboard)
157])
158
Thomas Tsoufffd9872013-11-04 10:20:21 -0800159# Find and define supported SIMD extensions
Tom Tsou66133312015-05-18 16:26:33 -0700160AS_IF([test "x$with_sse" != "xno"], [
Philipp Maiere8ae9fc2017-03-20 12:08:42 +0100161 AX_SSE
162], [
163 AM_CONDITIONAL(HAVE_SSE3, false)
164 AM_CONDITIONAL(HAVE_SSE4_1, false)
Tom Tsou66133312015-05-18 16:26:33 -0700165])
Thomas Tsoufffd9872013-11-04 10:20:21 -0800166
Vadim Yanitskiyee573572017-05-20 01:34:34 +0300167dnl Check if the compiler supports specified GCC's built-in function
168AC_DEFUN([CHECK_BUILTIN_SUPPORT], [
169 AC_CACHE_CHECK(
170 [whether ${CC} has $1 built-in],
171 [osmo_cv_cc_has_builtin], [
172 AC_LINK_IFELSE([
173 AC_LANG_PROGRAM([], [
174 __builtin_cpu_supports("sse");
175 ])
176 ],
177 [AS_VAR_SET([osmo_cv_cc_has_builtin], [yes])],
178 [AS_VAR_SET([osmo_cv_cc_has_builtin], [no])])
179 ]
180 )
181
182 AS_IF([test yes = AS_VAR_GET([osmo_cv_cc_has_builtin])], [
183 AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_$1), 1,
184 [Define to 1 if compiler has the '$1' built-in function])
185 ], [
186 AC_MSG_WARN($2)
187 ])
188])
189
190dnl Check if the compiler supports runtime SIMD detection
191CHECK_BUILTIN_SUPPORT([__builtin_cpu_supports],
192 [Runtime SIMD detection will be disabled])
193
Pau Espin Pedrolf3d7f442018-04-24 18:49:03 +0200194AM_CONDITIONAL(DEVICE_UHD, [test "x$with_uhd" != "xno"])
Pau Espin Pedrola4316ee2018-04-24 16:29:05 +0200195AM_CONDITIONAL(DEVICE_USRP1, [test "x$with_usrp1" = "xyes"])
Pau Espin Pedrol1f50fed2018-04-25 11:12:06 +0200196AM_CONDITIONAL(DEVICE_LMS, [test "x$with_lms" = "xyes"])
Thomas Tsou7e4e5362013-10-30 21:18:55 -0400197AM_CONDITIONAL(ARCH_ARM, [test "x$with_neon" = "xyes" || test "x$with_neon_vfpv4" = "xyes"])
198AM_CONDITIONAL(ARCH_ARM_A15, [test "x$with_neon_vfpv4" = "xyes"])
Alexander Chemeris040b3052013-06-16 14:29:54 +0400199
Alexander Chemeris040b3052013-06-16 14:29:54 +0400200PKG_CHECK_MODULES(LIBUSB, libusb-1.0)
Alexander Huemer6fafd332018-01-12 15:04:02 +0100201PKG_CHECK_MODULES(FFTWF, fftw3f)
Alexander Chemeris040b3052013-06-16 14:29:54 +0400202
Neels Hofmeyr24575a62016-07-05 13:00:18 +0200203AC_CHECK_HEADER([boost/config.hpp],[],
204 [AC_MSG_ERROR([boost/config.hpp not found, install e.g. libboost-dev])])
205
Pau Espin Pedrol53bdb7f2018-04-16 14:27:38 +0200206AC_MSG_RESULT([CPPFLAGS="$CPPFLAGS"])
207AC_MSG_RESULT([CFLAGS="$CFLAGS"])
208AC_MSG_RESULT([CXXFLAGS="$CXXFLAGS"])
209AC_MSG_RESULT([LDFLAGS="$LDFLAGS"])
210
Alexander Chemeris040b3052013-06-16 14:29:54 +0400211dnl Output files
212AC_CONFIG_FILES([\
213 Makefile \
214 CommonLibs/Makefile \
215 GSM/Makefile \
216 Transceiver52M/Makefile \
Pau Espin Pedrol43fedb62018-04-24 15:22:57 +0200217 Transceiver52M/arch/Makefile \
218 Transceiver52M/arch/common/Makefile \
219 Transceiver52M/arch/arm/Makefile \
220 Transceiver52M/arch/x86/Makefile \
Pau Espin Pedrol2128a302018-04-24 16:16:06 +0200221 Transceiver52M/device/Makefile \
222 Transceiver52M/device/uhd/Makefile \
223 Transceiver52M/device/usrp1/Makefile \
Pau Espin Pedrol1f50fed2018-04-25 11:12:06 +0200224 Transceiver52M/device/lms/Makefile \
Pau Espin Pedrol2ac788b2018-01-09 17:44:49 +0100225 tests/Makefile \
226 tests/CommonLibs/Makefile \
Pau Espin Pedrolc2ba4272018-01-10 13:06:22 +0100227 tests/Transceiver52M/Makefile \
Thomas Tsou7e4e5362013-10-30 21:18:55 -0400228])
Alexander Chemeris040b3052013-06-16 14:29:54 +0400229
230AC_OUTPUT