cc762269e4b13be900d6fa66af2d3b76172b9e81
[platform/upstream/elementary.git] / configure.ac
1 EFL_VERSION([1], [12], [99], [dev])
2 AC_INIT([elementary], [efl_version], [enlightenment-devel@lists.sourceforge.net])
3
4 AC_PREREQ(2.63)
5 AC_CONFIG_SRCDIR([configure.ac])
6 AC_CONFIG_MACRO_DIR([m4])
7 AC_CANONICAL_BUILD
8 AC_CANONICAL_HOST
9
10 AC_CONFIG_HEADERS([elementary_config.h])
11 AH_TOP([
12 #ifndef EFL_CONFIG_H__
13 #define EFL_CONFIG_H__
14 ])
15 AH_BOTTOM([
16 #endif /* EFL_CONFIG_H__ */
17 ])
18
19 AC_USE_SYSTEM_EXTENSIONS
20
21 AM_INIT_AUTOMAKE([1.11 dist-xz -Wall])
22 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
23 m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
24
25 LT_INIT([win32-dll disable-static pic-only])
26 EFL_INIT
27
28
29 ### Additional options to configure
30
31 # C++ bindings
32
33 AC_ARG_ENABLE([cxx-bindings],
34    [AS_HELP_STRING([--enable-cxx-bindings],
35        [enable C++11 bindings. @<:@default=disabled@:>@])],
36    [want_cxx11="${enableval}"],
37    [want_cxx11="no"])
38
39 # Tests
40
41 AC_ARG_WITH([tests],
42    [AS_HELP_STRING([--with-tests=none|regular],
43                    [choose elementary testing method: regular or none.(coverage will be supported)@<:@default=none@:>@])],
44    [build_tests=${withval}],
45    [build_tests=none])
46
47 # Elementary base dir
48
49 AC_ARG_WITH([elementary-base-dir],
50    [AS_HELP_STRING([--with-elementary-base-dir=PATH], [specify the subdirectory for all elementary data @<:@default=${elementary_base_dir}@:>@])],
51    [elementary_base_dir=${withval}],
52    [elementary_base_dir=".elementary"])
53
54 AC_MSG_NOTICE([ELEMENTARY_BASE_DIR set to ${elementary_base_dir}])
55 AC_DEFINE_UNQUOTED([ELEMENTARY_BASE_DIR], ["${elementary_base_dir}"], ["subdirectory for all elementary data"])
56
57 # Build and install examples
58
59 EFL_CHECK_BUILD_EXAMPLES(
60    [enable_build_examples="yes"],
61    [enable_build_examples="no"])
62
63 EFL_CHECK_INSTALL_EXAMPLES(
64    [enable_install_examples="yes"],
65    [enable_install_examples="no"])
66
67 # Debug mode
68
69 AC_ARG_ENABLE([debug],
70    [AS_HELP_STRING([--enable-debug], [enable elementary debug support. @<:@default=disabled@:>@])],
71    [want_elementary_debug=$enableval],
72    [want_elementary_debug="no"])
73
74 ELM_DEBUG_DEF="#undef"
75 if test "x$want_elementary_debug" = "xyes"; then
76    AC_DEFINE([HAVE_ELEMENTARY_DEBUG], [1], [Elementary debug.])
77    ELM_DEBUG_DEF="#define"
78 fi
79 AC_SUBST([ELM_DEBUG_DEF])
80
81 # quicklaunch support
82
83 AC_ARG_ENABLE([quick-launch],
84    [AS_HELP_STRING([--disable-quick-launch], [disable quick-launch support, @<:@default=detect@:>@])],
85    [want_quicklaunch=$enableval],
86    [want_quicklaunch="auto"])
87
88
89 ### Default options with respect to host and default values
90
91 ELM_VERSION_MAJOR="v_maj"
92 ELM_VERSION_MINOR="v_min"
93 AC_SUBST([ELM_VERSION_MAJOR])
94 AC_SUBST([ELM_VERSION_MINOR])
95
96 MODULE_ARCH="v-v_maj.v_min.v_mic"
97 AC_SUBST([MODULE_ARCH])
98 AC_DEFINE_UNQUOTED([MODULE_ARCH], ["$MODULE_ARCH"], ["Module architecture"])
99
100 ELM_UNIX_DEF="#undef"
101 ELM_WIN32_DEF="#undef"
102 have_windows="no"
103 have_freebsd="no"
104
105 case "$host_os" in
106    mingw*)
107       AC_DEFINE([HAVE_EVIL], [1], [Set to 1 if evil package is installed.])
108       ELM_WIN32_DEF="#define"
109       have_windows="yes"
110       ;;
111    *solaris*)
112       ELM_UNIX_DEF="#define"
113       ;;
114    freebsd*)
115       ELM_UNIX_DEF="#define"
116       have_freebsd="yes"
117       ;;
118    darwin*)
119       ELM_UNIX_DEF="#define"
120       ;;
121    *)
122       ELM_UNIX_DEF="#define"
123       ;;
124 esac
125
126 AM_CONDITIONAL([ELEMENTARY_WINDOWS_BUILD], [test "x${have_windows}" = "xyes"])
127 AM_CONDITIONAL([HAVE_FREEBSD], [test "x${have_freebsd}" = "xyes"])
128 AC_SUBST([ELM_UNIX_DEF])
129 AC_SUBST([ELM_WIN32_DEF])
130
131 ### Checks for programs
132
133 # compilers
134 AC_PROG_CC
135 AC_PROG_CC_STDC
136 AC_PROG_CXX
137
138 EFL_CXX_COMPILE_STDCXX_11([ext])
139
140 # pkg-config
141 PKG_PROG_PKG_CONFIG
142
143 # gettext
144 m4_ifdef([AM_GNU_GETTEXT_VERSION], [
145 AM_GNU_GETTEXT_VERSION([0.18])
146 ])
147
148 m4_ifdef([AM_GNU_GETTEXT], [
149 AM_GNU_GETTEXT([external])
150 po_makefile_in=po/Makefile.in
151 have_po="yes"
152 ],[
153 have_po="no"
154 ])
155 AC_SUBST([LTLIBINTL])
156
157 if test "x${POSUB}" = "x" ; then
158    have_po="no"
159 fi
160
161 AM_CONDITIONAL([HAVE_PO], [test "x${have_po}" = "xyes"])
162
163 # doxygen
164 EFL_CHECK_DOXYGEN([build_doc="yes"], [build_doc="no"])
165
166 # EFL binaries
167 EFL_WITH_BIN([eet], [eet-eet], [eet])
168 EFL_WITH_BIN([edje], [edje-cc], [edje_cc])
169 EFL_WITH_BIN([elementary], [elementary-codegen], [elementary_codegen])
170 EFL_WITH_BIN([elementary], [elm-prefs-cc], [elm_prefs_cc])
171 EFL_WITH_BIN([eolian], [eolian-gen], [eolian_gen])
172 EFL_WITH_BIN([eolian-cxx], [eolian-cxx], [eolian_cxx])
173 # Force the helper to try external eolian generators
174 AM_CONDITIONAL([HAVE_EOLIAN_GEN], [true])
175 AM_CONDITIONAL([HAVE_EOLIAN_CXX], [true])
176
177 EFL_ENABLE_BIN([elementary-test])
178 EFL_ENABLE_BIN([elementary-codegen])
179 EFL_ENABLE_BIN([elm-prefs-cc])
180 EFL_ENABLE_BIN([elementary-config])
181
182
183 ### Checks for libraries
184
185 requirement_elm_pc=""
186
187 case "$host_os" in
188    mingw*)
189       requirement_elm_pc="evil >= efl_version"
190       ;;
191 esac
192
193 requirement_elm_pc_only="\
194     efl >= efl_version \
195     eina >= efl_version \
196     eet >= efl_version \
197     evas >= efl_version \
198     ecore >= efl_version \
199     ecore-evas >= efl_version \
200     ecore-file >= efl_version \
201     ecore-input >= efl_version \
202     edje >= efl_version \
203     eo >= efl_version \
204     ethumb_client >= efl_version \
205     emotion >= efl_version \
206     ecore-imf >= efl_version \
207     ecore-con >= efl_version \
208     eio >= efl_version \
209     eldbus >= efl_version \
210     efreet >= efl_version \
211     efreet-mime >= efl_version \
212     efreet-trash >= efl_version \
213     eio >= efl_version \
214     "
215
216 requirement_elm_pc="\
217     ${requirement_elm_pc} \
218     ${requirement_elm_pc_only} \
219     "
220
221 ELM_CHECK_BACKEND([X])
222 ELM_CHECK_BACKEND([FB])
223 ELM_CHECK_BACKEND([PSL1GHT])
224 ELM_CHECK_BACKEND([SDL])
225 ELM_CHECK_BACKEND([Cocoa])
226 ELM_CHECK_BACKEND([Win32])
227 ELM_CHECK_BACKEND([Wayland])
228 ELM_CHECK_BACKEND([DRM])
229
230 ELM_CHECK_OPTION([elocation], [0.1.0])
231 ELM_CHECK_OPTION([eweather], [0.2.0])
232 # emap is in svn : trunk/PROTO
233 ELM_CHECK_OPTION([emap], [0.1.0])
234 ELM_CHECK_OPTION([eweb])
235
236 PKG_CHECK_MODULES([ELEMENTARY], [${requirement_elm_pc}])
237 PKG_CHECK_MODULES([ELEMENTARY_PC], [${requirement_elm_pc_only}])
238
239 EFL_ENABLE_EO_API_SUPPORT
240 EFL_ENABLE_BETA_API_SUPPORT
241
242
243 if test "x${HAVE_CXX11}" = "x1" -a "x${want_cxx11}" = "xyes"; then
244    PKG_CHECK_MODULES([ELEMENTARY_CXX],
245       [
246         efl-cxx >= efl_version
247         eo-cxx >= efl_version
248         eina-cxx >= efl_version
249         evas-cxx >= efl_version
250       ],
251       [
252         requirement_elm_pc="${requirement_elm_pc} \
253           efl-cxx >= efl_version \
254           eo-cxx >= efl_version \
255           eina-cxx >= efl_version \
256           evas-cxx >= efl_version \
257         "
258         have_cxx11="yes"
259         LDFLAGS="${LDFLAGS} -fPIC -DPIC"
260         CXXFLAGS="${CXXFLAGS} -fPIC -DPIC"
261       ],
262       [have_cxx11="no"]
263    )
264 else
265    have_cxx11="no"
266 fi
267 AM_CONDITIONAL([HAVE_CXX11], [test "x${have_cxx11}" = "xyes"])
268
269
270 MODULE_EDJE=`${PKG_CONFIG} --variable=module_arch edje`
271 AC_SUBST([MODULE_EDJE])
272 AC_DEFINE_UNQUOTED([MODULE_EDJE], ["$MODULE_EDJE"], ["Edje module architecture"])
273
274 # Needs to be moved into a macro, and also, needs a way to automatically fetch
275 # from all the dependencies using the Requires.
276 DEPS_EOLIAN_FLAGS=`${PKG_CONFIG} --variable=eolian_flags eo evas edje ecore efl`
277 AC_SUBST([DEPS_EOLIAN_FLAGS])
278
279 requirement_elm_libs="-lm"
280
281 # sockets
282
283 case "$host_os" in
284    mingw*)
285       have_socket="no"
286       ;;
287    *solaris*)
288       AC_CHECK_LIB([socket], [connect],
289          [
290           have_socket="yes"
291           requirement_elm_libs="-lsocket ${requirement_elm_libs}"
292          ],
293          [have_socket="no"])
294       ;;
295    darwin*)
296       have_socket="yes"
297       ;;
298    *)
299       have_socket="yes"
300       ;;
301 esac
302
303 AM_CONDITIONAL([BUILD_RUN], [test "x$have_socket" = "xyes"])
304
305 # dlopen
306
307 have_dlopen="no"
308 case "$host_os" in
309    mingw*)
310 dnl managed by evil
311       AC_DEFINE([HAVE_DLADDR], [1], [Define to 1 if you have the `dladdr' function.])
312       have_dlopen="yes"
313       requirement_elm_libs="-ldl ${requirement_elm_libs}"
314       ;;
315    *solaris*)
316       have_dlopen="yes"
317       ;;
318    darwin*)
319       have_dlopen="yes"
320       ;;
321    *)
322       AC_CHECK_LIB([dl], [dlopen], [res=yes], [res=no])
323       if test "x$res" = "xyes"; then
324          AC_CHECK_LIB([dl], [dladdr], AC_DEFINE([HAVE_DLADDR], [1], [Define to 1 if you have the `dladdr' function.]))
325          requirement_elm_libs="-ldl ${requirement_elm_libs}"
326          have_dlopen="yes"
327       fi
328       ;;
329 esac
330
331 AM_CONDITIONAL([BUILD_MODULES], [test "x$have_dlopen" = "xyes"])
332
333 ELEMENTARY_LIBS="${ELEMENTARY_LIBS} ${requirement_elm_libs}"
334 ELEMENTARY_PC_LIBS="${ELEMENTARY_PC_LIBS} ${requirement_elm_libs}"
335
336 AC_SUBST([requirement_elm_pc])
337
338 # check unit testing library
339 if test "${build_tests}" = "regular"; then
340    PKG_CHECK_MODULES([CHECK], [check >= 0.9.5])
341 fi
342 AM_CONDITIONAL([ENABLE_ELEMENTARY_TESTS], [test "${build_tests}" = "regular"])
343
344
345 ### Checks for header files
346
347 ELM_ALLOCA_H_DEF="#undef"
348 AC_CHECK_HEADER([alloca.h], [ELM_ALLOCA_H_DEF="#define"])
349 AC_SUBST([ELM_ALLOCA_H_DEF])
350
351 ELM_LIBINTL_H_DEF="#undef"
352 AC_CHECK_HEADER([libintl.h], [ELM_LIBINTL_H_DEF="#define"])
353 AC_SUBST([ELM_LIBINTL_H_DEF])
354
355 ELM_DIRENT_H_DEF="#undef"
356 AC_CHECK_HEADER([dirent.h], [ELM_DIRENT_H_DEF="#define"])
357 AC_SUBST([ELM_DIRENT_H_DEF])
358
359 AC_CHECK_HEADER([sys/mman.h], [have_mman="yes"], [have_mman="no"])
360 if test "x${have_mman}" = "xyes"; then
361    AC_DEFINE([HAVE_MMAN_H], [1], [Have sys/mman.h header file])
362 fi
363
364 AC_CHECK_HEADERS([locale.h langinfo.h sys/times.h])
365
366 case "$host_os" in
367    darwin*)
368       AC_CHECK_HEADERS([crt_externs.h])
369       ;;
370 esac
371
372
373 ### Checks for types
374
375
376 ### Checks for structures
377
378
379 ### Checks for compiler characteristics
380
381 AC_C_BIGENDIAN
382
383 m4_ifdef([v_mic],
384    [
385     EFL_COMPILER_FLAG([-Wshadow])
386     EFL_COMPILER_FLAG([-Wall])
387     EFL_COMPILER_FLAG([-W])
388    ])
389
390 EFL_COMPILER_FLAG([-Wall -Wextra -Wpointer-arith -Wno-missing-field-initializers -fvisibility=hidden -fdata-sections -ffunction-sections])
391
392 EFL_CHECK_PATH_MAX
393
394
395 ### Checks for linker characteristics
396
397 EFL_LINKER_FLAG([-fvisibility=hidden -fdata-sections -ffunction-sections -Wl,--gc-sections -fno-strict-aliasing -Wl,--as-needed -Wl,--no-copy-dt-needed-entries])
398
399 # Check if we can build binary with quicklaunch support
400 ELM_QUICKLAUNCH
401
402
403 ### Checks for library functions
404
405 AC_FUNC_ALLOCA
406
407 AC_CHECK_FUNCS([geteuid getuid])
408
409 if test "x${want_quicklaunch}" != "xno"; then
410    AC_CHECK_FUNCS([fork clearenv])
411 fi
412
413 if test "x${have_dlopen}" = "xno"; then
414    AC_CHECK_FUNCS([dlopen dladdr])
415 fi
416
417 if test "x${ac_cv_func_dlopen}" = "xyes"; then
418    have_dlopen="yes"
419 fi
420
421 AM_CONDITIONAL([BUILD_QUICKLAUNCH], [test "x${ac_cv_func_fork}" = "xyes" && test "x${have_dlopen}" = "xyes"])
422
423 # environ variable
424
425 AC_COMPILE_IFELSE(
426    [AC_LANG_PROGRAM(
427       [[
428 # define _GNU_SOURCE 1
429 #include <unistd.h>
430       ]],
431       [[
432 extern char **environ;
433       ]])
434    ],
435    [AC_DEFINE([HAVE_ENVIRON], [1], [extern environ exists])])
436
437 case "$host_os" in
438    darwin*)
439       AC_DEFINE([environ], [(*_NSGetEnviron())], ["apple doesn't follow POSIX in this case."])
440       ;;
441 esac
442
443
444 AC_CONFIG_FILES([
445 Makefile
446 elementary.spec
447 doc/Makefile
448 doc/Doxyfile
449 doc/widgets/Makefile
450 src/Makefile
451 src/lib/Makefile
452 src/lib/Elementary.h
453 src/lib/elm_intro.h
454 src/bin/Makefile
455 src/modules/Makefile
456 src/modules/prefs/Makefile
457 src/modules/access_output/Makefile
458 src/modules/datetime_input_ctxpopup/Makefile
459 src/modules/test_entry/Makefile
460 src/modules/test_map/Makefile
461 src/edje_externals/Makefile
462 src/examples/Makefile
463 src/examples/sphere_hunter/Makefile
464 src/tests/Makefile
465 src/imported/Makefile
466 src/imported/atspi/Makefile
467 data/Makefile
468 data/themes/Makefile
469 data/images/Makefile
470 data/objects/Makefile
471 data/desktop/Makefile
472 data/edje_externals/Makefile
473 config/Makefile
474 config/default/Makefile
475 config/default/base.src
476 config/standard/Makefile
477 config/standard/base.src
478 config/mobile/Makefile
479 config/mobile/base.src
480 $po_makefile_in
481 cmakeconfig/ElementaryConfig.cmake
482 cmakeconfig/ElementaryConfigVersion.cmake
483 ])
484
485 AC_OUTPUT
486
487 #####################################################################
488 ## Info
489
490 echo
491 echo
492 echo
493 echo "------------------------------------------------------------------------"
494 echo "$PACKAGE $VERSION"
495 echo "------------------------------------------------------------------------"
496 echo
497 echo "Configuration Options Summary:"
498 echo
499 echo "  Engines:"
500 echo "    X11....................: ${have_elementary_x}"
501 echo "    Framebuffer............: ${have_elementary_fb}"
502 echo "    DRM....................: ${have_elementary_drm}"
503 echo "    PSL1GHT................: ${have_elementary_psl1ght}"
504 echo "    SDL....................: ${have_elementary_sdl}"
505 echo "    Cocoa..................: ${have_elementary_cocoa}"
506 echo "    Windows XP.............: ${have_elementary_win32}"
507 echo "    Wayland................: ${have_elementary_wayland}"
508 echo
509 echo "  Features:"
510 echo "    EWeather...............: ${have_elementary_eweather}"
511 echo "    EMap...................: ${have_elementary_emap}"
512 echo "    Web (WebKit)...........: ${elementary_web}"
513 echo "    Quick Launch...........: ${ac_cv_func_fork}"
514 echo "    Elocation..............: ${have_elementary_elocation}"
515 echo
516 echo "  eet......................: ${eet_eet}"
517 echo "  edje_cc..................: ${edje_cc}"
518 echo "  elementary_codegen.......: ${elementary_codegen}"
519 echo "  elm_prefs_cc.............: ${elm_prefs_cc}"
520 echo "  eolian_gen...............: ${eolian_gen}"
521 echo "  eolian_cxx...............: ${eolian_cxx}"
522 echo
523 echo "  Build elementary_test....: ${have_elementary_test}"
524 echo "  Build elementary_codegen.: ${have_elementary_codegen}"
525 echo "  Build elm_prefs_cc.......: ${have_elm_prefs_cc}"
526 echo "  Examples.................: ${enable_build_examples}"
527 echo "  Examples installed.......: ${enable_install_examples}"
528 echo "  Build elementary_config..: ${have_elementary_config}"
529 echo "  Enable debug.............: ${want_elementary_debug}"
530 echo "  Enable C++...............: ${have_cxx11}"
531 echo
532 echo "Compilation................: make (or gmake)"
533 echo "  CPPFLAGS.................: $CPPFLAGS"
534 echo "  CFLAGS...................: $CFLAGS"
535 if test "x${have_cxx11}" = "xyes"; then
536 echo "  CXXFLAGS.................: $CXXFLAGS"
537 fi
538 echo "  LDFLAGS..................: $LDFLAGS"
539 echo
540 if test "${build_tests}" = "none"; then
541 echo "Tests......................: no"
542 else
543 echo "Tests......................: make check"
544 fi
545 if test "${build_doc}" = "no"; then
546 echo "Docs.......................: no (doxygen not found)"
547 else
548 echo "Docs.......................: make doc"
549 fi
550 echo
551 echo "Installation...............: make install (as root if needed, with 'su' or 'sudo')"
552 echo "  prefix...................: $prefix"
553 echo