Statistics
| Revision:

root / configure.in @ 3311

History | View | Annotate | Download (14.4 KB)

1
dnl Process this file with autoconf to produce a configure script.
2
AC_PREREQ(2.50)
3
AC_INIT(src/main.c)
4
PACKAGE=sylpheed
5

    
6
dnl version number
7
MAJOR_VERSION=3
8
MINOR_VERSION=4
9
MICRO_VERSION=0
10
INTERFACE_AGE=0
11
BINARY_AGE=0
12
EXTRA_VERSION=beta7
13
BUILD_REVISION=1152
14
VERSION=$MAJOR_VERSION.$MINOR_VERSION.$MICRO_VERSION$EXTRA_VERSION
15

    
16
dnl define if this is a development release
17
DEVEL_VERSION=1
18

    
19
dnl set $target
20
AC_CANONICAL_SYSTEM
21

    
22
dnl
23
AM_INIT_AUTOMAKE($PACKAGE, $VERSION, no-define)
24
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES])
25
dnl AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE")
26
dnl AC_DEFINE_UNQUOTED(VERSION, "$VERSION")
27
AC_SUBST(PACKAGE)
28
AC_SUBST(VERSION)
29
AC_SUBST(MAJOR_VERSION)
30
AC_SUBST(MINOR_VERSION)
31
AC_SUBST(MICRO_VERSION)
32
AC_SUBST(EXTRA_VERSION)
33
AC_SUBST(BUILD_REVISION)
34

    
35
dnl development or release version
36
AC_SUBST(DEVEL_VERSION)
37
if test "x$DEVEL_VERSION" != "x"; then
38
  AC_DEFINE(DEVEL_VERSION, 1, [Define if this is a development release])
39
fi
40

    
41
dnl libtool versioning
42
LT_RELEASE=$MAJOR_VERSION.$MINOR_VERSION
43
dnl LT_CURRENT=`expr 1 + $MICRO_VERSION - $INTERFACE_AGE`
44
dnl LT_REVISION=$INTERFACE_AGE
45
dnl LT_AGE=`expr $BINARY_AGE - $INTERFACE_AGE`
46
LT_CURRENT=2
47
LT_REVISION=0
48
LT_AGE=1
49
AC_SUBST(LT_RELEASE)
50
AC_SUBST(LT_CURRENT)
51
AC_SUBST(LT_REVISION)
52
AC_SUBST(LT_AGE)
53

    
54
dnl Specify a header configuration file
55
AM_CONFIG_HEADER(config.h)
56

    
57
AM_MAINTAINER_MODE
58

    
59
dnl Checks for programs.
60
dnl AC_ARG_PROGRAM
61
AC_PROG_CC
62
AM_DISABLE_STATIC
63
AC_ISC_POSIX
64
AM_PROG_CC_STDC
65
AC_PROG_INSTALL
66
AC_PROG_LN_S
67
AC_PROG_MAKE_SET
68
AC_PROG_CPP
69
dnl AC_PROG_RANLIB
70
AM_PROG_LEX
71
AC_PROG_YACC
72
AM_PROG_LIBTOOL
73

    
74
SYLPHEED_ACLOCAL_INCLUDE(ac)
75

    
76
native_win32=no
77

    
78
case "$target" in
79
*-darwin*)
80
	CFLAGS="$CFLAGS -no-cpp-precomp -fno-common"
81
	;;
82
*-*-mingw*)
83
	native_win32=yes
84
	CFLAGS="$CFLAGS -mms-bitfields -mwindows"
85
	LIBS="$LIBS -lws2_32 -lwinmm"
86
	AC_CHECK_PROG(WINDRES, windres, windres)
87
	;;
88
esac
89

    
90
AM_CONDITIONAL(NATIVE_WIN32, test "$native_win32" = "yes")
91

    
92
dnl Checks for libraries.
93
AM_PATH_GLIB_2_0(2.8.0,, AC_MSG_ERROR(Test for GLib failed. See the 'INSTALL' for help.), gobject gmodule)
94

    
95
AC_PATH_PROG(GLIB_GENMARSHAL, glib-genmarshal)
96

    
97
AM_PATH_GTK_2_0(2.8.0,, AC_MSG_ERROR(Test for Gtk failed. See the 'INSTALL' for help.))
98

    
99
dnl --disable-deprecated switch for GTK2 purification
100
AC_ARG_ENABLE(deprecated, [  --disable-deprecated    Disable deprecated GTK functions. ],
101
			  [GTK_CFLAGS="$GTK_CFLAGS -DG_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"], [])
102

    
103
AC_SUBST(GTK_CFLAGS)
104
AC_SUBST(GTK_LIBS)
105

    
106
dnl checks for iconv
107
AM_ICONV
108

    
109
AC_CHECK_FUNCS(bind_textdomain_codeset)
110

    
111
dnl for gettext
112
ALL_LINGUAS="be bg cs da de el es et eu fi fr gl hr hu it ja ko lt nl pl pt_BR ro ru sk sl sr sv tr uk vi zh_CN zh_TW"
113
GETTEXT_PACKAGE=sylpheed
114
AC_SUBST(GETTEXT_PACKAGE)
115
AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE", [Define text domain.])
116

    
117
AM_GLIB_GNU_GETTEXT
118
dnl AM_GNU_GETTEXT
119
dnl AC_CHECK_FUNC(gettext, AC_CHECK_LIB(intl, gettext))
120

    
121
if test "x$DATADIRNAME" != "x"; then
122
	localedir='${prefix}/${DATADIRNAME}/locale'
123
else
124
	localedir='${datadir}/locale'
125
fi
126
AC_ARG_WITH(localedir,
127
	[  --with-localedir=DIR    Locale directory],
128
	[localedir="$withval"])
129
AC_SUBST(localedir)
130

    
131
manualdir='${datadir}/${PACKAGE}/manual'
132
AC_ARG_WITH(manualdir,
133
	[  --with-manualdir=DIR    Manual directory],
134
	[manualdir="$withval"])
135
AC_SUBST(manualdir)
136

    
137
faqdir='${datadir}/${PACKAGE}/faq'
138
AC_ARG_WITH(faqdir,
139
	[  --with-faqdir=DIR       FAQ directory],
140
	[faqdir="$withval"])
141
AC_SUBST(faqdir)
142

    
143
plugindir='${exec_prefix}/lib/${PACKAGE}/plugins'
144
AC_ARG_WITH(plugindir,
145
	[  --with-plugindir=DIR    Plug-in directory],
146
	[plugindir="$withval"])
147
AC_SUBST(plugindir)
148

    
149
themedir='${datadir}/${PACKAGE}/icons'
150
AC_ARG_WITH(themedir,
151
	[  --with-themedir=DIR     Icon theme directory],
152
	[themedir="$withval"])
153
AC_SUBST(themedir)
154

    
155
dnl GPGME is used to support OpenPGP 
156
AC_ARG_ENABLE(gpgme,
157
	[  --disable-gpgme         Disable GnuPG support using GPGME],
158
	[ac_cv_enable_gpgme=$enableval], [ac_cv_enable_gpgme=yes])
159
AC_MSG_CHECKING([whether to use GPGME])
160
if test $ac_cv_enable_gpgme = yes; then
161
	AC_MSG_RESULT(yes)
162
	AM_PATH_GPGME(1.0.0, AC_DEFINE(USE_GPGME, 1, Define if you use GPGME to support OpenPGP.),
163
		      [use_gpgme=no
164
		       ac_cv_enable_gpgme=no])
165
else
166
	AC_MSG_RESULT(no)
167
fi
168

    
169
dnl for JPilot support in addressbook
170
dnl no check for libraries; these are dynamically loaded
171
AC_ARG_ENABLE(jpilot,
172
	[  --enable-jpilot         Enable JPilot support [[default=no]]],
173
	[ac_cv_enable_jpilot=$enableval], [ac_cv_enable_jpilot=no])
174
AC_MSG_CHECKING([whether to use JPilot])
175
if test "$ac_cv_enable_jpilot" = yes; then
176
	AC_MSG_RESULT(yes)
177
	AC_CHECK_HEADERS(pi-args.h pi-appinfo.h pi-address.h,
178
			 [ AC_DEFINE(USE_JPILOT, 1, Define if you want JPilot support in addressbook.) ],
179
			 [ ac_cv_enable_jpilot=no ])
180
	if test "$ac_cv_enable_jpilot" = no; then
181
		AC_CHECK_HEADERS(libpisock/pi-args.h libpisock/pi-appinfo.h libpisock/pi-address.h,
182
				 [ ac_cv_enable_jpilot=yes
183
				   AC_DEFINE(USE_JPILOT, 1, Define if you want JPilot support in addressbook.) ])
184
	fi
185
	AC_MSG_CHECKING([whether jpilot is available])
186
	AC_MSG_RESULT($ac_cv_enable_jpilot)
187

    
188
	if test "$ac_cv_enable_jpilot" = yes; then
189
		LIBS="$LIBS -lpisock"
190
	fi
191
else
192
	AC_MSG_RESULT(no)
193
fi
194

    
195
dnl for LDAP support in addressbook
196
dnl no check for libraries; dynamically loaded
197
AC_ARG_ENABLE(ldap,
198
	[  --enable-ldap           Enable LDAP support [[default=no]]],
199
	[ac_cv_enable_ldap=$enableval], [ac_cv_enable_ldap=no])
200
AC_MSG_CHECKING([whether to use LDAP])
201
if test "$ac_cv_enable_ldap" = yes; then
202
	AC_MSG_RESULT(yes)
203

    
204
	dnl check for available libraries, and pull them in
205
	AC_CHECK_LIB(resolv, res_query, LDAP_LIBS="$LDAP_LIBS -lresolv")
206
	AC_CHECK_LIB(socket, bind, LDAP_LIBS="$LDAP_LIBS -lsocket")
207
	AC_CHECK_LIB(nsl, gethostbyaddr, LDAP_LIBS="$LDAP_LIBS -lnsl")
208
	AC_CHECK_LIB(lber, ber_get_tag, LDAP_LIBS="$LDAP_LIBS -llber",,
209
		     $LDAP_LIBS)
210

    
211
	dnl we need libpthread for sylpheed ldap,  until we find
212
	dnl a better way to handle ldap requests asynchronously...
213
	AC_CHECK_LIB(pthread, pthread_create, LDAP_LIBS="$LDAP_LIBS -lpthread")
214

    
215
	AC_CHECK_HEADERS(ldap.h lber.h pthread.h,
216
			 [ ac_cv_enable_ldap=yes ],
217
			 [ ac_cv_enable_ldap=no ])
218

    
219
	if test "$ac_cv_enable_ldap" = yes; then
220
		AC_CHECK_LIB(ldap, ldap_open,
221
			     [ ac_cv_enable_ldap=yes ],
222
			     [ ac_cv_enable_ldap=no ],
223
			     $LDAP_LIBS)
224
	fi
225

    
226
	AC_MSG_CHECKING([whether ldap library is available])
227
	AC_MSG_RESULT($ac_cv_enable_ldap)
228

    
229
	if test "$ac_cv_enable_ldap" = yes; then
230
		CFLAGS="$CFLAGS `$PKG_CONFIG --cflags gthread-2.0`"
231
		LDAP_LIBS="$LDAP_LIBS -lldap `$PKG_CONFIG --libs gthread-2.0`"
232
		AC_DEFINE(USE_LDAP, 1, Define if you want LDAP support in addressbook.)
233
		AC_DEFINE(USE_THREADS, 1, Whether to use multithread or not)
234
		AC_SUBST(LDAP_LIBS)
235
	fi
236
else
237
	AC_MSG_RESULT(no)
238
fi
239

    
240
dnl Check for OpenSSL
241
AC_ARG_ENABLE(ssl,
242
	[  --disable-ssl           Disable SSL support using OpenSSL],
243
	[ac_cv_enable_ssl=$enableval], [ac_cv_enable_ssl=yes])
244
AC_MSG_CHECKING([whether to use OpenSSL])
245
if test $ac_cv_enable_ssl = yes; then
246
	AC_MSG_RESULT(yes)
247
	dnl First check with pkg-config
248
	PKG_CHECK_MODULES(OPENSSL, openssl, [:], [:])
249
	if test "x$OPENSSL_LIBS" != "x"; then
250
		CFLAGS="$CFLAGS $OPENSSL_CFLAGS"
251
		LIBS="$LIBS $OPENSSL_LIBS"
252
		AC_MSG_CHECKING([if openssl is available])
253
		AC_MSG_RESULT(yes)
254
		AC_DEFINE(USE_SSL, 1, Define if you use OpenSSL to support SSL.)
255
	else
256
		dnl If pkg-config fails, run compile/link test.
257
		AC_MSG_CHECKING([if openssl is available])
258
		ac_save_LIBS="$LIBS"
259
		if test "$native_win32" = yes; then
260
			LIBS="$LIBS -lssl32 -leay32"
261
		else
262
			LIBS="$LIBS -lssl -lcrypto"
263
		fi
264
		AC_TRY_LINK([
265
#include <openssl/opensslv.h>
266
],		[ return OPENSSL_VERSION_NUMBER; ],
267
		[ AC_MSG_RESULT(yes)
268
		  AC_DEFINE(USE_SSL, 1, Define if you use OpenSSL to support SSL.) ],
269
		[ AC_MSG_RESULT(no)
270
		  LIBS="$ac_save_LIBS"
271
		  ac_cv_enable_ssl=no ])
272
	fi
273
else
274
	AC_MSG_RESULT(no)
275
fi
276

    
277
dnl Check for X-Face support
278
AC_ARG_ENABLE(compface,
279
	[  --disable-compface      Do not use compface (X-Face)],
280
	[ac_cv_enable_compface=$enableval], [ac_cv_enable_compface=yes])
281
if test "$ac_cv_enable_compface" = yes; then
282
	AC_CHECK_LIB(compface, uncompface,,[ac_cv_enable_compface=no])
283
fi
284

    
285
dnl Check for GtkSpell support
286
AC_MSG_CHECKING([whether to use GtkSpell])
287
AC_ARG_ENABLE(gtkspell,
288
	[  --disable-gtkspell      Do not use GtkSpell in editor],
289
	[ac_cv_enable_gtkspell=$enableval], [ac_cv_enable_gtkspell=yes])
290
if test "$ac_cv_enable_gtkspell" = yes; then
291
	AC_MSG_RESULT(yes)
292
	AC_MSG_CHECKING([whether GtkSpell is available])
293
	if $PKG_CONFIG gtkspell-2.0 ; then
294
		AC_MSG_RESULT(yes)
295
		CFLAGS="$CFLAGS `$PKG_CONFIG --cflags gtkspell-2.0`"
296
		LIBS="$LIBS `$PKG_CONFIG --libs gtkspell-2.0`"
297
		if $PKG_CONFIG --atleast-version 2.0.13 gtkspell-2.0 ; then
298
			AC_DEFINE(USE_ENCHANT, 1, Use Enchant with GtkSpell)
299
			LIBS="$LIBS `$PKG_CONFIG --libs enchant`"
300

    
301
			dnl Workaroud for zemberek crash
302
			if $PKG_CONFIG --atleast-version 1.4.2 enchant ; then
303
				CFLAGS="$CFLAGS `$PKG_CONFIG --cflags dbus-glib-1`"
304
				LIBS="$LIBS `$PKG_CONFIG --libs dbus-glib-1`"
305
			fi
306
		elif $PKG_CONFIG --atleast-version 2.0.12 gtkspell-2.0 ; then
307
			LIBS="$LIBS -laspell"
308
		fi
309
		AC_DEFINE(USE_GTKSPELL, 1, Use GtkSpell in editor)
310
	else
311
		AC_MSG_RESULT(no)
312
		ac_cv_enable_gtkspell=no
313
	fi
314
else
315
	AC_MSG_RESULT(no)		
316
fi
317

    
318
dnl Check for Oniguruma support in message filtering
319
AC_ARG_ENABLE(oniguruma,
320
	[  --enable-oniguruma      Use Oniguruma instead of system's regex [[default=no]]],
321
	[ac_cv_enable_oniguruma=$enableval], [ac_cv_enable_oniguruma=no])
322
AC_MSG_CHECKING([whether to use Oniguruma])
323
if test "$ac_cv_enable_oniguruma" = yes; then
324
	AC_MSG_RESULT(yes)
325
	AC_MSG_CHECKING([whether Oniguruma is available])
326
        dnl AC_CHECK_PROG(ONIG_CONFIG, onig-config, onig-config)
327
	ONIG_CONFIG=onig-config
328
	ONIG_VERSION=`$ONIG_CONFIG --version 2>/dev/null`
329
	if test "x$ONIG_VERSION" != "x"; then
330
		AC_MSG_RESULT(yes)
331
		CFLAGS="$CFLAGS `$ONIG_CONFIG --cflags`"
332
		LIBS="$LIBS `$ONIG_CONFIG --libs`"
333
		AC_DEFINE(USE_ONIGURUMA, 1, Define if you want to use Oniguruma.)
334
	else
335
		AC_MSG_RESULT(no)
336
		ac_cv_enable_oniguruma=no
337
	fi
338
else
339
	AC_MSG_RESULT(no)
340
fi
341

    
342
dnl check additional libraries
343
AC_CHECK_LIB(xpg4, setlocale)
344
AC_CHECK_LIB(resolv, res_init)
345
AC_CHECK_LIB(socket, bind)
346
AC_CHECK_LIB(nsl, gethostbyname)
347

    
348
dnl for GThread support
349
AC_ARG_ENABLE(threads,
350
	[  --disable-threads       Disable multithread support],
351
	[use_threads=$enableval], [use_threads=yes])
352

    
353
AC_MSG_CHECKING([whether to use threads])
354
if test x"$use_threads" = xyes ; then
355
	AC_MSG_RESULT(yes)
356
	if $PKG_CONFIG --exists gthread-2.0 ; then
357
		CFLAGS="$CFLAGS `$PKG_CONFIG --cflags gthread-2.0`"
358
		LIBS="$LIBS `$PKG_CONFIG --libs gthread-2.0`"
359
		AC_DEFINE(USE_THREADS, 1, Whether to use multithread or not)
360
	else
361
		AC_MSG_ERROR([Sylpheed requires GThread from GLib to enable threading.])
362
	fi
363
else
364
	AC_MSG_RESULT(no)
365
fi
366

    
367
dnl check for IPv6 option
368
AC_ARG_ENABLE(ipv6,
369
	[  --disable-ipv6          Disable IPv6 support],
370
	[ac_cv_enable_ipv6=$enableval], [ac_cv_enable_ipv6=yes])
371

    
372
dnl automated checks for IPv6 support.
373
AC_MSG_CHECKING([whether to use IPv6])
374
if test x"$ac_cv_enable_ipv6" = xyes; then
375
	AC_MSG_RESULT(yes)
376
	AC_MSG_CHECKING([for IPv6 support])
377
	if test "$native_win32" = yes; then
378
		AC_CACHE_VAL(ac_cv_ipv6,[
379
			AC_TRY_COMPILE([#define INET6
380
					#include <sys/types.h>
381
					#include <winsock2.h>
382
					#include <ws2tcpip.h>],
383
				[int x = IPPROTO_IPV6; struct in6_addr a;],
384
				ac_cv_ipv6=yes, ac_cv_ipv6=no)
385
		])
386
	else
387
		AC_CACHE_VAL(ac_cv_ipv6,[
388
			AC_TRY_COMPILE([#define INET6
389
					#include <sys/types.h>
390
					#include <netinet/in.h>],
391
				[int x = IPPROTO_IPV6; struct in6_addr a;],
392
				ac_cv_ipv6=yes, ac_cv_ipv6=no)
393
		])
394
	fi
395
	AC_MSG_RESULT($ac_cv_ipv6)
396
	if test $ac_cv_ipv6 = yes; then
397
		AC_DEFINE(INET6, 1, Define if you want IPv6 support.)
398
	else
399
		AC_MSG_WARN(*** IPv6 will not be supported ***)
400
		ac_cv_enable_ipv6=no
401
	fi
402
else
403
	AC_MSG_RESULT(no)
404
fi
405

    
406
dnl for update check feature
407
AC_ARG_ENABLE(updatecheck,
408
	[  --disable-updatecheck   Disable update check feature],
409
	[ac_cv_enable_updatecheck=$enableval], [ac_cv_enable_updatecheck=yes])
410
if test x"$ac_cv_enable_updatecheck" = xyes ; then
411
	AC_DEFINE(USE_UPDATE_CHECK, 1, Define if you want update check feature.)
412

    
413
  dnl for update check feature (requires update check enabled)
414
  AC_ARG_ENABLE(updatecheckplugin,
415
	[  --disable-updatecheckplugin   Disable update check plugin feature],
416
	[ac_cv_enable_updatecheckplugin=$enableval], [ac_cv_enable_updatecheckplugin=yes])
417
  if test x"$ac_cv_enable_updatecheckplugin" = xyes ; then
418
	AC_DEFINE(USE_UPDATE_CHECK_PLUGIN, 1, Define if you want update check plugin feature.)
419
  fi
420
fi
421

    
422
dnl Check for d_type member in struct dirent
423
AC_MSG_CHECKING([whether struct dirent has d_type member])
424
AC_CACHE_VAL(ac_cv_dirent_d_type,[
425
	AC_TRY_COMPILE([#include <dirent.h>],
426
		       [struct dirent d; d.d_type = DT_REG;],
427
		       ac_cv_dirent_d_type=yes, ac_cv_dirent_d_type=no)
428
])
429
AC_MSG_RESULT($ac_cv_dirent_d_type)
430
if test $ac_cv_dirent_d_type = yes; then
431
	AC_DEFINE(HAVE_DIRENT_D_TYPE, 1,
432
		  Define if `struct dirent' has `d_type' member.)
433
fi
434

    
435

    
436
dnl Checks for header files.
437
AC_HEADER_DIRENT
438
AC_HEADER_STDC
439
AC_HEADER_SYS_WAIT
440
AC_CHECK_HEADERS(fcntl.h sys/file.h unistd.h paths.h \
441
		 sys/param.h sys/utsname.h sys/select.h \
442
		 netdb.h regex.h sys/mman.h)
443

    
444
dnl Checks for typedefs, structures, and compiler characteristics.
445
AC_C_CONST
446
AC_TYPE_OFF_T
447
AC_TYPE_PID_T
448
AC_TYPE_SIZE_T
449
AC_STRUCT_TM
450

    
451
AC_SYS_LARGEFILE
452
AC_FUNC_FSEEKO
453

    
454
GNUPG_CHECK_TYPEDEF(u32, HAVE_U32_TYPEDEF, Used to test for a u32 typedef)
455
AC_CHECK_SIZEOF(unsigned short, 2)
456
AC_CHECK_SIZEOF(unsigned int, 4)
457
AC_CHECK_SIZEOF(unsigned long, 4)
458

    
459
dnl Checks for library functions.
460
AC_FUNC_ALLOCA
461
AC_CHECK_FUNCS(gethostname mkdir mktime socket strstr strchr \
462
	       uname flock lockf inet_aton inet_addr \
463
	       fchmod truncate getuid regcomp mlock fsync)
464

    
465
AC_OUTPUT([
466
Makefile
467
sylpheed.spec
468
ac/Makefile
469
libsylph/Makefile
470
src/version.h
471
src/sylpheed.rc
472
src/Makefile
473
src/icons/Makefile
474
plugin/Makefile
475
plugin/attachment_tool/Makefile
476
plugin/test/Makefile
477
po/Makefile.in
478
faq/Makefile
479
faq/de/Makefile
480
faq/en/Makefile
481
faq/es/Makefile
482
faq/fr/Makefile
483
faq/it/Makefile
484
manual/Makefile
485
manual/en/Makefile
486
manual/ja/Makefile
487
nsis/Makefile
488
])
489

    
490
dnl Output the configuration summary
491
echo ""
492
echo "$PACKAGE $VERSION"
493
echo ""
494
echo "GnuPG         : $ac_cv_enable_gpgme"
495
echo "JPilot        : $ac_cv_enable_jpilot"
496
echo "LDAP          : $ac_cv_enable_ldap"
497
echo "OpenSSL       : $ac_cv_enable_ssl"
498
echo "iconv         : $am_cv_func_iconv"
499
echo "compface      : $ac_cv_enable_compface"
500
echo "IPv6          : $ac_cv_enable_ipv6"
501
echo "GtkSpell      : $ac_cv_enable_gtkspell"
502
echo "Oniguruma     : $ac_cv_enable_oniguruma"
503
echo "GThread       : $use_threads"
504
echo ""
505
echo "The binary will be installed in $prefix/bin"
506
echo ""
507
echo "Configure finished, type 'make' to build."