summaryrefslogtreecommitdiff
path: root/m4/gst-glib2.m4
blob: 5b9cd8beda470c8b3e919a4a0cec8f3fd7cd8fd2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
dnl check for a minimum version of GLib

dnl AG_GST_GLIB_CHECK([minimum-version-required])

AC_DEFUN([AG_GST_GLIB_CHECK],
[
  AC_REQUIRE([AS_NANO])

  dnl Minimum required version of GLib
  GLIB_REQ=[$1]
  if test "x$GLIB_REQ" = "x"
  then
    AC_MSG_ERROR([Please specify a required version for GLib 2.0])
  fi
  AC_SUBST(GLIB_REQ)

  dnl Check for glib with everything
  AG_GST_PKG_CHECK_MODULES(GLIB,
    glib-2.0 >= $GLIB_REQ gobject-2.0 gmodule-no-export-2.0)

  if test "x$HAVE_GLIB" = "xno"; then
    AC_MSG_ERROR([This package requires GLib >= $GLIB_REQ to compile.])
  fi

  dnl Add define to tell GLib that threading is always enabled within GStreamer
  dnl code (optimisation, bypasses checks if the threading system is enabled
  dnl when using threading primitives)
  GLIB_EXTRA_CFLAGS="$GLIB_EXTRA_CFLAGS -DG_THREADS_MANDATORY"

  dnl Define G_DISABLE_DEPRECATED for development versions
  if test "x`expr $PACKAGE_VERSION_MINOR % 2`" = "x1" -a "x`expr $PACKAGE_VERSION_MICRO '<' 90`" = "x1"; then
    GLIB_EXTRA_CFLAGS="$GLIB_EXTRA_CFLAGS -DG_DISABLE_DEPRECATED"
  fi

  AC_ARG_ENABLE(gobject-cast-checks,
    AS_HELP_STRING([--enable-gobject-cast-checks[=@<:@no/auto/yes@:>@]],
      [Enable GObject cast checks]),[enable_gobject_cast_checks=$enableval],
    [enable_gobject_cast_checks=auto])

  if test "x$enable_gobject_cast_checks" = "xauto"; then
    dnl Turn on cast checks only for development versions
    if test "x`expr $PACKAGE_VERSION_MINOR % 2`" = "x1" -a "x`expr $PACKAGE_VERSION_MICRO '<' 90`" = "x1"; then
      enable_gobject_cast_checks=yes
    else
      enable_gobject_cast_checks=no
    fi
  fi

  if test "x$enable_gobject_cast_checks" = "xno"; then
    GLIB_EXTRA_CFLAGS="$GLIB_EXTRA_CFLAGS -DG_DISABLE_CAST_CHECKS"
  fi

  AC_ARG_ENABLE(glib-asserts,
    AS_HELP_STRING([--enable-glib-asserts[=@<:@no/auto/yes@:>@]],
      [Enable GLib assertion]),[enable_glib_assertions=$enableval],
    [enable_glib_assertions=auto])

  if test "x$enable_glib_assertions" = "xauto"; then
    dnl Enable assertions only for development versions
    if test "x`expr $PACKAGE_VERSION_MINOR % 2`" = "x1" -a "x`expr $PACKAGE_VERSION_MICRO '<' 90`" = "x1"; then
      enable_glib_assertions=yes
    else
      enable_glib_assertions=no
    fi
  fi

  if test "x$enable_glib_assertions" = "xno"; then
    GLIB_EXTRA_CFLAGS="$GLIB_EXTRA_CFLAGS -DG_DISABLE_ASSERT"
  fi

  dnl Find location of glib utils. People may want to or have to override these,
  dnl e.g. in a cross-compile situation where PATH is a bit messed up. We need
  dnl for these tools to work on the host, so can't just use the one from the
  dnl GLib installation that pkg-config picks up, as that might be for a
  dnl different target architecture.
  dnl
  dnl glib-genmarshal:
  AC_MSG_CHECKING(for glib-genmarshal)
  if test "x$GLIB_GENMARSHAL" != "x"; then
    AC_MSG_RESULT([$GLIB_GENMARSHAL (from environment)])
  else
    GLIB_GENMARSHAL=`$PKG_CONFIG --variable=glib_genmarshal glib-2.0`
    if $GLIB_GENMARSHAL --version 2>/dev/null >/dev/null; then
      AC_MSG_RESULT([$GLIB_GENMARSHAL (from pkg-config path)])
    else
      AC_PATH_PROG(GLIB_GENMARSHAL, [glib-genmarshal], [glib-genmarshal])
      AC_MSG_RESULT([$GLIB_GENMARSHAL])
    fi
  fi
  if ! $GLIB_GENMARSHAL --version 2>/dev/null >/dev/null; then
    AC_MSG_WARN([$GLIB_GENMARSHAL does not seem to work!])
  fi
  AC_SUBST(GLIB_GENMARSHAL)

  dnl glib-mkenums:
  AC_MSG_CHECKING(for glib-mkenums)
  if test "x$GLIB_MKENUMS" != "x"; then
    AC_MSG_RESULT([$GLIB_MKENUMS (from environment)])
  else
    dnl glib-mkenums is written in perl so should always work really
    GLIB_MKENUMS=`$PKG_CONFIG --variable=glib_mkenums glib-2.0`
    AC_MSG_RESULT([$GLIB_MKENUMS])
  fi
  if ! $GLIB_MKENUMS --version 2>/dev/null >/dev/null; then
    AC_MSG_WARN([$GLIB_MKENUMS does not seem to work!])
  fi
  AC_SUBST(GLIB_MKENUMS)

  AC_SUBST(GLIB_EXTRA_CFLAGS)

  dnl Now check for GIO
  PKG_CHECK_MODULES(GIO, gio-2.0 >= $GLIB_REQ)
  if test "x$HAVE_GIO" = "xno"; then
    AC_MSG_ERROR([This package requires GIO >= $GLIB_REQ to compile.])
  fi
  
  GIO_MODULE_DIR="`$PKG_CONFIG --variable=giomoduledir gio-2.0`"
  AC_DEFINE_UNQUOTED(GIO_MODULE_DIR, "$GIO_MODULE_DIR",
      [The GIO modules directory.])
  GIO_LIBDIR="`$PKG_CONFIG --variable=libdir gio-2.0`"
  AC_DEFINE_UNQUOTED(GIO_LIBDIR, "$GIO_LIBDIR",
      [The GIO library directory.])
  GIO_PREFIX="`$PKG_CONFIG --variable=prefix gio-2.0`"
  AC_DEFINE_UNQUOTED(GIO_PREFIX, "$GIO_PREFIX",
      [The GIO install prefix.])

  AC_SUBST(GIO_CFLAGS)
  AC_SUBST(GIO_LIBS)
  AC_SUBST(GIO_LDFLAGS)
])