1AC_INIT([libopenmpt], [0.6.0+release.autotools], [https://bugs.openmpt.org/], [libopenmpt], [https://lib.openmpt.org/]) 2AC_PREREQ([2.68]) 3 4AC_CONFIG_MACRO_DIR([m4]) 5AC_CONFIG_AUX_DIR([build-aux]) 6AC_CONFIG_FILES([Makefile libopenmpt/libopenmpt.pc Doxyfile]) 7 8AM_INIT_AUTOMAKE([1.11 -Wall -Werror foreign subdir-objects]) 9 10AM_PROG_AR 11 12LT_INIT 13 14AC_SYS_LARGEFILE 15 16PKG_PROG_PKG_CONFIG([0.24]) 17AC_PROG_CC 18AM_PROG_CC_C_O 19AC_PROG_CXX 20AC_PROG_INSTALL 21 22LIBOPENMPT_LTVER_CURRENT=3 23LIBOPENMPT_LTVER_REVISION=3 24LIBOPENMPT_LTVER_AGE=3 25AC_SUBST([LIBOPENMPT_LTVER_CURRENT]) 26AC_SUBST([LIBOPENMPT_LTVER_REVISION]) 27AC_SUBST([LIBOPENMPT_LTVER_AGE]) 28 29AC_DEFINE([MPT_SVNURL], ["https://source.openmpt.org/svn/openmpt/tags/libopenmpt-0.6.0"], [svn version]) 30AC_DEFINE([MPT_SVNVERSION], ["16293"], [svn version]) 31AC_DEFINE([MPT_SVNDATE], ["2021-12-23T14:50:28.728256Z"], [svn date]) 32AC_DEFINE([MPT_PACKAGE], [true], [is package]) 33 34 35AC_ARG_VAR(CXXSTDLIB_PCLIBSPRIVATE, [C++ standard library (or libraries) required for static linking. This will be put in the pkg-config file libopenmpt.pc Libs.private field and used for nothing else.]) 36 37 38AC_CANONICAL_HOST 39case $host_os in 40 mingw32*) 41 LIBOPENMPT_WIN32_LIBS="-lole32 -lrpcrt4" 42 LIBOPENMPT_LIBS_PRIVATE_WIN32="-lole32 -lrpcrt4" 43 OPENMPT123_WIN32_LIBS=-lwinmm 44 CXXFLAGS="$CXXFLAGS -municode" 45 CFLAGS="$CFLAGS -municode" 46 WIN32_CONSOLE_CXXFLAGS=-mconsole 47 WIN32_CONSOLE_CFLAGS=-mconsole 48 ;; 49 *) 50 LIBOPENMPT_WIN32_LIBS= 51 LIBOPENMPT_LIBS_PRIVATE_WIN32= 52 OPENMPT123_WIN32_LIBS= 53 WIN32_CONSOLE_CXXFLAGS= 54 WIN32_CONSOLE_CFLAGS= 55 ;; 56esac 57AC_SUBST([LIBOPENMPT_WIN32_LIBS]) 58AC_SUBST([OPENMPT123_WIN32_LIBS]) 59AC_SUBST([WIN32_CONSOLE_CXXFLAGS]) 60AC_SUBST([WIN32_CONSOLE_CFLAGS]) 61 62LIBOPENMPT_REQUIRES_PRIVATE= 63LIBOPENMPT_LIBS_PRIVATE= 64 65# Required libopenmpt dependency: zlib 66ZLIB_PKG= 67AC_ARG_WITH([zlib], AS_HELP_STRING([--without-zlib], [Disable use of zlib.])) 68AS_IF([test "x$with_zlib" != "xno"], 69 [ 70 PKG_CHECK_MODULES([ZLIB], [zlib], 71 [ 72 ZLIB_PKG=zlib 73 AC_DEFINE([MPT_WITH_ZLIB], [], [with zlib]) 74 ], [AC_MSG_ERROR([Unable to find zlib.])]) 75 ] 76) 77 78# Required libopenmpt dependency: mpg123 79MPG123_PKG= 80AC_ARG_WITH([mpg123], AS_HELP_STRING([--without-mpg123], [Disable use of libmpg123.])) 81AS_IF([test "x$with_mpg123" != "xno"], 82 [ 83 PKG_CHECK_MODULES([MPG123], [libmpg123 >= 1.14.0], 84 [ 85 MPG123_PKG=libmpg123 86 AC_DEFINE([MPT_WITH_MPG123], [], [with mpg123]) 87 ], [AC_MSG_ERROR([Unable to find libmpg123.])]) 88 ] 89) 90 91# Required libopenmpt dependency: ogg 92OGG_PKG= 93AC_ARG_WITH([ogg], AS_HELP_STRING([--without-ogg], [Disable use of libogg.])) 94AS_IF([test "x$with_ogg" != "xno"], 95 [ 96 PKG_CHECK_MODULES([OGG], [ogg], 97 [ 98 OGG_PKG=ogg 99 AC_DEFINE([MPT_WITH_OGG], [], [with ogg]) 100 ], [AC_MSG_ERROR([Unable to find libogg.])]) 101 ] 102) 103 104# Required libopenmpt dependency: vorbis 105VORBIS_PKG= 106AC_ARG_WITH([vorbis], AS_HELP_STRING([--without-vorbis], [Disable use of libvorbis.])) 107AS_IF([test "x$with_vorbis" != "xno"], 108 [ 109 PKG_CHECK_MODULES([VORBIS], [vorbis], 110 [ 111 VORBIS_PKG=vorbis 112 AC_DEFINE([MPT_WITH_VORBIS], [], [with vorbis]) 113 ], [AC_MSG_ERROR([Unable to find libvorbis.])]) 114 ] 115) 116 117# Required libopenmpt dependency: vorbisfile 118VORBISFILE_PKG= 119AC_ARG_WITH([vorbisfile], AS_HELP_STRING([--without-vorbisfile], [Disable use of libvorbisfile.])) 120AS_IF([test "x$with_vorbisfile" != "xno"], 121 [ 122 PKG_CHECK_MODULES([VORBISFILE], [vorbisfile], 123 [ 124 VORBISFILE_PKG=vorbisfile 125 AC_DEFINE([MPT_WITH_VORBISFILE], [], [with vorbisfile]) 126 ], [AC_MSG_ERROR([Unable to find libvorbisfile.])]) 127 ] 128) 129 130 131LIBOPENMPT_REQUIRES_PRIVATE="$ZLIB_PKG $MPG123_PKG $OGG_PKG $VORBIS_PKG $VORBISFILE_PKG" 132LIBOPENMPT_LIBS_PRIVATE="$CXXSTDLIB_PCLIBSPRIVATE $LIBOPENMPT_LIBS_PRIVATE_WIN32" 133AC_SUBST([LIBOPENMPT_REQUIRES_PRIVATE]) 134AC_SUBST([LIBOPENMPT_LIBS_PRIVATE]) 135 136 137# openmpt123 138AC_ARG_ENABLE([openmpt123], AS_HELP_STRING([--disable-openmpt123], [Disable the openmpt123 command line player.])) 139AM_CONDITIONAL([ENABLE_OPENMPT123], [test "x$enable_openmpt123" != "xno"]) 140 141 142# examples 143AC_ARG_ENABLE([examples], AS_HELP_STRING([--disable-examples], [Disable the example programs.])) 144AM_CONDITIONAL([ENABLE_EXAMPLES], [test "x$enable_examples" != "xno"]) 145 146 147# tests 148AC_ARG_ENABLE([tests], AS_HELP_STRING([--disable-tests], [Disable the test suite.])) 149AM_CONDITIONAL([ENABLE_TESTS], [test "x$enable_tests" != "xno"]) 150 151 152# Optional openmpt123 dependency 153AC_ARG_WITH([pulseaudio], AS_HELP_STRING([--with-pulseaudio], [Enable use of libpulse and libpulse-simple (enabled by default on Linux).])) 154AS_IF([test "x$enable_openmpt123" != "xno"],[ 155case $host_os in 156 linux*) 157AS_IF([test "x$with_pulseaudio" != "xno"], 158 [ 159 PKG_CHECK_MODULES([PULSEAUDIO], [libpulse libpulse-simple], 160 [ 161 have_pulseaudio=1 162 AC_DEFINE([MPT_WITH_PULSEAUDIO], [], [with libpulseaudio]) 163 ], 164 [ 165 have_pulseaudio=0 166 AC_MSG_ERROR([Unable to find libpulse and/or libpulse-simple.]) 167 ] 168 ) 169 ], 170 [ 171 have_pulseaudio=0 172 ] 173) 174 ;; 175 *) 176AS_IF([test "x$with_pulseaudio" = "xyes"], 177 [ 178 PKG_CHECK_MODULES([PULSEAUDIO], [libpulse libpulse-simple], 179 [ 180 have_pulseaudio=1 181 AC_DEFINE([MPT_WITH_PULSEAUDIO], [], [with libpulseaudio]) 182 ], 183 [ 184 have_pulseaudio=0 185 AC_MSG_ERROR([Unable to find libpulse and/or libpulse-simple.]) 186 ] 187 ) 188 ], 189 [ 190 have_pulseaudio=0 191 ] 192) 193 ;; 194esac 195],[have_pulseaudio=0]) 196 197# Optional openmpt123 and examples dependency 198AC_ARG_WITH([portaudio], AS_HELP_STRING([--without-portaudio], [Disable use of libportaudio.])) 199AS_IF([test "x$enable_openmpt123$enable_examples" != "xnono"],[ 200AS_IF([test "x$with_portaudio" != "xno"], 201 [ 202 PKG_CHECK_MODULES([PORTAUDIO], [portaudio-2.0], 203 [ 204 have_portaudio=1 205 AC_DEFINE([MPT_WITH_PORTAUDIO], [], [with libportaudio]) 206 ], 207 [ 208 have_portaudio=0 209 AC_MSG_ERROR([Unable to find libportaudio.]) 210 ] 211 ) 212 ], 213 [ 214 have_portaudio=0 215 ] 216) 217],[have_portaudio=0]) 218AM_CONDITIONAL([HAVE_PORTAUDIO], [test x$have_portaudio = x1]) 219 220# Optional examples dependency: PortAudio C++ 221AC_ARG_WITH([portaudiocpp], AS_HELP_STRING([--without-portaudiocpp], [Disable use of libportaudiocpp.])) 222AS_IF([test "x$enable_examples" != "xno"],[ 223AS_IF([test "x$with_portaudiocpp" != "xno"], 224 [ 225 PKG_CHECK_MODULES([PORTAUDIOCPP], [portaudiocpp], 226 [ 227 have_portaudiocpp=1 228 AC_DEFINE([MPT_WITH_PORTAUDIOCPP], [], [with libportaudiocpp]) 229 ], 230 [ 231 have_portaudiocpp=0 232 AC_MSG_ERROR([Unable to find libportaudiocpp.]) 233 ] 234 ) 235 ], 236 [ 237 have_portaudiocpp=0 238 ] 239) 240],[have_portaudiocpp=0]) 241AM_CONDITIONAL([HAVE_PORTAUDIOCPP], [test x$have_portaudiocpp = x1]) 242 243# Optional disabled openmpt123 dependency: libsdl2 244AC_ARG_WITH([sdl2], AS_HELP_STRING([--with-sdl2], [Enable use of libsdl2.])) 245AS_IF([test "x$enable_openmpt123" != "xno"],[ 246AS_IF([test "x$with_sdl2" = "xyes"], 247 [ 248 PKG_CHECK_MODULES([SDL2], [sdl2 >= 2.0.4], [AC_DEFINE([MPT_WITH_SDL2], [], [with libsdl2])], [AC_MSG_ERROR([Unable to find libsdl2.])]) 249 ] 250) 251]) 252 253# Optional openmpt123 dependency: libsndfile 254AC_ARG_WITH([sndfile], AS_HELP_STRING([--without-sndfile], [Disable use of libsndfile.])) 255AS_IF([test "x$enable_openmpt123" != "xno"],[ 256AS_IF([test "x$with_sndfile" != "xno"], 257 [ 258 PKG_CHECK_MODULES([SNDFILE], [sndfile], [AC_DEFINE([MPT_WITH_SNDFILE], [], [with libsndfile])], [AC_MSG_ERROR([Unable to find libsndfile.])]) 259 ] 260) 261]) 262 263# Optional openmpt123 dependency: libFLAC 264AC_ARG_WITH([flac], AS_HELP_STRING([--without-flac], [Disable use of libflac.])) 265AS_IF([test "x$enable_openmpt123" != "xno"],[ 266AS_IF([test "x$with_flac" != "xno"], 267 [ 268 PKG_CHECK_MODULES([FLAC], [flac >= 1.3.0], [AC_DEFINE([MPT_WITH_FLAC], [], [with libflac])], [AC_MSG_ERROR([Unable to find libflac >= 1.3.0.])]) 269 ] 270) 271]) 272 273# We want a modern C compiler 274AC_PROG_CC_STDC 275#AC_PROG_CC_C99 276 277# We need C++17 support 278#AX_CXX_COMPILE_STDCXX(20, [noext], [optional]) 279#AS_IF([test "x$HAVE_CXX20" != "x1"], 280# [ 281# AX_CXX_COMPILE_STDCXX(17, [noext], [mandatory]) 282# ],[] 283#) 284AX_CXX_COMPILE_STDCXX(17, [noext], [mandatory]) 285 286AC_LANG_PUSH([C]) 287AX_CHECK_COMPILE_FLAG([-fvisibility=hidden], [CFLAGS="$CFLAGS -fvisibility=hidden"]) 288AX_CFLAGS_WARN_ALL 289AC_LANG_POP([C]) 290 291AC_LANG_PUSH([C++]) 292AX_CHECK_COMPILE_FLAG([-fvisibility=hidden], [CXXFLAGS="$CXXFLAGS -fvisibility=hidden"]) 293AX_CXXFLAGS_WARN_ALL 294AC_LANG_POP([C++]) 295 296# mingw c++ thread 297AC_LANG_PUSH([C++]) 298case $host_os in 299 mingw32*) 300 AC_CHECK_HEADER([mingw.thread.h], 301 [ 302 have_mingwstdtthreads=1 303 ], 304 [ 305 have_mingwstdtthreads=0 306 ] 307 ) 308 ;; 309 *) 310 have_mingwstdtthreads=0 311 ;; 312esac 313AC_LANG_POP([C++]) 314AS_IF([test "x$have_mingwstdtthreads" = "x1"], 315 [ 316 MINGWSTDTHREADS_CPPFLAGS=-DMPT_WITH_MINGWSTDTHREADS 317 ], 318 [ 319 MINGWSTDTHREADS_CPPFLAGS= 320 ] 321) 322AC_SUBST([MINGWSTDTHREADS_CPPFLAGS]) 323 324DX_DOXYGEN_FEATURE(ON) 325DX_DOT_FEATURE(OFF) 326DX_HTML_FEATURE(ON) 327 328DX_MAN_FEATURE(OFF) 329DX_CHM_FEATURE(OFF) 330DX_CHI_FEATURE(OFF) 331DX_RTF_FEATURE(OFF) 332DX_XML_FEATURE(OFF) 333DX_PDF_FEATURE(OFF) 334DX_PS_FEATURE(OFF) 335 336DX_INIT_DOXYGEN([libopenmpt], [Doxyfile], [doxygen-doc]) 337 338AC_OUTPUT 339 340