code refactoring
[platform/core/uifw/isf.git] / configure.ac
1 # Process this file with autoconf to produce a configure script
2 #AC_INIT(scim, 1.4.7, suzhe@tsinghua.org.cn)
3 AC_INIT(isf, 5.0.5, isf@samsung.com)
4 AC_CONFIG_SRCDIR([ism/src/scim.h])
5
6 ###########################################################
7 ##          Some definitions of Version macros.          ##
8 ###########################################################
9
10 # ISF version
11 ISF_MAJOR_VERSION=5
12 ISF_MINOR_VERSION=0
13 ISF_MICRO_VERSION=5
14
15 ISF_VERSION=$ISF_MAJOR_VERSION.$ISF_MINOR_VERSION.$ISF_MICRO_VERSION
16
17 AC_SUBST(ISF_MAJOR_VERSION)
18 AC_SUBST(ISF_MINOR_VERSION)
19 AC_SUBST(ISF_MICRO_VERSION)
20 AC_SUBST(ISF_VERSION)
21
22 # SCIM version
23 SCIM_MAJOR_VERSION=1
24 SCIM_MINOR_VERSION=4
25 SCIM_MICRO_VERSION=7
26
27 SCIM_VERSION=$SCIM_MAJOR_VERSION.$SCIM_MINOR_VERSION.$SCIM_MICRO_VERSION
28
29 AC_SUBST(SCIM_MAJOR_VERSION)
30 AC_SUBST(SCIM_MINOR_VERSION)
31 AC_SUBST(SCIM_MICRO_VERSION)
32 AC_SUBST(SCIM_VERSION)
33
34 # libtool versioning for SCIM
35
36 # increment if the interface has additions, changes, removals.
37 SCIM_CURRENT=10
38
39 # increment any time the source changes; set to 0 if you increment CURRENT
40 SCIM_REVISION=3
41
42 # increment if any interfaces have been added; set to 0
43 # if any interfaces have been removed. removal has
44 # precedence over adding, so set to 0 if both happened.
45 SCIM_AGE=2
46
47 AC_SUBST(SCIM_CURRENT)
48 AC_SUBST(SCIM_REVISION)
49 AC_SUBST(SCIM_AGE)
50
51 # Define a string for the earliest version that this release cannot
52 # coexist with. This is used for directory hierarchies.
53 #
54 SCIM_EPOCH=-1.0
55 AC_SUBST(SCIM_EPOCH)
56
57 # Define a string for the earliest version that this release has
58 # binary compatibility with. This is used for module locations.
59 #
60 SCIM_BINARY_VERSION=1.4.0
61 AC_SUBST(SCIM_BINARY_VERSION)
62
63 AC_DEFINE_UNQUOTED(SCIM_BINARY_VERSION, "$SCIM_BINARY_VERSION", [The binary version of SCIM library.])
64 AC_DEFINE_UNQUOTED(SCIM_VERSION, "$SCIM_VERSION", [The release version of SCIM library.])
65 AC_DEFINE_UNQUOTED(SCIM_MAJOR_VERSION, $SCIM_MAJOR_VERSION, [The Major version of SCIM library.])
66 AC_DEFINE_UNQUOTED(SCIM_MINOR_VERSION, $SCIM_MINOR_VERSION, [The Minor version of SCIM library.])
67 AC_DEFINE_UNQUOTED(SCIM_MICRO_VERSION, $SCIM_MICRO_VERSION, [The Micro version of SCIM library.])
68
69 GETTEXT_PACKAGE=scim
70 AC_SUBST(GETTEXT_PACKAGE)
71 AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE", [The gettext domain])
72
73 ###########################################################
74 ##                  Start Configuration.                 ##
75 ###########################################################
76 AC_CANONICAL_HOST
77 AC_USE_SYSTEM_EXTENSIONS
78
79 # Init automake stuff
80 AM_INIT_AUTOMAKE
81 AM_CONFIG_HEADER([config.h])
82
83 # Init platform
84 PLATFORM_INIT
85
86 # Init gettext
87 ALL_LINGUAS="ar as az be_BY bg bn bn_BD ca cs da de el_GR en en_PH en_US es_ES es_MX es_US et eu fa fi fr fr_CA ga gl gu he hi hr hu hy id is it_IT ja_JP ka kk km kn ko_KR ky_KG lo lt lv mg mk ml mn_MN mr ms my_MM my_ZG nb ne nl or pa pl pl_SP pt_BR pt_PT ro ru_RU si sk sl sq sr sv sw ta te tg_TJ th tk_TM tl tr_TR uk ur uz vi xh zh_CN zh_HK zh_TW zh_TW zu"
88 AM_GNU_GETTEXT
89
90 # Init libtool
91 AC_LIBTOOL_DLOPEN
92 AC_PROG_LIBTOOL
93 AC_LIB_LTDL
94 AC_SUBST(LIBTOOL_DEPS)
95
96 # libtool option to control which symbols are exported
97 # right now, symbols starting with _ are not exported
98 # !!! DO NOT USE IT !!!
99 LIBTOOL_EXPORT_OPTIONS=''
100 AC_SUBST(LIBTOOL_EXPORT_OPTIONS)
101
102 # Checks for programs.
103 AC_PROG_CXX
104 AC_PROG_CC
105 AC_LANG(C++)
106
107 # Checks if doxygen is avaiable
108
109 DOXYGEN=no
110 if test "x$with_doxygen" != "xno"; then
111   AC_PATH_PROG(DOXYGEN, doxygen, no)
112 fi
113
114 AM_CONDITIONAL(HAVE_DOXYGEN, test x$DOXYGEN != xno)
115 AC_SUBST(DOXYGEN)
116
117 # Checks if graphviz is available
118 AC_CHECK_PROG(HAVE_GRAPHVIZ, dot, YES, NO)
119 AC_PATH_PROG(DOT, dot)
120 DOT=`dirname $DOT`
121 AC_SUBST(DOT)
122
123 AC_PATH_PROG(PERL, perl)
124 AC_SUBST(PERL)
125
126 # Check intltool
127 #IT_PROG_INTLTOOL([0.33], [no-xml])
128
129 # Checks for libraries.
130 AC_HEADER_STDC
131 AC_HEADER_TIME
132 AC_CHECK_HEADERS([langinfo.h libintl.h string.h dirent.h hash_map ext/hash_map])
133 AC_CHECK_HEADERS([stdio.h ctype.h errno.h assert.h])
134
135 # Checks for typedefs, structures, and compiler characteristics.
136 AC_C_CONST
137 AC_C_INLINE
138 AC_TYPE_SIZE_T
139
140 if test x$ac_cv_type_size_t != xyes; then
141   AC_MSG_ERROR([No type size_t, but SCIM needs it!])
142 fi
143
144 AC_CHECK_SIZEOF(char)
145 AC_CHECK_SIZEOF(unsigned short int)
146 AC_CHECK_SIZEOF(unsigned int)
147 AC_CHECK_SIZEOF(unsigned long int)
148 AC_CHECK_SIZEOF(unsigned long long int)
149 AC_CHECK_HEADERS([stdint.h],[has_stdint=yes],[has_stdint=no])
150
151 if test x$ac_cv_sizeof_unsigned_short_int = x2 && test x$ac_cv_sizeof_char = x1 ; then
152   :
153 else
154   AC_MSG_ERROR([
155 *** SCIM requires
156 ***      sizeof (unsigned short int)  == 2
157 ***      sizeof (char)                == 1
158 *** You might want to consider using the GNU C compiler.
159 ])
160 fi
161
162 if test x$ac_cv_sizeof_wchar_t = x0 ; then
163   AC_MSG_ERROR([
164 *** SCIM requires a compiler that supports wchar_t,
165 *** You might want to consider using the GNU C compiler.
166 ])
167 fi
168
169 if test x$has_stdint = xyes; then
170   INCLUDE_STDINT="#include <stdint.h>"
171   UINT16="uint16_t"
172   UINT32="uint32_t"
173   UINT64="uint64_t"
174 else
175   INCLUDE_STDINT="//#include <stdint.h>"
176   UINT16="unsigned short int"
177   if test x$ac_cv_sizeof_unsigned_int = x4; then
178     UINT32="unsigned int"
179   else
180     if test x$ac_cv_sizeof_unsigned_long_int = x4; then
181       UINT32="unsigned long int"
182     else
183       AC_MSG_ERROR([*** No suitable integer type for uint32 found.])
184     fi
185   fi
186   if test x$ac_cv_sizeof_unsigned_long_long_int = x8; then
187     UINT64="unsigned long long int"
188   else
189     AC_MSG_ERROR([*** No suitable integer type for uint64 found.])
190   fi
191 fi
192 AC_SUBST(INCLUDE_STDINT)
193 AC_SUBST(UINT16)
194 AC_SUBST(UINT32)
195 AC_SUBST(UINT64)
196
197 # Checks for library functions.
198 AC_FUNC_MALLOC
199 AC_CHECK_FUNCS([gettimeofday memmove memset nl_langinfo setlocale daemon])
200 AC_CHECK_FUNCS([memcpy strcmp strchr strrchr])
201 AC_CHECK_FUNCS([opendir closedir readdir])
202 AC_CHECK_FUNCS([usleep nanosleep])
203 AC_CHECK_FUNCS([gethostbyname gethostbyname_r socket bind accept connect listen],
204                [socket_ok=yes],
205                [socket_ok=no])
206
207 AM_ICONV
208
209 # Check EINA
210 PKG_CHECK_MODULES(EINA, [eina])
211
212 # Check ECORE
213 PKG_CHECK_MODULES(ECORE, [ecore])
214
215 # Check ECORE_IPC library
216 PKG_CHECK_MODULES(ECORE_IPC, [ecore-ipc])
217
218 # Check ECORE FILE library
219 PKG_CHECK_MODULES(ECORE_FILE, [ecore-file])
220
221 # Check ECORE FILE library
222 PKG_CHECK_MODULES(ECORE_INPUT, [ecore-input])
223
224 # Check ECORE EVAS library
225 PKG_CHECK_MODULES(ECORE_EVAS, [ecore-evas])
226
227 # Check ECORE IMF
228 PKG_CHECK_MODULES(ECORE_IMF, [ecore-imf],
229                   [ISF_HAS_ECORE_IMF=yes],
230                   [ISF_HAS_ECORE_IMF=no])
231
232 if test "$ISF_HAS_ECORE_IMF" = "yes"; then
233   EFL_LIBDIR=`$PKG_CONFIG --variable=libdir ecore-imf`
234   ECORE_IMF_MODULE_ARCH=`$PKG_CONFIG --variable=module_arch ecore`
235   if test -z "$EFL_LIBDIR)"; then
236     EFL_LIBDIR="$libdir"
237   fi
238   EFL_IM_MODULEDIR=$EFL_LIBDIR/ecore_imf/modules/isf/$ECORE_IMF_MODULE_ARCH
239   WAYLAND_IM_MODULEDIR=$EFL_LIBDIR/ecore_imf/modules/wayland/$ECORE_IMF_MODULE_ARCH
240   AC_SUBST(EFL_LIBDIR)
241   AC_SUBST(EFL_IM_MODULEDIR)
242   AC_SUBST(WAYLAND_IM_MODULEDIR)
243 fi
244
245 # Check EVAS
246 PKG_CHECK_MODULES(EVAS, [evas])
247
248 # Check ECORE X library
249 PKG_CHECK_MODULES(ECOREX, [ecore-x],
250                   [ISF_HAS_ECOREX=yes],
251                   [ISF_HAS_ECOREX=no])
252
253 if test "$ISF_HAS_ECOREX" = "yes"; then
254   AC_DEFINE(HAVE_ECOREX,1,[Have ecore-x functions.])
255 fi
256
257 # Check XKBCOMMON library
258 PKG_CHECK_MODULES(XKBCOMMON, [xkbcommon])
259
260 # Check ECORE WAYLAND library
261 PKG_CHECK_MODULES(ECORE_WL, [ecore-wayland],
262                   [ISF_HAS_ECOREWL=yes],
263                   [ISF_HAS_ECOREWL=no])
264
265 if test "$ISF_HAS_ECOREWL" = "yes"; then
266   AC_DEFINE(HAVE_ECOREWL,1,[Have ecore-wayland functions.])
267 fi
268
269 # Check WAYLAND TEXT INPUT library
270 PKG_CHECK_MODULES(WL_TEXT_INPUT, [text-client])
271
272 # Check WAYLAND INPUT METHOD library
273 PKG_CHECK_MODULES(WL_INPUT_METHOD, [input-method-client])
274
275 # Check EDJE library
276 PKG_CHECK_MODULES(EDJE, [edje])
277
278 # Check ELEMENTARY library
279 PKG_CHECK_MODULES(ELEMENTARY, [elementary],
280                   [ISF_HAS_ELM=yes],
281                   [ISF_HAS_ELM=no])
282
283 # Check EFL extension library
284 PKG_CHECK_MODULES(EFL_EXTENSION, [efl-extension])
285
286 # Check glib library
287 PKG_CHECK_MODULES(GLIB, [glib-2.0])
288
289 # Check tzplatform-config library
290 PKG_CHECK_MODULES(TZPLATFORM_CONFIG, [libtzplatform-config])
291
292 PKG_CHECK_MODULES(APPFW_APPLICATION, [capi-appfw-application])
293
294 # Check dlog library
295 PKG_CHECK_MODULES(DLOG, [dlog >= 0])
296
297 # Check notification library
298 PKG_CHECK_MODULES(NOTIFICATION, [notification],
299                   [ISF_HAS_NOTIFICATION=yes],
300                   [ISF_HAS_NOTIFICATION=no])
301
302 # Check system info library
303 PKG_CHECK_MODULES(SYSTEM_INFO, [capi-system-info])
304
305 # Check tts library
306 PKG_CHECK_MODULES(TTS, [tts],
307                   [ISF_HAS_TTS=yes],
308                   [ISF_HAS_TTS=no])
309
310 if test "$ISF_HAS_TTS" = "yes"; then
311   AC_DEFINE(HAVE_TTS,1,[Have TTS functions.])
312 fi
313
314 # Check cynara liblaries
315 PKG_CHECK_MODULES(CYNARA, [cynara-client, cynara-creds-socket, cynara-session])
316
317 # Check vconf library
318 PKG_CHECK_MODULES(VCONF, [vconf],
319                   [ISF_HAS_VCONF=yes],
320                   [ISF_HAS_VCONF=no])
321
322 # Check edbus library
323 PKG_CHECK_MODULES(EDBUS, [edbus],
324                   [ISF_HAS_EDBUS=yes],
325                   [ISF_HAS_EDBUS=no])
326
327 # Check bluetooth library
328 PKG_CHECK_MODULES(BLUETOOTH, [capi-network-bluetooth],
329                   [ISF_HAS_BLUETOOTH=yes],
330                   [ISF_HAS_BLUETOOTH=no])
331
332 # Check feedback library
333 PKG_CHECK_MODULES(FEEDBACK, [feedback],
334                   [ISF_HAS_FEEDBACK=yes],
335                   [ISF_HAS_FEEDBACK=no])
336
337 # Check package manager
338 PKG_CHECK_MODULES(PACKAGE_MANAGER, [capi-appfw-package-manager])
339
340 # Check AUL
341 PKG_CHECK_MODULES(AUL, [aul])
342
343 # Check App Control
344 PKG_CHECK_MODULES(APP_CONTROL, [capi-appfw-app-control])
345
346 # Check appfw library
347 PKG_CHECK_MODULES(APPFW, [capi-appfw-application])
348
349 # Check libwebsockets
350 PKG_CHECK_MODULES(LIBWEBSOCKETS, [libwebsockets],
351                   [ISF_HAS_LIBWEBSOCKETS=yes],
352                   [ISF_HAS_LIBWEBSOCKETS=no])
353
354 # Check core package manager
355 PKG_CHECK_MODULES(PKGMGR_INFO, [pkgmgr-info],
356                   [ISF_HAS_PKGMGR_INFO=yes],
357                   [ISF_HAS_PKGMGR_INFO=no])
358
359 # Check db-util library
360 PKG_CHECK_MODULES(DB_UTIL, [db-util],
361                   [ISF_HAS_DB_UTIL=yes],
362                   [ISF_HAS_DB_UTIL=no])
363
364 # Ignore checked modules if --disable option is added
365 AC_ARG_ENABLE(include-notification,
366               [  --disable-include-notification         Do not include notification package],
367               enable_notification=no,
368               enable_notification=yes)
369
370 AC_ARG_ENABLE(include-libwebsocket,
371               [  --disable-include-libwebsocket         Do not include libwebsocket package],
372               enable_libwebsocket=no,
373               enable_libwebsocket=yes)
374
375 # Check systemd library
376 PKG_CHECK_MODULES(SYSTEMD, [libsystemd],
377                   [ISF_HAS_SYSTEMD=yes],
378                   [ISF_HAS_SYSTEMD=no])
379
380 if test "$ISF_HAS_VCONF" = "yes"; then
381   AC_DEFINE(HAVE_VCONF,1,[Have VConf functions.])
382 fi
383
384 if test "$ISF_HAS_BLUETOOTH" = "yes"; then
385   AC_DEFINE(HAVE_BLUETOOTH,1,[Have Bluetooth functions.])
386 fi
387
388 if test "$ISF_HAS_FEEDBACK" = "yes"; then
389   AC_DEFINE(HAVE_FEEDBACK,1,[Have Feedback functions.])
390 fi
391
392 if test "$ISF_HAS_EDBUS" = "yes"; then
393   AC_DEFINE(HAVE_EDBUS,1,[Have edbus functions.])
394 fi
395
396 if test "$ISF_HAS_NOTIFICATION" = "yes" && test "$enable_notification" = "yes"; then
397   AC_DEFINE(HAVE_NOTIFICATION,1,[Have Notification functions.])
398 fi
399
400 if test "$enable_notification" = "no"; then
401   AC_MSG_NOTICE([Notification functions force-disabled.])
402 fi
403
404 if test "$ISF_HAS_PKGMGR_INFO" = "yes"; then
405   AC_DEFINE(HAVE_PKGMGR_INFO,1,[Have Package manager functions.])
406 fi
407
408 # Check GTK2 library
409 PKG_CHECK_MODULES(GTK2, [gtk+-2.0 >= 2.4.0 pango >= 1.1.0 gdk-pixbuf-2.0 >= 2.4.0],
410                   [SCIM_HAS_GTK2=yes],
411                   [SCIM_HAS_GTK2=no])
412
413 SCIM_HAS_GTK2_2=no
414 if test "$SCIM_HAS_GTK2" = "yes"; then
415   if $PKG_CONFIG --exists "gtk+-2.0 >= 2.2" ; then
416     SCIM_HAS_GTK2_2=yes
417     GTK_VERSION=2.2.0
418     AC_DEFINE(GDK_MULTIHEAD_SAFE,1,[Force use of GDK's multihead-safe APIs.])
419   fi
420   if $PKG_CONFIG --exists "gtk+-2.0 >= 2.3.5" ; then
421     SCIM_HAS_GTK2_4=yes
422     GTK_VERSION=2.3.5
423     AC_DEFINE(HAVE_GTK_DRAW_INSERTION_CURSOR,1,[Have gtk_draw_insertion_cursor ().])
424   fi
425   GTK_BINARY_VERSION=`$PKG_CONFIG --variable=gtk_binary_version gtk+-2.0`
426   GTK_LIBDIR=`$PKG_CONFIG --variable=libdir gtk+-2.0`
427   if test -z "$GTK_LIBDIR)"; then
428     GTK_LIBDIR="$libdir"
429   fi
430   GTK_IM_MODULEDIR=$GTK_LIBDIR/gtk-2.0/$GTK_BINARY_VERSION/immodules
431   AC_SUBST(GTK_LIBDIR)
432   AC_SUBST(GTK_IM_MODULEDIR)
433   AC_SUBST(GTK_VERSION)
434   AC_SUBST(GTK_BINARY_VERSION)
435 fi
436
437 # Check if we have gthread
438 PKG_CHECK_MODULES(GTHREAD2,[gthread-2.0 >= 2.0.0],
439                   [SCIM_HAS_GTHREAD2=yes],
440                   [SCIM_HAS_GTHREAD2=no])
441
442 # Checks for X11 header files.
443 AC_PATH_XTRA
444
445 # Add -lX11 to X_LIBS
446 if test "$have_x" = "yes"; then
447   X_LIBS="$X_LIBS -lX11"
448 fi
449
450 case $host_cpu in
451   *arm* ) TARGET=ARM;;
452       * ) TARGET=X86;;
453 esac
454 AM_CONDITIONAL(ARM, test x$TARGET = xARM)
455
456 ###########################################################
457 ##             Definiation of compile args.              ##
458 ###########################################################
459 AC_ARG_WITH(gtk-im-module-dir,
460             AS_HELP_STRING([--with-gtk-im-module-dir=dir],
461                            [Select gtk immodule dir]),
462             GTK_IM_MODULEDIR=$with_gtk_im_module_dir)
463
464 AC_ARG_WITH(efl-im-module-dir,
465             AS_HELP_STRING([--with-efl-im-module-dir=dir],
466                            [Select efl immodule dir]),
467             EFL_IM_MODULEDIR=$with_efl_im_module_dir)
468
469 AC_ARG_WITH(wayland-im-module-dir,
470             AS_HELP_STRING([--with-wayland-im-module-dir=dir],
471                            [Select wayland immodule dir]),
472             WAYLAND_IM_MODULEDIR=$with_wayland_im_module_dir)
473
474 AC_ARG_WITH(ro-app-dir,
475             AS_HELP_STRING([--with-ro-app-dir=dir],
476                            [Select Read only application dir]),
477             RO_APP_DIR=$with_ro_app_dir)
478
479 AC_ARG_WITH(ro-packages-dir,
480             AS_HELP_STRING([--with-ro-app-dir=dir],
481                            [Select Read only packages dir]),
482             RO_PACKAGES_DIR=$with_ro_packages_dir)
483
484 AC_ARG_ENABLE(ld-version-script,
485               [  --enable-ld-version-script Use ld version script to limit exported symbols],
486               enable_ld_version_script=yes,
487               enable_ld_version_script=no)
488
489 AC_ARG_ENABLE(debug,
490               [  --enable-debug            Turn on debugging],
491               enable_debug=yes,
492               enable_debug=no)
493
494 AC_ARG_ENABLE(x86,
495               [  --enable-x86              Build for x86 host],
496               enable_x86=yes,
497               enable_x86=no)
498
499 AC_ARG_ENABLE(hash-map,
500               [  --enable-hash-map         Use hast_map instead of std::map internally],
501               enable_hash_map=yes,
502               enable_hash_map=no)
503
504 AC_ARG_ENABLE(config-simple,
505               [  --disable-config-simple   Do not build Simple Config module],
506               enable_config_simple=no,
507               enable_config_simple=yes)
508
509 AC_ARG_ENABLE(config-socket,
510               [  --disable-config-socket   Do not build Socket Config module],
511               enable_config_socket=no,
512               enable_config_socket=yes)
513
514 AC_ARG_ENABLE(frontend-x11,
515               [  --disable-frontend-x11    Do not build X11 FrontEnd module],
516               enable_frontend_x11=no,
517               enable_frontend_x11=yes)
518
519 AC_ARG_ENABLE(frontend-socket,
520               [  --disable-frontend-socket Do not build Socket FrontEnd module],
521               enable_frontend_socket=no,
522               enable_frontend_socket=yes)
523
524 AC_ARG_ENABLE(im-socket,
525               [  --disable-im-socket       Do not build Socket IMEngine module],
526               enable_im_socket=no,
527               enable_im_socket=yes)
528
529 AC_ARG_ENABLE(filter-sctc,
530               [  --disable-filter-sctc     Do not build Simplified/Traditional Chinese conversion Filter module],
531               enable_filter_sctc=no,
532               enable_filter_sctc=yes)
533
534 AC_ARG_ENABLE(gtk2-immodule,
535               [  --disable-gtk2-immodule   Do not build GTK2 IMModule],
536               enable_gtk2_immodule=no,
537               enable_gtk2_immodule=yes)
538
539 AC_ARG_ENABLE(efl-immodule,
540               [  --disable-efl-immodule    Do not build EFL IMModule],
541               enable_efl_immodule=no,
542               enable_efl_immodule=yes)
543
544 AC_ARG_ENABLE(wayland-immodule,
545               [  --disable-wayland-immodule    Do not build Wayland IMModule],
546               enable_wayland_immodule=no,
547               enable_wayland_immodule=yes)
548
549 AC_ARG_ENABLE(panel-efl,
550               [  --disable-panel-efl       Do not build EFL Panel],
551               enable_panel_efl=no,
552               enable_panel_efl=check)
553
554 AC_ARG_ENABLE(open-input,
555               [  --disable-open-input     Do not build Open Input],
556               enable_open_input=no,
557               enable_open_input=check)
558
559 AC_ARG_ENABLE(tray-icon,
560               [  --disable-tray-icon       Do not build Tray Icon],
561               enable_tray_icon=no,
562               enable_tray_icon=yes)
563
564 AC_ARG_ENABLE(multiwindow-support,
565               [  --disable-multiwindow-support       Do not build Multiwindow Support],
566               enable_multiwindow_support=no,
567               enable_multiwindow_support=yes)
568
569 AC_ARG_ENABLE(lazy-launch,
570               [  --enable-lazy-launch      Launch ISF when focusing in entry],
571               enable_lazy_launch=yes,
572               enable_lazy_launch=no)
573
574 AC_ARG_ENABLE(ime-embed-app,
575               [  --disable-ime-embed-app      Do not load IME in application when socket invalidate],
576               enable_ime_embed_app=no,
577               enable_ime_embed_app=yes)
578
579 AC_ARG_ENABLE(candidate-ui,
580               [  --disable-candidate-ui     Do not build Candidate UI],
581               enable_candidate_ui=no,
582               enable_candidate_ui=check)
583
584 if test "$have_x" = "yes"; then
585   SCIM_BUILD_X11_UTILS=1
586   enable_x11_utils=yes
587 else
588   SCIM_BUILD_X11_UTILS=0
589   enable_x11_utils=no
590 fi
591
592 if test "$enable_hash_map" = "yes"; then
593   AC_DEFINE(ENABLE_HASH_MAP,1,[Use hash map instead of map in libscim])
594 fi
595
596 if test "$enable_debug" = "yes"; then
597   AC_DEFINE(ENABLE_DEBUG,1,[Define this to enable the debug facility in libscim])
598   CFLAGS="$CFLAGS -g"
599   CXXFLAGS="$CXXFLAGS -g"
600 fi
601
602 if test "$enable_x86" = "yes"; then
603   AC_DEFINE(ENABLE_X86_HOST,1,[Build for x86 host])
604 fi
605
606 if test "$enable_tests" = "yes"; then
607   SCIM_BUILD_TESTS=1
608 else
609   SCIM_BUILD_TESTS=0
610   enable_tests=no
611 fi
612
613 if test "$enable_config_simple" = "yes"; then
614   SCIM_BUILD_CONFIG_SIMPLE=1
615 else
616   SCIM_BUILD_CONFIG_SIMPLE=0
617   enable_config_simple=no
618 fi
619
620 if test "$enable_config_socket" = "yes" -a "$socket_ok" = "yes"; then
621   SCIM_BUILD_CONFIG_SOCKET=1
622 else
623   SCIM_BUILD_CONFIG_SOCKET=0
624   enable_config_socket=no
625 fi
626
627 if test "$enable_frontend_x11" = "yes" -a "$have_x" = "yes"; then
628   SCIM_BUILD_FRONTEND_X11=1
629 else
630   SCIM_BUILD_FRONTEND_X11=0
631   enable_frontend_x11=no
632 fi
633
634 if test "$enable_frontend_socket" = "yes" -a "$socket_ok" = "yes"; then
635   SCIM_BUILD_FRONTEND_SOCKET=1
636 else
637   SCIM_BUILD_FRONTEND_SOCKET=0
638   enable_frontend_socket=no
639 fi
640
641 if test "$enable_im_rawcode" = "yes"; then
642   SCIM_BUILD_IMENGINE_RAWCODE=1
643 else
644   SCIM_BUILD_IMENGINE_RAWCODE=0
645   enable_im_rawcode=no
646 fi
647
648 if test "$enable_im_socket" = "yes" -a "$socket_ok" = "yes"; then
649   SCIM_BUILD_IMENGINE_SOCKET=1
650 else
651   SCIM_BUILD_IMENGINE_SOCKET=0
652   enable_im_socket=no
653 fi
654
655 if test "$enable_filter_sctc" = "yes"; then
656   SCIM_BUILD_FILTER_SCTC=1
657 else
658   SCIM_BUILD_FILTER_SCTC=0
659   enable_filter_sctc=no
660 fi
661
662 if test "$enable_gtk2_immodule" = "yes" -a "$SCIM_HAS_GTK2" = "yes"; then
663   SCIM_BUILD_GTK2_IMMODULE=1
664 else
665   SCIM_BUILD_GTK2_IMMODULE=0
666   enable_gtk2_immodule=no
667 fi
668
669 if test "$SCIM_HAS_GTK2" = "yes"; then
670   enable_gtk_utils=yes
671   SCIM_BUILD_GTK_UTILS=1
672 else
673   enable_gtk_utils=no
674   SCIM_BUILD_GTK_UTILS=0
675 fi
676
677 if test "$enable_tray_icon" = "yes"; then
678   if test "$SCIM_HAS_GTK2_2" = "yes" -a "$no_x" != "yes"; then
679     enable_tray_icon=yes
680     AC_DEFINE(ENABLE_TRAY_ICON,1,[Enable the TrayIcon code.])
681   fi
682 else
683   enable_tray_icon=no
684 fi
685
686 if test "$enable_multiwindow_support" = "yes"; then
687   enable_multiwindow_support=yes
688   AC_DEFINE(ENABLE_MULTIWINDOW_SUPPORT,1,[Enable the Multi Window code.])
689 else
690   enable_multiwindow_support=no
691 fi
692
693 if test "$enable_efl_immodule" = "yes" -a "$ISF_HAS_ECORE_IMF" = "yes"; then
694   ISF_BUILD_EFL_IMMODULE=1
695 else
696   ISF_BUILD_EFL_IMMODULE=0
697   enable_efl_immodule=no
698 fi
699
700 if test "$enable_wayland_immodule" = "yes" -a "$ISF_HAS_ECORE_IMF" = "yes"; then
701   ISF_BUILD_WAYLAND_IMMODULE=1
702 else
703   ISF_BUILD_WAYLAND_IMMODULE=0
704   enable_wayland_immodule=no
705 fi
706
707 ISF_BUILD_PANEL_EFL=0
708 ISF_BUILD_CANDIDATE_UI=0
709 if test "$enable_panel_efl" != "no"; then
710   enable_panel_efl=no
711   if test "$ISF_HAS_ELM" = "yes"; then
712     ISF_BUILD_PANEL_EFL=1
713     enable_panel_efl=yes
714     if test "$enable_candidate_ui" = "yes"; then
715       ISF_BUILD_CANDIDATE_UI=1
716       enable_candidate_ui=yes
717     else
718       enable_candidate_ui=no
719     fi
720   else
721     enable_candidate_ui=no
722   fi
723 else
724   enable_candidate_ui=no
725 fi
726
727 ISF_BUILD_OPEN_INPUT=0
728 ISF_BUILD_REMOTE_INPUT=0
729 if test "$enable_remote_input" = "yes"; then
730   ISF_BUILD_REMOTE_INPUT=1
731   enable_remote_input=yes
732   AC_DEFINE(ENABLE_REMOTE_INPUT,1,[Enable remote input.])
733   if test "$enable_open_input" = "yes" && test "$ISF_HAS_LIBWEBSOCKETS" = "yes" && test "$enable_libwebsocket" = "yes"; then
734     ISF_BUILD_OPEN_INPUT=1
735     enable_open_input=yes
736     AC_DEFINE(ENABLE_OPEN_INPUT,1,[Enable open input.])
737   else
738     enable_open_input=no
739   fi
740
741   if test "$enable_libwebsocket" = "no"; then
742     AC_MSG_NOTICE([LIBWEBSOCKET forced disable.])
743   fi
744 else
745   enable_open_input=no
746   enable_remote_input=no
747 fi
748
749 #if nothing needs libscim-gtkutils, just disable it
750 if test "$enable_panel_gtk" != "yes"; then
751   enable_gtk_utils=no
752   SCIM_BUILD_GTK_UTILS=0
753 fi
754
755 AM_CONDITIONAL(HAVE_X,
756                 [test "$have_x" = "yes"])
757
758 if test "$enable_lazy_launch" = "yes"; then
759   AC_DEFINE(ENABLE_LAZY_LAUNCH,1,[Launch ISF when focusing in entry])
760   ISF_INSTALL_SYSTEMD_SCRIPT=0
761 else
762   ISF_INSTALL_SYSTEMD_SCRIPT=1
763 fi
764
765 if test "$enable_ime_embed_app" = "yes"; then
766   AC_DEFINE(ENABLE_IME_EMBED_APP,1,[Load imengine in application side when socket invalidate])
767 fi
768
769 AM_CONDITIONAL(SCIM_LD_VERSION_SCRIPT,
770                 [test "$enable_ld_version_script" = "yes"])
771
772 AM_CONDITIONAL(SCIM_BUILD_TESTS,
773                 [test "$enable_tests" = "yes"])
774
775 AM_CONDITIONAL(SCIM_BUILD_CONFIG_SIMPLE,
776                 [test "$enable_config_simple" = "yes"])
777
778 AM_CONDITIONAL(SCIM_BUILD_CONFIG_SOCKET,
779                 [test "$enable_config_socket" = "yes"])
780
781 AM_CONDITIONAL(SCIM_BUILD_FRONTEND_X11,
782                 [test "$enable_frontend_x11" = "yes"])
783
784 AM_CONDITIONAL(SCIM_BUILD_FRONTEND_SOCKET,
785                 [test "$enable_frontend_socket" = "yes"])
786
787 AM_CONDITIONAL(SCIM_BUILD_IMENGINE_SOCKET,
788                 [test "$enable_im_socket" = "yes"])
789
790 AM_CONDITIONAL(SCIM_BUILD_IMENGINE_RAWCODE,
791                 [test "$enable_im_rawcode" = "yes"])
792
793 AM_CONDITIONAL(SCIM_BUILD_GTK2_IMMODULE,
794                 [test "$enable_gtk2_immodule" = "yes"])
795
796 AM_CONDITIONAL(SCIM_BUILD_FILTER_SCTC,
797                 [test "$enable_filter_sctc" = "yes"])
798
799 AM_CONDITIONAL(SCIM_BUILD_GTK_UTILS,
800                 [test "$enable_gtk_utils" = "yes"])
801
802 AM_CONDITIONAL(SCIM_BUILD_X11_UTILS,
803                 [test "$enable_x11_utils" = "yes"])
804
805 AM_CONDITIONAL(SCIM_BUILD_TRAY_ICON,
806                 [test "$enable_tray_icon" = "yes"])
807
808 AM_CONDITIONAL(ISF_BUILD_EFL_IMMODULE,
809                 [test "$enable_efl_immodule" = "yes"])
810
811 AM_CONDITIONAL(ISF_BUILD_WAYLAND_IMMODULE,
812                 [test "$enable_wayland_immodule" = "yes"])
813
814 AM_CONDITIONAL(ISF_BUILD_PANEL_EFL,
815                 [test "$enable_panel_efl" = "yes"])
816
817 AM_CONDITIONAL(ISF_BUILD_REMOTE_INPUT,
818                 [test "$enable_remote_input" = "yes"])
819
820 AM_CONDITIONAL(ISF_BUILD_OPEN_INPUT,
821                 [test "$enable_open_input" = "yes"])
822
823 AM_CONDITIONAL(ISF_BUILD_DB_UTIL,
824                 [test "$ISF_HAS_DB_UTIL" = "yes"])
825
826 AM_CONDITIONAL(ISF_INSTALL_SYSTEMD_SCRIPT,
827                 [test "$enable_lazy_launch" = "no"])
828
829 AM_CONDITIONAL(ISF_BUILD_CANDIDATE_UI,
830                 [test "$enable_candidate_ui" = "yes"])
831
832 AC_SUBST(SCIM_BUILD_TESTS)
833 AC_SUBST(SCIM_BUILD_CONFIG_SIMPLE)
834 AC_SUBST(SCIM_BUILD_CONFIG_SOCKET)
835 AC_SUBST(SCIM_BUILD_FRONTEND_X11)
836 AC_SUBST(SCIM_BUILD_FRONTEND_SOCKET)
837 AC_SUBST(SCIM_BUILD_IMENGINE_RAWCODE)
838 AC_SUBST(SCIM_BUILD_IMENGINE_TABLE)
839 AC_SUBST(SCIM_BUILD_IMENGINE_SOCKET)
840 AC_SUBST(SCIM_BUILD_FILTER_SCTC)
841 AC_SUBST(SCIM_BUILD_GTK2_IMMODULE)
842 AC_SUBST(SCIM_BUILD_SCIM_SETUP)
843 AC_SUBST(SCIM_BUILD_GTK_UTILS)
844 AC_SUBST(SCIM_BUILD_X11_UTILS)
845 AC_SUBST(ISF_BUILD_EFL_IMMODULE)
846 AC_SUBST(ISF_BUILD_PANEL_EFL)
847 AC_SUBST(ISF_BUILD_REMOTE_INPUT)
848 AC_SUBST(ISF_BUILD_OPEN_INPUT)
849 AC_SUBST(ISF_BUILD_DB_UTIL)
850 AC_SUBST(ISF_INSTALL_SYSTEMD_SCRIPT)
851 AC_SUBST(ISF_BUILD_KBD_MODE_CHANGER)
852 AC_SUBST(ISF_BUILD_CANDIDATE_UI)
853
854 ISF_BUILDING_DLL="-DISF_BUILDING_DLL"
855 AC_SUBST(ISF_BUILDING_DLL)
856
857 # Output All necessary Paths.
858 SCIM_BINDIR="$prefix/bin"
859 SCIM_DATADIR="$datadir/scim"
860 SCIM_SYSCONFDIR="$sysconfdir"
861 SCIM_ICONDIR="$datadir/scim/icons"
862 SCIM_MODULE_PATH="$libdir/scim$SCIM_EPOCH"
863 SCIM_LIBEXECDIR="$libdir/scim$SCIM_EPOCH"
864 SCIM_LOCALEDIR="/usr/share/locale"
865 SCIM_TEMPDIR="/run/.isf"
866
867 AC_SUBST(SCIM_BINDIR)
868 AC_SUBST(SCIM_DATADIR)
869 AC_SUBST(SCIM_SYSCONFDIR)
870 AC_SUBST(SCIM_ICONDIR)
871 AC_SUBST(SCIM_MODULE_PATH)
872 AC_SUBST(SCIM_LIBEXECDIR)
873 AC_SUBST(SCIM_LOCALEDIR)
874 AC_SUBST(SCIM_TEMPDIR)
875
876 AC_SUBST(RO_APP_DIR)
877 AC_SUBST(RO_PACKAGES_DIR)
878
879 ###########################################################
880 ##                      Output files.                    ##
881 ###########################################################
882 AC_SUBST(ac_aux_dir)
883 AC_CONFIG_FILES([Makefile
884                  po/Makefile.in
885                  ism/src/Makefile
886                  ism/src/scim_types.h
887                  ism/utils/Makefile
888                  ism/data/Makefile
889                  ism/data/icons/Makefile
890                  ism/data/pixmaps/Makefile
891                  ism/modules/Makefile
892                  ism/modules/frontend/imdkit/Makefile
893                  ism/modules/frontend/Makefile
894                  ism/modules/imengine/Makefile
895                  ism/modules/filter/Makefile
896                  ism/modules/config/Makefile
897                  ism/modules/panelagent/ecoresocket/Makefile
898                  ism/modules/panelagent/wayland/Makefile
899                  ism/modules/panelagent/socketconfigserver/Makefile
900                  ism/configs/Makefile
901                  ism/extras/Makefile
902                  ism/extras/gtk2_immodule/Makefile
903                  ism/extras/efl_immodule/Makefile
904                  ism/extras/wayland_immodule/Makefile
905                  ism/extras/efl_panel/Makefile
906                  ism/extras/kbd_mode_changer/Makefile
907                  ism/extras/pkgmgr_parser/Makefile
908                  ism/demos/Makefile
909                  intltool-extract
910                  intltool-merge
911                  intltool-update
912                  isf.pc
913                  scim.pc
914                  scim-gtkutils.pc
915                  scim.spec])
916 AC_OUTPUT
917
918 AC_MSG_RESULT([
919 Build options:
920   Version                  $ISF_VERSION
921   Install prefix           $prefix
922   Build shared libs        $enable_shared
923   Build static libs        $enable_static
924   Enable debug             $enable_debug
925   Build for x86 host       $enable_x86
926   Enable ld version script $enable_ld_version_script
927
928 Module options:
929   Simple config module     $enable_config_simple
930   Socket config module     $enable_config_socket
931
932   X11 FrontEnd module      $enable_frontend_x11
933   Socket FrontEnd module   $enable_frontend_socket
934
935   Socket IMEngine module   $enable_im_socket
936
937   SCTC Filter module       $enable_filter_sctc
938
939   GTK2 Utility Library     $enable_gtk_utils
940   X11 Utility Library      $enable_x11_utils
941
942   GTK2 IMModule            $enable_gtk2_immodule
943   GTK2 IMModule dir        $GTK_IM_MODULEDIR
944
945   EFL  IMModule            $enable_efl_immodule
946   EFL  IMModule dir        $EFL_IM_MODULEDIR
947
948   Wayland IMModule         $enable_wayland_immodule
949   Wayland IMModule dir     $WAYLAND_IM_MODULEDIR
950
951   EFL  Panel GUI           $enable_panel_efl
952   EFL  Panel Candidate GUI $enable_candidate_ui
953
954   Enable TrayIcon          $enable_tray_icon
955   Enable MultiWindow       $enable_multiwindow_support
956   Enable LazyLaunch        $enable_lazy_launch
957   Enable IME Embed         $enable_ime_embed_app
958   Enable Remote Input      $enable_remote_input
959   Enable OpenInput         $enable_open_input
960 ])
961