configure: use pkg check instead of headers
[platform/upstream/lightmediascanner.git] / configure.ac
1 AC_INIT(lightmediascanner, 0.4.5.99, barbieri@profusion.mobi)
2 AC_PREREQ(2.60)
3 AC_CONFIG_SRCDIR(configure.ac)
4 AC_CANONICAL_BUILD
5 AC_CANONICAL_HOST
6 AC_ISC_POSIX
7
8 AM_INIT_AUTOMAKE(foreign 1.11 silent-rules subdir-objects dist-bzip2)
9 AM_CONFIG_HEADER(config.h)
10 AC_USE_SYSTEM_EXTENSIONS
11 AC_CONFIG_MACRO_DIR([m4])
12 _XTERM_COLORS
13 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
14
15 AC_PROG_CC
16 AM_PROG_CC_STDC
17 AM_PROG_CC_C_O
18 AC_HEADER_STDC
19 AC_C_CONST
20
21 define([AC_LIBTOOL_LANG_F77_CONFIG], [:])dnl
22 LT_INIT([disable-static])
23
24 VMAJ=`echo $PACKAGE_VERSION | awk -F. '{printf("%s", $1);}'`
25 VMIN=`echo $PACKAGE_VERSION | awk -F. '{printf("%s", $2);}'`
26 VMIC=`echo $PACKAGE_VERSION | awk -F. '{printf("%s", $3);}'`
27 SNAP=`echo $PACKAGE_VERSION | awk -F. '{printf("%s", $4);}'`
28 version_info=`expr $VMAJ + $VMIN`":$VMIC:$VMIN"
29 AC_SUBST(version_info)
30
31 pluginsdir="${libdir}/lightmediascanner/plugins"
32
33 AC_SUBST(pluginsdir)
34 AS_AC_EXPAND(PLUGINSDIR, $pluginsdir)
35 AC_DEFINE_UNQUOTED(PLUGINSDIR, ["$PLUGINSDIR"], [Where plugins are installed.])
36
37 AC_CHECK_FUNCS(realpath)
38 AM_ICONV
39
40 # required modules
41 PKG_CHECK_MODULES(SQLITE3, [sqlite3 >= 3.3])
42
43 # plugins checks
44
45 AM_CONDITIONAL(USE_TREMOR, false)
46 define([CHECK_MODULE_OGG],
47 [
48         AC_LMS_CHECK_PKG(VORBIS, vorbis, [], [OGG=false])
49         if test "x$HAVE_VOBIS" = "xno"; then
50             AC_LMS_CHECK_PKG(VORBIS, vorbisdec, [USE_TREMOR=true], [OGG=false])
51         fi
52         AC_LMS_CHECK_PKG(THEORADEC, theoradec, [], [OGG=false])
53 ])
54
55 AM_CONDITIONAL(HAVE_MP4V2, false)
56 define([CHECK_MODULE_MP4],
57 [
58         AC_CHECK_HEADERS(mp4v2/mp4v2.h, HAVE_MP4V2_HEADERS=yes, HAVE_MP4V2_HEADERS=no)
59         if test "x$HAVE_MP4V2_HEADERS" = "xyes"; then
60             AC_CHECK_LIB(mp4v2, MP4Read, [MP4=true], [MP4=false])
61             MP4V2_LIBS="-lmp4v2"
62             AC_SUBST(MP4V2_LIBS)
63
64             # strict about new 2.0 api
65             AC_MSG_CHECKING([mp4v2 2.0 API (MP4Read and MP4Close)])
66             AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
67                [[#include <mp4v2/mp4v2.h>]],
68                [[MP4FileHandle fh = MP4Read("/tmp");
69                  MP4Close(fh, 0);
70                ]])],
71                [
72                   MP4=true
73                   AC_MSG_RESULT([yes])
74                ], [
75                   MP4=false
76                   AC_MSG_RESULT([no])])
77         else
78             MP4=false
79         fi
80 ])
81
82 AM_CONDITIONAL(HAVE_FLAC, false)
83 define([CHECK_MODULE_FLAC],
84 [
85         AC_LMS_CHECK_PKG(FLAC, flac, [], [FLAC=false])
86 ])
87
88 AM_CONDITIONAL(HAVE_GENERIC, false)
89 define([CHECK_MODULE_GENERIC],
90 [
91         AC_LMS_CHECK_PKG(GENERIC, [libavcodec libavformat], [], [GENERIC=false])
92 ])
93
94 # plugins declarations
95 AC_LMS_OPTIONAL_MODULE([dummy], true)
96 AC_LMS_OPTIONAL_MODULE([jpeg], true)
97 AC_LMS_OPTIONAL_MODULE([png], true)
98 AC_LMS_OPTIONAL_MODULE([video-dummy], true)
99 AC_LMS_OPTIONAL_MODULE([audio-dummy], true)
100 AC_LMS_OPTIONAL_MODULE([m3u], true)
101 AC_LMS_OPTIONAL_MODULE([ogg], true, [CHECK_MODULE_OGG])
102 AC_LMS_OPTIONAL_MODULE([pls], true)
103 AC_LMS_OPTIONAL_MODULE([asf], true)
104 AC_LMS_OPTIONAL_MODULE([rm], true)
105 AC_LMS_OPTIONAL_MODULE([mp4], true, [CHECK_MODULE_MP4])
106 AC_LMS_OPTIONAL_MODULE([id3], true)
107 AC_LMS_OPTIONAL_MODULE([flac], true, [CHECK_MODULE_FLAC])
108 AC_LMS_OPTIONAL_MODULE([wave], true)
109 AC_LMS_OPTIONAL_MODULE([generic], true, [CHECK_MODULE_GENERIC])
110
111
112 AC_ARG_ENABLE([daemon],
113         [AC_HELP_STRING([--disable-daemon],
114                 [Disable DBus scanner daemon. @<:@default=enable@:>@])],
115         [build_daemon=${enableval}], [build_daemon=yes])
116
117 dbusservicedir="${datadir}/dbus-1/services"
118 AC_ARG_WITH([dbus-services],
119         [AC_HELP_STRING([--with-dbus-services=DBUS_SERVICES],
120                 [Specify a directory to store dbus service files.])],
121         [dbusservicedir=$withval])
122 AC_SUBST(dbusservicedir)
123
124 dbusdir=""
125 if test "$build_daemon" = "yes"; then
126         PKG_CHECK_MODULES(GIO, [gio-2.0 >= 2.32])
127 fi
128 AM_CONDITIONAL([BUILD_DAEMON], [test "$build_daemon" = "yes"])
129
130
131 #####################################################################
132 # Default CFLAGS and LDFLAGS
133 #####################################################################
134
135 CC_CHECK_FLAGS_APPEND(with_cflags, [CFLAGS], [\
136                        -pipe \
137                        -DANOTHER_BRICK_IN_THE \
138                        -Wall \
139                        -W \
140                        -Wextra \
141                        -Wno-inline \
142                        -Wvla \
143                        -Wundef \
144                        -Wformat=2 \
145                        -Wlogical-op \
146                        -Wsign-compare \
147                        -Wformat-security \
148                        -Wmissing-include-dirs \
149                        -Wformat-nonliteral \
150                        -Wold-style-definition \
151                        -Wpointer-arith \
152                        -Winit-self \
153                        -Wdeclaration-after-statement \
154                        -Wfloat-equal \
155                        -Wmissing-prototypes \
156                        -Wstrict-prototypes \
157                        -Wredundant-decls \
158                        -Wmissing-declarations \
159                        -Wmissing-noreturn \
160                        -Wshadow \
161                        -Wendif-labels \
162                        -Wstrict-aliasing=2 \
163                        -Wwrite-strings \
164                        -Wno-long-long \
165                        -Wno-overlength-strings \
166                        -Wno-unused-parameter \
167                        -Wno-missing-field-initializers \
168                        -Wno-unused-result \
169                        -Wnested-externs \
170                        -Wchar-subscripts \
171                        -Wtype-limits \
172                        -Wuninitialized \
173                        -fno-common \
174                        -fdiagnostics-show-option \
175                        -fvisibility=hidden \
176                        -ffunction-sections \
177                        -fdata-sections])
178 AC_SUBST([WARNINGFLAGS], $with_cflags)
179
180
181 CC_CHECK_FLAGS_APPEND([with_ldflags], [LDFLAGS], [ \
182                        -Wl,--as-needed \
183                        -Wl,--gc-sections])
184 AC_SUBST([GCLDFLAGS], $with_ldflags)
185
186
187 AC_OUTPUT([
188 lightmediascanner.pc
189 lightmediascanner.spec
190 org.lightmediascanner.service
191 Makefile
192 m4/Makefile
193 src/Makefile
194 src/bin/Makefile
195 src/lib/Makefile
196 src/plugins/Makefile
197 ])
198
199
200 # report
201 txt_strip() {
202         echo "[$]@" | sed -e 's/^[[ \t]]*\([[^ \t]]*\)[[ \t]]*$/\1/g'
203 }
204
205 MODS=""
206 for mod in $OPTIONAL_MODULES; do
207         MODS="$MODS ${COLOR_HGREEN}+$mod${COLOR_END}"
208 done
209 MODS=$(txt_strip $MODS)
210
211 UNUSED_MODS=""
212 for mod in $UNUSED_OPTIONAL_MODULES; do
213         UNUSED_MODS="$UNUSED_MODS ${COLOR_HRED}-$mod${COLOR_END}"
214 done
215 UNUSED_MODS=$(txt_strip $UNUSED_MODS)
216
217 cat << SUMMARY_EOF
218
219 Summary:
220  * project........: $PACKAGE $VERSION
221  * prefix.........: $(txt_strip $prefix)
222  * CFLAGS.........: $(txt_strip $CFLAGS)
223 SUMMARY_EOF
224
225 echo -e " * modules........: $MODS $UNUSED_MODS"
226 echo -e " * daemon.........: ${build_daemon}"