Welcome Ethumb, it's ready to get out of PROTO.
[framework/uifw/ethumb.git] / m4 / ac-modules.m4
1 dnl _XTERM_COLORS
2 define([_XTERM_COLORS],
3 [
4         # Check for XTerm and define some colors
5         if test "x$TERM" = "xxterm"; then
6                 COLOR_PREF="\0033\0133"
7                 COLOR_H="${COLOR_PREF}1m"
8                 COLOR_HGREEN="${COLOR_PREF}1;32m"
9                 COLOR_HRED="${COLOR_PREF}1;31m"
10                 COLOR_GREEN="${COLOR_PREF}32m"
11                 COLOR_RED="${COLOR_PREF}31m"
12                 COLOR_YELLOW="${COLOR_PREF}1;33m"
13                 COLOR_END="${COLOR_PREF}0m"
14         else
15                 COLOR_H=""
16                 COLOR_HGREEN=""
17                 COLOR_HRED=""
18                 COLOR_GREEN=""
19                 COLOR_RED=""
20                 COLOR_YELLOW=""
21                 COLOR_END=""
22         fi
23 ])
24
25 dnl AC_ETH_CHECK_PKG(name, lib [>= version], [action-if, [action-not]])
26 dnl   improved version of PKG_CHECK_MODULES, it does the same checking
27 dnl   and defines HAVE_[name]=yes/no and also exports
28 dnl   [name]_CFLAGS and [name]_LIBS.
29 dnl
30 dnl   if action-not isn't provided, AC_MSG_ERROR will be used.
31 dnl
32 dnl   Checks:
33 dnl       lib >= version
34 dnl
35 dnl   Provides:
36 dnl       - HAVE_[name]=yes|no
37 dnl       - [name]_CFLAGS: if HAVE_[name]=yes
38 dnl       - [name]_LIBS: if HAVE_[name]=yes
39 dnl       - [name]_VERSION: if HAVE_[name]=yes
40 dnl
41 AC_DEFUN([AC_ETH_CHECK_PKG],
42 [
43 # ----------------------------------------------------------------------
44 # BEGIN: Check library with pkg-config: $1 (pkg-config=$2)
45 #
46
47         PKG_CHECK_MODULES([$1], [$2],
48                           [
49                                 HAVE_[$1]=yes
50                                 [pkg_name]=$(echo "[$2]" | cut -d\   -f1)
51                                 [$1]_VERSION=$($PKG_CONFIG --modversion $pkg_name)
52                                 AC_SUBST([$1]_VERSION)
53                                 AC_SUBST([$1]_CFLAGS)
54                                 AC_SUBST([$1]_LIBS)
55                                 ifelse([$3], , :, [$3])
56                           ],
57                           [
58                                 HAVE_[$1]=no
59                                 ifelse([$4], , AC_MSG_ERROR(you need [$2] development installed!), AC_MSG_RESULT(no); [$4])
60                           ])
61         AM_CONDITIONAL(HAVE_[$1], test x$HAVE_[$1] = xyes)
62         AC_SUBST(HAVE_[$1])
63         if test x$HAVE_[$1] = xyes; then
64                 AC_DEFINE_UNQUOTED(HAVE_[$1], 1, Package [$1] ($2) found.)
65         fi
66
67 #
68 # END: Check library with pkg-config: $1 (pkg-config=$2)
69 # ----------------------------------------------------------------------
70 ])
71
72 dnl AC_ETH_OPTIONAL_MODULE(name, [initial-status, [check-if-enabled]])
73 dnl   Defines configure argument --<enable|disable>-[name] to enable an
74 dnl   optional module called 'name'.
75 dnl
76 dnl   If initial-status is true, then it's enabled by default and option
77 dnl   will be called --disable-[name], otherwise it's disabled and option
78 dnl   is --enable-[name].
79 dnl
80 dnl   If module is enabled, then check-if-enabled will be executed. This
81 dnl   may change the contents of shell variable NAME (uppercase version of
82 dnl   name, with underscores instead of dashed) to something different than
83 dnl   "true" to disable module.
84 dnl
85 dnl Parameters:
86 dnl     - name: module name to use. It will be converted to have dashes (-)
87 dnl          instead of underscores, and will be in lowercase.
88 dnl     - initial-status: true or false, states if module is enabled or
89 dnl          disabled by default.
90 dnl     - check-if-enabled: macro to be expanded inside check for enabled
91 dnl           module.
92 dnl
93 dnl Provides:
94 dnl     - USE_MODULE_[name]=true|false [make, shell]
95 dnl     - USE_MODULE_[name]=1 if enabled [config.h]
96 dnl
97 AC_DEFUN([AC_ETH_OPTIONAL_MODULE],
98 [
99 # ----------------------------------------------------------------------
100 # BEGIN: Check for optional module: $1 (default: $2)
101 #
102         m4_pushdef([MODNAME], [m4_bpatsubst(m4_toupper([$1]), -, _)])dnl
103         m4_pushdef([modname_opt], [m4_bpatsubst(m4_tolower([$1]), _, -)])
104         m4_pushdef([INITVAL], [m4_default([$2], [false])])dnl
105         m4_pushdef([ENABLE_HELP], AS_HELP_STRING([--enable-modname_opt],
106                                [enable optional module modname_opt. Default is disabled.])
107                 )dnl
108         m4_pushdef([DISABLE_HELP], AS_HELP_STRING([--disable-modname_opt],
109                                [disable optional module modname_opt. Default is enabled.])
110                 )dnl
111         m4_pushdef([HELP_STR], m4_if(INITVAL, [true], [DISABLE_HELP], [ENABLE_HELP]))dnl
112         m4_pushdef([NOT_INITVAL], m4_if(INITVAL, [true], [false], [true]))dnl
113
114         USING_MODULES=1
115
116         MODNAME=INITVAL
117         AC_ARG_ENABLE(modname_opt, HELP_STR, [MODNAME=${enableval:-NOT_INITVAL}])
118         if test x[$]MODNAME = xyes || test x[$]MODNAME = x1; then
119                 MODNAME=true
120         fi
121         if test x[$]MODNAME = xno || test x[$]MODNAME = x0; then
122                 MODNAME=false
123         fi
124
125         _XTERM_COLORS
126
127         # Check list for optional module $1
128         if test x[$]MODNAME = xtrue; then
129                 ifelse([$3], , , [
130 echo
131 echo "checking optional module modname_opt:"
132 # BEGIN: User checks
133 $3
134 # END: User checks
135 if test x[$]MODNAME = xfalse; then
136         echo -e "optional module modname_opt ${COLOR_HRED}failed${COLOR_END} checks."
137 else
138         echo -e "optional module modname_opt passed checks."
139 fi
140 echo
141 ])
142
143                 if test x[$]MODNAME = xfalse; then
144                         echo -e "${COLOR_YELLOW}Warning:${COLOR_END} optional module ${COLOR_H}modname_opt${COLOR_END} disabled by extra checks."
145                 fi
146         fi
147
148         # Check if user checks succeeded
149         if test x[$]MODNAME = xtrue; then
150                 [OPTIONAL_MODULES]="$[OPTIONAL_MODULES] modname_opt"
151                 AC_DEFINE_UNQUOTED(USE_MODULE_[]MODNAME, 1, Use module modname_opt)
152         else
153                 [UNUSED_OPTIONAL_MODULES]="$[UNUSED_OPTIONAL_MODULES] modname_opt"
154         fi
155
156         AM_CONDITIONAL(USE_MODULE_[]MODNAME, test x[$]MODNAME = xtrue)
157         AC_SUBST(USE_MODULE_[]MODNAME)
158         USE_MODULE_[]MODNAME=[$]MODNAME
159
160         m4_popdef([HELP_STR])dnl
161         m4_popdef([DISABLE_HELP])dnl
162         m4_popdef([ENABLE_HELP])dnl
163         m4_popdef([INITVAL])dnl
164         m4_popdef([MODNAME])
165 #
166 # END: Check for optional module: $1 ($2)
167 # ----------------------------------------------------------------------
168 ])