configure.ac 9.46 KB
Newer Older
1
dnl library version number
2
m4_define([bluray_major], 0)
Petri Hintukainen's avatar
Petri Hintukainen committed
3
m4_define([bluray_minor], 8)
Petri Hintukainen's avatar
Petri Hintukainen committed
4
m4_define([bluray_micro], 1)
5 6
m4_define([bluray_version],[bluray_major.bluray_minor.bluray_micro])

7 8 9 10 11 12 13 14
dnl shared library version (.so version)
dnl
dnl - If there are no interface changes, increase revision.
dnl - If interfaces have been added, increase current and age. Set revision to 0.
dnl - If interfaces have been changed or removed, increase current and set age and revision to 0.
dnl
dnl Library file name will be libbluray.so.(current-age).age.revision
dnl
Petri Hintukainen's avatar
Petri Hintukainen committed
15
m4_define([lt_current],  9)
Petri Hintukainen's avatar
Petri Hintukainen committed
16
m4_define([lt_revision], 1)
Petri Hintukainen's avatar
Petri Hintukainen committed
17
m4_define([lt_age],      8)
18

19
dnl initilization
20
AC_INIT([libbluray], bluray_version, [http://www.videolan.org/developers/libbluray.html])
21
AC_CONFIG_AUX_DIR([build-aux])
22
AC_CONFIG_MACRO_DIR([m4])
23
AC_CANONICAL_HOST
24
AM_INIT_AUTOMAKE([foreign tar-ustar dist-bzip2 no-dist-gzip subdir-objects])
25
AC_CONFIG_HEADERS(config.h)
26

27 28 29
dnl Enable silent rules only when available (automake 1.11 or later).
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])

30 31 32 33 34 35 36 37 38 39 40
case "${host_os}" in
  "")
    SYS=unknown
    ;;
  *mingw32* | *cygwin* | *wince* | *mingwce*)
    case "${host_os}" in
      *wince* | *mingwce* | *mingw32ce*)
        SYS=mingwce
        ;;
      *mingw32*)
        SYS=mingw32
41
        AC_DEFINE([_WIN32_WINNT], 0x0502, [Define to '0x0502' for Windows XP SP2 APIs.])
42
        AC_DEFINE([_WIN32_IE], 0x0501, [Define to '0x0501' for IE 5.01.])
43
        CPPFLAGS="${CPPFLAGS} -D__USE_MINGW_ANSI_STDIO=1"
44 45 46
        ;;
    esac
    ;;
47 48 49
  *darwin*)
    SYS=darwin
    ;;
50 51 52 53
  netbsd*)
    SYS=netbsd
    CFLAGS="${CFLAGS} -D_NETBSD_SOURCE"
    ;;
54 55 56 57 58
  *)
    SYS="${host_os}"
    ;;
esac

59 60 61
AM_CONDITIONAL(HAVE_WIN32,   test "${SYS}" = "mingw32")
AM_CONDITIONAL(HAVE_DARWIN,  test "${SYS}" = "darwin")

62
dnl messages
63
library_not_found="Could not find required library!"
64
function_not_found="Could not find required function!"
65

66
dnl configure options
67
AC_ARG_VAR([JDK_HOME], [Path to the JDK])
68

69
AC_ARG_ENABLE([werror],
70
  [AS_HELP_STRING([--enable-werror], [set warnings as errors via -Werror @<:@default=disabled@:>@])])
gates's avatar
gates committed
71

72
AC_ARG_ENABLE([extra-warnings],
73
  [AS_HELP_STRING([--disable-extra-warnings], [set extra warnings @<:@default=enabled@:>@])])
74

75
AC_ARG_ENABLE([optimizations],
76
  [AS_HELP_STRING([--disable-optimizations], [disable optimizations @<:@default=enabled@:>@])])
77

78 79 80 81 82 83
AC_ARG_ENABLE([examples],
  [AS_HELP_STRING([--enable-examples],
  [build examples (default is yes)])],
  [use_examples=$enableval],
  [use_examples=yes])

84
AC_ARG_ENABLE([bdjava],
85
  [AS_HELP_STRING([--disable-bdjava], [disable BD-Java support @<:@default=enabled@:>@])],
86
  [use_bdjava=$enableval],
87
  [use_bdjava=yes])
88

89 90 91
AC_ARG_ENABLE([udf],
  [AS_HELP_STRING([--enable-udf], [enable UDF support @<:@default=disabled@:>@])])

92 93
AC_ARG_WITH([libxml2],
  [AS_HELP_STRING([--without-libxml2], [build without libxml2 support @<:@default=with@:>@])])
94

95 96
AC_ARG_WITH([freetype],
  [AS_HELP_STRING([--without-freetype], [build without freetype support @<:@default=with@:>@])])
97

98 99 100
AC_ARG_WITH([fontconfig],
  [AS_HELP_STRING([--without-fontconfig], [build without fontconfig support @<:@default=with@:>@])])

101 102 103 104 105 106
AC_ARG_WITH([bdj-type],
  [AS_HELP_STRING([--with-bdj-type=TYPE],
  [Specify the type of BD-J implementation (j2se, j2me). Default is j2se.])],
  [BDJ_TYPE=$withval],
  [BDJ_TYPE=j2se])

107 108 109 110 111 112
AC_ARG_WITH([bdj-bootclasspath],
  [AS_HELP_STRING([--with-bdj-bootclasspath=PATH],
  [Specify BD-J build-time bootclass path (example /opt/PhoneME/lib/btclasses.zip;/opt/PhoneME/lib/xmlparer.jar). Default is empty.])],
  [BDJ_BOOTCLASSPATH=$withval],
  [BDJ_BOOTCLASSPATH=])

113
dnl required programs
114
AC_PROG_CC
115
AM_PROG_CC_C_O
gates's avatar
gates committed
116
AC_PROG_LIBTOOL
117

118
dnl required types
119
AC_TYPE_SIGNAL
120

121
dnl required headers
gates's avatar
gates committed
122
AC_CHECK_HEADERS([stdarg.h sys/types.h dirent.h errno.h libgen.h malloc.h])
123
AC_CHECK_HEADERS([stdlib.h mntent.h linux/cdrom.h inttypes.h strings.h])
124
AC_CHECK_HEADERS([sys/time.h time.h mntent.h])
125

126
dnl required structures
127 128
AC_STRUCT_DIRENT_D_TYPE

129
dnl required system services
130 131
AC_SYS_LARGEFILE

132
dnl required functions
133
AC_CHECK_FUNC([snprintf],, [AC_MSG_ERROR($function_not_found)])
134

135 136
dnl required libraries
dnl pthreads (not on win32)
137 138 139 140 141 142
AS_IF([test "${SYS}" != "mingw32"], [
  AC_CHECK_HEADERS([pthread.h], ,
    [AC_MSG_ERROR([pthread required])])
  AC_SEARCH_LIBS([pthread_create], [pthread], ,
    [AC_MSG_ERROR([pthread required])])
  AC_SEARCH_LIBS([dlopen], [dl])
143 144 145 146
  DLOPEN_LIBS="$ac_cv_search_dlopen"
  AS_CASE([$DLOPEN_LIBS],
    [no|none\ required], [DLOPEN_LIBS=""])
  AC_SUBST([DLOPEN_LIBS])
147
])
148

149
dnl libxml2 for metadata parser
150 151
AS_IF([test "x$with_libxml2" != "xno"], [
  PKG_CHECK_MODULES([LIBXML2], [libxml-2.0 >= 2.6],
152
    [with_libxml2=yes; AC_DEFINE([HAVE_LIBXML2], [1],
153 154
        [Define to 1 if libxml2 is to be used for metadata parsing])])
])
155

156
dnl FreeType2
157
AS_IF([test "x$with_freetype" != "xno"], [
158
  PKG_CHECK_MODULES([FT2], [freetype2],
159
    [with_freetype=yes; AC_DEFINE([HAVE_FT2], 1, [Define this if you have FreeType2 library])])
160 161 162 163 164 165 166

  dnl fontconfig support
  AS_IF([test "${SYS}" != "mingw32"], [
    AS_IF([test "x$with_fontconfig" != "xno"], [
      PKG_CHECK_MODULES([FONTCONFIG], [fontconfig],
        [with_fontconfig=yes; AC_DEFINE([HAVE_FONTCONFIG], 1, [Define this if you have fontconfig library])])
    ])
167 168 169
  ],[
    FONTCONFIG_LIBS="-lgdi32"
    AC_SUBST([FONTCONFIG_LIBS])
170
  ])
171
])
172

173 174 175
CC_CHECK_CFLAGS_APPEND([-Wall -Wdisabled-optimization -Wpointer-arith ]dnl
[-Wredundant-decls -Wcast-qual -Wwrite-strings -Wtype-limits -Wundef ]dnl
[-Wmissing-prototypes -Wshadow])
176

177 178 179
CC_CHECK_CFLAGS_APPEND([-Werror=implicit-function-declaration ]dnl
                       [-Werror-implicit-function-declaration],
                       [break;])
180

181 182 183 184
CC_CHECK_WERROR
AS_IF([test "x$enable_werror" = "xyes"], [
  CFLAGS="${CFLAGS} $cc_cv_werror"
])
185

186 187 188 189 190 191 192
AS_IF([test "x$enable_extra_warnings" != "xno"], [
  CC_CHECK_CFLAGS_APPEND([-Wextra -Winline])
])

AS_IF([test "x$enable_optimizations" != "xno"], [
  CC_CHECK_CFLAGS_APPEND([-O3 -fomit-frame-pointer])
])
193

194
dnl use examples
195 196
AM_CONDITIONAL([USING_EXAMPLES], [ test $use_examples = "yes" ])

197
dnl use bdjava
198
if [[ $use_bdjava = "yes" ]]; then
199
  case $host_cpu in
200 201
       x86_64) java_arch=amd64 ;;
       i?86)   java_arch=i386 ;;
202
       arm*)   java_arch=arm ;;
203
       *)      java_arch=$host_cpu ;;
204
  esac
205
  case $host_os in
206 207
       linux*)   java_os=linux ;;
       win*)     java_os=win32 ;;
208
       mingw*)   java_os=win32 ;;
209
       freebsd*) java_os=freebsd ;;
210
       solaris*) java_os=solaris ;;
211
       darwin*)  java_os=darwin ;;
212
       *)        java_os=$host_os ;;
213 214
  esac

215 216 217 218 219 220 221 222
  AS_IF([test "x${JDK_HOME}" != "x"], [
    BDJAVA_CFLAGS="-I${JDK_HOME}/include -I${JDK_HOME}/include/$java_os"

    temp_CPPFLAGS="$CPPFLAGS"
    CPPFLAGS="$BDJAVA_CFLAGS $CPPFLAGS"
    AC_CHECK_HEADERS([jni.h], [], [AC_MSG_ERROR(could not find jni.h)])
    CPPFLAGS="$temp_CPPFLAGS"
  ], [
223
    BDJAVA_CFLAGS='-I${abs_top_srcdir}/jni -I${abs_top_srcdir}/jni/'"${java_os}"
224
  ])
225

226 227 228 229 230
  AC_CHECK_PROG(HAVE_ANT, [ant], yes, no)
  if test "x$HAVE_ANT" = "xno"; then
      AC_MSG_ERROR([BD-J requires ANT, but ant was not found. Please install it.])
  fi

231
  AC_DEFINE([USING_BDJAVA], [1], ["Define to 1 if using BD-Java"])
232
  AC_DEFINE_UNQUOTED([JAVA_ARCH], ["$java_arch"], ["Defines the architecture of the java vm."])
233
  AC_DEFINE_UNQUOTED([JDK_HOME], ["$JDK_HOME"], [""])
234
fi
235 236
AM_CONDITIONAL([USING_BDJAVA], [ test $use_bdjava = "yes" ])

237
dnl BD-J type
238 239 240 241 242 243
if test "$BDJ_TYPE" = "j2me"; then
  AC_DEFINE([HAVE_BDJ_J2ME], [1], [Define to 1 if using libbluray J2ME stack])
else
  BDJ_TYPE=j2se
fi
AC_SUBST(BDJ_TYPE)
244
dnl bootclasspath
245
AC_SUBST(BDJ_BOOTCLASSPATH)
246

247
dnl udf support (using git submodule)
248 249 250 251
AS_IF([test "x$enable_udf" = "xyes"], [
    if test ! -f "${srcdir}/contrib/libudfread/src/udfread.h"; then
        AC_MSG_ERROR("libudfread source tree not found")
    fi
252 253 254 255 256 257 258 259 260 261 262 263 264
    AC_CHECK_HEADERS([unistd.h fcntl.h])
    AS_IF([test "${SYS}" != "mingw32"], [
      AC_CHECK_FUNC([pread],, [AC_MSG_ERROR("Function pread not found. Try with --disable-udf.")])
    ])

    AC_DEFINE([ENABLE_UDF], [1], [Define to 1 if libudfread is to be used for disc image access])
    UDF_CFLAGS='-I${srcdir}/contrib/libudfread/src/'
    AC_SUBST(UDF_CFLAGS)
    ],
  [enable_udf=no])

AM_CONDITIONAL([ENABLE_UDF], [test $enable_udf = "yes" ])

265
dnl generate documentation
266 267
DX_INIT_DOXYGEN(libbluray, doc/doxygen-config, [doc/doxygen])

268
dnl export library version number
269 270 271 272 273 274 275
BLURAY_VERSION_MAJOR=bluray_major()
AC_SUBST(BLURAY_VERSION_MAJOR)
BLURAY_VERSION_MINOR=bluray_minor()
AC_SUBST(BLURAY_VERSION_MINOR)
BLURAY_VERSION_MICRO=bluray_micro()
AC_SUBST(BLURAY_VERSION_MICRO)

276
dnl export library (.so) version
277 278 279
LT_VERSION_INFO="lt_current():lt_revision():lt_age()"
AC_SUBST(LT_VERSION_INFO)

280
dnl generate output files
281
AC_SUBST(BDJAVA_CFLAGS)
Petri Hintukainen's avatar
Petri Hintukainen committed
282
AC_CONFIG_FILES([Makefile src/libbluray.pc src/libbluray/bluray-version.h])
283
AC_OUTPUT
284 285 286 287 288 289 290 291


dnl ---------------------------------------------
dnl Some infos:
dnl ---------------------------------------------

echo "  Summary:"
echo "  --------"
292 293 294
echo "  BD-J support:                  $use_bdjava"
if [[ $use_bdjava = "yes" ]]; then
echo "  BD-J type:                     $BDJ_TYPE"
295 296 297
if test x"$BDJ_BOOTCLASSPATH" != x""; then
echo "  BD-J bootclasspath:            $BDJ_BOOTCLASSPATH"
fi
298
fi
299
echo "  Font support (freetype2):      $with_freetype"
300 301 302 303 304
if [[ $with_freetype = "yes" ]]; then
if [[ $use_bdjava = "yes" ]]; then
if test "${SYS}" != "mingw32"; then
echo "  Use system fonts (fontconfig): $with_fontconfig"
else
305
echo "  Use system fonts:              yes"
306 307 308
fi
fi
fi
309
echo "  Metadata support (libxml2):    $with_libxml2"
310
echo "  UDF filesystem support:        $enable_udf"
311
echo "  Build examples:                $use_examples"
312