• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1dnl configure-time options shared among gstreamer modules
2
3dnl AG_GST_ARG_DEBUG
4dnl AG_GST_ARG_PROFILING
5dnl AG_GST_ARG_VALGRIND
6dnl AG_GST_ARG_GCOV
7
8dnl AG_GST_ARG_EXAMPLES
9
10dnl AG_GST_ARG_WITH_PKG_CONFIG_PATH
11dnl AG_GST_ARG_WITH_PACKAGE_NAME
12dnl AG_GST_ARG_WITH_PACKAGE_ORIGIN
13
14dnl AG_GST_ARG_WITH_PLUGINS
15dnl AG_GST_CHECK_PLUGIN
16dnl AG_GST_DISABLE_PLUGIN
17
18dnl AG_GST_ARG_ENABLE_EXTERNAL
19dnl AG_GST_ARG_ENABLE_EXPERIMENTAL
20dnl AG_GST_ARG_ENABLE_BROKEN
21
22dnl AG_GST_ARG_DISABLE_FATAL_WARNINGS
23AC_DEFUN([AG_GST_ARG_DEBUG],
24[
25  dnl debugging stuff
26  AC_ARG_ENABLE(debug,
27    AC_HELP_STRING([--disable-debug],[disable addition of -g debugging info]),
28    [
29      case "${enableval}" in
30        yes) USE_DEBUG=yes ;;
31        no)  USE_DEBUG=no ;;
32        *)   AC_MSG_ERROR(bad value ${enableval} for --enable-debug) ;;
33      esac
34    ],
35    [USE_DEBUG=yes]) dnl Default value
36])
37
38AC_DEFUN([AG_GST_ARG_PROFILING],
39[
40  AC_ARG_ENABLE(profiling,
41    AC_HELP_STRING([--enable-profiling],
42      [adds -pg to compiler commandline, for profiling]),
43    [
44      case "${enableval}" in
45        yes) USE_PROFILING=yes ;;
46        no)  USE_PROFILING=no ;;
47        *)   AC_MSG_ERROR(bad value ${enableval} for --enable-profiling) ;;
48      esac
49    ],
50    [USE_PROFILING=no]) dnl Default value
51])
52
53AC_DEFUN([AG_GST_ARG_VALGRIND],
54[
55  dnl valgrind inclusion
56  AC_ARG_ENABLE(valgrind,
57    AC_HELP_STRING([--disable-valgrind],[disable run-time valgrind detection]),
58    [
59      case "${enableval}" in
60        yes) USE_VALGRIND="$USE_DEBUG" ;;
61        no)  USE_VALGRIND=no ;;
62        *)   AC_MSG_ERROR(bad value ${enableval} for --enable-valgrind) ;;
63      esac
64    ],
65    [USE_VALGRIND="$USE_DEBUG"]) dnl Default value
66  VALGRIND_REQ="3.0"
67  if test "x$USE_VALGRIND" = xyes; then
68    PKG_CHECK_MODULES(VALGRIND, valgrind >= $VALGRIND_REQ,
69      USE_VALGRIND="yes",
70      USE_VALGRIND="no")
71  fi
72  if test "x$USE_VALGRIND" = xyes; then
73    AC_DEFINE(HAVE_VALGRIND, 1, [Define if valgrind should be used])
74    AC_MSG_NOTICE(Using extra code paths for valgrind)
75  fi
76])
77
78AC_DEFUN([AG_GST_ARG_GCOV],
79[
80  AC_ARG_ENABLE(gcov,
81    AC_HELP_STRING([--enable-gcov],
82      [compile with coverage profiling instrumentation (gcc only)]),
83    enable_gcov=$enableval,
84    enable_gcov=no)
85  if test x$enable_gcov = xyes ; then
86    if test "x$GCC" != "xyes"
87    then
88      AC_MSG_ERROR([gcov only works if gcc is used])
89    fi
90
91    AS_COMPILER_FLAG(["-fprofile-arcs"],
92      [GCOV_CFLAGS="$GCOV_CFLAGS -fprofile-arcs"],
93      true)
94    AS_COMPILER_FLAG(["-ftest-coverage"],
95      [GCOV_CFLAGS="$GCOV_CFLAGS -ftest-coverage"],
96      true)
97    dnl remove any -O flags - FIXME: is this needed ?
98    GCOV_CFLAGS=`echo "$GCOV_CFLAGS" | sed -e 's/-O[[0-9]]*//g'`
99    dnl libtool 1.5.22 and lower strip -fprofile-arcs from the flags
100    dnl passed to the linker, which is a bug; -fprofile-arcs implicitly
101    dnl links in -lgcov, so we do it explicitly here for the same effect
102    GCOV_LIBS=-lgcov
103    AC_SUBST(GCOV_CFLAGS)
104    AC_SUBST(GCOV_LIBS)
105    GCOV=`echo $CC | sed s/gcc/gcov/g`
106    AC_SUBST(GCOV)
107
108    GST_GCOV_ENABLED=yes
109    AC_DEFINE_UNQUOTED(GST_GCOV_ENABLED, 1,
110      [Defined if gcov is enabled to force a rebuild due to config.h changing])
111    dnl if gcov is used, we do not want default -O2 CFLAGS
112    if test "x$GST_GCOV_ENABLED" = "xyes"
113    then
114      CFLAGS="$CFLAGS -O0"
115      AC_SUBST(CFLAGS)
116      CXXFLAGS="$CXXFLAGS -O0"
117      AC_SUBST(CXXFLAGS)
118      FFLAGS="$FFLAGS -O0"
119      AC_SUBST(FFLAGS)
120      CCASFLAGS="$CCASFLAGS -O0"
121      AC_SUBST(CCASFLAGS)
122      AC_MSG_NOTICE([gcov enabled, setting CFLAGS and friends to $CFLAGS])
123    fi
124  fi
125  AM_CONDITIONAL(GST_GCOV_ENABLED, test x$enable_gcov = xyes)
126])
127
128AC_DEFUN([AG_GST_ARG_EXAMPLES],
129[
130  AC_ARG_ENABLE(examples,
131    AC_HELP_STRING([--disable-examples], [disable building examples]),
132      [
133        case "${enableval}" in
134          yes) BUILD_EXAMPLES=yes ;;
135          no)  BUILD_EXAMPLES=no ;;
136          *)   AC_MSG_ERROR(bad value ${enableval} for --disable-examples) ;;
137        esac
138      ],
139      [BUILD_EXAMPLES=yes]) dnl Default value
140  AM_CONDITIONAL(BUILD_EXAMPLES,      test "x$BUILD_EXAMPLES" = "xyes")
141])
142
143AC_DEFUN([AG_GST_ARG_WITH_PKG_CONFIG_PATH],
144[
145  dnl possibly modify pkg-config path
146  AC_ARG_WITH(pkg-config-path,
147     AC_HELP_STRING([--with-pkg-config-path],
148                    [colon-separated list of pkg-config(1) dirs]),
149     [
150       export PKG_CONFIG_PATH=${withval}
151       AC_MSG_NOTICE(Set PKG_CONFIG_PATH to $PKG_CONFIG_PATH)
152     ])
153])
154
155
156dnl This macro requires that GST_GIT or GST_CVS is set to yes or no (release)
157AC_DEFUN([AG_GST_ARG_WITH_PACKAGE_NAME],
158[
159  dnl package name in plugins
160  AC_ARG_WITH(package-name,
161    AC_HELP_STRING([--with-package-name],
162      [specify package name to use in plugins]),
163    [
164      case "${withval}" in
165        yes) AC_MSG_ERROR(bad value ${withval} for --with-package-name) ;;
166        no)  AC_MSG_ERROR(bad value ${withval} for --with-package-name) ;;
167        *)   GST_PACKAGE_NAME="${withval}" ;;
168      esac
169    ],
170    [
171      P=$1
172      if test "x$P" = "x"
173      then
174        P=$PACKAGE_NAME
175      fi
176
177      if test "x$PACKAGE_VERSION_NANO" = "x0"
178      then
179        GST_PACKAGE_NAME="$P source release"
180      else
181        if test "x$PACKAGE_VERSION_NANO" = "x1"
182        then
183          GST_PACKAGE_NAME="$P git"
184        else
185          GST_PACKAGE_NAME="$P prerelease"
186        fi
187      fi
188    ]
189  )
190  AC_MSG_NOTICE(Using $GST_PACKAGE_NAME as package name)
191  AC_DEFINE_UNQUOTED(GST_PACKAGE_NAME, "$GST_PACKAGE_NAME",
192      [package name in plugins])
193  AC_SUBST(GST_PACKAGE_NAME)
194])
195
196AC_DEFUN([AG_GST_ARG_WITH_PACKAGE_ORIGIN],
197[
198  dnl package origin URL
199  AC_ARG_WITH(package-origin,
200    AC_HELP_STRING([--with-package-origin],
201      [specify package origin URL to use in plugins]),
202    [
203      case "${withval}" in
204        yes) AC_MSG_ERROR(bad value ${withval} for --with-package-origin) ;;
205        no)  AC_MSG_ERROR(bad value ${withval} for --with-package-origin) ;;
206        *)   GST_PACKAGE_ORIGIN="${withval}" ;;
207      esac
208    ],
209    [GST_PACKAGE_ORIGIN="[Unknown package origin]"] dnl Default value
210  )
211  AC_MSG_NOTICE(Using $GST_PACKAGE_ORIGIN as package origin)
212  AC_DEFINE_UNQUOTED(GST_PACKAGE_ORIGIN, "$GST_PACKAGE_ORIGIN",
213      [package origin])
214  AC_SUBST(GST_PACKAGE_ORIGIN)
215])
216
217dnl sets WITH_PLUGINS to the list of plug-ins given as an argument
218dnl also clears GST_PLUGINS_ALL and GST_PLUGINS_SELECTED
219AC_DEFUN([AG_GST_ARG_WITH_PLUGINS],
220[
221  AC_ARG_WITH(plugins,
222    AC_HELP_STRING([--with-plugins],
223      [comma-separated list of dependencyless plug-ins to compile]),
224    [WITH_PLUGINS=$withval],
225    [WITH_PLUGINS=])
226
227  GST_PLUGINS_ALL=""
228  GST_PLUGINS_SELECTED=""
229  GST_PLUGINS_NONPORTED=""
230
231  AC_SUBST(GST_PLUGINS_ALL)
232  AC_SUBST(GST_PLUGINS_SELECTED)
233  AC_SUBST(GST_PLUGINS_NONPORTED)
234])
235
236dnl AG_GST_CHECK_PLUGIN(PLUGIN-NAME)
237dnl
238dnl This macro adds the plug-in <PLUGIN-NAME> to GST_PLUGINS_ALL. Then it
239dnl checks if WITH_PLUGINS is empty or the plugin is present in WITH_PLUGINS,
240dnl and if so adds it to GST_PLUGINS_SELECTED. Then it checks if the plugin
241dnl is present in WITHOUT_PLUGINS (ie. was disabled specifically) and if so
242dnl removes it from GST_PLUGINS_SELECTED.
243dnl
244dnl The macro will call AM_CONDITIONAL(USE_PLUGIN_<PLUGIN-NAME>, ...) to allow
245dnl control of what is built in Makefile.ams.
246AC_DEFUN([AG_GST_CHECK_PLUGIN],
247[
248  GST_PLUGINS_ALL="$GST_PLUGINS_ALL [$1]"
249
250  define([pname_def],translit([$1], -a-z, _a-z))
251
252  AC_ARG_ENABLE([$1],
253    AC_HELP_STRING([--disable-[$1]], [disable dependency-less $1 plugin]),
254    [
255      case "${enableval}" in
256        yes) [gst_use_]pname_def=yes ;;
257        no) [gst_use_]pname_def=no ;;
258        *) AC_MSG_ERROR([bad value ${enableval} for --enable-$1]) ;;
259       esac
260    ],
261    [[gst_use_]pname_def=yes]) dnl Default value
262
263  if test x$[gst_use_]pname_def = xno; then
264    AC_MSG_NOTICE(disabling dependency-less plugin $1)
265    WITHOUT_PLUGINS="$WITHOUT_PLUGINS [$1]"
266  fi
267  undefine([pname_def])
268
269  dnl First check inclusion
270  if [[ -z "$WITH_PLUGINS" ]] || echo " [$WITH_PLUGINS] " | tr , ' ' | grep -i " [$1] " > /dev/null; then
271    GST_PLUGINS_SELECTED="$GST_PLUGINS_SELECTED [$1]"
272  fi
273  dnl Then check exclusion
274  if echo " [$WITHOUT_PLUGINS] " | tr , ' ' | grep -i " [$1] " > /dev/null; then
275    GST_PLUGINS_SELECTED=`echo " $GST_PLUGINS_SELECTED " | $SED -e 's/ [$1] / /'`
276  fi
277  dnl Finally check if the plugin is ported or not
278  if echo " [$GST_PLUGINS_NONPORTED] " | tr , ' ' | grep -i " [$1] " > /dev/null; then
279    GST_PLUGINS_SELECTED=`echo " $GST_PLUGINS_SELECTED " | $SED -e 's/ [$1] / /'`
280  fi
281  AM_CONDITIONAL([USE_PLUGIN_]translit([$1], a-z, A-Z), echo " $GST_PLUGINS_SELECTED " | grep -i " [$1] " > /dev/null)
282])
283
284dnl AG_GST_DISABLE_PLUGIN(PLUGIN-NAME)
285dnl
286dnl This macro disables the plug-in <PLUGIN-NAME> by removing it from
287dnl GST_PLUGINS_SELECTED.
288AC_DEFUN([AG_GST_DISABLE_PLUGIN],
289[
290  GST_PLUGINS_SELECTED=`echo " $GST_PLUGINS_SELECTED " | $SED -e 's/ [$1] / /'`
291  AM_CONDITIONAL([USE_PLUGIN_]translit([$1], a-z, A-Z), false)
292])
293
294AC_DEFUN([AG_GST_ARG_ENABLE_EXTERNAL],
295[
296  AG_GST_CHECK_FEATURE(EXTERNAL, [building of plug-ins with external deps],,
297    HAVE_EXTERNAL=yes, enabled,
298    [
299      AC_MSG_NOTICE(building external plug-ins)
300      BUILD_EXTERNAL="yes"
301    ],[
302      AC_MSG_WARN(all plug-ins with external dependencies will not be built)
303      BUILD_EXTERNAL="no"
304    ])
305  # make BUILD_EXTERNAL available to Makefile.am
306  AM_CONDITIONAL(BUILD_EXTERNAL, test "x$BUILD_EXTERNAL" = "xyes")
307])
308
309dnl experimental plug-ins; stuff that hasn't had the dust settle yet
310dnl read 'builds, but might not work'
311AC_DEFUN([AG_GST_ARG_ENABLE_EXPERIMENTAL],
312[
313  AG_GST_CHECK_FEATURE(EXPERIMENTAL, [building of experimental plug-ins],,
314    HAVE_EXPERIMENTAL=yes, disabled,
315    [
316      AC_MSG_WARN(building experimental plug-ins)
317      BUILD_EXPERIMENTAL="yes"
318    ],[
319      AC_MSG_NOTICE(not building experimental plug-ins)
320      BUILD_EXPERIMENTAL="no"
321    ])
322  # make BUILD_EXPERIMENTAL available to Makefile.am
323  AM_CONDITIONAL(BUILD_EXPERIMENTAL, test "x$BUILD_EXPERIMENTAL" = "xyes")
324])
325
326dnl broken plug-ins; stuff that doesn't seem to build at the moment
327AC_DEFUN([AG_GST_ARG_ENABLE_BROKEN],
328[
329  AG_GST_CHECK_FEATURE(BROKEN, [building of broken plug-ins],,
330    HAVE_BROKEN=yes, disabled,
331    [
332      AC_MSG_WARN([building broken plug-ins -- no bug reports on these, only patches ...])
333    ],[
334      AC_MSG_NOTICE([not building broken plug-ins])
335    ])
336])
337
338dnl allow people (or build tools) to override default behaviour
339dnl for fatal compiler warnings
340dnl Enable fatal warnings by default only for development versions
341AC_DEFUN([AG_GST_ARG_DISABLE_FATAL_WARNINGS],
342[
343  AC_ARG_ENABLE(fatal-warnings,
344    AC_HELP_STRING([--disable-fatal-warnings],
345                   [Don't turn compiler warnings into fatal errors]),
346    [
347      case "${enableval}" in
348        yes) FATAL_WARNINGS=yes ;;
349        no)  FATAL_WARNINGS=no ;;
350        *)   AC_MSG_ERROR(bad value ${enableval} for --disable-fatal-warnings) ;;
351      esac
352    ],
353    [
354      if test "x`expr $PACKAGE_VERSION_MINOR % 2`" = "x1" -a "x`expr $PACKAGE_VERSION_MICRO '<' 90`" = "x1"; then
355        FATAL_WARNINGS=yes
356      else
357        FATAL_WARNINGS=no
358      fi
359    ])
360])
361
362dnl Enable extra checks by default only for development versions
363AC_DEFUN([AG_GST_ARG_ENABLE_EXTRA_CHECKS],
364[
365  AC_ARG_ENABLE(extra-check,
366    AC_HELP_STRING([--enable-extra-checks],
367                   [Enable extra runtime checks]),
368    [
369      case "${enableval}" in
370        yes) EXTRA_CHECKS=yes ;;
371        no)  EXTRA_CHECKS=no ;;
372        *)   AC_MSG_ERROR(bad value ${enableval} for --enable-extra-checks) ;;
373      esac
374    ],
375    [
376      if test "x`expr $PACKAGE_VERSION_MINOR % 2`" = "x1" -a "x`expr $PACKAGE_VERSION_MICRO '<' 90`" = "x1"; then
377        EXTRA_CHECKS=yes
378      else
379        EXTRA_CHECKS=no
380      fi
381    ])
382
383    if test "x$EXTRA_CHECKS" = "xyes"; then
384        AC_DEFINE(GST_ENABLE_EXTRA_CHECKS, 1, [Define if extra runtime checks should be enabled])
385    fi
386])
387