blob: 6e59fa217e8bfaabe8ac8745a2c5043169ab1f4d [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])
26AC_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)
29
30AC_CANONICAL_BUILD
31AC_CANONICAL_HOST
32AC_CANONICAL_TARGET
33
Tom Tsou2cc2ddd2015-04-06 18:02:56 -070034AM_INIT_AUTOMAKE([subdir-objects])
Alexander Chemeris040b3052013-06-16 14:29:54 +040035
36dnl Linux kernel KBuild style compile messages
37m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
38
Max099a44a2017-08-28 12:10:55 +020039dnl include release helper
40RELMAKE='-include osmo-release.mk'
41AC_SUBST([RELMAKE])
42
Alexander Chemeris040b3052013-06-16 14:29:54 +040043AM_PROG_AS
44AC_PROG_CXX
Tom Tsou8ca237b2017-06-09 11:15:58 -070045AX_CXX_COMPILE_STDCXX_11
Alexander Chemeris040b3052013-06-16 14:29:54 +040046AC_PROG_LN_S
47AC_PROG_MAKE_SET
48AC_PROG_INSTALL
49AC_PATH_PROG([RM_PROG], [rm])
50
51AC_LIBTOOL_WIN32_DLL
52AC_ENABLE_SHARED dnl do build shared libraries
53AC_DISABLE_STATIC dnl don't build static libraries
54AC_PROG_LIBTOOL
55
56dnl Checks for header files.
57AC_HEADER_STDC
58dnl This is required for GnuRadio includes to understand endianess correctly:
59AC_CHECK_HEADERS([byteswap.h])
60
61dnl Checks for typedefs, structures, and compiler characteristics.
62AC_C_CONST
63AC_C_INLINE
64AC_TYPE_SIZE_T
65AC_HEADER_TIME
66AC_C_BIGENDIAN
67
68AC_ARG_WITH(usrp1, [
69 AS_HELP_STRING([--with-usrp1],
70 [enable USRP1 gnuradio based transceiver])
71])
72
Alexander Chemeris040b3052013-06-16 14:29:54 +040073AC_ARG_WITH(singledb, [
74 AS_HELP_STRING([--with-singledb],
75 [enable single daughterboard use on USRP1])
76])
77
Thomas Tsou7e4e5362013-10-30 21:18:55 -040078AC_ARG_WITH(neon, [
79 AS_HELP_STRING([--with-neon],
80 [enable ARM NEON support])
81])
82
83AC_ARG_WITH(neon-vfpv4, [
84 AS_HELP_STRING([--with-neon-vfpv4],
85 [enable ARM NEON FMA support])
86])
87
Tom Tsou66133312015-05-18 16:26:33 -070088AC_ARG_WITH(sse, [
89 AS_HELP_STRING([--with-sse],
90 [enable x86 SSE support (default)])
91])
92
Thomas Tsou7e4e5362013-10-30 21:18:55 -040093AS_IF([test "x$with_neon" = "xyes"], [
94 AC_DEFINE(HAVE_NEON, 1, Support ARM NEON)
95])
96
97AS_IF([test "x$with_neon_vfpv4" = "xyes"], [
98 AC_DEFINE(HAVE_NEON, 1, Support ARM NEON)
99 AC_DEFINE(HAVE_NEON_FMA, 1, Support ARM NEON with FMA)
100])
101
Alexander Chemeris040b3052013-06-16 14:29:54 +0400102AS_IF([test "x$with_usrp1" = "xyes"], [
Thomas Tsouc0641242013-10-11 14:55:31 -0400103 PKG_CHECK_MODULES(USRP, usrp >= 3.3)
Alexander Chemeris040b3052013-06-16 14:29:54 +0400104])
105
Thomas Tsoufffd9872013-11-04 10:20:21 -0800106AS_IF([test "x$with_usrp1" != "xyes"],[
Tom Tsou72bf7622017-03-07 14:16:46 -0800107 PKG_CHECK_MODULES(UHD, uhd >= 003.011,
108 [AC_DEFINE(USE_UHD_3_11, 1, UHD version 3.11.0 or higher)],
109 [PKG_CHECK_MODULES(UHD, uhd >= 003.009,
110 [AC_DEFINE(USE_UHD_3_9, 1, UHD version 3.9.0 or higher)],
111 [PKG_CHECK_MODULES(UHD, uhd >= 003.005)]
112 )]
Tom Tsou80cb0802017-01-19 13:44:02 -0800113 )
114 AC_DEFINE(USE_UHD, 1, All UHD versions)
Tom Tsou35222292016-06-22 16:16:30 -0700115 PKG_CHECK_MODULES(FFTWF, fftw3f)
Alexander Chemeris040b3052013-06-16 14:29:54 +0400116])
117
Alexander Chemeris040b3052013-06-16 14:29:54 +0400118AS_IF([test "x$with_singledb" = "xyes"], [
119 AC_DEFINE(SINGLEDB, 1, Define to 1 for single daughterboard)
120])
121
Thomas Tsoufffd9872013-11-04 10:20:21 -0800122# Find and define supported SIMD extensions
Tom Tsou66133312015-05-18 16:26:33 -0700123AS_IF([test "x$with_sse" != "xno"], [
Philipp Maiere8ae9fc2017-03-20 12:08:42 +0100124 AX_SSE
125], [
126 AM_CONDITIONAL(HAVE_SSE3, false)
127 AM_CONDITIONAL(HAVE_SSE4_1, false)
Tom Tsou66133312015-05-18 16:26:33 -0700128])
Thomas Tsoufffd9872013-11-04 10:20:21 -0800129
Vadim Yanitskiyee573572017-05-20 01:34:34 +0300130dnl Check if the compiler supports specified GCC's built-in function
131AC_DEFUN([CHECK_BUILTIN_SUPPORT], [
132 AC_CACHE_CHECK(
133 [whether ${CC} has $1 built-in],
134 [osmo_cv_cc_has_builtin], [
135 AC_LINK_IFELSE([
136 AC_LANG_PROGRAM([], [
137 __builtin_cpu_supports("sse");
138 ])
139 ],
140 [AS_VAR_SET([osmo_cv_cc_has_builtin], [yes])],
141 [AS_VAR_SET([osmo_cv_cc_has_builtin], [no])])
142 ]
143 )
144
145 AS_IF([test yes = AS_VAR_GET([osmo_cv_cc_has_builtin])], [
146 AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_$1), 1,
147 [Define to 1 if compiler has the '$1' built-in function])
148 ], [
149 AC_MSG_WARN($2)
150 ])
151])
152
153dnl Check if the compiler supports runtime SIMD detection
154CHECK_BUILTIN_SUPPORT([__builtin_cpu_supports],
155 [Runtime SIMD detection will be disabled])
156
Alexander Chemeris040b3052013-06-16 14:29:54 +0400157AM_CONDITIONAL(USRP1, [test "x$with_usrp1" = "xyes"])
Thomas Tsou7e4e5362013-10-30 21:18:55 -0400158AM_CONDITIONAL(ARCH_ARM, [test "x$with_neon" = "xyes" || test "x$with_neon_vfpv4" = "xyes"])
159AM_CONDITIONAL(ARCH_ARM_A15, [test "x$with_neon_vfpv4" = "xyes"])
Alexander Chemeris040b3052013-06-16 14:29:54 +0400160
Max2dee3e92017-01-26 14:57:44 +0100161AC_CHECK_LIB(sqlite3, sqlite3_open, , AC_MSG_ERROR(sqlite3 is not available))
162
Alexander Chemeris040b3052013-06-16 14:29:54 +0400163PKG_CHECK_MODULES(LIBUSB, libusb-1.0)
Max2dee3e92017-01-26 14:57:44 +0100164PKG_CHECK_MODULES(SQLITE3, sqlite3)
Alexander Chemeris040b3052013-06-16 14:29:54 +0400165
Neels Hofmeyr24575a62016-07-05 13:00:18 +0200166AC_CHECK_HEADER([boost/config.hpp],[],
167 [AC_MSG_ERROR([boost/config.hpp not found, install e.g. libboost-dev])])
168
Alexander Chemeris040b3052013-06-16 14:29:54 +0400169dnl Output files
170AC_CONFIG_FILES([\
171 Makefile \
172 CommonLibs/Makefile \
173 GSM/Makefile \
174 Transceiver52M/Makefile \
Thomas Tsou7e4e5362013-10-30 21:18:55 -0400175 Transceiver52M/arm/Makefile \
Thomas Tsou17bbb9b2013-10-30 21:24:40 -0400176 Transceiver52M/x86/Makefile \
Thomas Tsou7e4e5362013-10-30 21:18:55 -0400177])
Alexander Chemeris040b3052013-06-16 14:29:54 +0400178
179AC_OUTPUT