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