1m4_define([lib_major], [2]) 2m4_define([lib_minor], [3]) 3m4_define([lib_level], [1]) 4m4_define([lib_version], [lib_major.lib_minor.lib_level]) 5 6AC_INIT([libsidplayfp],[lib_version],[],[],[https://github.com/libsidplayfp/libsidplayfp/]) 7AC_CONFIG_AUX_DIR([build-aux]) 8AC_CONFIG_MACRO_DIRS([m4 src/builders/exsid-builder/driver/m4]) 9AC_CONFIG_SRCDIR([src/sidplayfp/sidplayfp.cpp]) 10AC_CONFIG_HEADERS([src/config.h]) 11AM_INIT_AUTOMAKE 12 13LIB_MAJOR=lib_major 14LIB_MINOR=lib_minor 15LIB_LEVEL=lib_level 16AC_SUBST([LIB_MAJOR]) 17AC_SUBST([LIB_MINOR]) 18AC_SUBST([LIB_LEVEL]) 19 20AC_CANONICAL_HOST 21 22AS_CASE([$host_os], 23 [mingw*], [MINGW32=yes], 24 [darwin*], [MACOS=yes], 25 [MINGW32=no MACOS=no] 26) 27AM_CONDITIONAL([MINGW32], [test "x$MINGW32" = "xyes"]) 28AM_CONDITIONAL([MACOS], [test "x$MACOS" = "xyes"]) 29 30dnl Initialize libtool. 31LT_INIT([win32-dll]) 32 33dnl Checks for programs. 34AC_PROG_CXX 35 36dnl Use C++ for tests. 37AC_LANG([C++]) 38 39AX_CXX_COMPILE_STDCXX_11([noext], [optional]) 40AX_CXX_COMPILE_STDCXX_14([noext], [optional]) 41 42dnl check for hidden visibility support 43AX_CHECK_COMPILE_FLAG([-fvisibility=hidden -fvisibility-inlines-hidden], [has_visibility=yes], [has_visibility=no]) 44AM_CONDITIONAL([HAVE_VISIBILITY], [test "x$has_visibility" = xyes]) 45 46dnl Checks for typedefs, structures, and compiler characteristics. 47AC_C_BIGENDIAN 48 49AC_CHECK_SIZEOF([short]) 50AC_CHECK_SIZEOF([int]) 51 52AS_IF([test $ac_cv_sizeof_short -ne 2], 53 [AC_MSG_ERROR([size of short must be 16 bit])] 54) 55 56AS_IF([test $ac_cv_sizeof_int -lt 4], 57 [AC_MSG_ERROR([only 32 bit or better CPUs are supported])] 58) 59 60AS_IF([test "x${ac_cv_header_stdint_h}" != "xyes"], 61 [AC_MSG_ERROR([Required header stdint.h not found])] 62) 63 64dnl Checks for non-standard functions. 65 66AC_CHECK_DECL( 67 [strcasecmp], 68 [AC_CHECK_FUNCS([strcasecmp])], 69 [AC_CHECK_DECL( 70 [stricmp], 71 [AC_CHECK_FUNCS([stricmp])] 72 )] 73) 74 75AC_CHECK_DECL( 76 [strncasecmp], 77 [AC_CHECK_FUNCS([strncasecmp])], 78 [AC_CHECK_DECL( 79 [strnicmp], 80 [AC_CHECK_FUNCS([strnicmp])] 81 )] 82) 83 84AX_LIB_GCRYPT([auto]) 85AM_CONDITIONAL([LIBGCRYPT], [test "x$have_libgcrypt" = "xyes"]) 86 87 88dnl libtool-style version-info number 89# 90# https://autotools.io/libtool/version.html 91# 92# Always increase the revision value. 93# 94# Increase the current value whenever an interface has been added, removed or changed. 95# 96# Increase the age value only if the changes made to the ABI are backward compatible. 97 98LIBSIDPLAYCUR=9 99LIBSIDPLAYREV=23 100LIBSIDPLAYAGE=3 101LIBSIDPLAYVERSION=$LIBSIDPLAYCUR:$LIBSIDPLAYREV:$LIBSIDPLAYAGE 102 103LIBSTILVIEWCUR=0 104LIBSTILVIEWREV=4 105LIBSTILVIEWAGE=0 106LIBSTILVIEWVERSION=$LIBSTILVIEWCUR:$LIBSTILVIEWREV:$LIBSTILVIEWAGE 107 108AC_MSG_CHECKING([for debugging]) 109AC_ARG_ENABLE(debug, [AS_HELP_STRING([--enable-debug], [compile for debugging @<:@no/yes/full, default=no@:>@])], 110 [], [enable_debug=no]) 111 112AS_IF([test "x$enable_debug" = "xno"], 113 [AC_MSG_RESULT([Build without debugging messages]); debug_flags=-DNDEBUG], 114 [AS_IF([test "x$enable_debug" = "xyes"], 115 [AC_MSG_RESULT([Build with debugging messages]); debug_flags=-DDEBUG=1], 116 [AC_MSG_RESULT([Build with all debugging messages]); debug_flags=-DDEBUG=10] 117 )] 118) 119 120AC_SUBST([debug_flags]) 121 122AC_ARG_ENABLE([hardsid], 123 AS_HELP_STRING([--enable-hardsid],[enable hardsid builder [default=no]]) 124) 125 126AM_CONDITIONAL([HARDSID], [test "x$enable_hardsid" = "xyes"]) 127 128 129AC_ARG_ENABLE([inline], 130 AS_HELP_STRING([--enable-inline],[enable inlining of functions [default=yes]]) 131) 132 133AS_IF([test x"$enable_inline" != "xno"], 134 [RESID_INLINE=inline; RESID_INLINING=1], 135 [RESID_INLINE=""; RESID_INLINING=0] 136) 137 138AC_ARG_WITH( 139 [simd], 140 [AS_HELP_STRING([--with-simd], [Build with SIMD optimizations [@<:@sse2/mmx/neon/none, default=none@:>@]])], 141 [], 142 [with_simd=none] 143) 144 145AS_IF([test x"$with_simd" != xnone], 146 # Testing for intrinsic headers requires compiler 147 # support activated by specific flags. 148 # These are most likely defined in CXXFLAGS 149 # but AC_CHECK_HEADERS uses only CPPFLAGS 150 # so we need a workaround. 151 [saveCPPFLAGS=$CPPFLAGS 152 CPPFLAGS="$CPPFLAGS $CXXFLAGS" 153 154 AS_CASE([$with_simd], 155 [sse2], [AC_CHECK_HEADERS([emmintrin.h])], 156 [mmx], [AC_CHECK_HEADERS([mmintrin.h])], 157 [neon], [AC_CHECK_HEADERS([arm_neon.h])], 158 [AC_MSG_ERROR([Unrecognized SIMD specified])] 159 ) 160 161 CPPFLAGS=$saveCPPFLAGS] 162) 163 164AC_CACHE_CHECK([for working bool], ac_cv_cxx_bool, 165[AC_COMPILE_IFELSE( 166 [AC_LANG_PROGRAM([], 167 [[bool flag;]])], 168 [ac_cv_cxx_bool=yes], 169 [ac_cv_cxx_bool=no])] 170) 171 172AS_IF([test "x$ac_cv_cxx_bool" = "xno"], 173 [HAVE_BOOL=0], 174 [HAVE_BOOL=1] 175) 176 177dnl Enable branch prediction hints. 178AC_ARG_ENABLE([branch-hints], 179 [AS_HELP_STRING([--enable-branch-hints], 180 [enable static branch prediction hints [default=yes]])], 181 [], 182 [enable_branch_hints=yes] 183) 184 185AS_IF([test "$enable_branch_hints" != no], 186 [RESID_BRANCH_HINTS=1], 187 [RESID_BRANCH_HINTS=0] 188) 189 190AC_CACHE_CHECK([for log1p], [resid_cv_log1p], 191 [AC_COMPILE_IFELSE( 192 [AC_LANG_PROGRAM( 193 [ #include <math.h> ], [ log1p(1); ] 194 )], 195 [resid_cv_log1p=yes], [resid_cv_log1p=no] 196 )] 197) 198 199AS_IF([test "$resid_cv_log1p" = no], 200 [HAVE_LOG1P=0], 201 [HAVE_LOG1P=1] 202) 203 204AC_CACHE_CHECK([for __builtin_expect], [resid_cv_builtin_expect], 205 [AC_COMPILE_IFELSE([AC_LANG_SOURCE([int main() { __builtin_expect(0, 0); }])], 206 [resid_cv_builtin_expect=yes], [resid_cv_builtin_expect=no])] 207) 208 209AS_IF([test "$resid_cv_builtin_expect" = no], 210 [HAVE_BUILTIN_EXPECT=0], 211 [HAVE_BUILTIN_EXPECT=1] 212) 213 214 215AC_CHECK_PROGS([DOXYGEN], [doxygen]) 216AS_IF([test -z "$DOXYGEN"], 217 [AC_MSG_WARN([Doxygen not found - continuing without Doxygen support])], 218 [AC_CHECK_PROG([DOT], [dot], [YES], [NO])] 219) 220 221AM_CONDITIONAL([HAVE_DOXYGEN], [test -n "$DOXYGEN"]) 222 223AM_COND_IF([HAVE_DOXYGEN], [AC_CONFIG_FILES([Doxyfile])]) 224 225 226AC_ARG_ENABLE([testsuite], 227 [AS_HELP_STRING([--enable-testsuite=PATH_TO_TESTSUITE], 228 [enable VICE testsuite [default=no]] 229 )], 230 [], 231 [enable_testsuite=no] 232) 233 234AS_IF([test "x$enable_testsuite" != xno], 235 AC_DEFINE_UNQUOTED([VICE_TESTSUITE], 236 ["$enable_testsuite"], 237 [Path to VICE testsuite.] 238 ) 239) 240 241AM_CONDITIONAL([TESTSUITE], [test "x$enable_testsuite" != xno]) 242 243# FIXME use pkgconfig 244AC_ARG_ENABLE([tests], 245 [AS_HELP_STRING([--enable-tests], 246 [enable unit tests [default=no]] 247 )], 248 [[echo Enabling unit tests] 249 AC_CHECK_HEADERS([UnitTest++/UnitTest++.h], [], AC_MSG_ERROR([UnitTest++.h header not found])) 250 AS_IF( 251 [test "x${ac_cv_header_UnitTestpp_UnitTestpp_h}" = xyes], 252 AC_CHECK_LIB([UnitTest++], [main], [unittest_libs=-lUnitTest++], AC_MSG_ERROR([UnitTest++ library not found])) 253 ) 254 [am_unittest=true] 255 ], 256 [am_unittest=false] 257) 258 259AM_CONDITIONAL([ENABLE_TEST], [test x$am_unittest = xtrue]) 260AC_SUBST([unittest_libs]) 261 262NEW_8580_FILTER=1 263AM_CONDITIONAL([NEW_8580_FILTER], [test $NEW_8580_FILTER != 0]) 264 265AC_SUBST(HAVE_BOOL) 266AC_SUBST(HAVE_LOG1P) 267AC_SUBST(HAVE_BUILTIN_EXPECT) 268AC_SUBST(RESID_INLINING) 269AC_SUBST(RESID_INLINE) 270AC_SUBST(RESID_BRANCH_HINTS) 271AC_SUBST(NEW_8580_FILTER) 272 273AC_SUBST(LIBSIDPLAYVERSION) 274AC_SUBST(LIBSTILVIEWVERSION) 275 276# exSID support 277AC_ARG_WITH( 278 [exsid], 279 [AS_HELP_STRING([--with-exsid], [Build with exsid support [@<:@yes/no/check, default=check@:>@]])], 280 [], 281 [with_exsid=check] 282) 283 284# exSID support requires either libexsid or one of libfdti1 or libftd2xx 285AS_IF( 286 [test "x$with_exsid" != "xno"], 287 [PKG_CHECK_MODULES([EXSID], 288 [libexsid >= 2.0], 289 [AC_DEFINE([HAVE_EXSID], 1, [Define to 1 if you have libexsid (-lexsid).]) 290 build_exsid_builder=yes], 291 [AC_MSG_WARN([$EXSID_PKG_ERRORS] [- using internal driver]) 292 AS_IF([test "x$MINGW32" != "xyes"], 293 AC_SEARCH_LIBS([dlopen], [dl dld], [], 294 [AC_MSG_ERROR([unable to find the dlopen() function])] 295 ) 296 ) 297 AC_CHECK_HEADERS([ftd2xx.h], 298 [AC_DEFINE([HAVE_FTD2XX], 1, [Define to 1 if you have ftd2xx.h]) 299 build_exsid_builder=yes 300 build_exsid_driver=yes], 301 [AC_MSG_WARN([ftd2xx.h not found, support will not be available])] 302 ) 303 AC_MSG_CHECKING([for libftdi1]) 304 PKG_CHECK_EXISTS([libftdi1 >= 1.0], 305 [AC_DEFINE([HAVE_FTDI], 1, [Define to 1 if you have ftdi.h]) 306 build_exsid_builder=yes 307 build_exsid_driver=yes 308 FTDI_CFLAGS=`$PKG_CONFIG --cflags libftdi1` 309 AC_MSG_RESULT([yes])], 310 [AC_MSG_WARN([libftdi1 not found, support will not be available])] 311 )] 312 )] 313) 314 315AS_IF( 316 [test "x$with_exsid" = "xyes" -a "x$build_exsid_builder" != xyes], 317 [AC_MSG_ERROR([Neither libexsid nor ftd2xx nor libftdi1 found])] 318) 319 320AC_SUBST([FTDI_CFLAGS]) 321 322AM_CONDITIONAL([EXSID_SUPPORT], [ test "x${build_exsid_builder}" = xyes]) 323AM_CONDITIONAL([EXSID_DRIVER], [ test "x${build_exsid_driver}" = xyes]) 324 325# check for thread model if available 326AS_IF([test "x$build_exsid_driver" = xyes], 327 [AX_PTHREAD( 328 [AC_DEFINE([EXSID_THREADED], 1, [Define for threaded driver])] 329 [AC_DEFINE([HAVE_PTHREAD_H], 1, [Define to 1 if you have pthread.h])] 330 )] 331) 332 333eval loadable_shrext=$shrext_cmds 334AC_DEFINE_UNQUOTED([SHLIBEXT], ["${loadable_shrext}"], [Shared library extension]) 335 336 337AC_CONFIG_FILES([ 338Makefile 339libsidplayfp.pc 340libstilview.pc 341src/sidplayfp/sidversion.h 342src/builders/residfp-builder/residfp/siddefs-fp.h 343src/builders/resid-builder/resid/siddefs.h 344tests/Makefile 345]) 346 347AC_OUTPUT 348