mirror of
https://github.com/xiph/opus.git
synced 2025-05-29 06:39:15 +00:00
Copied from RNNoise directly
This commit is contained in:
parent
ba38c160eb
commit
f41c97767f
9 changed files with 701 additions and 0 deletions
2
dnn/AUTHORS
Normal file
2
dnn/AUTHORS
Normal file
|
@ -0,0 +1,2 @@
|
|||
Jean-Marc Valin <jmvalin@jmvalin.ca>
|
||||
David Rowe <david@rowetel.com>
|
129
dnn/Makefile.am
Normal file
129
dnn/Makefile.am
Normal file
|
@ -0,0 +1,129 @@
|
|||
ACLOCAL_AMFLAGS = -I m4
|
||||
|
||||
AM_CFLAGS = -I$(top_srcdir)/include $(DEPS_CFLAGS)
|
||||
|
||||
dist_doc_DATA = COPYING AUTHORS README
|
||||
|
||||
include_HEADERS = include/rnnoise.h
|
||||
|
||||
lib_LTLIBRARIES = librnnoise.la
|
||||
noinst_HEADERS = arch.h \
|
||||
celt_lpc.h \
|
||||
common.h \
|
||||
_kiss_fft_guts.h \
|
||||
kiss_fft.h \
|
||||
opus_types.h \
|
||||
pitch.h \
|
||||
rnn_data.h \
|
||||
rnn.h \
|
||||
tansig_table.h
|
||||
|
||||
librnnoise_la_SOURCES = \
|
||||
denoise.c \
|
||||
rnn.c \
|
||||
rnn_data.c \
|
||||
pitch.c \
|
||||
kiss_fft.c \
|
||||
celt_lpc.c
|
||||
|
||||
librnnoise_la_LIBADD = $(DEPS_LIBS) $(lrintf_lib) $(LIBM)
|
||||
librnnoise_la_LDFLAGS = -no-undefined \
|
||||
-version-info @OP_LT_CURRENT@:@OP_LT_REVISION@:@OP_LT_AGE@
|
||||
|
||||
if OP_ENABLE_EXAMPLES
|
||||
noinst_PROGRAMS = examples/rnnoise_demo
|
||||
endif
|
||||
|
||||
examples_rnnoise_demo_SOURCES = examples/rnnoise_demo.c
|
||||
examples_rnnoise_demo_LDADD = librnnoise.la
|
||||
|
||||
pkgconfigdir = $(libdir)/pkgconfig
|
||||
pkgconfig_DATA = rnnoise.pc
|
||||
|
||||
debug:
|
||||
$(MAKE) CFLAGS="${CFLAGS} -O0 -ggdb -DOP_ENABLE_ASSERTIONS" all
|
||||
|
||||
EXTRA_DIST = \
|
||||
rnnoise.pc.in \
|
||||
rnnoise-uninstalled.pc.in \
|
||||
doc/Doxyfile.in \
|
||||
doc/Makefile
|
||||
|
||||
# Targets to build and install just the library without the docs
|
||||
librnnoise install-librnnoise: NO_DOXYGEN = 1
|
||||
|
||||
rnnoise: all
|
||||
install-rnnoise: install
|
||||
|
||||
# Or just the docs
|
||||
docs: doc/doxygen-build.stamp
|
||||
|
||||
install-docs:
|
||||
@if [ -z "$(NO_DOXYGEN)" ]; then \
|
||||
( cd doc && \
|
||||
echo "Installing documentation in $(DESTDIR)$(docdir)"; \
|
||||
$(INSTALL) -d $(DESTDIR)$(docdir)/html/search; \
|
||||
for f in `find html -type f \! -name "installdox"` ; do \
|
||||
$(INSTALL_DATA) $$f $(DESTDIR)$(docdir)/$$f; \
|
||||
done ) \
|
||||
fi
|
||||
|
||||
doc/doxygen-build.stamp: doc/Doxyfile \
|
||||
$(top_srcdir)/include/*.h
|
||||
@[ -n "$(NO_DOXYGEN)" ] || ( cd doc && doxygen && touch $(@F) )
|
||||
|
||||
|
||||
if HAVE_DOXYGEN
|
||||
|
||||
# Or everything (by default)
|
||||
all-local: docs
|
||||
|
||||
install-data-local: install-docs
|
||||
|
||||
clean-local:
|
||||
$(RM) -r doc/html
|
||||
$(RM) -r doc/latex
|
||||
$(RM) doc/doxygen-build.stamp
|
||||
|
||||
uninstall-local:
|
||||
$(RM) -r $(DESTDIR)$(docdir)/html
|
||||
|
||||
endif
|
||||
|
||||
# We check this every time make is run, with configure.ac being touched to
|
||||
# trigger an update of the build system files if update_version changes the
|
||||
# current PACKAGE_VERSION (or if package_version was modified manually by a
|
||||
# user with either AUTO_UPDATE=no or no update_version script present - the
|
||||
# latter being the normal case for tarball releases).
|
||||
#
|
||||
# We can't just add the package_version file to CONFIGURE_DEPENDENCIES since
|
||||
# simply running autoconf will not actually regenerate configure for us when
|
||||
# the content of that file changes (due to autoconf dependency checking not
|
||||
# knowing about that without us creating yet another file for it to include).
|
||||
#
|
||||
# The MAKECMDGOALS check is a gnu-make'ism, but will degrade 'gracefully' for
|
||||
# makes that don't support it. The only loss of functionality is not forcing
|
||||
# an update of package_version for `make dist` if AUTO_UPDATE=no, but that is
|
||||
# unlikely to be a real problem for any real user.
|
||||
$(top_srcdir)/configure.ac: force
|
||||
@case "$(MAKECMDGOALS)" in \
|
||||
dist-hook) exit 0 ;; \
|
||||
dist-* | dist | distcheck | distclean) _arg=release ;; \
|
||||
esac; \
|
||||
if ! $(top_srcdir)/update_version $$_arg 2> /dev/null; then \
|
||||
if [ ! -e $(top_srcdir)/package_version ]; then \
|
||||
echo 'PACKAGE_VERSION="unknown"' > $(top_srcdir)/package_version; \
|
||||
fi; \
|
||||
. $(top_srcdir)/package_version || exit 1; \
|
||||
[ "$(PACKAGE_VERSION)" != "$$PACKAGE_VERSION" ] || exit 0; \
|
||||
fi; \
|
||||
touch $@
|
||||
|
||||
force:
|
||||
|
||||
# Create a minimal package_version file when make dist is run.
|
||||
dist-hook:
|
||||
echo 'PACKAGE_VERSION="$(PACKAGE_VERSION)"' > $(top_distdir)/package_version
|
||||
|
||||
|
||||
.PHONY: rnnoise install-rnnoise docs install-docs
|
10
dnn/autogen.sh
Executable file
10
dnn/autogen.sh
Executable file
|
@ -0,0 +1,10 @@
|
|||
#!/bin/sh
|
||||
# Run this to set up the build system: configure, makefiles, etc.
|
||||
set -e
|
||||
|
||||
srcdir=`dirname $0`
|
||||
test -n "$srcdir" && cd "$srcdir"
|
||||
|
||||
echo "Updating build configuration files for rnnoise, please wait...."
|
||||
|
||||
autoreconf -isf
|
129
dnn/configure.ac
Normal file
129
dnn/configure.ac
Normal file
|
@ -0,0 +1,129 @@
|
|||
# autoconf source script for generating configure
|
||||
|
||||
dnl The package_version file will be automatically synced to the git revision
|
||||
dnl by the update_version script when configured in the repository, but will
|
||||
dnl remain constant in tarball releases unless it is manually edited.
|
||||
m4_define([CURRENT_VERSION],
|
||||
m4_esyscmd([ ./update_version 2>/dev/null || true
|
||||
if test -e package_version; then
|
||||
. ./package_version
|
||||
printf "$PACKAGE_VERSION"
|
||||
else
|
||||
printf "unknown"
|
||||
fi ]))
|
||||
|
||||
AC_INIT([rnnoise],[CURRENT_VERSION],[jmvalin@jmvalin.ca])
|
||||
AC_CONFIG_SRCDIR([denoise.c])
|
||||
AC_CONFIG_MACRO_DIR([m4])
|
||||
|
||||
AC_USE_SYSTEM_EXTENSIONS
|
||||
AC_SYS_LARGEFILE
|
||||
|
||||
AM_INIT_AUTOMAKE([1.11 foreign no-define dist-zip subdir-objects])
|
||||
AM_MAINTAINER_MODE([enable])
|
||||
|
||||
AC_C_INLINE
|
||||
|
||||
LT_INIT
|
||||
|
||||
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
|
||||
|
||||
AC_DEFINE([RNNOISE_BUILD], [], [This is a build of the library])
|
||||
|
||||
dnl Library versioning for libtool.
|
||||
dnl Please update these for releases.
|
||||
dnl CURRENT, REVISION, AGE
|
||||
dnl - library source changed -> increment REVISION
|
||||
dnl - interfaces added/removed/changed -> increment CURRENT, REVISION = 0
|
||||
dnl - interfaces added -> increment AGE
|
||||
dnl - interfaces removed -> AGE = 0
|
||||
|
||||
OP_LT_CURRENT=4
|
||||
OP_LT_REVISION=1
|
||||
OP_LT_AGE=4
|
||||
|
||||
AC_SUBST(OP_LT_CURRENT)
|
||||
AC_SUBST(OP_LT_REVISION)
|
||||
AC_SUBST(OP_LT_AGE)
|
||||
|
||||
CC_CHECK_CFLAGS_APPEND(
|
||||
[-pedantic -Wall -Wextra -Wno-sign-compare -Wno-parentheses -Wno-long-long])
|
||||
|
||||
# Platform-specific tweaks
|
||||
case $host in
|
||||
*-mingw*)
|
||||
# -std=c89 causes some warnings under mingw.
|
||||
CC_CHECK_CFLAGS_APPEND([-U__STRICT_ANSI__])
|
||||
# We need WINNT>=0x501 (WindowsXP) for getaddrinfo/freeaddrinfo.
|
||||
# It's okay to define this even when HTTP support is disabled, as it only
|
||||
# affects header declarations, not linking (unless we actually use some
|
||||
# XP-only functions).
|
||||
AC_DEFINE_UNQUOTED(_WIN32_WINNT,0x501,
|
||||
[We need at least WindowsXP for getaddrinfo/freeaddrinfo])
|
||||
host_mingw=true
|
||||
;;
|
||||
esac
|
||||
AM_CONDITIONAL(OP_WIN32, test "$host_mingw" = "true")
|
||||
|
||||
AC_ARG_ENABLE([assertions],
|
||||
AS_HELP_STRING([--enable-assertions], [Enable assertions in code]),,
|
||||
enable_assertions=no)
|
||||
|
||||
AS_IF([test "$enable_assertions" = "yes"], [
|
||||
AC_DEFINE([OP_ENABLE_ASSERTIONS], [1], [Enable assertions in code])
|
||||
])
|
||||
|
||||
AC_ARG_ENABLE([examples],
|
||||
AS_HELP_STRING([--disable-examples], [Do not build example applications]),,
|
||||
enable_examples=yes)
|
||||
AM_CONDITIONAL([OP_ENABLE_EXAMPLES], [test "$enable_examples" = "yes"])
|
||||
|
||||
AS_CASE(["$ac_cv_search_lrintf"],
|
||||
["no"],[],
|
||||
["none required"],[],
|
||||
[lrintf_lib="$ac_cv_search_lrintf"])
|
||||
|
||||
LT_LIB_M
|
||||
|
||||
AC_SUBST([lrintf_lib])
|
||||
|
||||
CC_ATTRIBUTE_VISIBILITY([default], [
|
||||
CC_FLAG_VISIBILITY([CFLAGS="${CFLAGS} -fvisibility=hidden"])
|
||||
])
|
||||
|
||||
dnl Check for doxygen
|
||||
AC_ARG_ENABLE([doc],
|
||||
AS_HELP_STRING([--disable-doc], [Do not build API documentation]),,
|
||||
[enable_doc=yes]
|
||||
)
|
||||
|
||||
AS_IF([test "$enable_doc" = "yes"], [
|
||||
AC_CHECK_PROG([HAVE_DOXYGEN], [doxygen], [yes], [no])
|
||||
AC_CHECK_PROG([HAVE_DOT], [dot], [yes], [no])
|
||||
],[
|
||||
HAVE_DOXYGEN=no
|
||||
])
|
||||
|
||||
AM_CONDITIONAL([HAVE_DOXYGEN], [test "$HAVE_DOXYGEN" = "yes"])
|
||||
|
||||
AC_CONFIG_FILES([
|
||||
Makefile
|
||||
rnnoise.pc
|
||||
rnnoise-uninstalled.pc
|
||||
doc/Doxyfile
|
||||
])
|
||||
AC_CONFIG_HEADERS([config.h])
|
||||
AC_OUTPUT
|
||||
|
||||
AC_MSG_NOTICE([
|
||||
------------------------------------------------------------------------
|
||||
$PACKAGE_NAME $PACKAGE_VERSION: Automatic configuration OK.
|
||||
|
||||
Assertions ................... ${enable_assertions}
|
||||
|
||||
Hidden visibility ............ ${cc_cv_flag_visibility}
|
||||
|
||||
API code examples ............ ${enable_examples}
|
||||
API documentation ............ ${enable_doc}
|
||||
------------------------------------------------------------------------
|
||||
])
|
18
dnn/doc/Doxyfile.in
Normal file
18
dnn/doc/Doxyfile.in
Normal file
|
@ -0,0 +1,18 @@
|
|||
# Process with doxygen to generate API documentation
|
||||
|
||||
PROJECT_NAME = @PACKAGE_NAME@
|
||||
PROJECT_NUMBER = @PACKAGE_VERSION@
|
||||
PROJECT_BRIEF = "RNN-based noise suppressor."
|
||||
INPUT = @top_srcdir@/include/rnnoise.h
|
||||
OPTIMIZE_OUTPUT_FOR_C = YES
|
||||
|
||||
QUIET = YES
|
||||
WARNINGS = YES
|
||||
WARN_IF_UNDOCUMENTED = YES
|
||||
WARN_IF_DOC_ERROR = YES
|
||||
WARN_NO_PARAMDOC = YES
|
||||
|
||||
JAVADOC_AUTOBRIEF = YES
|
||||
SORT_MEMBER_DOCS = NO
|
||||
|
||||
HAVE_DOT = @HAVE_DOT@
|
13
dnn/lpcnet-uninstalled.pc.in
Normal file
13
dnn/lpcnet-uninstalled.pc.in
Normal file
|
@ -0,0 +1,13 @@
|
|||
# rnnoise uninstalled pkg-config file
|
||||
|
||||
prefix=
|
||||
exec_prefix=
|
||||
libdir=${pcfiledir}/.libs
|
||||
includedir=${pcfiledir}/@top_srcdir@/include
|
||||
|
||||
Name: rnnoise uninstalled
|
||||
Description: RNN-based noise suppression (not installed)
|
||||
Version: @PACKAGE_VERSION@
|
||||
Conflicts:
|
||||
Libs: ${libdir}/librnnoise.la @lrintf_lib@
|
||||
Cflags: -I${includedir}
|
14
dnn/lpcnet.pc.in
Normal file
14
dnn/lpcnet.pc.in
Normal file
|
@ -0,0 +1,14 @@
|
|||
# rnnoise installed pkg-config file
|
||||
|
||||
prefix=@prefix@
|
||||
exec_prefix=@exec_prefix@
|
||||
libdir=@libdir@
|
||||
includedir=@includedir@
|
||||
|
||||
Name: rnnoise
|
||||
Description: RNN-based noise suppression
|
||||
Version: @PACKAGE_VERSION@
|
||||
Conflicts:
|
||||
Libs: -L${libdir} -lrnnoise
|
||||
Libs.private: @lrintf_lib@
|
||||
Cflags: -I${includedir}/
|
321
dnn/m4/attributes.m4
Normal file
321
dnn/m4/attributes.m4
Normal file
|
@ -0,0 +1,321 @@
|
|||
dnl Macros to check the presence of generic (non-typed) symbols.
|
||||
dnl Copyright (c) 2006-2007 Diego Pettenò <flameeyes@gmail.com>
|
||||
dnl Copyright (c) 2006-2007 xine project
|
||||
dnl
|
||||
dnl This program is free software; you can redistribute it and/or modify
|
||||
dnl it under the terms of the GNU General Public License as published by
|
||||
dnl the Free Software Foundation; either version 2, or (at your option)
|
||||
dnl any later version.
|
||||
dnl
|
||||
dnl This program is distributed in the hope that it will be useful,
|
||||
dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
dnl GNU General Public License for more details.
|
||||
dnl
|
||||
dnl You should have received a copy of the GNU General Public License
|
||||
dnl along with this program; if not, write to the Free Software
|
||||
dnl Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
dnl 02110-1301, USA.
|
||||
dnl
|
||||
dnl As a special exception, the copyright owners of the
|
||||
dnl macro gives unlimited permission to copy, distribute and modify the
|
||||
dnl configure scripts that are the output of Autoconf when processing the
|
||||
dnl Macro. You need not follow the terms of the GNU General Public
|
||||
dnl License when using or distributing such scripts, even though portions
|
||||
dnl of the text of the Macro appear in them. The GNU General Public
|
||||
dnl License (GPL) does govern all other use of the material that
|
||||
dnl constitutes the Autoconf Macro.
|
||||
dnl
|
||||
dnl This special exception to the GPL applies to versions of the
|
||||
dnl Autoconf Macro released by this project. When you make and
|
||||
dnl distribute a modified version of the Autoconf Macro, you may extend
|
||||
dnl this special exception to the GPL to apply to your modified version as
|
||||
dnl well.
|
||||
|
||||
dnl Check if the flag is supported by compiler
|
||||
dnl CC_CHECK_CFLAGS_SILENT([FLAG], [ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND])
|
||||
|
||||
AC_DEFUN([CC_CHECK_CFLAGS_SILENT], [
|
||||
AC_CACHE_VAL(AS_TR_SH([cc_cv_cflags_$1]),
|
||||
[ac_save_CFLAGS="$CFLAGS"
|
||||
CFLAGS="$CFLAGS $1"
|
||||
AC_LINK_IFELSE([AC_LANG_SOURCE([int main() { return 0; }])],
|
||||
[eval "AS_TR_SH([cc_cv_cflags_$1])='yes'"],
|
||||
[eval "AS_TR_SH([cc_cv_cflags_$1])='no'"])
|
||||
CFLAGS="$ac_save_CFLAGS"
|
||||
])
|
||||
|
||||
AS_IF([eval test x$]AS_TR_SH([cc_cv_cflags_$1])[ = xyes],
|
||||
[$2], [$3])
|
||||
])
|
||||
|
||||
dnl Check if the flag is supported by compiler (cacheable)
|
||||
dnl CC_CHECK_CFLAGS([FLAG], [ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND])
|
||||
|
||||
AC_DEFUN([CC_CHECK_CFLAGS], [
|
||||
AC_CACHE_CHECK([if $CC supports $1 flag],
|
||||
AS_TR_SH([cc_cv_cflags_$1]),
|
||||
CC_CHECK_CFLAGS_SILENT([$1]) dnl Don't execute actions here!
|
||||
)
|
||||
|
||||
AS_IF([eval test x$]AS_TR_SH([cc_cv_cflags_$1])[ = xyes],
|
||||
[$2], [$3])
|
||||
])
|
||||
|
||||
dnl CC_CHECK_CFLAG_APPEND(FLAG, [action-if-found], [action-if-not-found])
|
||||
dnl Check for CFLAG and appends them to CFLAGS if supported
|
||||
AC_DEFUN([CC_CHECK_CFLAG_APPEND], [
|
||||
AC_CACHE_CHECK([if $CC supports $1 flag],
|
||||
AS_TR_SH([cc_cv_cflags_$1]),
|
||||
CC_CHECK_CFLAGS_SILENT([$1]) dnl Don't execute actions here!
|
||||
)
|
||||
|
||||
AS_IF([eval test x$]AS_TR_SH([cc_cv_cflags_$1])[ = xyes],
|
||||
[CFLAGS="$CFLAGS $1"; $2], [$3])
|
||||
])
|
||||
|
||||
dnl CC_CHECK_CFLAGS_APPEND([FLAG1 FLAG2], [action-if-found], [action-if-not])
|
||||
AC_DEFUN([CC_CHECK_CFLAGS_APPEND], [
|
||||
for flag in $1; do
|
||||
CC_CHECK_CFLAG_APPEND($flag, [$2], [$3])
|
||||
done
|
||||
])
|
||||
|
||||
dnl Check if the flag is supported by linker (cacheable)
|
||||
dnl CC_CHECK_LDFLAGS([FLAG], [ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND])
|
||||
|
||||
AC_DEFUN([CC_CHECK_LDFLAGS], [
|
||||
AC_CACHE_CHECK([if $CC supports $1 flag],
|
||||
AS_TR_SH([cc_cv_ldflags_$1]),
|
||||
[ac_save_LDFLAGS="$LDFLAGS"
|
||||
LDFLAGS="$LDFLAGS $1"
|
||||
AC_LINK_IFELSE([AC_LANG_SOURCE([int main() { return 1; }])],
|
||||
[eval "AS_TR_SH([cc_cv_ldflags_$1])='yes'"],
|
||||
[eval "AS_TR_SH([cc_cv_ldflags_$1])="])
|
||||
LDFLAGS="$ac_save_LDFLAGS"
|
||||
])
|
||||
|
||||
AS_IF([eval test x$]AS_TR_SH([cc_cv_ldflags_$1])[ = xyes],
|
||||
[$2], [$3])
|
||||
])
|
||||
|
||||
dnl define the LDFLAGS_NOUNDEFINED variable with the correct value for
|
||||
dnl the current linker to avoid undefined references in a shared object.
|
||||
AC_DEFUN([CC_NOUNDEFINED], [
|
||||
dnl We check $host for which systems to enable this for.
|
||||
AC_REQUIRE([AC_CANONICAL_HOST])
|
||||
|
||||
case $host in
|
||||
dnl FreeBSD (et al.) does not complete linking for shared objects when pthreads
|
||||
dnl are requested, as different implementations are present; to avoid problems
|
||||
dnl use -Wl,-z,defs only for those platform not behaving this way.
|
||||
*-freebsd* | *-openbsd*) ;;
|
||||
*)
|
||||
dnl First of all check for the --no-undefined variant of GNU ld. This allows
|
||||
dnl for a much more readable commandline, so that people can understand what
|
||||
dnl it does without going to look for what the heck -z defs does.
|
||||
for possible_flags in "-Wl,--no-undefined" "-Wl,-z,defs"; do
|
||||
CC_CHECK_LDFLAGS([$possible_flags], [LDFLAGS_NOUNDEFINED="$possible_flags"])
|
||||
break
|
||||
done
|
||||
;;
|
||||
esac
|
||||
|
||||
AC_SUBST([LDFLAGS_NOUNDEFINED])
|
||||
])
|
||||
|
||||
dnl Check for a -Werror flag or equivalent. -Werror is the GCC
|
||||
dnl and ICC flag that tells the compiler to treat all the warnings
|
||||
dnl as fatal. We usually need this option to make sure that some
|
||||
dnl constructs (like attributes) are not simply ignored.
|
||||
dnl
|
||||
dnl Other compilers don't support -Werror per se, but they support
|
||||
dnl an equivalent flag:
|
||||
dnl - Sun Studio compiler supports -errwarn=%all
|
||||
AC_DEFUN([CC_CHECK_WERROR], [
|
||||
AC_CACHE_CHECK(
|
||||
[for $CC way to treat warnings as errors],
|
||||
[cc_cv_werror],
|
||||
[CC_CHECK_CFLAGS_SILENT([-Werror], [cc_cv_werror=-Werror],
|
||||
[CC_CHECK_CFLAGS_SILENT([-errwarn=%all], [cc_cv_werror=-errwarn=%all])])
|
||||
])
|
||||
])
|
||||
|
||||
AC_DEFUN([CC_CHECK_ATTRIBUTE], [
|
||||
AC_REQUIRE([CC_CHECK_WERROR])
|
||||
AC_CACHE_CHECK([if $CC supports __attribute__(( ifelse([$2], , [$1], [$2]) ))],
|
||||
AS_TR_SH([cc_cv_attribute_$1]),
|
||||
[ac_save_CFLAGS="$CFLAGS"
|
||||
CFLAGS="$CFLAGS $cc_cv_werror"
|
||||
AC_COMPILE_IFELSE([AC_LANG_SOURCE([$3])],
|
||||
[eval "AS_TR_SH([cc_cv_attribute_$1])='yes'"],
|
||||
[eval "AS_TR_SH([cc_cv_attribute_$1])='no'"])
|
||||
CFLAGS="$ac_save_CFLAGS"
|
||||
])
|
||||
|
||||
AS_IF([eval test x$]AS_TR_SH([cc_cv_attribute_$1])[ = xyes],
|
||||
[AC_DEFINE(
|
||||
AS_TR_CPP([SUPPORT_ATTRIBUTE_$1]), 1,
|
||||
[Define this if the compiler supports __attribute__(( ifelse([$2], , [$1], [$2]) ))]
|
||||
)
|
||||
$4],
|
||||
[$5])
|
||||
])
|
||||
|
||||
AC_DEFUN([CC_ATTRIBUTE_CONSTRUCTOR], [
|
||||
CC_CHECK_ATTRIBUTE(
|
||||
[constructor],,
|
||||
[extern void foo();
|
||||
void __attribute__((constructor)) ctor() { foo(); }],
|
||||
[$1], [$2])
|
||||
])
|
||||
|
||||
AC_DEFUN([CC_ATTRIBUTE_DESTRUCTOR], [
|
||||
CC_CHECK_ATTRIBUTE(
|
||||
[destructor],,
|
||||
[extern void foo();
|
||||
void __attribute__((destructor)) dtor() { foo(); }],
|
||||
[$1], [$2])
|
||||
])
|
||||
|
||||
AC_DEFUN([CC_ATTRIBUTE_FORMAT], [
|
||||
CC_CHECK_ATTRIBUTE(
|
||||
[format], [format(printf, n, n)],
|
||||
[void __attribute__((format(printf, 1, 2))) printflike(const char *fmt, ...) { fmt = (void *)0; }],
|
||||
[$1], [$2])
|
||||
])
|
||||
|
||||
AC_DEFUN([CC_ATTRIBUTE_FORMAT_ARG], [
|
||||
CC_CHECK_ATTRIBUTE(
|
||||
[format_arg], [format_arg(printf)],
|
||||
[char *__attribute__((format_arg(1))) gettextlike(const char *fmt) { fmt = (void *)0; }],
|
||||
[$1], [$2])
|
||||
])
|
||||
|
||||
AC_DEFUN([CC_ATTRIBUTE_VISIBILITY], [
|
||||
CC_CHECK_ATTRIBUTE(
|
||||
[visibility_$1], [visibility("$1")],
|
||||
[void __attribute__((visibility("$1"))) $1_function() { }],
|
||||
[$2], [$3])
|
||||
])
|
||||
|
||||
AC_DEFUN([CC_ATTRIBUTE_NONNULL], [
|
||||
CC_CHECK_ATTRIBUTE(
|
||||
[nonnull], [nonnull()],
|
||||
[void __attribute__((nonnull())) some_function(void *foo, void *bar) { foo = (void*)0; bar = (void*)0; }],
|
||||
[$1], [$2])
|
||||
])
|
||||
|
||||
AC_DEFUN([CC_ATTRIBUTE_UNUSED], [
|
||||
CC_CHECK_ATTRIBUTE(
|
||||
[unused], ,
|
||||
[void some_function(void *foo, __attribute__((unused)) void *bar);],
|
||||
[$1], [$2])
|
||||
])
|
||||
|
||||
AC_DEFUN([CC_ATTRIBUTE_SENTINEL], [
|
||||
CC_CHECK_ATTRIBUTE(
|
||||
[sentinel], ,
|
||||
[void some_function(void *foo, ...) __attribute__((sentinel));],
|
||||
[$1], [$2])
|
||||
])
|
||||
|
||||
AC_DEFUN([CC_ATTRIBUTE_DEPRECATED], [
|
||||
CC_CHECK_ATTRIBUTE(
|
||||
[deprecated], ,
|
||||
[void some_function(void *foo, ...) __attribute__((deprecated));],
|
||||
[$1], [$2])
|
||||
])
|
||||
|
||||
AC_DEFUN([CC_ATTRIBUTE_ALIAS], [
|
||||
CC_CHECK_ATTRIBUTE(
|
||||
[alias], [weak, alias],
|
||||
[void other_function(void *foo) { }
|
||||
void some_function(void *foo) __attribute__((weak, alias("other_function")));],
|
||||
[$1], [$2])
|
||||
])
|
||||
|
||||
AC_DEFUN([CC_ATTRIBUTE_MALLOC], [
|
||||
CC_CHECK_ATTRIBUTE(
|
||||
[malloc], ,
|
||||
[void * __attribute__((malloc)) my_alloc(int n);],
|
||||
[$1], [$2])
|
||||
])
|
||||
|
||||
AC_DEFUN([CC_ATTRIBUTE_PACKED], [
|
||||
CC_CHECK_ATTRIBUTE(
|
||||
[packed], ,
|
||||
[struct astructure { char a; int b; long c; void *d; } __attribute__((packed));
|
||||
char assert@<:@(sizeof(struct astructure) == (sizeof(char)+sizeof(int)+sizeof(long)+sizeof(void*)))-1@:>@;],
|
||||
[$1], [$2])
|
||||
])
|
||||
|
||||
AC_DEFUN([CC_ATTRIBUTE_CONST], [
|
||||
CC_CHECK_ATTRIBUTE(
|
||||
[const], ,
|
||||
[int __attribute__((const)) twopow(int n) { return 1 << n; } ],
|
||||
[$1], [$2])
|
||||
])
|
||||
|
||||
AC_DEFUN([CC_FLAG_VISIBILITY], [
|
||||
AC_REQUIRE([CC_CHECK_WERROR])
|
||||
AC_CACHE_CHECK([if $CC supports -fvisibility=hidden],
|
||||
[cc_cv_flag_visibility],
|
||||
[cc_flag_visibility_save_CFLAGS="$CFLAGS"
|
||||
CFLAGS="$CFLAGS $cc_cv_werror"
|
||||
CC_CHECK_CFLAGS_SILENT([-fvisibility=hidden],
|
||||
cc_cv_flag_visibility='yes',
|
||||
cc_cv_flag_visibility='no')
|
||||
CFLAGS="$cc_flag_visibility_save_CFLAGS"])
|
||||
|
||||
AS_IF([test "x$cc_cv_flag_visibility" = "xyes"],
|
||||
[AC_DEFINE([SUPPORT_FLAG_VISIBILITY], 1,
|
||||
[Define this if the compiler supports the -fvisibility flag])
|
||||
$1],
|
||||
[$2])
|
||||
])
|
||||
|
||||
AC_DEFUN([CC_FUNC_EXPECT], [
|
||||
AC_REQUIRE([CC_CHECK_WERROR])
|
||||
AC_CACHE_CHECK([if compiler has __builtin_expect function],
|
||||
[cc_cv_func_expect],
|
||||
[ac_save_CFLAGS="$CFLAGS"
|
||||
CFLAGS="$CFLAGS $cc_cv_werror"
|
||||
AC_COMPILE_IFELSE([AC_LANG_SOURCE(
|
||||
[int some_function() {
|
||||
int a = 3;
|
||||
return (int)__builtin_expect(a, 3);
|
||||
}])],
|
||||
[cc_cv_func_expect=yes],
|
||||
[cc_cv_func_expect=no])
|
||||
CFLAGS="$ac_save_CFLAGS"
|
||||
])
|
||||
|
||||
AS_IF([test "x$cc_cv_func_expect" = "xyes"],
|
||||
[AC_DEFINE([SUPPORT__BUILTIN_EXPECT], 1,
|
||||
[Define this if the compiler supports __builtin_expect() function])
|
||||
$1],
|
||||
[$2])
|
||||
])
|
||||
|
||||
AC_DEFUN([CC_ATTRIBUTE_ALIGNED], [
|
||||
AC_REQUIRE([CC_CHECK_WERROR])
|
||||
AC_CACHE_CHECK([highest __attribute__ ((aligned ())) supported],
|
||||
[cc_cv_attribute_aligned],
|
||||
[ac_save_CFLAGS="$CFLAGS"
|
||||
CFLAGS="$CFLAGS $cc_cv_werror"
|
||||
for cc_attribute_align_try in 64 32 16 8 4 2; do
|
||||
AC_COMPILE_IFELSE([AC_LANG_SOURCE([
|
||||
int main() {
|
||||
static char c __attribute__ ((aligned($cc_attribute_align_try))) = 0;
|
||||
return c;
|
||||
}])], [cc_cv_attribute_aligned=$cc_attribute_align_try; break])
|
||||
done
|
||||
CFLAGS="$ac_save_CFLAGS"
|
||||
])
|
||||
|
||||
if test "x$cc_cv_attribute_aligned" != "x"; then
|
||||
AC_DEFINE_UNQUOTED([ATTRIBUTE_ALIGNED_MAX], [$cc_cv_attribute_aligned],
|
||||
[Define the highest alignment supported])
|
||||
fi
|
||||
])
|
65
dnn/update_version
Executable file
65
dnn/update_version
Executable file
|
@ -0,0 +1,65 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Creates and updates the package_version information used by configure.ac
|
||||
# (or other makefiles). When run inside a git repository it will use the
|
||||
# version information that can be queried from it unless AUTO_UPDATE is set
|
||||
# to 'no'. If no version is currently known it will be set to 'unknown'.
|
||||
#
|
||||
# If called with the argument 'release', the PACKAGE_VERSION will be updated
|
||||
# even if AUTO_UPDATE=no, but the value of AUTO_UPDATE shall be preserved.
|
||||
# This is used to force a version update whenever `make dist` is run.
|
||||
#
|
||||
# The exit status is 1 if package_version is not modified, else 0 is returned.
|
||||
#
|
||||
# This script should NOT be included in distributed tarballs, because if a
|
||||
# parent directory contains a git repository we do not want to accidentally
|
||||
# retrieve the version information from it instead. Tarballs should ship
|
||||
# with only the package_version file.
|
||||
#
|
||||
# Ron <ron@debian.org>, 2012.
|
||||
|
||||
SRCDIR=$(dirname $0)
|
||||
|
||||
if [ -e "$SRCDIR/package_version" ]; then
|
||||
. "$SRCDIR/package_version"
|
||||
fi
|
||||
|
||||
if [ "$AUTO_UPDATE" = no ]; then
|
||||
[ "$1" = release ] || exit 1
|
||||
else
|
||||
AUTO_UPDATE=yes
|
||||
fi
|
||||
|
||||
# We run `git status` before describe here to ensure that we don't get a false
|
||||
# -dirty from files that have been touched but are not actually altered in the
|
||||
# working dir.
|
||||
GIT_VERSION=$(cd "$SRCDIR" && git status > /dev/null 2>&1 \
|
||||
&& git describe --tags --match 'v*' --dirty 2> /dev/null)
|
||||
GIT_VERSION=${GIT_VERSION#v}
|
||||
|
||||
if [ -n "$GIT_VERSION" ]; then
|
||||
|
||||
[ "$GIT_VERSION" != "$PACKAGE_VERSION" ] || exit 1
|
||||
PACKAGE_VERSION="$GIT_VERSION"
|
||||
|
||||
elif [ -z "$PACKAGE_VERSION" ]; then
|
||||
# No current package_version and no git ...
|
||||
# We really shouldn't ever get here, because this script should only be
|
||||
# included in the git repository, and should usually be export-ignored.
|
||||
PACKAGE_VERSION="unknown"
|
||||
else
|
||||
exit 1
|
||||
fi
|
||||
|
||||
cat > "$SRCDIR/package_version" <<-EOF
|
||||
# Automatically generated by update_version.
|
||||
# This file may be sourced into a shell script or makefile.
|
||||
|
||||
# Set this to 'no' if you do not wish the version information
|
||||
# to be checked and updated for every build. Most people will
|
||||
# never want to change this, it is an option for developers
|
||||
# making frequent changes that they know will not be released.
|
||||
AUTO_UPDATE=$AUTO_UPDATE
|
||||
|
||||
PACKAGE_VERSION="$PACKAGE_VERSION"
|
||||
EOF
|
Loading…
Add table
Add a link
Reference in a new issue