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

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

5 6
AC_INIT(npapi-vlc, 3.0.0)
VERSION_MAJOR="3"
7
AC_SUBST(VERSION_MAJOR)
8
VERSION_MINOR="3"
9
AC_SUBST(VERSION_MINOR)
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)
21
COPYRIGHT_YEARS="2002-2018"
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
AX_CXX_COMPILE_STDCXX_11([noext], [mandatory])
48

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

55 56 57 58 59 60 61 62 63 64 65 66
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

67
WIDLFLAGS=""
68 69 70 71 72 73 74 75 76 77
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
78
      i*86*)
79 80 81 82 83 84 85 86 87 88 89 90 91
        ARCH_flag="-arch i386"
      ;;
      ppc64*)
        ARCH_flag="-arch ppc64"
      ;;
      ppc*)
        ARCH_flag="-arch ppc"
      ;;
      x86_64*)
        ARCH_flag="-arch x86_64"
      ;;
    esac

92
    CFLAGS="${CFLAGS} -fobjc-exceptions -D_INTL_REDIRECT_MACROS ${ARCH_flag}"
93 94
    CXXFLAGS="${CXXFLAGS} -D_INTL_REDIRECT_MACROS ${ARCH_flag} -stdlib=libc++"
    OBJCXXFLAGS="${OBJCXXFLAGS} -fobjc-exceptions -D_INTL_REDIRECT_MACROS ${ARCH_flag} -stdlib=libc++ -std=c++11"
Rafaël Carré's avatar
Rafaël Carré committed
95 96
    CPPFLAGS="${CPPFLAGS} ${ARCH_flag}"
    LDFLAGS="${LDFLAGS} -Wl,-headerpad_max_install_names ${ARCH_flag}"
97 98 99 100
    ;;
  *mingw32*)
    SYS=mingw32
    AC_CHECK_TOOL(WINDRES, windres, :)
101 102 103 104 105 106 107
    AC_TRY_COMPILE([#include <windows.h>], [
      #if _WIN32_WINNT >= 0x0501
      #error new enough by default
      #endif
    ], [
      AC_DEFINE([_WIN32_WINNT], 0x0501, [Define to '0x0501' for Windows XP APIs.])
    ])
108
    AC_DEFINE([_WIN32_IE], 0x0600, [Define to '0x0600' for IE6.0 APIs.])
Rafaël Carré's avatar
Rafaël Carré committed
109
    AC_DEFINE([_WIN32], 1, [Define to 1 if targetting Windows.])
110 111
    CC="$CC -static-libgcc"
    CXX="$CXX -static-libgcc -static-libstdc++"
112 113 114 115
    ;;
esac
AM_CONDITIONAL(HAVE_DARWIN, test "${SYS}" = "darwin")
AM_CONDITIONAL(HAVE_WIN32, test "${SYS}" = "mingw32")
116 117

LT_INIT
118 119 120 121 122

dnl
dnl Check widl/midl tools for win32
AS_IF([test "${SYS}" = "mingw32"],[
    AC_CHECK_PROGS(MIDL, [midl], no)
123
    AC_CHECK_TOOL(WIDL, [widl], no)
124

125 126 127 128 129 130 131 132
    case "${host}" in
        amd64*|x86_64*)
            WIDLFLAGS=" -m64"
        ;;
        *)
            WIDLFLAGS=" -m32"
        ;;
    esac
133 134 135 136 137
    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++)
138 139 140
],[
    MIDL="no"
    WIDL="no"
141 142
])

143
AC_SUBST(WIDLFLAGS)
144 145 146
AM_CONDITIONAL(HAS_MIDL_COMPILER, test "${MIDL}" != "no")
AM_CONDITIONAL(HAS_WIDL_COMPILER, test "${WIDL}" != "no")

147 148 149 150 151 152
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)
153
AC_PREPROC_IFELSE([AC_LANG_SOURCE([
154 155 156 157 158
#include <limits.h>
#if defined (__GLIBC__) && (__GLIBC__ == 2) \
  && (__GLIBC_MINOR__ >= 5) && (__GLIBC_MINOR__ <= 7)
# error GNU/libc with dcgettext killer bug!
#endif
159
])], [
160 161 162 163 164 165 166 167
  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.])
])

168 169
dnl
dnl libraries checks
170
AC_PATH_XTRA
171
PKG_CHECK_MODULES([LIBVLC], [libvlc >= 2.0.0], [
172 173
    LIBVLC_PREFIX=`pkg-config --variable=prefix libvlc`
    AC_SUBST(LIBVLC_PREFIX)])
174

175 176 177 178 179 180 181

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


182 183
dnl
dnl NPAPI headers
184
AC_ARG_ENABLE(npapi, AS_HELP_STRING([--enable-npapi], [NPAPI/Mozilla plugin [default=yes]]))
185 186 187
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])

188
AS_IF([test "x${enable_npapi}" != x"no"],[
189

190
AC_LANG_PUSH(C++)
191
AC_MSG_CHECKING([Mozilla headers])
192

193 194 195
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.
196
  for i in "${with_mozilla_pkg}" npapi-sdk seamonkey-plugin iceape-plugin xulrunner-plugin firefox-plugin iceweasel-plugin mozilla-plugin libxul; do
197 198
    if test -n "$i"; then
      echo "Trying to find $i package" >&AS_MESSAGE_LOG_FD
199 200 201
      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
202 203 204 205
      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" )
206
        AC_MSG_RESULT([yes])
207
        break
208 209
      else
        AC_MSG_RESULT([no])
210 211 212
      fi
    fi
  done
213

214
CPPFLAGS_save="${CPPFLAGS}"
215
CPPFLAGS="${CPPFLAGS} ${MOZILLA_CFLAGS} -Inpapi/npapi-sdk/"
216

217
AC_CHECK_HEADERS(npapi.h npruntime.h, [
218
    dnl if found
219
    have_headers="true"
220 221
  ],[
    dnl if not found
222 223
    AC_MSG_WARN([Please install the Mozilla development tools, required headers were not found.])
    have_headers="false"
224
  ], [
225 226 227 228
    #include <stdint.h>
    #if HAVE_NPAPI_H
     #include <npapi.h>
    #endif
229 230
  ]
)
231
AM_CONDITIONAL(FETCH_NPAPI, [ test "${have_headers}" != "true" ])
232

233 234
dnl
dnl check the const-ness of GetMIMEDesc, since it changed in latest npapi headers
235
AC_MSG_CHECKING([if NP_GetMIMEDescription() returns const])
236
AC_COMPILE_IFELSE([AC_LANG_SOURCE([
237
   #ifdef _WIN32
238 239 240 241 242 243 244
   # define XP_WIN 1
   #else
   # ifdef __APPLE__
   #  define XP_MACOSX 1
   # endif
   # define XP_UNIX 1
   #endif
245
   #include <stdint.h>
246
   #include <npapi.h>
247 248
   #include <npfunctions.h>
  char *NP_GetMIMEDescription(void);
249 250
])],[
  AC_MSG_RESULT(no)
251
  AC_DEFINE(NPP_GET_MIME_CONST, [], [Whether NP_GetMIMEDescription returns const])
252 253
],[
  AC_MSG_RESULT(yes)
254
  AC_DEFINE(NPP_GET_MIME_CONST, [const], [Whether NP_GetMIMEDescription returns const])
255 256
])

257 258
CPPFLAGS="${CPPFLAGS_save}"

259 260
AC_LANG_POP(C++)

261 262 263 264 265 266 267 268 269
])
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" ], [
270
  PKG_CHECK_MODULES(XCB, [xcb x11-xcb],[xcb_found=yes], [
271 272
     AC_MSG_ERROR([Please install the libxcb and x11-xcb development files])
  ])
273 274
  AS_IF([ test "x$with_gtk" != "xno" ],
    [
275
       PKG_CHECK_MODULES(GTK, [gtk+-2.0], [gtk_found=yes])
276
    ])
277
])
278 279 280
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" ])
281
AM_CONDITIONAL(HAVE_XCB, [ test "x$xcb_found" = "xyes" ])
282

283 284
dnl
dnl final flags for ActiveX
285 286 287 288
AM_COND_IF([HAVE_WIN32], [
  ACTIVEX_CPPFLAGS="${CPPFLAGS} -DUNICODE -D_UNICODE -D_MIDL_USE_GUIDDEF_"
  ACTIVEX_CXXFLAGS="${CXXFLAGS} -fno-exceptions"

289
  AC_ARG_VAR([ACTIVEX_LIBS], [linker flags for ActiveX])
290 291 292
  ACTIVEX_LIBS="${ACTIVEX_LIBS} -lole32 -loleaut32 -luuid -lshlwapi -lgdi32"
])

293 294 295
AC_CONFIG_FILES([
  Makefile
  share/Makefile
296
  common/Makefile
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
297
  npapi/Makefile
298
  activex/Makefile
299 300 301
  npapi/package/install.js
  npapi/package/install.rdf
  npapi/package/manifest.json
302
])
303

304 305
AM_COND_IF([HAVE_WIN32], [
  AC_CONFIG_FILES([
306
    npapi/package/npvlc_rc.rc
307 308
    activex/axvlc.inf
    activex/axvlc_rc.rc
309 310 311 312
  ])
])
AM_COND_IF([HAVE_DARWIN], [
  AC_CONFIG_FILES([
313
    npapi/package/vlc.r
314
    extras/macosx/Info.plist
315 316 317
  ])
])
AC_OUTPUT