Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Mathis Rosenhauer
libaec
Commits
c910e9bb
Commit
c910e9bb
authored
Jul 13, 2017
by
Mathis Rosenhauer
Browse files
Build fuzzer with autotools
parent
828e3179
Changes
10
Hide whitespace changes
Inline
Side-by-side
.gitignore
View file @
c910e9bb
...
...
@@ -17,3 +17,5 @@ autom4te.cache
.DS_Store
build*
data/121B2TestData
m4/libtool.m4
m4/lt*
CMakeLists.txt
View file @
c910e9bb
cmake_minimum_required
(
VERSION
2.8.6
)
cmake_minimum_required
(
VERSION
3.0.0
)
include
(
CheckIncludeFiles
)
include
(
TestBigEndian
)
include
(
CheckCSourceCompiles
)
...
...
@@ -48,7 +48,7 @@ add_subdirectory(tests)
option
(
AEC_FUZZING
"Enable build of fuzzing targets"
OFF
)
if
(
AEC_FUZZING
)
add_subdirectory
(
fuzz
)
add_subdirectory
(
fuzz
ing
)
endif
()
set
(
CPACK_PACKAGE_NAME
"libaec"
)
...
...
Makefile.am
View file @
c910e9bb
ACLOCAL_AMFLAGS
=
-I
m4
SUBDIRS
=
src tests
if
AEC_FUZZING
FUZZDIR
=
fuzzing
endif
SUBDIRS
=
src tests
$(FUZZDIR)
EXTRA_DIST
=
doc/patent.txt CMakeLists.txt cmake/config.h.in
\
cmake/macros.cmake README.md README.SZIP CHANGELOG.md Copyright.txt data
...
...
configure.ac
View file @
c910e9bb
...
...
@@ -9,14 +9,13 @@ AC_CONFIG_HEADERS(config/config.h)
LT_INIT
gl_VISIBILITY
AM_INIT_AUTOMAKE([foreign])
AM_MAINTAINER_MODE([enable])
# Checks for programs.
AC_PROG_CC
AC_PROG_CXX
# Checks for header files.
AC_HEADER_STDC
# Checks for typedefs, structures, and compiler characteristics.
AC_C_BIGENDIAN
AC_C_INLINE
AC_TYPE_INT64_T
...
...
@@ -27,12 +26,28 @@ AC_TYPE_UINT8_T
AC_C_INLINE
AC_C_RESTRICT
# Checks for library functions.
AC_CHECK_FUNCS([memset strstr])
AC_CHECK_DECLS(__builtin_clzll)
AM_EXTRA_RECURSIVE_TARGETS([bench benc bdec])
AC_CONFIG_FILES([Makefile \
src/Makefile \
tests/Makefile])
AC_ARG_ENABLE([fuzzing],
AS_HELP_STRING([--enable-fuzzing], [Enable fuzzing of libaec]))
AS_IF([test "x$enable_fuzzing" = "xyes"], [
AX_COMPILER_VENDOR
AS_IF([test "x$ax_cv_c_compiler_vendor" = "xclang"], [
AC_LANG_PUSH([C++])
AX_COMPILER_VENDOR
AC_LANG_POP([C++])
AS_IF([test "x$ax_cv_cxx_compiler_vendor" = "xclang"], [], [
AC_MSG_ERROR([You need to build with Clang as CXX for fuzzing to work])
])
], [
AC_MSG_ERROR([You need to build with Clang as CC for fuzzing to work])
])
])
AM_CONDITIONAL([AEC_FUZZING], [test x$enable_fuzzing = xyes])
AC_CONFIG_FILES([Makefile src/Makefile tests/Makefile fuzzing/Makefile])
AC_OUTPUT
fuzz/CMakeLists.txt
→
fuzz
ing
/CMakeLists.txt
View file @
c910e9bb
File moved
fuzzing/Makefile.am
0 → 100644
View file @
c910e9bb
FUZZING_FLAGS
=
-g
-fsanitize
=
address
\
-fsanitize-coverage
=
trace-pc-guard,indirect-calls,edge
noinst_LIBRARIES
=
libaec_fuzz.a
libaec_fuzz_a_SOURCES
=
$(top_srcdir)
/src/encode.c
\
$(top_srcdir)
/src/encode_accessors.c
\
$(top_srcdir)
/src/decode.c
\
$(top_srcdir)
/src/encode.h
\
$(top_srcdir)
/src/encode_accessors.h
\
$(top_srcdir)
/src/decode.h
libaec_fuzz_a_CFLAGS
=
$(FUZZING_FLAGS)
aec_fuzz_SOURCES
=
fuzz_target.cc
aec_fuzz_CXXFLAGS
=
$(FUZZING_FLAGS)
aec_fuzz_LDFLAGS
=
-fsanitize
=
address
-lFuzzer
aec_fuzz_LDADD
=
libaec_fuzz.a
noinst_PROGRAMS
=
aec_fuzz
EXTRA_DIST
=
CMakeLists.txt
fuzz/fuzz_target.cc
→
fuzz
ing
/fuzz_target.cc
View file @
c910e9bb
File moved
m4/.gitignore
deleted
100644 → 0
View file @
828e3179
*
!.gitignore
m4/m4_ax_compiler_vendor.m4
0 → 100644
View file @
c910e9bb
# ===========================================================================
# https://www.gnu.org/software/autoconf-archive/ax_compiler_vendor.html
# ===========================================================================
#
# SYNOPSIS
#
# AX_COMPILER_VENDOR
#
# DESCRIPTION
#
# Determine the vendor of the C/C++ compiler, e.g., gnu, intel, ibm, sun,
# hp, borland, comeau, dec, cray, kai, lcc, metrowerks, sgi, microsoft,
# watcom, etc. The vendor is returned in the cache variable
# $ax_cv_c_compiler_vendor for C and $ax_cv_cxx_compiler_vendor for C++.
#
# LICENSE
#
# Copyright (c) 2008 Steven G. Johnson <stevenj@alum.mit.edu>
# Copyright (c) 2008 Matteo Frigo
#
# 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 <https://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 16
AC_DEFUN([AX_COMPILER_VENDOR],
[AC_CACHE_CHECK([for _AC_LANG compiler vendor], ax_cv_[]_AC_LANG_ABBREV[]_compiler_vendor,
dnl Please add if possible support to ax_compiler_version.m4
[# note: don't check for gcc first since some other compilers define __GNUC__
vendors="intel: __ICC,__ECC,__INTEL_COMPILER
ibm: __xlc__,__xlC__,__IBMC__,__IBMCPP__
pathscale: __PATHCC__,__PATHSCALE__
clang: __clang__
cray: _CRAYC
fujitsu: __FUJITSU
gnu: __GNUC__
sun: __SUNPRO_C,__SUNPRO_CC
hp: __HP_cc,__HP_aCC
dec: __DECC,__DECCXX,__DECC_VER,__DECCXX_VER
borland: __BORLANDC__,__CODEGEARC__,__TURBOC__
comeau: __COMO__
kai: __KCC
lcc: __LCC__
sgi: __sgi,sgi
microsoft: _MSC_VER
metrowerks: __MWERKS__
watcom: __WATCOMC__
portland: __PGI
tcc: __TINYC__
unknown: UNKNOWN"
for ventest in $vendors; do
case $ventest in
*:) vendor=$ventest; continue ;;
*) vencpp="defined("`echo $ventest | sed 's/,/) || defined(/g'`")" ;;
esac
AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[
#if !($vencpp)
thisisanerror;
#endif
])], [break])
done
ax_cv_[]_AC_LANG_ABBREV[]_compiler_vendor=`echo $vendor | cut -d: -f1`
])
])
tests/Makefile.am
View file @
c910e9bb
...
...
@@ -10,15 +10,15 @@ check_PROGRAMS = check_code_options check_buffer_sizes check_long_fs \
check_szcomp
check_code_options_SOURCES
=
check_code_options.c check_aec.h
\
$(top_
build
dir)
/src/libaec.h
$(top_
src
dir)
/src/libaec.h
check_buffer_sizes_SOURCES
=
check_buffer_sizes.c check_aec.h
\
$(top_
build
dir)
/src/libaec.h
$(top_
src
dir)
/src/libaec.h
check_long_fs_SOURCES
=
check_long_fs.c check_aec.h
\
$(top_
build
dir)
/src/libaec.h
$(top_
src
dir)
/src/libaec.h
check_szcomp_SOURCES
=
check_szcomp.c
$(top_
build
dir)
/src/szlib.h
check_szcomp_SOURCES
=
check_szcomp.c
$(top_
src
dir)
/src/szlib.h
LDADD
=
libcheck_aec.la
$(top_builddir)
/src/libaec.la
check_szcomp_LDADD
=
$(top_builddir)
/src/libsz.la
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment