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