-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathconfigure.ac
349 lines (292 loc) · 10.9 KB
/
configure.ac
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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
dnl library version number
m4_define([bluray_major], 1)
m4_define([bluray_minor], 1)
m4_define([bluray_micro], 2)
m4_define([bluray_version],[bluray_major.bluray_minor.bluray_micro])
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
m4_define([lt_current], 3)
m4_define([lt_revision], 2)
m4_define([lt_age], 1)
dnl initilization
AC_INIT([libbluray], bluray_version, [http://www.videolan.org/developers/libbluray.html])
AC_CONFIG_AUX_DIR([build-aux])
AC_CONFIG_MACRO_DIR([m4])
AC_CANONICAL_HOST
AM_INIT_AUTOMAKE([foreign tar-ustar dist-bzip2 no-dist-gzip subdir-objects -Wall])
AC_CONFIG_HEADERS(config.h)
dnl Enable silent rules only when available (automake 1.11 or later).
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
case "${host_os}" in
"")
SYS=unknown
;;
*mingw32* | *cygwin* | *wince* | *mingwce*)
case "${host_os}" in
*wince* | *mingwce* | *mingw32ce*)
SYS=mingwce
;;
*mingw32*)
SYS=mingw32
AC_DEFINE([_WIN32_WINNT], 0x0502, [Define to '0x0502' for Windows XP SP2 APIs.])
AC_DEFINE([_WIN32_IE], 0x0501, [Define to '0x0501' for IE 5.01.])
CPPFLAGS="${CPPFLAGS} -D__USE_MINGW_ANSI_STDIO=1"
;;
esac
;;
*darwin*)
SYS=darwin
;;
netbsd*)
SYS=netbsd
CFLAGS="${CFLAGS} -D_NETBSD_SOURCE"
;;
freebsd*)
SYS=freebsd
CFLAGS="${CFLAGS} -D_XOPEN_SOURCE=700"
;;
*)
SYS="${host_os}"
;;
esac
AM_CONDITIONAL(HAVE_WIN32, test "${SYS}" = "mingw32")
AM_CONDITIONAL(HAVE_DARWIN, test "${SYS}" = "darwin")
dnl messages
library_not_found="Could not find required library!"
function_not_found="Could not find required function!"
dnl configure options
AC_ARG_VAR([JDK_HOME], [Path to the JDK])
AC_ARG_ENABLE([werror],
[AS_HELP_STRING([--enable-werror], [set warnings as errors via -Werror @<:@default=disabled@:>@])])
AC_ARG_ENABLE([extra-warnings],
[AS_HELP_STRING([--disable-extra-warnings], [set extra warnings @<:@default=enabled@:>@])])
AC_ARG_ENABLE([optimizations],
[AS_HELP_STRING([--disable-optimizations], [disable optimizations @<:@default=enabled@:>@])])
AC_ARG_ENABLE([examples],
[AS_HELP_STRING([--enable-examples],
[build examples (default is yes)])],
[use_examples=$enableval],
[use_examples=yes])
AC_ARG_ENABLE([udf],
[AS_HELP_STRING([--disable-udf], [disable UDF support @<:@default=enabled@:>@])],
[enable_udf=$enableval],
[enable_udf=yes])
AC_ARG_ENABLE([bdjava-jar],
[AS_HELP_STRING([--disable-bdjava-jar],
[disable building of BD-Java JAR file @<:@default=enabled@:>@])],
[use_bdjava_jar=$enableval],
[use_bdjava_jar=yes])
AC_ARG_WITH([libxml2],
[AS_HELP_STRING([--without-libxml2], [build without libxml2 support @<:@default=with@:>@])])
AC_ARG_WITH([freetype],
[AS_HELP_STRING([--without-freetype], [build without freetype support @<:@default=with@:>@])])
AC_ARG_WITH([fontconfig],
[AS_HELP_STRING([--without-fontconfig], [build without fontconfig support @<:@default=with@:>@])])
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])
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=])
AC_ARG_WITH([java9],
[AS_HELP_STRING([--with-java9], [build with Java 9+ (drop support for Java <1.6) @<:@default=without@:>@])])
dnl required programs
AC_PROG_CC
AM_PROG_CC_C_O
m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
AC_PROG_LIBTOOL
dnl required types
AC_TYPE_SIGNAL
dnl required headers
AC_CHECK_HEADERS([stdarg.h sys/types.h dirent.h errno.h libgen.h malloc.h])
AC_CHECK_HEADERS([stdlib.h mntent.h linux/cdrom.h inttypes.h strings.h])
AC_CHECK_HEADERS([sys/time.h time.h mntent.h])
dnl required structures
AC_STRUCT_DIRENT_D_TYPE
dnl required system services
AC_SYS_LARGEFILE
dnl required functions
AC_CHECK_FUNC([snprintf],, [AC_MSG_ERROR($function_not_found)])
dnl required libraries
dnl pthreads (not on win32)
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])
DLOPEN_LIBS="$ac_cv_search_dlopen"
AS_CASE([$DLOPEN_LIBS],
[no|none\ required], [DLOPEN_LIBS=""])
AC_SUBST([DLOPEN_LIBS])
])
dnl libxml2 for metadata parser
AS_IF([test "x$with_libxml2" != "xno"], [
PKG_CHECK_MODULES([LIBXML2], [libxml-2.0 >= 2.6],
[with_libxml2=yes; AC_DEFINE([HAVE_LIBXML2], [1],
[Define to 1 if libxml2 is to be used for metadata parsing])])
PACKAGES="$PACKAGES libxml-2.0 >= 2.6"
])
dnl FreeType2
AS_IF([test "x$with_freetype" != "xno"], [
PKG_CHECK_MODULES([FT2], [freetype2],
[with_freetype=yes; AC_DEFINE([HAVE_FT2], 1, [Define this if you have FreeType2 library])])
PACKAGES="$PACKAGES freetype2"
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])])
PACKAGES="$PACKAGES fontconfig"
])
],[
EXTRA_LIBS="$EXTRA_LIBS -lgdi32"
])
])
CC_CHECK_CFLAGS_APPEND([-Wall -Wdisabled-optimization -Wpointer-arith ]dnl
[-Wredundant-decls -Wcast-qual -Wwrite-strings -Wtype-limits -Wundef ]dnl
[-Wmissing-prototypes -Wshadow])
CC_CHECK_CFLAGS_APPEND([-Werror=implicit-function-declaration ]dnl
[-Werror-implicit-function-declaration],
[break;])
CC_CHECK_WERROR
AS_IF([test "x$enable_werror" = "xyes"], [
CFLAGS="${CFLAGS} $cc_cv_werror"
])
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])
])
dnl use examples
AM_CONDITIONAL([USING_EXAMPLES], [ test $use_examples = "yes" ])
dnl use bdjava
case $host_cpu in
x86_64) java_arch=amd64 ;;
i?86) java_arch=i386 ;;
arm*) java_arch=arm ;;
*) java_arch=$host_cpu ;;
esac
case $host_os in
linux*) java_os=linux ;;
win*) java_os=win32 ;;
mingw*) java_os=win32 ;;
freebsd*) java_os=freebsd ;;
solaris*) java_os=solaris ;;
darwin*) java_os=darwin ;;
netbsd*) java_os=netbsd ;;
*) java_os=$host_os ;;
esac
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"
], [
BDJAVA_CFLAGS='-I${abs_top_srcdir}/jni -I${abs_top_srcdir}/jni/'"${java_os}"
])
AS_IF([test "x$use_bdjava_jar" = "xyes"], [
dnl check for ant
AC_CHECK_PROG(HAVE_ANT, [ant], yes, no)
AS_IF([test "x$HAVE_ANT" = "xno"], [
AC_MSG_ERROR([BD-J requires ANT, but ant was not found. Install ant or disable jar file building (--disable-bdjava-jar)])
])
AS_IF([test "x$with_java9" = "x" -a "$BDJ_TYPE" != "j2me"], [
dnl check for javac
AS_IF([test "x${JAVA_HOME}" != "x"],
[AC_PATH_PROG(JAVAC, javac, none, ["${JAVA_HOME}/bin"])],
[AC_PATH_PROG(JAVAC, javac, none)])
AS_IF([test x"$JAVAC" = x"none"],
[AC_MSG_WARN([javac not found. Disable jar file building (--disable-bdjava-jar), set JAVA_HOME or javac type with --with[out]-java9 option.])])
dnl check for Java 9+
javac_version=`"$JAVAC" -version 2>&1 | head -n 1`
[with_java9=`echo "$javac_version" | grep -E -q '^javac\ (9|1[0-9])' && echo yes`]
])
AS_IF([test "x$with_java9" = "xyes" -a "$BDJ_TYPE" != "j2me"], [java_code_version=1.6], [java_code_version=1.4])
])
AC_DEFINE_UNQUOTED([JAVA_ARCH], ["$java_arch"], ["Defines the architecture of the java vm."])
AC_DEFINE_UNQUOTED([JDK_HOME], ["$JDK_HOME"], [""])
AM_CONDITIONAL([USING_BDJAVA_BUILD_JAR], [ test $use_bdjava_jar = "yes" ])
AM_CONDITIONAL([USING_JAVAC_9], [ test x"$with_java9" = x"yes" ])
dnl BD-J type
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)
AM_CONDITIONAL([BDJ_J2SE], [ test x"$BDJ_TYPE" != x"j2me" ])
dnl bootclasspath
AC_SUBST(BDJ_BOOTCLASSPATH)
dnl udf support (using git submodule)
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
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" ])
dnl generate documentation
DX_INIT_DOXYGEN(libbluray, doc/doxygen-config, [doc/doxygen])
dnl export library version number
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)
dnl export library (.so) version
LT_VERSION_INFO="lt_current():lt_revision():lt_age()"
AC_SUBST(LT_VERSION_INFO)
dnl generate output files
AC_SUBST(BDJAVA_CFLAGS)
AC_CONFIG_FILES([Makefile src/libbluray.pc src/libbluray/bluray-version.h])
AC_OUTPUT
AC_SUBST([PACKAGES])
AC_SUBST([EXTRA_LIBS])
dnl ---------------------------------------------
dnl Some infos:
dnl ---------------------------------------------
echo " Summary:"
echo " --------"
echo " BD-J type: $BDJ_TYPE"
echo " build JAR: $use_bdjava_jar"
if test "x$use_bdjava_jar" = "xyes"; then
if test "x$javac_version" != "x"; then
echo " javac version: $javac_version"
fi
echo " Java binary version: $java_code_version"
fi
if test x"$BDJ_BOOTCLASSPATH" != x""; then
echo " BD-J bootclasspath: $BDJ_BOOTCLASSPATH"
fi
echo " Font support (freetype2): $with_freetype"
if [[ $with_freetype = "yes" ]]; then
if test "${SYS}" != "mingw32"; then
echo " Use system fonts (fontconfig): $with_fontconfig"
else
echo " Use system fonts: yes"
fi
fi
echo " Metadata support (libxml2): $with_libxml2"
echo " UDF filesystem support: $enable_udf"
echo " Build examples: $use_examples"