Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
medialibrary
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
57
Issues
57
List
Boards
Labels
Service Desk
Milestones
Merge Requests
7
Merge Requests
7
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
VideoLAN
medialibrary
Commits
165c20b6
Commit
165c20b6
authored
Apr 12, 2016
by
Hugo Beauzée-Luyssen
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Start transitionning to autotools
parent
ae293d49
Changes
13
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
1096 additions
and
18 deletions
+1096
-18
.gitignore
.gitignore
+11
-0
.gitmodules
.gitmodules
+3
-0
Makefile.am
Makefile.am
+164
-0
bootstrap
bootstrap
+6
-0
configure.ac
configure.ac
+235
-0
googletest
googletest
+1
-0
m4/.gitignore
m4/.gitignore
+5
-0
m4/ax_pthread.m4
m4/ax_pthread.m4
+485
-0
m4/stdcxx_11.m4
m4/stdcxx_11.m4
+166
-0
src/metadata_services/vlc/VLCThumbnailer.cpp
src/metadata_services/vlc/VLCThumbnailer.cpp
+9
-9
src/metadata_services/vlc/VLCThumbnailer.h
src/metadata_services/vlc/VLCThumbnailer.h
+8
-4
test/samples/Tester.cpp
test/samples/Tester.cpp
+1
-0
test/samples/main.cpp
test/samples/main.cpp
+2
-5
No files found.
.gitignore
View file @
165c20b6
...
...
@@ -3,3 +3,14 @@
#*#
.*.swp
compile
config.status
config.h*
config.log
configure
Makefile
Makefile.in
aclocal.m4
*.cache
build*
.gitmodules
View file @
165c20b6
[submodule "test/samples/samples"]
path = test/samples/samples
url = git@code.videolan.org:videolan/medialibrary-test-samples.git
[submodule "googletest"]
path = googletest
url = https://github.com/google/googletest.git
Makefile.am
0 → 100644
View file @
165c20b6
ACLOCAL_AMFLAGS
=
-I
m4
AM_CPPFLAGS
=
-Wall
-Wsign-compare
-Wextra
-Wstrict-aliasing
-Wstrict-overflow
\
-Wformat
=
2
-Wno-unused-parameter
-Wcast-align
-Wpointer-arith
\
-Wwrite-strings
-Wlogical-op
\
-pipe
MEDIALIB_CPPFLAGS
=
$(AM_CPPFLAGS)
-I
$(top_srcdir)
/include
-I
$(top_srcdir)
/src
libmedialibrary_la_SOURCES
=
\
src/Album.cpp
\
src/AlbumTrack.cpp
\
src/Artist.cpp
\
src/AudioTrack.cpp
\
src/Device.cpp
\
src/Factory.cpp
\
src/File.cpp
\
src/Folder.cpp
\
src/Genre.cpp
\
src/History.cpp
\
src/Label.cpp
\
src/Media.cpp
\
src/MediaLibrary.cpp
\
src/Movie.cpp
\
src/Playlist.cpp
\
src/Settings.cpp
\
src/Show.cpp
\
src/ShowEpisode.cpp
\
src/VideoTrack.cpp
\
src/database/SqliteConnection.cpp
\
src/database/SqliteTools.cpp
\
src/database/SqliteTransaction.cpp
\
src/discoverer/DiscovererWorker.cpp
\
src/discoverer/FsDiscoverer.cpp
\
src/factory/FileSystem.cpp
\
src/filesystem/common/CommonFile.cpp
\
src/logging/IostreamLogger.cpp
\
src/logging/Logger.cpp
\
src/metadata_services/MetadataParser.cpp
\
src/metadata_services/vlc/VLCMetadataService.cpp
\
src/metadata_services/vlc/VLCThumbnailer.cpp
\
src/parser/Parser.cpp
\
src/parser/ParserService.cpp
\
src/utils/Filename.cpp
\
src/utils/ModificationsNotifier.cpp
\
src/utils/VLCInstance.cpp
\
$(NULL)
if
HAVE_WIN32
libmedialibrary_la_SOURCES
+=
\
src/filesystem/win32/Directory.cpp
\
src/filesystem/win32/File.cpp
else
libmedialibrary_la_SOURCES
+=
\
src/filesystem/unix/Device.cpp
\
src/filesystem/unix/Directory.cpp
\
src/filesystem/unix/File.cpp
endif
libmedialibrary_la_LDFLAGS
=
-no-undefined
libmedialibrary_la_CPPFLAGS
=
\
$(MEDIALIB_CPPFLAGS)
\
$(SQLITE_CFLAGS)
\
$(VLC_CFLAGS)
\
$(VLCPP_CFLAGS)
\
$(NULL)
libmedialibrary_la_LIBADD
=
\
$(SQLITE_LIBS)
\
$(VLC_LIBS)
\
$(LIBJPEG_LIBS)
\
$(NULL)
lib_LTLIBRARIES
=
libmedialibrary.la
if
HAVE_TESTS
check_PROGRAMS
=
unittest samples
lib_LTLIBRARIES
+=
libgtest.la libgtestmain.la
libgtest_la_SOURCES
=
\
googletest/src/gtest-all.cc
libgtestmain_la_SOURCES
=
\
googletest/src/gtest_main.cc
libgtest_la_CPPFLAGS
=
\
-I
$(top_srcdir)
/googletest
if
HAVE_PTHREAD
libgtest_la_CPPFLAGS
+=
-DGTEST_HAS_PTHREAD
=
1
libgtest_la_CXXFLAGS
=
$(PTHREAD_CFLAGS)
libgtest_la_LIDADD
=
$(PTHREAD_LIBS)
else
libgtest_la_CPPFLAGS
+=
-DGTEST_HAS_PTHREAD
=
0
endif
libgtestmain_la_CPPFLAGS
=
$(libgtest_la_CPPFLAGS)
libgtestmain_la_CXXFLAGS
=
$(libgtest_la_CXXFLAGS)
libgtestmain_la_LIBADD
=
$(libgtest_la_LIBADD)
unittest_SOURCES
=
\
test
/common/MediaLibraryTester.cpp
\
test
/mocks/FileSystem.cpp
\
test
/mocks/filesystem/MockDevice.cpp
\
test
/mocks/filesystem/MockDirectory.cpp
\
test
/mocks/filesystem/MockFile.cpp
\
test
/unittest/AlbumTests.cpp
\
test
/unittest/AlbumTrackTests.cpp
\
test
/unittest/ArtistTests.cpp
\
test
/unittest/AudioTrackTests.cpp
\
test
/unittest/DeviceTests.cpp
\
test
/unittest/FileTests.cpp
\
test
/unittest/FolderTests.cpp
\
test
/unittest/FsUtilsTests.cpp
\
test
/unittest/GenreTests.cpp
\
test
/unittest/HistoryTests.cpp
\
test
/unittest/LabelTests.cpp
\
test
/unittest/MediaTests.cpp
\
test
/unittest/MovieTests.cpp
\
test
/unittest/PlaylistTests.cpp
\
test
/unittest/RemovalNotifierTests.cpp
\
test
/unittest/ShowTests.cpp
\
test
/unittest/Tests.cpp
\
test
/unittest/VideoTrackTests.cpp
\
$(NULL)
unittest_CXXFLAGS
=
\
$(MEDIALIB_CPPFLAGS)
\
-I
$(top_srcdir)
/test
\
$(NULL)
unittest_LDADD
=
\
libmedialibrary.la
\
libgtest.la
\
libgtestmain.la
\
$(PTHREAD_LIBS)
\
$(SQLITE_LIBS)
\
$(NULL)
samples_SOURCES
=
\
test
/common/MediaLibraryTester.cpp
\
test
/samples/main.cpp
\
test
/samples/Tester.cpp
\
$(NULL)
samples_CXXFLAGS
=
\
$(MEDIALIB_CPPFLAGS)
\
-DSRC_DIR
=
\"
$(top_srcdir)
\"
\
-I
$(top_srcdir)
/test
\
$(NULL)
samples_LDADD
=
\
libmedialibrary.la
\
libgtest.la
\
libgtestmain.la
\
$(PTHREAD_LIBS)
\
$(SQLITE_LIBS)
\
$(NULL)
endif
bootstrap
0 → 100755
View file @
165c20b6
#! /bin/sh
set
-x
cd
"
$(
dirname
"
$0
"
)
"
autoreconf
-fis
configure.ac
0 → 100644
View file @
165c20b6
m4_define([MEDIALIB_MAJOR], [0])
m4_define([MEDIALIB_MINOR], [2])
m4_define([MEDIALIB_MICRO], [0])
AC_COPYRIGHT([Copyright 2014-2016 Hugo Beauzée-Luyssen - VideoLabs])
AC_INIT([medialibrary], [MEDIALIB_MAJOR.MEDIALIB_MINOR.MEDIALIB_MICRO])
AC_CONFIG_HEADERS([config.h])
AM_INIT_AUTOMAKE([foreign subdir-objects])
m4_ifdef([AM_SILENT_RULES], [
AM_SILENT_RULES([yes])
])
AC_CANONICAL_HOST
MEDIALIBRARY_MAJOR=MEDIALIB_MAJOR
MEDIALIBRARY_MINOR=MEDIALIB_MINOR
MEDIALIBRARY_MICRO=MEDIALIB_MICRO
AC_SUBST(MEDIALIBRARY_MAJOR)
AC_SUBST(MEDIALIBRARY_MINOR)
AC_SUBST(MEDIALIBRARY_MICRO)
LT_INIT([win32-dll, shared])
AC_PROG_CXX
AX_CXX_COMPILE_STDCXX_11([noext])
AC_CONFIG_MACRO_DIR([m4])
AC_HEADER_ASSERT
dnl
dnl Check the operating system
dnl
HAVE_WIN64="0"
HAVE_IOS="0"
HAVE_OSX="0"
HAVE_TVOS="0"
case "${host_os}" in
"")
SYS=unknown
;;
linux*)
SYS=linux
;;
bsdi*)
SYS=bsdi
;;
freebsd*)
SYS=freebsd
CPPFLAGS="${CPPFLAGS} -I/usr/local/include"
LDFLAGS="${LDFLAGS} -L/usr/local/lib"
;;
openbsd*)
SYS=openbsd
CPPFLAGS="${CPPFLAGS} -I/usr/local/include -I/usr/X11R6/include"
LDFLAGS="${LDFLAGS} -L/usr/local/lib -L/usr/X11R6/lib/"
;;
netbsd*)
SYS=netbsd
;;
dragonfly*)
SYS=dragonfly
;;
darwin*)
dnl Force gcc "-arch" flag
ARCH_flag=""
case "${host}" in
i?86*)
ARCH_flag="-arch i386"
;;
ppc64*)
ARCH_flag="-arch ppc64"
;;
ppc*)
ARCH_flag="-arch ppc"
;;
x86_64*)
ARCH_flag="-arch x86_64"
;;
arm*)
ac_cv_c_bigendian="no"
ac_cv_c_attribute_packed="no"
;;
esac
SYS=darwin
CFLAGS="${CFLAGS} -D_INTL_REDIRECT_MACROS -std=gnu11 ${ARCH_flag}"
CXX="${CXX} -stdlib=libc++ -std=c++11"
CXXFLAGS="${CXXFLAGS} -D_INTL_REDIRECT_MACROS ${ARCH_flag}"
CPPFLAGS="${CPPFLAGS} ${ARCH_flag}"
OBJCFLAGS="${OBJCFLAGS} -D_INTL_REDIRECT_MACROS -std=gnu11 ${ARCH_flag}"
LDFLAGS="${LDFLAGS} -Wl,-headerpad_max_install_names ${ARCH_flag}"
AC_EGREP_CPP(yes,
[#import <TargetConditionals.h>
#if TARGET_OS_IPHONE
yes
#endif],
[HAVE_IOS="1"],
[HAVE_OSX="1"])
AC_EGREP_CPP(yes,
[#import <TargetConditionals.h>
#if TARGET_OS_TV
yes
#endif],
[HAVE_TVOS="1"
HAVE_IOS="0"
HAVE_OSX="0"
],)
dnl Allow binaries created on Lion to run on earlier releases
AC_EGREP_CPP(yes,
[#import <Cocoa/Cocoa.h>
#ifdef MAC_OS_X_VERSION_10_7
yes
#endif],
[AC_MSG_RESULT([yes])
AC_LIBOBJ([getdelim])
AC_LIBOBJ([strndup])
AC_LIBOBJ([strnlen])],)
dnl
dnl Handle Mac OS X SDK flags
dnl
AC_ARG_WITH(macosx-sdk,
[AS_HELP_STRING([--with-macosx-sdk=DIR],
[compile using the SDK in DIR])])
if test "${with_macosx_sdk}" != "" ; then
test ! -d "${with_macosx_sdk}" && AC_MSG_ERROR([SDK "${with_macosx_sdk}" not found])
CPP="${CPP} -isysroot ${with_macosx_sdk}"
CC="${CC} -isysroot ${with_macosx_sdk}"
CXX="${CXX} -isysroot ${with_macosx_sdk}"
OBJC="${OBJC} -isysroot ${with_macosx_sdk}"
LD="${LD} -syslibroot ${with_macosx_sdk}"
fi
AC_ARG_WITH(macosx-version-min,
[AS_HELP_STRING([--with-macosx-version-min=VERSION],
[compile for Mac OS X VERSION and above])])
if test "${with_macosx_version_min}" != "" ; then
CPP="${CPP} -mmacosx-version-min=${with_macosx_version_min}"
CC="${CC} -mmacosx-version-min=${with_macosx_version_min}"
CXX="${CXX} -mmacosx-version-min=${with_macosx_version_min}"
OBJC="${OBJC} -mmacosx-version-min=${with_macosx_version_min}"
LD="${LD} -mmacosx_version_min=${with_macosx_version_min}"
fi
;;
*mingw32* | *cygwin* | *wince* | *mingwce*)
AC_DEFINE([_UNICODE], [1], [Define to 1 for Unicode (Wide Chars) APIs.])
AC_DEFINE([UNICODE], [1], [Define to 1 for Unicode (Wide Chars) APIs.])
AC_DEFINE([_POSIX_C_SOURCE], [200809L], [IEEE Std 1003.1.])
AC_DEFINE([_BSD_SOURCE], [1], [ISO C, POSIX, and 4.3BSD things.])
case "${host_os}" in
*mingw32*)
SYS=mingw32
;;
*cygwin*)
SYS=cygwin
;;
esac
if test "${SYS}" = "mingw32"; then
# DEP, ASLR, NO SEH
LDFLAGS="${LDFLAGS} -Wl,--nxcompat -Wl,--no-seh -Wl,--dynamicbase"
AC_CHECK_PROGS(U2D, [unix2dos todos], unix2dos)
ac_default_prefix="`pwd`/_win32"
DESTDIR="`pwd`/_win32/"
dnl
dnl NSIS/MSI Installer prefix and WIN64
dnl
case "${host}" in
amd64*|x86_64*)
HAVE_WIN64="1"
WINDOWS_ARCH="x64"
PROGRAMFILES="PROGRAMFILES64"
;;
*)
WINDOWS_ARCH="x86"
PROGRAMFILES="PROGRAMFILES"
;;
esac
AC_SUBST(WINDOWS_ARCH)
AC_SUBST(PROGRAMFILES)
fi
;;
*nto*)
SYS=nto
;;
solaris*)
SYS=solaris
;;
hpux*)
SYS=hpux
;;
*os2*)
SYS=os2
LDFLAGS="${LDFLAGS} -Zomf -Zbin-files -Zargs-wild -Zhigh-mem"
AC_LIBOBJ([freeaddrinfo])
;;
*)
SYS="${host_os}"
;;
esac
AM_CONDITIONAL(HAVE_WIN32, test "${SYS}" = "mingw32")
PKG_CHECK_MODULES(SQLITE, sqlite3)
PKG_CHECK_MODULES(VLC, libvlc >= 3.0)
PKG_CHECK_MODULES(VLCPP, libvlcpp)
PKG_CHECK_MODULES(LIBJPEG, libjpeg, [
have_libjpeg="yes"
AC_DEFINE(HAVE_JPEG, 1, [Define to 1 if libjpeg is available])
])
AM_CONDITIONAL([HAVE_LIBJPEG], [test "${have_libjpeg}" = "yes"])
AC_ARG_ENABLE(tests,[build automated tests suites],enable_tests="yes")
AM_CONDITIONAL([HAVE_TESTS], [test "${enable_tests}" = "yes"])
AS_IF([test "${enable_tests}" = "yes"], [
AX_PTHREAD([have_pthread=yes],[have_pthread=no])
])
AM_CONDITIONAL([HAVE_PTHREAD], [test "${have_pthread}" = "yes"])
PKG_INSTALLDIR
AC_CONFIG_FILES([
Makefile
])
AC_OUTPUT
googletest
@
c9945853
Subproject commit c99458533a9b4c743ed51537e25989ea55944908
m4/.gitignore
0 → 100644
View file @
165c20b6
libtool.m4
ltoptions.m4
ltsugar.m4
ltversion.m4
lt~obsolete.m4
m4/ax_pthread.m4
0 → 100644
View file @
165c20b6
# ===========================================================================
# http://www.gnu.org/software/autoconf-archive/ax_pthread.html
# ===========================================================================
#
# SYNOPSIS
#
# AX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
#
# DESCRIPTION
#
# This macro figures out how to build C programs using POSIX threads. It
# sets the PTHREAD_LIBS output variable to the threads library and linker
# flags, and the PTHREAD_CFLAGS output variable to any special C compiler
# flags that are needed. (The user can also force certain compiler
# flags/libs to be tested by setting these environment variables.)
#
# Also sets PTHREAD_CC to any special C compiler that is needed for
# multi-threaded programs (defaults to the value of CC otherwise). (This
# is necessary on AIX to use the special cc_r compiler alias.)
#
# NOTE: You are assumed to not only compile your program with these flags,
# but also to link with them as well. For example, you might link with
# $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS $LIBS
#
# If you are only building threaded programs, you may wish to use these
# variables in your default LIBS, CFLAGS, and CC:
#
# LIBS="$PTHREAD_LIBS $LIBS"
# CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
# CC="$PTHREAD_CC"
#
# In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute constant
# has a nonstandard name, this macro defines PTHREAD_CREATE_JOINABLE to
# that name (e.g. PTHREAD_CREATE_UNDETACHED on AIX).
#
# Also HAVE_PTHREAD_PRIO_INHERIT is defined if pthread is found and the
# PTHREAD_PRIO_INHERIT symbol is defined when compiling with
# PTHREAD_CFLAGS.
#
# ACTION-IF-FOUND is a list of shell commands to run if a threads library
# is found, and ACTION-IF-NOT-FOUND is a list of commands to run it if it
# is not found. If ACTION-IF-FOUND is not specified, the default action
# will define HAVE_PTHREAD.
#
# Please let the authors know if this macro fails on any platform, or if
# you have any other suggestions or comments. This macro was based on work
# by SGJ on autoconf scripts for FFTW (http://www.fftw.org/) (with help
# from M. Frigo), as well as ac_pthread and hb_pthread macros posted by
# Alejandro Forero Cuervo to the autoconf macro repository. We are also
# grateful for the helpful feedback of numerous users.
#
# Updated for Autoconf 2.68 by Daniel Richard G.
#
# LICENSE
#
# Copyright (c) 2008 Steven G. Johnson <stevenj@alum.mit.edu>
# Copyright (c) 2011 Daniel Richard G. <skunk@iSKUNK.ORG>
#
# This program is free software: you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the
# Free Software Foundation, either version 3 of the License, or (at your
# option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
# Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program. If not, see <http://www.gnu.org/licenses/>.
#
# As a special exception, the respective Autoconf Macro's copyright owner
# gives unlimited permission to copy, distribute and modify the configure
# scripts that are the output of Autoconf when processing the Macro. You
# need not follow the terms of the GNU General Public License when using
# or distributing such scripts, even though portions of the text of the
# Macro appear in them. The GNU General Public License (GPL) does govern
# all other use of the material that constitutes the Autoconf Macro.
#
# This special exception to the GPL applies to versions of the Autoconf
# Macro released by the Autoconf Archive. When you make and distribute a
# modified version of the Autoconf Macro, you may extend this special
# exception to the GPL to apply to your modified version as well.
#serial 23
AU_ALIAS([ACX_PTHREAD], [AX_PTHREAD])
AC_DEFUN([AX_PTHREAD], [
AC_REQUIRE([AC_CANONICAL_HOST])
AC_REQUIRE([AC_PROG_CC])
AC_REQUIRE([AC_PROG_SED])
AC_LANG_PUSH([C])
ax_pthread_ok=no
# We used to check for pthread.h first, but this fails if pthread.h
# requires special compiler flags (e.g. on Tru64 or Sequent).
# It gets checked for in the link test anyway.
# First of all, check if the user has set any of the PTHREAD_LIBS,
# etcetera environment variables, and if threads linking works using
# them:
if test "x$PTHREAD_CFLAGS$PTHREAD_LIBS" != "x"; then
ax_pthread_save_CC="$CC"
ax_pthread_save_CFLAGS="$CFLAGS"
ax_pthread_save_LIBS="$LIBS"
AS_IF([test "x$PTHREAD_CC" != "x"], [CC="$PTHREAD_CC"])
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
LIBS="$PTHREAD_LIBS $LIBS"
AC_MSG_CHECKING([for pthread_join using $CC $PTHREAD_CFLAGS $PTHREAD_LIBS])
AC_LINK_IFELSE([AC_LANG_CALL([], [pthread_join])], [ax_pthread_ok=yes])
AC_MSG_RESULT([$ax_pthread_ok])
if test "x$ax_pthread_ok" = "xno"; then
PTHREAD_LIBS=""
PTHREAD_CFLAGS=""
fi
CC="$ax_pthread_save_CC"
CFLAGS="$ax_pthread_save_CFLAGS"
LIBS="$ax_pthread_save_LIBS"
fi
# We must check for the threads library under a number of different
# names; the ordering is very important because some systems
# (e.g. DEC) have both -lpthread and -lpthreads, where one of the
# libraries is broken (non-POSIX).
# Create a list of thread flags to try. Items starting with a "-" are
# C compiler flags, and other items are library names, except for "none"
# which indicates that we try without any flags at all, and "pthread-config"
# which is a program returning the flags for the Pth emulation library.
ax_pthread_flags="pthreads none -Kthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config"
# The ordering *is* (sometimes) important. Some notes on the
# individual items follow:
# pthreads: AIX (must check this before -lpthread)
# none: in case threads are in libc; should be tried before -Kthread and
# other compiler flags to prevent continual compiler warnings
# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h)
# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads), Tru64
# (Note: HP C rejects this with "bad form for `-t' option")
# -pthreads: Solaris/gcc (Note: HP C also rejects)
# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it
# doesn't hurt to check since this sometimes defines pthreads and
# -D_REENTRANT too), HP C (must be checked before -lpthread, which
# is present but should not be used directly; and before -mthreads,
# because the compiler interprets this as "-mt" + "-hreads")
# -mthreads: Mingw32/gcc, Lynx/gcc
# pthread: Linux, etcetera
# --thread-safe: KAI C++
# pthread-config: use pthread-config program (for GNU Pth library)
case $host_os in
freebsd*)
# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
ax_pthread_flags="-kthread lthread $ax_pthread_flags"
;;
hpux*)
# From the cc(1) man page: "[-mt] Sets various -D flags to enable
# multi-threading and also sets -lpthread."
ax_pthread_flags="-mt -pthread pthread $ax_pthread_flags"
;;
openedition*)
# IBM z/OS requires a feature-test macro to be defined in order to
# enable POSIX threads at all, so give the user a hint if this is
# not set. (We don't define these ourselves, as they can affect
# other portions of the system API in unpredictable ways.)
AC_EGREP_CPP([AX_PTHREAD_ZOS_MISSING],
[
# if !defined(_OPEN_THREADS) && !defined(_UNIX03_THREADS)
AX_PTHREAD_ZOS_MISSING
# endif
],
[AC_MSG_WARN([IBM z/OS requires -D_OPEN_THREADS or -D_UNIX03_THREADS to enable pthreads support.])])
;;
solaris*)
# On Solaris (at least, for some versions), libc contains stubbed
# (non-functional) versions of the pthreads routines, so link-based
# tests will erroneously succeed. (N.B.: The stubs are missing
# pthread_cleanup_push, or rather a function called by this macro,
# so we could check for that, but who knows whether they'll stub
# that too in a future libc.) So we'll check first for the
# standard Solaris way of linking pthreads (-mt -lpthread).
ax_pthread_flags="-mt,pthread pthread $ax_pthread_flags"
;;
esac
# GCC generally uses -pthread, or -pthreads on some platforms (e.g. SPARC)
AS_IF([test "x$GCC" = "xyes"],
[ax_pthread_flags="-pthread -pthreads $ax_pthread_flags"])
# The presence of a feature test macro requesting re-entrant function
# definitions is, on some systems, a strong hint that pthreads support is
# correctly enabled
case $host_os in
darwin* | hpux* | linux* | osf* | solaris*)
ax_pthread_check_macro="_REENTRANT"
;;
aix*)
ax_pthread_check_macro="_THREAD_SAFE"
;;
*)
ax_pthread_check_macro="--"
;;
esac
AS_IF([test "x$ax_pthread_check_macro" = "x--"],
[ax_pthread_check_cond=0],
[ax_pthread_check_cond="!defined($ax_pthread_check_macro)"])
# Are we compiling with Clang?
AC_CACHE_CHECK([whether $CC is Clang],
[ax_cv_PTHREAD_CLANG],
[ax_cv_PTHREAD_CLANG=no
# Note that Autoconf sets GCC=yes for Clang as well as GCC
if test "x$GCC" = "xyes"; then
AC_EGREP_CPP([AX_PTHREAD_CC_IS_CLANG],
[/* Note: Clang 2.7 lacks __clang_[a-z]+__ */
# if defined(__clang__) && defined(__llvm__)
AX_PTHREAD_CC_IS_CLANG
# endif
],
[ax_cv_PTHREAD_CLANG=yes])
fi
])
ax_pthread_clang="$ax_cv_PTHREAD_CLANG"
ax_pthread_clang_warning=no
# Clang needs special handling, because older versions handle the -pthread
# option in a rather... idiosyncratic way