Tizen 2.1 base
[framework/uifw/ecore.git] / m4 / efl_compiler.m4
1 dnl Copyright (C) 2012 Vincent Torri <vincent dot torri at gmail dot com>
2 dnl This code is public domain and can be freely used or copied.
3
4 dnl Macro that check if compiler of linker flags are available
5
6
7 dnl Macro that checks for a compiler flag availability
8 dnl
9 dnl EFL_CHECK_COMPILER_FLAG(EFL, FLAG[, ACTION-IF-FOUND[ ,ACTION-IF-NOT-FOUND]])
10 dnl AC_SUBST : EFL_CFLAGS (EFL being replaced by its value)
11 dnl AM_CONDITIONAL : EFL_HAVE_FLAG (FLAG being replaced by its value)
12
13 AC_DEFUN([EFL_CHECK_COMPILER_FLAG],
14 [
15 m4_pushdef([UPEFL], m4_translit([[$1]], [-a-z], [_A-Z]))
16 m4_pushdef([UP], m4_translit([[$2]], [-a-z], [_A-Z]))
17
18 dnl store in options -Wfoo if -Wno-foo is passed
19 option=m4_bpatsubst([[$2]], [-Wno-], [-W])
20
21 CFLAGS_save="${CFLAGS}"
22 CFLAGS="${CFLAGS} ${option}"
23
24 AC_LANG_PUSH([C])
25 AC_MSG_CHECKING([whether the compiler supports $2])
26
27 AC_COMPILE_IFELSE(
28    [AC_LANG_PROGRAM([[]])],
29    [have_flag="yes"],
30    [have_flag="no"])
31 AC_MSG_RESULT([${have_flag}])
32
33 CFLAGS="${CFLAGS_save}"
34 AC_LANG_POP([C])
35
36 if test "x${have_flag}" = "xyes" ; then
37    UPEFL[_CFLAGS]="${UPEFL[_CFLAGS]} [$2]"
38 fi
39 AC_ARG_VAR(UPEFL[_CFLAGS], [preprocessor flags for $2])
40 AC_SUBST(UPEFL[_CFLAGS])
41
42 AM_CONDITIONAL([EFL_HAVE]UP, [test "x${have_flag}" = "xyes"])
43
44 m4_popdef([UP])
45 m4_popdef([UPEFL])
46 ])
47
48 dnl Macro that iterates over a sequence of white separated flags
49 dnl and that call EFL_CHECK_COMPILER_FLAG() for each of these flags
50 dnl
51 dnl EFL_CHECK_COMPILER_FLAGS(EFL, FLAGS)
52
53 AC_DEFUN([EFL_CHECK_COMPILER_FLAGS],
54 [
55 m4_foreach_w([flag], [$2], [EFL_CHECK_COMPILER_FLAG([$1], m4_defn([flag]))])
56 ])