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

Felix Paul Kühne's avatar
Felix Paul Kühne committed
3
AC_COPYRIGHT([Copyright 2002-2014 VLC authors and VideoLAN])
4

Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
5
AC_INIT(npapi-vlc, 2.2.0)
6
VERSION_MAJOR="2"
7
AC_SUBST(VERSION_MAJOR)
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
8
VERSION_MINOR="2"
9
AC_SUBST(VERSION_MINOR)
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
10
VERSION_REVISION="0"
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)
Felix Paul Kühne's avatar
Felix Paul Kühne committed
21
COPYRIGHT_YEARS="2002-2014"
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
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)
34
AC_CONFIG_HEADERS([config.h])
35 36 37 38 39 40 41 42 43 44 45

# 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
46
AC_PROG_OBJCXX
47

48 49 50 51 52 53
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])

54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
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
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
76
      i*86*)
77 78 79 80 81 82 83 84 85 86 87 88 89
        ARCH_flag="-arch i386"
      ;;
      ppc64*)
        ARCH_flag="-arch ppc64"
      ;;
      ppc*)
        ARCH_flag="-arch ppc"
      ;;
      x86_64*)
        ARCH_flag="-arch x86_64"
      ;;
    esac

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

LT_INIT
110 111 112 113 114

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

    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++)
122 123 124
],[
    MIDL="no"
    WIDL="no"
125 126 127 128 129
])

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

130 131 132 133 134 135
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)
136
AC_PREPROC_IFELSE([AC_LANG_SOURCE([
137 138 139 140 141
#include <limits.h>
#if defined (__GLIBC__) && (__GLIBC__ == 2) \
  && (__GLIBC_MINOR__ >= 5) && (__GLIBC_MINOR__ <= 7)
# error GNU/libc with dcgettext killer bug!
#endif
142
])], [
143 144 145 146 147 148 149 150
  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.])
])

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

158 159 160 161 162 163 164

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")


165 166
dnl
dnl NPAPI headers
167
AC_ARG_ENABLE(npapi, AS_HELP_STRING([--enable-npapi], [NPAPI/Mozilla plugin [default=yes]]))
168 169 170
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])

171
AS_IF([test "x${enable_npapi}" != x"no"],[
172

173
AC_LANG_PUSH(C++)
174
AC_MSG_CHECKING([Mozilla headers])
175

176 177 178
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.
179
  for i in "${with_mozilla_pkg}" npapi-sdk seamonkey-plugin iceape-plugin xulrunner-plugin firefox-plugin iceweasel-plugin mozilla-plugin libxul; do
180 181
    if test -n "$i"; then
      echo "Trying to find $i package" >&AS_MESSAGE_LOG_FD
182 183 184
      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
185 186 187 188
      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" )
189
        AC_MSG_RESULT([yes])
190
        break
191 192
      else
        AC_MSG_RESULT([no])
193 194 195
      fi
    fi
  done
196

197
CPPFLAGS_save="${CPPFLAGS}"
198
CPPFLAGS="${CPPFLAGS} ${MOZILLA_CFLAGS} -Inpapi/npapi-sdk/"
199

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

216 217
dnl
dnl check the const-ness of GetMIMEDesc, since it changed in latest npapi headers
218
AC_MSG_CHECKING([if NP_GetMIMEDescription() returns const])
219 220 221 222 223 224 225 226 227
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
228
   #include <stdint.h>
229
   #include <npapi.h>
230 231
   #include <npfunctions.h>
  char *NP_GetMIMEDescription(void);
232 233
])],[
  AC_MSG_RESULT(no)
234
  AC_DEFINE(NPP_GET_MIME_CONST, [], [Whether NP_GetMIMEDescription returns const])
235 236
],[
  AC_MSG_RESULT(yes)
237
  AC_DEFINE(NPP_GET_MIME_CONST, [const], [Whether NP_GetMIMEDescription returns const])
238 239
])

240 241
CPPFLAGS="${CPPFLAGS_save}"

242 243
AC_LANG_POP(C++)

244 245 246 247 248 249 250 251 252
])
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" ], [
253
  PKG_CHECK_MODULES(XCB, [xcb x11-xcb],[xcb_found=yes], [
254 255
     AC_MSG_ERROR([Please install the libxcb and x11-xcb development files])
  ])
256 257
  AS_IF([ test "x$with_gtk" != "xno" ],
    [
258
       PKG_CHECK_MODULES(GTK, [gtk+-2.0], [gtk_found=yes])
259
    ])
260
])
261 262 263
AS_IF([ test "x$gtk_found" = "xyes" ],
    AC_DEFINE([USE_GTK], [1], [Define to 1 if using GTK+]))
AM_CONDITIONAL(WITH_GTK, [ test "x$gtk_found" = "xyes" ])
264
AM_CONDITIONAL(HAVE_XCB, [ test "x$xcb_found" = "xyes" ])
265

266 267
dnl
dnl final flags for ActiveX
268 269 270 271
AM_COND_IF([HAVE_WIN32], [
  ACTIVEX_CPPFLAGS="${CPPFLAGS} -DUNICODE -D_UNICODE -D_MIDL_USE_GUIDDEF_"
  ACTIVEX_CXXFLAGS="${CXXFLAGS} -fno-exceptions"

272
  AC_ARG_VAR([ACTIVEX_LIBS], [linker flags for ActiveX])
273 274 275
  ACTIVEX_LIBS="${ACTIVEX_LIBS} -lole32 -loleaut32 -luuid -lshlwapi -lgdi32"
])

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

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