1AC_INIT([vimpc], [0.09.1], [https://github.com/boysetsfrog/vimpc], [vimpc], [https://github.com/boysetsfrog/vimpc])
2AC_LANG_PUSH([C++])
3
4AC_PREREQ([2.59])
5AM_INIT_AUTOMAKE([foreign])
6AC_CONFIG_HEADERS([src/config.h])
7AC_PROG_CXX
8
9# Need to check this directory on bsd systems
10CPPFLAGS="$CPPFLAGS -I/usr/local/include -I/opt/local/include"
11CXXFLAGS="$CXXFLAGS -D__STRICT_ANSI__"
12LDFLAGS="$LDFLAGS -L/opt/local/lib"
13
14AC_CHECK_HEADERS(sys/ioctl.h termios.h)
15
16AC_MSG_CHECKING(for svnversion)
17if test -d .svn && hash svnversion 2>/dev/null; then
18   AC_MSG_RESULT(yes)
19   PACKAGE_SVN_REVISION=`svnversion`
20   AC_DEFINE_UNQUOTED(PACKAGE_SVN_REVISION, "${PACKAGE_SVN_REVISION}", "Define to the subversion repository version of this package.")
21else
22   AC_MSG_RESULT(no)
23fi
24
25AC_MSG_CHECKING(for git)
26if test -d .git && hash git 2>/dev/null; then
27    AC_MSG_RESULT(yes)
28    PACKAGE_GIT_REVISION=`git rev-parse HEAD`
29    AC_DEFINE_UNQUOTED(PACKAGE_GIT_REVISION, "${PACKAGE_GIT_REVISION}", "Define to the git repository version of this package.")
30else
31    AC_MSG_RESULT(no)
32fi
33
34AX_PTHREAD([AC_DEFINE(HAVE_PTHREAD,1,[Define if you have POSIX threads libraries and header files.])],
35            [AC_MSG_ERROR(vimpc requires pthread library)])
36
37CFLAGS="$PTHREAD_CFLAGS $CFLAGS"
38CXXFLAGS="$PTHREAD_CFLAGS $CXXFLAGS"
39CC="$PTHREAD_CC"]
40
41AX_CXX_COMPILE_STDCXX_11(noext,mandatory)
42
43boost_default="no"
44
45AC_MSG_CHECKING(whether to enable boost automatically)
46AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <functional>]
47                                    [#include <atomic>]
48                                    [#include <thread>]],
49                                   [[std::thread thread; std::function<void()> function; std::atomic<bool> atom;]])],
50	AC_MSG_RESULT([no]),
51	[boost_default="yes"
52    AC_MSG_RESULT([yes])]
53)
54
55AC_ARG_ENABLE(boost, [ --enable-boost=[no/yes] turn on/off boost support [default=$boost_default]],, enable_boost=$boost_default)
56if test "x$enable_boost" = "xyes"; then
57AC_DEFINE_UNQUOTED(BOOST_SUPPORT, "1", "Define to 1 if boost support enabled")
58
59AX_BOOST_BASE([], [], [AC_MSG_ERROR(vimpc requires boost library)])
60AX_BOOST_SYSTEM([], [], [AC_MSG_ERROR(vimpc requires boost system library)])
61AX_BOOST_THREAD([], [], [AC_MSG_ERROR(vimpc requires boost thread library)])
62
63AC_CHECK_HEADER(boost/thread.hpp,
64                [AC_DEFINE_UNQUOTED(HAVE_BOOST_THREAD,1,Define to 1 if <boost/thread.hpp> header file)],
65                [AC_MSG_ERROR(boostthread-dev library is required)])
66
67AC_CHECK_HEADER(boost/foreach.hpp,
68                [AC_DEFINE_UNQUOTED(HAVE_BOOST_FOREACH,1,Define to 1 if <boost/foreach.hpp> header file)],
69                [AC_MSG_ERROR(boost-dev library is required)])
70
71AC_CHECK_HEADER(boost/function.hpp,
72                [AC_DEFINE_UNQUOTED(HAVE_BOOST_FUNCTION,1,Define to 1 if <boost/function.hpp> header file)],
73                [AC_MSG_ERROR(boost-dev library is required)])
74
75CPPFLAGS="$CPPFLAGS -DUSE_BOOST_THREAD -DUSE_BOOST_FUNCTIONAL -DUSE_BOOST_FOREACH"
76LIBS="$LIBS $BOOST_SYSTEM_LIB $BOOST_THREAD_LIB"
77
78AC_MSG_CHECKING([whether compiler supports lambda functions])
79AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <boost/function.hpp>]], [[int a = 5; boost::function<int(int)> f = [&a](int b) { return a + b; }; f(8);]])],
80	AC_MSG_RESULT([yes]),
81	AC_MSG_RESULT([no])
82		AC_MSG_ERROR([[Your compiler doesn't seem to support lambda functions, please upgrade (G++ >= 4.6)]]))
83else
84AC_MSG_CHECKING([whether compiler supports lambda functions])
85AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <functional>]], [[int a = 5; std::function<int(int)> f = [&a](int b) { return a + b; }; f(8);]])],
86	AC_MSG_RESULT([yes]),
87	AC_MSG_RESULT([no])
88		AC_MSG_ERROR([[Your compiler doesn't seem to support lambda functions, please upgrade (G++ >= 4.6)]]))
89fi
90
91MP_WITH_CURSES
92HAVE_CURS=$mp_cv_curses
93if test x$HAVE_CURS != xyes; then
94      AC_MSG_ERROR([vimpc requires the curses or ncurses library. Please install before compiling vimpc.])
95fi
96
97LIBS="$LIBS $CURSES_LIB"
98
99AC_SEARCH_LIBS([keypad], [tinfow tinfo])
100
101PKG_CHECK_MODULES(pcre, libpcre)
102
103AC_SUBST(pcre_LIBS)
104AC_SUBST(pcre_CFLAGS)
105
106AC_CHECK_HEADER(pcre.h,
107                [],
108                [AC_MSG_ERROR(libpcre-dev library is required)])
109
110lyrics_default="yes"
111AC_ARG_ENABLE(lyrics, [ --enable-lyrics=[no/yes] turn on/off lyric fetching support [default=$lyrics_default]],, enable_lyrics=$lyrics_default)
112
113AM_CONDITIONAL([LYRICS_SUPPORT], [test x$enable_lyrics = xyes])
114
115if test "x$enable_lyrics" = "xyes"; then
116AC_DEFINE_UNQUOTED(LYRICS_SUPPORT, "1", "Define to 1 if lyrics support enabled")
117
118PKG_CHECK_MODULES(curl, libcurl)
119
120AC_SUBST(curl_LIBS)
121AC_SUBST(curl_CFLAGS)
122
123AC_CHECK_HEADER(curl/curl.h,
124                [AC_DEFINE_UNQUOTED(HAVE_CURL_CURL_H,1,Define to 1 if <curl.h> header file)],
125                [AC_MSG_ERROR(libcurl library is required)])
126fi
127
128taglib_default="yes"
129AC_ARG_ENABLE(taglib, [ --enable-taglib=[no/yes] turn on/off taglib support [default=$taglib_default]],, enable_taglib=$taglib_default)
130if test "x$enable_taglib" = "xyes"; then
131AC_DEFINE_UNQUOTED(TAG_SUPPORT, "1", "Define to 1 if tag support enabled")
132
133PKG_CHECK_MODULES(taglib, taglib)
134
135AC_SUBST(taglib_LIBS)
136AC_SUBST(taglib_CFLAGS)
137
138AC_CHECK_HEADER(taglib/taglib.h,
139                [AC_DEFINE_UNQUOTED(HAVE_TAGLIB_H,1,Define to 1 if <taglib.h> header file)],
140                [AC_MSG_ERROR(taglib-dev library is required)])
141fi
142
143test_default="no"
144AC_ARG_ENABLE(test, [ --enable-test=[no/yes] turn on/off test support [default=$test_default]],, enable_test=$test_default)
145
146AM_CONDITIONAL([BUILD_TEST], [test x$enable_test = xyes])
147
148if test "x$enable_test" = "xyes"; then
149AC_DEFINE_UNQUOTED(TEST_ENABLED, "1", "Define to 1 if test support is enabled")
150
151PKG_CHECK_MODULES(cppunit, cppunit)
152
153AC_SUBST(cppunit_LIBS)
154AC_SUBST(cppunit_CFLAGS)
155
156AC_CHECK_HEADER(cppunit/Test.h,
157                [AC_DEFINE_UNQUOTED(HAVE_TEST_H,1,Define to 1 if <Test.h> header file)],
158                [AC_MSG_ERROR(libcppunit-dev library is required)])
159fi
160
161profiler_default="no"
162AC_ARG_ENABLE(profiler, [ --enable-profiler=[no/yes] turn on/off profiler support [default=$profiler_default]],, enable_profiler=$profiler_default)
163
164AM_CONDITIONAL([BUILD_PROFILER], [test x$enable_profiler = xyes])
165
166if test "x$enable_profiler" = "xyes"; then
167AC_DEFINE_UNQUOTED(PROFILER_ENABLED, "1", "Define to 1 if profiler support is enabled")
168
169LIBS="$LIBS -lprofiler"
170fi
171
172
173AC_CHECK_HEADER(mpd/client.h,
174                [],
175                [AC_MSG_ERROR(mpdclient-dev library is required)])
176
177PKG_CHECK_MODULES(mpdclient, libmpdclient)
178
179AC_SUBST(mpdclient_LIBS)
180AC_SUBST(mpdclient_CFLAGS)
181
182AC_MSG_CHECKING(whether to enable debugging)
183debug_default="no"
184AC_ARG_ENABLE(debug, [ --enable-debug=[no/yes] turn on debugging [default=$debug_default]],, enable_debug=$debug_default)
185if test "x$enable_debug" = "xyes"; then
186   CPPFLAGS="$CPPFLAGS -g -D__DEBUG_PRINTS -D__DEBUG_ASSERT"
187   AC_MSG_RESULT(yes)
188else
189   AC_MSG_RESULT(no)
190fi
191
192if test "x$enable_debug" = "xyes"; then
193   AC_CHECK_HEADER(execinfo.h, [AC_DEFINE_UNQUOTED(HAVE_EXECINFO_H,1,Define to 1 if there is an <execinfo.h> header file)],[])
194fi
195
196AC_MSG_CHECKING(whether to enable warnings)
197warn_default="no"
198AC_ARG_ENABLE(warnings, [ --enable-warnings=[no/yes] turn on warnings [default=$warn_default]],, enable_warnings=$warn_default)
199if test "x$enable_warnings" = "xyes"; then
200   CPPFLAGS="$CPPFLAGS  \\
201            -Waddress -Warray-bounds -Wc++0x-compat -Wchar-subscripts -Wenum-compare -Wcomment -Wformat \\
202            -Wmissing-braces -Wparentheses -Wreorder -Wreturn-type -Wsequence-point -Wsign-compare -Wstrict-aliasing \\
203            -Wstrict-overflow=1 -Wswitch -Wtrigraphs -Wuninitialized \\
204            -Wformat -Wold-style-cast -Woverloaded-virtual -Wctor-dtor-privacy -Wsign-promo \\
205            -Wswitch-default -Wswitch-enum -Wfloat-equal -Wshadow -Winit-self -Wformat-security \\
206            -Wcast-qual -Wcast-align -Wmissing-declarations -Wcomment"
207   AC_MSG_RESULT(yes)
208else
209   AC_MSG_RESULT(no)
210fi
211
212
213CPPFLAGS="$CPPFLAGS -DHELP_DIRECTORY='\"$docdir\"'"
214
215AC_CONFIG_FILES([Makefile])
216AC_OUTPUT
217