ethumb: use xattr as cache when available.
[framework/uifw/ethumb.git] / configure.ac
1 ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##
2 ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##
3 m4_define([v_maj], [0])
4 m4_define([v_min], [1])
5 m4_define([v_mic], [1])
6 m4_define([v_rev], m4_esyscmd([(svnversion "${SVN_REPO_PATH:-.}" | grep -v export || echo 0) | awk -F : '{printf("%s\n", $1);}' | tr -d ' :MSP\n']))
7 m4_if(v_rev, [0], [m4_define([v_rev], m4_esyscmd([git log 2> /dev/null | (grep -m1 git-svn-id || echo 0) | sed -e 's/.*@\([0-9]*\).*/\1/' | tr -d '\n']))])
8 ##--   When released, remove the dnl on the below line
9 dnl m4_undefine([v_rev])
10 ##--   When doing snapshots - change soname. remove dnl on below line
11 m4_define([relname], [ver-pre-svn-09])
12 m4_define([v_rel], [-release relname])
13 ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##
14 m4_ifdef([v_rev], [m4_define([v_ver], [v_maj.v_min.v_mic.v_rev])],
15 [m4_define([v_ver], [v_maj.v_min.v_mic])])
16 m4_define([lt_rev], m4_eval(v_maj + v_min))
17 m4_define([lt_cur], v_mic)
18 m4_define([lt_age], v_min)
19 ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##
20 ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##
21
22 AC_INIT([ethumb], [v_ver], [enlightenment-devel@lists.sourceforge.net])
23 AC_PREREQ([2.52])
24 AC_CONFIG_SRCDIR([configure.ac])
25 AC_CONFIG_MACRO_DIR([m4])
26 AC_CANONICAL_BUILD
27 AC_CANONICAL_HOST
28 AC_ISC_POSIX
29
30 AC_CONFIG_HEADERS([config.h])
31 AH_TOP([
32 #ifndef EFL_CONFIG_H__
33 #define EFL_CONFIG_H__
34 ])
35 AH_BOTTOM([
36 #endif /* EFL_CONFIG_H__ */
37 ])
38
39 AM_INIT_AUTOMAKE([1.6 dist-bzip2])
40 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
41 _XTERM_COLORS
42
43 ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##
44 ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##
45 m4_ifdef([v_rev], , [m4_define([v_rev], [0])])
46 m4_ifdef([v_rel], , [m4_define([v_rel], [])])
47 AC_DEFINE_UNQUOTED(VERS_MAJ, [v_maj], [Major version])
48 AC_DEFINE_UNQUOTED(VERS_MIN, [v_min], [Minor version])
49 AC_DEFINE_UNQUOTED(VERS_MIC, [v_mic], [Micro version])
50 AC_DEFINE_UNQUOTED(VERS_REV, [v_rev], [Revison])
51 version_info="lt_rev:lt_cur:lt_age"
52 release_info="v_rel"
53 AC_SUBST(version_info)
54 AC_SUBST(release_info)
55 ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##
56 ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##
57 VMAJ=v_maj
58 AC_SUBST(VMAJ)
59
60 dnl we just have set the version info, then:
61 AC_SUBST(version_info)
62
63 AC_PROG_CC
64 AM_PROG_CC_STDC
65 AM_PROG_CC_C_O
66 AC_HEADER_STDC
67 AC_C___ATTRIBUTE__
68 dnl AC_C_CONST is bogus, its tests fails on -Wall -O1 ( uninitialized values)
69 dnl AC_C_CONST
70
71 AC_LIBTOOL_WIN32_DLL
72 define([AC_LIBTOOL_LANG_CXX_CONFIG], [:])
73 define([AC_LIBTOOL_LANG_GCJ_CONFIG], [:])
74 define([AC_LIBTOOL_LANG_F77_CONFIG], [:])
75 AC_PROG_LIBTOOL
76
77 VMAJ=`echo $PACKAGE_VERSION | awk -F. '{printf("%s", $1);}'`
78 VMIN=`echo $PACKAGE_VERSION | awk -F. '{printf("%s", $2);}'`
79 version_info=`expr $VMAJ + $VMIN`
80 AC_SUBST(version_info)
81 AC_SUBST(VMAJ)
82
83 #themesdir="${datadir}/ethumb/data/frames"
84 #AC_SUBST(themesdir)
85 #AS_AC_EXPAND(THEMESDIR, $themesdir)
86 #AC_DEFINE_UNQUOTED(THEMESDIR, ["$THEMESDIR"], [Where frame theme files are installed.]
87 #)
88
89 #AS_AC_EXPAND(SYSCONFDIR, $sysconfdir)
90 #AC_DEFINE_UNQUOTED(SYSCONFDIR, ["$SYSCONFDIR"], [Where system configuration is stored])
91
92 EFL_CHECK_DOXYGEN([build_doc="yes"], [build_doc="no"])
93
94 with_max_log_level="<unset>"
95 AC_ARG_WITH(internal-maximum-log-level,
96    [AC_HELP_STRING([--with-internal-maximum-log-level=NUMBER],
97                    [limit eina internal log level to the given number, any call to EINA_LOG() with values greater than this will be compiled out, ignoring runtime settings, but saving function calls.])],
98    [
99     if test "x${withval}" != "xno"; then
100        if echo "${withval}" | grep '^[[0-9]]\+$' >/dev/null 2>/dev/null; then
101           AC_MSG_NOTICE([ignoring any EINA_LOG() with level greater than ${withval}])
102           AC_DEFINE_UNQUOTED(EINA_LOG_LEVEL_MAXIMUM, ${withval}, [if set, logging is limited to this amount.])
103           with_max_log_level="${withval}"
104        else
105           AC_MSG_ERROR([--with-internal-maximum-log-level takes a decimal number, got "${withval}" instead.])
106        fi
107     fi
108     ], [:])
109
110 EFL_ETHUMB_BUILD=""
111 EFL_ETHUMB_CLIENT_BUILD=""
112 lt_enable_auto_import=""
113 case "$host_os" in
114    mingw* | cegcc*)
115       EFL_ETHUMB_BUILD="-DEFL_ETHUMB_BUILD"
116       EFL_ETHUMB_CLIENT_BUILD="-DEFL_ETHUMB_CLIENT_BUILD"
117       lt_enable_auto_import="-Wl,--enable-auto-import"
118    ;;
119 esac
120 AC_SUBST(EFL_ETHUMB_BUILD)
121 AC_SUBST(EFL_ETHUMB_CLIENT_BUILD)
122 AC_SUBST(lt_enable_auto_import)
123
124 PKG_CHECK_MODULES(EINA, [eina >= 1.0.0])
125 PKG_CHECK_MODULES(EVAS, [evas >= 1.0.0])
126 PKG_CHECK_MODULES(ECORE, [ecore >= 1.0.0])
127 PKG_CHECK_MODULES(ECORE_EVAS, [ecore-evas >= 1.0.0])
128 PKG_CHECK_MODULES(ECORE_FILE, [ecore-file >= 1.0.0 ])
129 PKG_CHECK_MODULES(EDJE, [edje >= 1.0.0])
130 EFL_WITH_BIN([edje], [edje-cc], [edje_cc])
131
132 requirement_ethumb="eina >= 1.0.0 evas >= 1.0.0 ecore >= 1.0.0 ecore-evas >= 1.0.0 ecore-file >= 1.0.0 edje >= 1.0.0"
133 requirement_ethumb_client="ethumb edbus >= 1.0.0"
134
135 AM_CONDITIONAL(HAVE_EMOTION, false)
136 define([CHECK_MODULE_EMOTION],
137 [
138         AC_ETH_CHECK_PKG(EMOTION, emotion, [], [EMOTION=false])
139 ])
140
141 AC_ETH_OPTIONAL_MODULE([emotion], true, [CHECK_MODULE_EMOTION])
142
143 if $USE_MODULE_EMOTION ; then
144         requirement_ethumb="$requirement_ethumb emotion"
145 fi
146
147 AM_CONDITIONAL(HAVE_EPDF, false)
148 define([CHECK_MODULE_EPDF],
149 [
150         AC_ETH_CHECK_PKG(EPDF, epdf, [], [EPDF=false])
151 ])
152
153 AC_ETH_OPTIONAL_MODULE([epdf], true, [CHECK_MODULE_EPDF])
154 if $USE_MODULE_EPDF ; then
155         requirement_ethumb="$requirement_ethumb epdf"
156 fi
157
158 AM_CONDITIONAL(HAVE_EDBUS, false)
159 define([CHECK_MODULE_ETHUMBD],
160 [
161         AC_ETH_CHECK_PKG(EDBUS, edbus, [], [ETHUMBD=false])
162 ])
163
164 AC_ETH_OPTIONAL_MODULE([ethumbd], true, [CHECK_MODULE_ETHUMBD])
165 if $USE_MODULE_ETHUMBD ; then
166         dbusservicedir=${datadir}/dbus-1/services
167         AC_ARG_WITH([dbus-services],
168                     AC_HELP_STRING([--with-dbus-services=DBUS_SERVICES], [specify a directory to store dbus service files.]),
169                     [
170                       dbusservicedir=$withval
171                     ]
172                    )
173 fi
174 AC_ARG_ENABLE([libexif],
175         [AC_HELP_STRING([--disable-libexif], [disable libexif support. Default is enabled.])],
176         [
177          if test "x${enableval}" = "xyes" ; then
178             _iv_enable_libexif="yes"
179          else
180             _iv_enable_libexif="no"
181          fi
182         ],
183         [_iv_enable_libexif="yes"]
184 )
185
186 AC_MSG_CHECKING([whether libexif is built])
187 AC_MSG_RESULT([${_iv_enable_libexif}])
188
189 HAVE_LIBEXIF="no"
190
191 if test "x${_iv_enable_libexif}" = "xyes" ; then
192         AC_ETH_CHECK_PKG(LIBEXIF, libexif)
193 fi
194
195 AM_CONDITIONAL(HAVE_LIBEXIF, test $HAVE_LIBEXIF = yes)
196 AC_SUBST(HAVE_LIBEXIF)
197
198 AC_COMPILE_IFELSE(
199    [AC_LANG_PROGRAM(
200        [[
201 #include <stdlib.h>
202 #include <sys/types.h>
203 #include <sys/xattr.h>
204        ]],
205        [[
206 size_t tmp = listxattr("/", NULL, 0);
207 tmp = getxattr("/", "user.ethumb.md5", NULL, 0);
208 setxattr("/", "user.ethumb.md5", NULL, 0, 0);
209        ]])],
210     [
211       AC_DEFINE(HAVE_XATTR, 1, [Define to 1 if you have 'listxattr', 'setxattr' and 'getxattr'])
212       have_xattr="yes"
213     ],
214     [have_xattr="no"])
215
216 AC_MSG_CHECKING([for Xattr])
217 AC_MSG_RESULT([${have_xattr}])
218
219 AC_SUBST(requirement_ethumb)
220 AC_SUBST(requirement_ethumb_client)
221 AC_SUBST(dbusservicedir)
222
223 AC_CONFIG_FILES([
224 ethumb.pc
225 ethumb.spec
226 ethumb_client.pc
227 org.enlightenment.Ethumb.service
228 Makefile
229 src/Makefile
230 src/bin/Makefile
231 src/lib/Makefile
232 src/lib/client/Makefile
233 src/plugins/Makefile
234 src/plugins/emotion/Makefile
235 src/plugins/epdf/Makefile
236 src/tests/Makefile
237 data/Makefile
238 data/frames/Makefile
239 m4/Makefile
240 doc/Makefile
241 ])
242
243 AC_OUTPUT
244
245 txt_strip() {
246         echo "[$]@" | sed -e 's/^[[ \t]]*\([[^ \t]]*\)[[ \t]]*$/\1/g'
247 }
248
249 MODS=""
250 for mod in $OPTIONAL_MODULES; do
251         MODS="$MODS ${COLOR_HGREEN}+$mod${COLOR_END}"
252 done
253 MODS=$(txt_strip $MODS)
254
255 UNUSED_MODS=""
256 for mod in $UNUSED_OPTIONAL_MODULES; do
257         UNUSED_MODS="$UNUSED_MODS ${COLOR_HRED}-$mod${COLOR_END}"
258 done
259 UNUSED_MODS=$(txt_strip $UNUSED_MODS)
260
261 cat <<SUMMARY_EOF
262
263 Summary:
264  * project..........: $PACKAGE $VERSION
265  * prefix...........: $(txt_strip $prefix)
266  * DBus services dir: $(txt_strip $dbusservicedir)
267  * CFLAGS...........: $(txt_strip $CFLAGS)
268  * LDFLAGS..........: $(txt_strip $LDFLAGS)
269
270 Configuration Options Summary:
271
272  * use xattr........: ${have_xattr}
273  * maximum log level: ${with_max_log_level}
274  * documentation....: ${build_doc}
275
276 SUMMARY_EOF
277
278 if test "x$MODS" != "x"; then
279    echo -e " * enabled modules..: $MODS"
280 fi
281
282 if test "x$UNUSED_MODS" != "x"; then
283    echo -e " * disabled modules.: $UNUSED_MODS"
284 fi
285
286 cat << HINT_EOF
287
288 now type:
289
290 Now type 'make' ('gmake' on some systems) to compile $PACKAGE, and
291 then afterwards as root (or the user who will install this), type
292 'make install'. Change users with 'su' or 'sudo' appropriately.
293
294 HINT_EOF