configure.ac 8.54 KB
Newer Older
1
dnl Autoconf settings for npapi-vlc
2

3
AC_COPYRIGHT([Copyright 2002-2013 VLC authors and VideoLAN])
4

5
AC_INIT(npapi-vlc, 2.0.6)
6
VERSION_MAJOR="2"
7
AC_SUBST(VERSION_MAJOR)
8
VERSION_MINOR="0"
9
AC_SUBST(VERSION_MINOR)
10
VERSION_REVISION="6"
11
AC_SUBST(VERSION_REVISION)
12
VERSION_EXTRA=""
13
AC_SUBST(VERSION_EXTRA)
14 15 16 17
dnl Win32 need s a numerical version_extra.
case $( echo ${VERSION_EXTRA}|wc -m ) in
       "1") VERSION_EXTRA_RC="0";;
       "2") VERSION_EXTRA_RC=$( echo ${VERSION_EXTRA}|tr "abcdefghi" "123456789") ;;
18
       *) if test "${VERSION_EXTRA}" = "-git"; then VERSION_EXTRA_RC="666"; else VERSION_EXTRA_RC="99"; fi
19 20
esac
AC_SUBST(VERSION_EXTRA_RC)
21
COPYRIGHT_YEARS="2002-2013"
22
AC_SUBST(COPYRIGHT_YEARS)
23
COPYRIGHT_MESSAGE="Copyright © ${COPYRIGHT_YEARS} VLC authors and VideoLAN"
24
AC_SUBST(COPYRIGHT_MESSAGE)
25

Cheng Sun's avatar
Cheng Sun committed
26
AC_CONFIG_SRCDIR(npapi/vlcshell.cpp)
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
AC_CONFIG_AUX_DIR(autotools)
AC_CONFIG_MACRO_DIR(m4)
AC_CANONICAL_BUILD
AC_CANONICAL_HOST
AC_PRESERVE_HELP_ORDER

AM_INIT_AUTOMAKE(tar-ustar color-tests)
AM_CONFIG_HEADER(config.h)

# Disable with "./configure --disable-silent-rules" or "make V=1"
AM_SILENT_RULES([yes])

dnl
dnl Check for tools
dnl
AC_PROG_CC_C99
AC_USE_SYSTEM_EXTENSIONS
AC_DEFINE([_FORTIFY_SOURCE], 2, [Define to '2' to get glibc warnings.])
AC_PROG_CXX

47 48 49 50 51 52
dnl override platform specific check for dependent libraries
dnl otherwise libtool linking of shared libraries will
dnl fail on anything other than pass_all.
AC_CACHE_VAL(lt_cv_deplibs_check_method,
    [lt_cv_deplibs_check_method=pass_all])

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
AC_DISABLE_STATIC
AC_LIBTOOL_DLOPEN
AC_LIBTOOL_WIN32_DLL
AC_PROG_LIBTOOL

AC_PROG_INSTALL
PKG_PROG_PKG_CONFIG
AC_CHECK_TOOL(DLLTOOL, dlltool, :)

dnl Check for compiler properties
AC_C_CONST

dnl
dnl  Check the operating system
dnl
case "${host_os}" in
  darwin*)
    SYS=darwin

    dnl Force gcc "-arch" flag
    ARCH_flag=""
    case "${host}" in
      i386*)
        ARCH_flag="-arch i386"
      ;;
      ppc64*)
        ARCH_flag="-arch ppc64"
      ;;
      ppc*)
        ARCH_flag="-arch ppc"
      ;;
      x86_64*)
        ARCH_flag="-arch x86_64"
      ;;
    esac

89
    CFLAGS="${CFLAGS} -fobjc-exceptions -D_INTL_REDIRECT_MACROS ${ARCH_flag}"
Rafaël Carré's avatar
Rafaël Carré committed
90
    CXXFLAGS="${CXXFLAGS} -D_INTL_REDIRECT_MACROS ${ARCH_flag}"
91
    OBJCXXFLAGS="${OBJCXXFLAGS} -fobjc-exceptions -D_INTL_REDIRECT_MACROS ${ARCH_flag}"
Rafaël Carré's avatar
Rafaël Carré committed
92 93
    CPPFLAGS="${CPPFLAGS} ${ARCH_flag}"
    LDFLAGS="${LDFLAGS} -Wl,-headerpad_max_install_names ${ARCH_flag}"
94 95 96 97 98
    ;;
  *mingw32*)
    SYS=mingw32
    AC_CHECK_TOOL(WINDRES, windres, :)
    AC_DEFINE([_WIN32_WINNT], 0x0501, [Define to '0x0501' for Windows XP APIs.])
99
    AC_DEFINE([_WIN32_IE], 0x0600, [Define to '0x0600' for IE6.0 APIs.])
Rafaël Carré's avatar
Rafaël Carré committed
100
    AC_DEFINE([_WIN32], 1, [Define to 1 if targetting Windows.])
101 102 103 104
    ;;
esac
AM_CONDITIONAL(HAVE_DARWIN, test "${SYS}" = "darwin")
AM_CONDITIONAL(HAVE_WIN32, test "${SYS}" = "mingw32")
105 106 107
AM_COND_IF([HAVE_DARWIN], [AC_PROG_OBJCXX])

LT_INIT
108 109 110 111 112

dnl
dnl Check widl/midl tools for win32
AS_IF([test "${SYS}" = "mingw32"],[
    AC_CHECK_PROGS(MIDL, [midl], no)
113
    AC_CHECK_PROGS(WIDL, [widl], no)
114 115 116 117 118 119

    AC_LANG_PUSH(C++)
    AC_CHECK_HEADER(ole2.h,,[AC_MSG_ERROR([required OLE header ole2.h is missing from your system])])
    AC_CHECK_HEADER(olectl.h,,[AC_MSG_ERROR([required OLE header olectl.h is missing from your system])])
    AC_CHECK_HEADERS(objsafe.h,,,[#include <ole2.h>])
    AC_LANG_POP(C++)
120 121 122
],[
    MIDL="no"
    WIDL="no"
123 124 125 126 127
])

AM_CONDITIONAL(HAS_MIDL_COMPILER, test "${MIDL}" != "no")
AM_CONDITIONAL(HAS_WIDL_COMPILER, test "${WIDL}" != "no")

128 129 130 131 132 133
dnl
dnl Buggy glibc prevention. Purposedly not cached.
dnl See sourceware.org bugs 5058 and 5443.
dnl Ubuntu alone has 20 bug numbers for this...
dnl
AC_MSG_CHECKING(for buggy GNU/libc versions)
134
AC_PREPROC_IFELSE([AC_LANG_SOURCE([
135 136 137 138 139
#include <limits.h>
#if defined (__GLIBC__) && (__GLIBC__ == 2) \
  && (__GLIBC_MINOR__ >= 5) && (__GLIBC_MINOR__ <= 7)
# error GNU/libc with dcgettext killer bug!
#endif
140
])], [
141 142 143 144 145 146 147 148
  AC_MSG_RESULT([not present])
], [
  AC_MSG_RESULT([found])
  AC_MSG_ERROR([Buggy GNU/libc (version 2.5 - 2.7) present. VLC would crash; there is no viable
work-around for this. Check with your distribution vendor on how to update the
glibc run-time.])
])

149 150
dnl
dnl libraries checks
151
AC_PATH_XTRA
152 153 154
PKG_CHECK_MODULES([LIBVLC], [libvlc >= 1.1.0], [
    LIBVLC_PREFIX=`pkg-config --variable=prefix libvlc`
    AC_SUBST(LIBVLC_PREFIX)])
155

156 157 158 159 160 161 162

dnl
dnl ActiveX
AC_ARG_ENABLE(activex, AS_HELP_STRING([--enable-activex], [ActiveX plugin [default=yes (on Windows)]]))
AM_CONDITIONAL(BUILD_ACTIVEX, test "${SYS}" = "mingw32" -a "${enable_activex}" != "no")


163 164
dnl
dnl NPAPI headers
165
AC_ARG_ENABLE(npapi, AS_HELP_STRING([--enable-npapi], [NPAPI/Mozilla plugin [default=yes]]))
166 167 168
AC_ARG_VAR([MOZILLA_CFLAGS], [C compiler flags for Mozilla, overriding pkg-config])
AC_ARG_VAR([MOZILLA_LIBS], [linker flags for Mozilla, overriding pkg-config])

169
AS_IF([test "x${enable_npapi}" != x"no"],[
170

171
AC_LANG_PUSH(C++)
172
AC_MSG_CHECKING([Mozilla headers])
173

174 175 176
dnl pkg-config
dnl As we want to do a loop due to the number of name possible for the .pc
dnl we can't use the pkg-config macros.
177
  for i in "${with_mozilla_pkg}" npapi-sdk seamonkey-plugin iceape-plugin xulrunner-plugin firefox-plugin iceweasel-plugin mozilla-plugin libxul; do
178 179
    if test -n "$i"; then
      echo "Trying to find $i package" >&AS_MESSAGE_LOG_FD
180 181 182
      AS_IF([test $i = npapi-sdk], [moz_ver=0.27], [moz_ver=1.9.2])
      AC_MSG_CHECKING([for $i >= $moz_ver])
      if $PKG_CONFIG --exists --print-errors "$i >= $moz_ver" 2>&AS_MESSAGE_LOG_FD
183 184 185 186
      then
        echo "Using $i pkg-config package." >&AS_MESSAGE_LOG_FD
        MOZILLA_CFLAGS=$(eval $PKG_CONFIG --cflags "$i" )
        MOZILLA_LIBS=$(eval $PKG_CONFIG --libs "$i" )
187
        AC_MSG_RESULT([yes])
188
        break
189 190
      else
        AC_MSG_RESULT([no])
191 192 193
      fi
    fi
  done
194

195
CPPFLAGS_save="${CPPFLAGS}"
196
CPPFLAGS="${CPPFLAGS} ${MOZILLA_CFLAGS} -Inpapi-sdk/"
197

198
AC_CHECK_HEADERS(npapi.h npruntime.h, [
199
    dnl if found
200
    have_headers="true"
201 202
  ],[
    dnl if not found
203 204
    AC_MSG_WARN([Please install the Mozilla development tools, required headers were not found.])
    have_headers="false"
205
  ], [
206 207 208 209
    #include <stdint.h>
    #if HAVE_NPAPI_H
     #include <npapi.h>
    #endif
210 211
  ]
)
212
AM_CONDITIONAL(FETCH_NPAPI, [ test "${have_headers}" != "true" ])
213

214 215
dnl
dnl check the const-ness of GetMIMEDesc, since it changed in latest npapi headers
216
AC_MSG_CHECKING([if NP_GetMIMEDescription() returns const])
217 218 219 220 221 222 223 224 225
AC_COMPILE_IFELSE([AC_LANG_SOURCE([
   #ifdef WIN32
   # define XP_WIN 1
   #else
   # ifdef __APPLE__
   #  define XP_MACOSX 1
   # endif
   # define XP_UNIX 1
   #endif
226
   #include <stdint.h>
227
   #include <npapi.h>
228 229
   #include <npfunctions.h>
  char *NP_GetMIMEDescription(void);
230 231
])],[
  AC_MSG_RESULT(no)
232
  AC_DEFINE(NPP_GET_MIME_CONST, [], [Whether NP_GetMIMEDescription returns const])
233 234
],[
  AC_MSG_RESULT(yes)
235
  AC_DEFINE(NPP_GET_MIME_CONST, [const], [Whether NP_GetMIMEDescription returns const])
236 237
])

238 239
CPPFLAGS="${CPPFLAGS_save}"

240 241
AC_LANG_POP(C++)

242 243 244 245 246 247 248 249 250
])
dnl end of NPAPI
AM_CONDITIONAL(BUILD_NPAPI, test "${enable_npapi}" != "no")

dnl
dnl GTK+ for linux toolbar
AC_ARG_WITH([gtk], AS_HELP_STRING([--with-gtk], [Build the GTK+ toolbars in NPAPI plugin [default=auto]]),, [with_gtk=yes])
gtk_found=no
AS_IF([ test "${SYS}" != "mingw32" -a "${SYS}" != "darwin" ], [
251
  PKG_CHECK_MODULES(XCB, [xcb],[xcb_found=yes])
252 253
  AS_IF([ test "x$with_gtk" != "xno" ],
    [
254
       PKG_CHECK_MODULES(GTK, [gtk+-2.0], [gtk_found=yes])
255
    ])
256 257
  AS_IF([ test "x$gtk_found" == "xno" ],
    [
Ludovic Fauvet's avatar
Ludovic Fauvet committed
258
      AS_IF([ test "x$xcb_found" == "xno"], [
259
        AC_MSG_ERROR([Please install the libxcb development files, or re-run configure with --with-gtk])
260
      ])
261
    ])
262
])
263 264
AS_IF([ test "x$gtk_found" = "xyes" ],
    AC_DEFINE([USE_GTK], [1], [Define to 1 if using GTK+]))
Ludovic Fauvet's avatar
Ludovic Fauvet committed
265 266
AS_IF([ test "x$xcb_found" = "xyes" ],
    AC_DEFINE([USE_XCB], [1], [Define to 1 if using XCB]))
267
AM_CONDITIONAL(WITH_GTK, [ test "x$gtk_found" = "xyes" ])
Ludovic Fauvet's avatar
Ludovic Fauvet committed
268
AM_CONDITIONAL(HAVE_XCB, [ test "x$xcb_found" = "xyes" ])
269

270 271
dnl
dnl final flags for ActiveX
272 273 274 275
AM_COND_IF([HAVE_WIN32], [
  ACTIVEX_CPPFLAGS="${CPPFLAGS} -DUNICODE -D_UNICODE -D_MIDL_USE_GUIDDEF_"
  ACTIVEX_CXXFLAGS="${CXXFLAGS} -fno-exceptions"

276
  AC_ARG_VAR([ACTIVEX_LIBS], [linker flags for ActiveX])
277 278 279
  ACTIVEX_LIBS="${ACTIVEX_LIBS} -lole32 -loleaut32 -luuid -lshlwapi -lgdi32"
])

280 281 282
AC_CONFIG_FILES([
  Makefile
  share/Makefile
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
283
  npapi/Makefile
284
  activex/Makefile
285 286 287
  npapi/package/install.js
  npapi/package/install.rdf
  npapi/package/manifest.json
288
])
289

290 291
AM_COND_IF([HAVE_WIN32], [
  AC_CONFIG_FILES([
292
    npapi/package/npvlc_rc.rc
293 294
    activex/axvlc.inf
    activex/axvlc_rc.rc
295 296 297 298
  ])
])
AM_COND_IF([HAVE_DARWIN], [
  AC_CONFIG_FILES([
299
    npapi/package/vlc.r
300 301
    extras/macosx/Info.plist
    extras/macosx/InstallerInfo.plist
302 303 304
  ])
])
AC_OUTPUT