Perform linker tweaking using "--as-needed".
[lxde/lxpanel.git] / configure.ac
1 AC_PREREQ(2.53)
2 AC_INIT(lxpanel, 0.2.6, http://lxde.sourceforge.net/)
3 AM_INIT_AUTOMAKE
4 AC_CONFIG_SRCDIR([src/bg.c])
5 AC_CONFIG_HEADER([config.h])
6
7 # Force to dynamic
8 AC_DISABLE_STATIC
9
10 # Checks for programs.
11 AC_PROG_CC
12 AC_PROG_INSTALL
13 AC_PROG_LN_S
14 AC_PROG_LIBTOOL
15 AC_PROG_INTLTOOL(, [no-xml])
16
17 # Checks for libraries.
18 pkg_modules="gtk+-2.0 >= 2.6.0 \
19              gthread-2.0"
20 #             libstartup-notification-1.0"
21 PKG_CHECK_MODULES(PACKAGE, [$pkg_modules])
22 AC_SUBST(PACKAGE_CFLAGS)
23 AC_SUBST(PACKAGE_LIBS)
24
25 AC_ARG_ENABLE([cast-checks],
26     AS_HELP_STRING([--enable-cast-checks],
27                [enable Glib casting checks (default: disable)]),
28                cast_checks=$enableval, cast_checks="no")
29 G_CAST_CHECKS=""
30 if test x"$cast_checks" = "xno"; then
31     G_CAST_CHECKS="-DG_DISABLE_CAST_CHECKS"
32 fi
33 AC_SUBST(G_CAST_CHECKS)
34
35 dnl linker tweaking
36 # The function of the link flag --as-needed is to prevent unnecesary linking.
37 # Example: A -> B -> C
38 # Normally A would link to B and also depend on C, this is ofcource
39 # unnecesary. In this situation however we do need to link to C, so this
40 # must be done explicitly. This flag comes in handy when a library ABI
41 # is changed, minimizing the amount of recompilations needed.
42 AC_MSG_CHECKING([whether $LD accepts --as-needed])
43 case `$LD --as-needed -v 2>&1 </dev/null` in
44 *GNU* | *'with BFD'*)
45   LDFLAGS="$LDFLAGS -Wl,--as-needed"
46   AC_MSG_RESULT([yes])
47   ;;
48 *)
49   AC_MSG_RESULT([no])
50   ;;
51 esac
52
53 dnl FIXME: filter for undefined symbols in plugins
54 # when passing "-z defs" to linker, we would better to make sure
55 # there are no undefined references.  However, we intend not to
56 # fix at the moment since we don't have spin-off libraray containing
57 # the necessary functions.
58 if test ! -z "$LDFLAGS"; then
59   LDFLAGS=`echo "$LDFLAGS" | sed -e 's/-Wl,-z,defs//'`
60 fi
61
62 LXPANEL_MODULE="-avoid-version \
63 -rpath \$(libdir)/lxpanel/plugins \
64 -no-undefined "'-export-symbols-regex "^[[^_]].*"'
65 AC_SUBST(LXPANEL_MODULE)
66
67 AC_ARG_ENABLE([alsa],
68     AS_HELP_STRING([--disable-alsa],
69                     [compile ALSA providers (default: enable)]),
70             compile_alsa=$enableval, compile_alsa="yes")
71 if test x"$compile_alsa" = "xyes"; then
72     AC_CHECK_HEADERS([alsa/asoundlib.h],
73                      [AC_CHECK_LIB([asound],
74                                    [snd_seq_open],
75                                    compile_alsa=yes,compile_alsa=no)],
76                           compile_alsa=no)
77 fi
78 AM_CONDITIONAL(BUILD_ALSA_PLUGINS, test x$compile_alsa = xyes)
79 dnl FIXME: check OSS existence
80 AM_CONDITIONAL(BUILD_OSS_PLUGINS, test x$compile_alsa = xno)
81
82 AC_ARG_ENABLE([plugins-loading],
83     AS_HELP_STRING([--disable-plugins-loading],
84                [disable plugin loading (default: enable)]),
85                plugins_loading=$enableval, plugins_loading="yes")
86
87 AM_CONDITIONAL(BUILD_PLUGIN_LOADER, test x$plugins_loading = xyes)
88
89 if test x"$plugins_loading" = "xno"; then
90     AC_DEFINE(DISABLE_PLUGINS_LOADING, [1], [Disable plugin loading])
91 fi
92
93 dnl Here are plugin listing.
94 plugin_netstatus=
95 plugin_netstat=
96 plugin_volume=
97 plugin_volumealsa=
98 plugin_cpu=
99 plugin_deskno=
100 plugin_batt=
101
102 AC_MSG_CHECKING([which plugins should be built dynamically])
103 AC_ARG_WITH(plugins,
104 [  --with-plugins=<list>  compile dynamic plugins in <list> ]
105 [                         plugins may be comma separated ]
106 [                         'all' builds all plugins (default), 'none' builds none ]
107 [                         Possible plugins are: ]
108 [                         netstatus, netstat, volume, volumealsa, cpu, deskno, batt], plugins="$withval",[plugins="all"])
109
110 if test x"$plugins" != xall -a x"$plugins" != xnone; then
111     if test x"$plugins_loading" = xno; then
112         AC_MSG_ERROR(
113         [--disable-plugins-loading and --with-plugins conflict each other.])
114     fi
115 fi
116
117 ALL_PLUGINS_LIST="netstatus netstat volume volumealsa cpu deskno batt"
118 AC_SUBST(ALL_PLUGINS_LIST)
119
120 if test x"$plugins" = xall; then
121 dnl    for name in $ALL_PLUGINS
122 dnl    do
123 dnl        export plugin_$name="$name"
124 dnl    done
125
126     plugin_netstatus=netstatus
127     plugin_netstat=netstat
128     plugin_volume=volume
129     plugin_volumealsa=volumealsa
130     plugin_cpu=cpu
131     plugin_deskno=deskno
132     plugin_batt=batt
133
134     AC_MSG_RESULT(all)
135 else
136     if test "$plugins" != "none"; then
137         plugins=`echo $plugins | sed 's/,/ /g'`
138         for plugin in $plugins
139         do
140         case "$plugin" in
141             netstatus)
142                 plugin_netstatus=netstatus
143                 ;;
144             netstat)
145                 plugin_netstat=netstat
146                 ;;
147             volume)
148                 plugin_volume=volume
149                 ;;
150             volumealsa)
151                 plugin_volumealsa=volumealsa
152                 ;;
153             cpu)
154                 plugin_cpu=cpu
155                 ;;
156             deskno)
157                 plugin_deskno=deskno
158                 ;;
159             batt)
160                 plugin_deskno=batt
161                 ;;
162             *)
163                 echo "Unknown plugin $plugin."
164                 exit 1
165                 ;;
166         esac
167         done
168         AC_MSG_RESULT($plugins)
169     fi
170 fi
171
172 dnl FIXME: OSS/ALSA checking
173 if test x"$compile_alsa" = "xno"; then
174     if test ! -z $plugin_volumealsa; then
175         AC_MSG_RESULT([no ALSA headers/libraries found!])
176         plugin_volumealsa=
177     fi
178 else
179     dnl force OSS plugin to <null>
180     plugin_volume=
181 fi
182 PLUGINS_LIST="$plugin_netstatus $plugin_netstat $plugin_volume $plugin_volumealsa $plugin_cpu $plugin_deskno $plugin_batt"
183 AC_SUBST(PLUGINS_LIST)
184
185
186 # Checks for header files.
187 AC_PATH_X
188 AC_HEADER_STDC
189 AC_HEADER_SYS_WAIT
190 AC_CHECK_HEADERS([locale.h stdlib.h string.h sys/time.h unistd.h])
191
192 # Checks for typedefs, structures, and compiler characteristics.
193 AC_C_CONST
194 AC_C_INLINE
195 AC_STRUCT_TM
196
197 # Checks for library functions.
198 AC_FUNC_MALLOC
199 AC_FUNC_MEMCMP
200 AC_TYPE_SIGNAL
201 AC_FUNC_STAT
202 AC_FUNC_STRFTIME
203 AC_CHECK_FUNCS([bzero memset mkdir setlocale strchr])
204
205
206 GETTEXT_PACKAGE=lxpanel
207 #AM_GNU_GETTEXT([external])
208 AM_GNU_GETTEXT_VERSION(0.14.1)
209 AC_SUBST(GETTEXT_PACKAGE)
210 AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE", [Gettext package.])
211
212 ALL_LINGUAS="zh_TW ko hu sk pl"
213 AM_GLIB_GNU_GETTEXT
214
215 AC_CONFIG_FILES([
216     Makefile
217     src/Makefile
218     src/plugins/Makefile
219     src/plugins/netstatus/Makefile
220     src/plugins/netstat/Makefile
221     src/plugins/volume/Makefile
222     src/plugins/volumealsa/Makefile
223     src/plugins/cpu/Makefile
224     src/plugins/deskno/Makefile
225     src/plugins/batt/Makefile
226     po/Makefile.in
227     data/Makefile
228     data/default/config
229 ])
230 AC_OUTPUT
231
232 echo
233 echo lxpanel ......................... : Version $VERSION
234 echo
235 echo Prefix........................... : $prefix
236 if test x$plugins_loading = xyes; then
237 echo Building dynamic plugins:
238     if test x"$plugin_netstatus" != x; then
239         AC_MSG_RESULT([    netstatus - Monitor networking status])
240     fi
241     if test x"$plugin_netstat" != x; then
242         AC_MSG_RESULT([    netstat - Monitor networking status (Linux Only)])
243     fi
244     if test x"$plugin_volume" != x; then
245         AC_MSG_RESULT([    volume - Display and adjust volume of sound card])
246     fi
247     if test x"$plugin_volumealsa" != x; then
248         AC_MSG_RESULT([    volumealsa - Display and adjust volume of sound card for ALSA])
249     fi
250     if test x"$plugin_cpu" != x; then
251         AC_MSG_RESULT([    cpu - Display CPU loading])
252     fi
253     if test x"$plugin_deskno" != x; then
254         AC_MSG_RESULT([    deskno - Display desktop number])
255     fi
256     if test x"$plugin_batt" != x; then
257         AC_MSG_RESULT([    batt - Monitor battery status])
258     fi
259 else
260 echo Dynamic loader for plugins....... : disabled.
261 fi