diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile new file mode 100644 index 0000000000..ca93c724bb --- /dev/null +++ b/.devcontainer/Dockerfile @@ -0,0 +1,25 @@ +# See here for image contents: https://github.com/microsoft/vscode-dev-containers/tree/v0.154.2/containers/cpp/.devcontainer/base.Dockerfile + +# [Choice] Debian / Ubuntu version: debian-10, debian-9, ubuntu-20.04, ubuntu-18.04 +ARG VARIANT="buster" +FROM mcr.microsoft.com/vscode/devcontainers/cpp:0-${VARIANT} + +ARG CLANGURL="https://releases.llvm.org/3.8.1/" +ARG CLANGFILE="clang+llvm-3.8.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz" + +RUN apt-get update \ + && export DEBIAN_FRONTEND=noninteractive \ + && apt-get -y install --no-install-recommends \ + build-essential autoconf automake libtool pkg-config libnl-3-dev libnl-genl-3-dev libssl-dev \ + ethtool shtool rfkill zlib1g-dev libpcap-dev libsqlite3-dev libpcre3-dev libhwloc-dev \ + libcmocka-dev hostapd wpasupplicant tcpdump screen iw usbutils expect gawk bear \ + libtinfo5 \ + clangd-10 \ + clang-format-10 \ + python3-pip \ + && rm -rf /var/lib/apt/lists/* \ + && /usr/bin/pip3 install pre-commit \ + && cd /tmp \ + && wget "${CLANGURL}/${CLANGFILE}" \ + && tar -x --strip-components=1 -C /usr/local -J -f ${CLANGFILE} \ + && rm -f ${CLANGFILE} diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 0000000000..7f32c27a15 --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,44 @@ +// For format details, see https://aka.ms/devcontainer.json. For config options, see the README at: +// https://github.com/microsoft/vscode-dev-containers/tree/v0.154.2/containers/cpp +{ + "name": "Aircrack-ng", + "build": { + "dockerfile": "Dockerfile", + // Update 'VARIANT' to pick an Debian / Ubuntu OS version: debian-10, debian-9, ubuntu-20.04, ubuntu-18.04 + "args": { + "VARIANT": "ubuntu-20.04" + } + }, + "runArgs": [ + "--cap-add=SYS_PTRACE", + "--security-opt", + "seccomp=unconfined" + ], + // Set *default* container specific settings.json values on container create. + "settings": { + "terminal.integrated.shell.linux": "/bin/bash", + "editor.formatOnSave": true, + "clang-format.executable": "/usr/local/bin/clang-format", + "clang-format.fallbackStyle": "none", + "clang-format.assumeFilename": "${file}", + "clang-format.style": "file", + "editor.defaultFormatter": "llvm-vs-code-extensions.vscode-clangd", + "clangd.path": "/usr/bin/clangd-10", + "C_Cpp.clang_format_fallbackStyle": "none", + "C_Cpp.clang_format_path": "/usr/local/bin/clang-format", + "C_Cpp.clang_format_style": "file", + "C_Cpp.formatting": "clangFormat" + }, + // Add the IDs of extensions you want installed when the container is created. + "extensions": [ + "ms-vscode.cpptools", + "xaver.clang-format", + "llvm-vs-code-extensions.vscode-clangd" + ], + // Use 'forwardPorts' to make a list of ports inside the container available locally. + // "forwardPorts": [], + // Use 'postCreateCommand' to run commands after the container is created. + "postCreateCommand": "pre-commit install --install-hooks", + // Comment out connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root. + "remoteUser": "vscode" +} \ No newline at end of file diff --git a/.gitignore b/.gitignore index 95e1e92860..5aaf7fd458 100644 --- a/.gitignore +++ b/.gitignore @@ -64,7 +64,6 @@ src/Makefile.in !/build/m4/stubs/.gitkeep /test/test-env.sh /.idea -/.vscode /.clang_complete CMakeLists.txt /cmake-build-* @@ -108,4 +107,15 @@ coverage*.info /include/aircrack-ng/version.h /manpages/*.1 /manpages/*.8 -*.pidb +/.ccls-cache +/.cache +/.gdb_history +/cscope* +/strace_out +/.clangd +/r*hs +/r*hs-bad +/r*tr +/r*tr-bad +*~ +*.pidb \ No newline at end of file diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 0000000000..6bca5de85b --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,37 @@ +--- +# See https://pre-commit.com for more information +# See https://pre-commit.com/hooks.html for more hooks +exclude: > + (?x)^( + .github/|AUTHORS|ChangeLog|INSTALLING|LICENSE|README| + appveyor.yml|build/airpcap.dll.def|contrib/|lib/csharp| + lib/radiotap|include/aircrack-ng/third-party|patches/| + test/|scripts/|manpages/|apparmor/ + ) + +fail_fast: false + +repos: + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v2.4.0 + hooks: + - id: trailing-whitespace + exclude_types: [asm] + - id: check-added-large-files + - id: mixed-line-ending + exclude_types: [asm] + - id: check-byte-order-marker + - id: check-executables-have-shebangs + - id: check-merge-conflict + + - repo: https://github.com/pocc/pre-commit-hooks + rev: python + hooks: + - id: clang-format + args: ["--version=3.8", "--style=file", "-i"] + + - repo: https://github.com/shellcheck-py/shellcheck-py + rev: v0.7.1.1 + hooks: + - id: shellcheck + files: 'test/|scripts/|build/' diff --git a/.vscode/c_cpp_properties.json b/.vscode/c_cpp_properties.json new file mode 100644 index 0000000000..571145dc8f --- /dev/null +++ b/.vscode/c_cpp_properties.json @@ -0,0 +1,17 @@ +{ + "configurations": [ + { + "name": "Linux", + "includePath": [ + "${workspaceFolder}/**" + ], + "defines": [], + "compilerPath": "/usr/local/bin/clang", + "cStandard": "c11", + "cppStandard": "c++17", + "intelliSenseMode": "clang-x64", + "compileCommands": "${workspaceFolder}/compile_commands.json" + } + ], + "version": 4 +} \ No newline at end of file diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000000..c5d102fe95 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,32 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "(gdb) Launch aircrack-ng", + "type": "cppdbg", + "request": "launch", + "program": "${workspaceFolder}/.libs/aircrack-ng", + "args": [], + "stopAtEntry": true, + "cwd": "${workspaceFolder}", + "environment": [ + { + "name": "LD_LIBRARY_PATH", + "value": "${workspaceFolder}/.libs" + } + ], + "externalConsole": false, + "MIMode": "gdb", + "setupCommands": [ + { + "description": "Enable pretty-printing for gdb", + "text": "-enable-pretty-printing", + "ignoreFailures": true + } + ] + } + ] +} \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000000..b9619bd68c --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,59 @@ +{ + // See https://go.microsoft.com/fwlink/?LinkId=733558 + // for the documentation about the tasks.json format + "version": "2.0.0", + "tasks": [ + { + "label": "Build Incremental", + "type": "shell", + "command": "make -j6 && make -j6 check", + "group": { + "kind": "build", + "isDefault": true + }, + "problemMatcher": "$gcc", + "promptOnClose": false, + "presentation": { + "echo": true, + "reveal": "silent", + "focus": false, + "panel": "dedicated", + "showReuseMessage": false, + "clear": false + } + },{ + "label": "Build Full", + "type": "shell", + "command": "autoreconf -vif && env CC=clang-10 CXX=clang++-10 CPP=clang-cpp-10 CFLAGS=\"-Og -g\" CXXFLAGS=\"-Og -g\" ./configure --enable-maintainer-mode --with-experimental --without-opt && bear make -j6 && bear -a make -j6 check", + "group": "build", + "problemMatcher": "$gcc", + "promptOnClose": false, + "presentation": { + "echo": true, + "reveal": "always", + "focus": true, + "panel": "dedicated", + "showReuseMessage": false, + "clear": true + } + },{ + "label": "Test", + "type": "shell", + "command": "make -j6 check", + "group":{ + "kind": "test", + "isDefault": true + }, + "problemMatcher": "$gcc", + "promptOnClose": false, + "presentation": { + "echo": true, + "reveal": "silent", + "focus": false, + "panel": "dedicated", + "showReuseMessage": false, + "clear": false + } + } + ] +} \ No newline at end of file diff --git a/README.md b/README.md index ae0918a4e4..6f7a9e98d6 100644 --- a/README.md +++ b/README.md @@ -37,7 +37,7 @@ All tools are command line which allows for heavy scripting. A lot of GUIs have * On Windows, if using clang, libiconv and libiconv-devel * Linux: LibNetlink 1 or 3. It can be disabled by passing --disable-libnl to configure. * pkg-config (pkgconf on FreeBSD) - * FreeBSD, OpenBSD, NetBSD, Solaris and OS X with macports: gmake + * FreeBSD, OpenBSD, NetBSD, Solaris and OS X with Macports: gmake * Linux/Cygwin: make and Standard C++ Library development package (Debian: libstdc++-dev) Note: Airmon-ng only requires pciutils if the system has a PCI/PCIe bus and it is populated. @@ -47,12 +47,12 @@ Note: Airmon-ng only requires pciutils if the system has a PCI/PCIe bus and it i ## Optional stuff * If you want SSID filtering with regular expression in airodump-ng - (-essid-regex) pcre development package is required. + (-essid-regex) PCRE development package is required. * If you want to use airolib-ng and '-r' option in aircrack-ng, SQLite development package >= 3.3.17 (3.6.X version or better is recommended) * If you want to use Airpcap, the 'developer' directory from the CD/ISO/SDK is required. * In order to build `besside-ng`, `besside-ng-crawler`, `easside-ng`, `tkiptun-ng` and `wesside-ng`, - libpcap development package is required (on Cygwin, use the Aircap SDK instead; see above) + libpcap development package is required (on Cygwin, use the Airpcap SDK instead; see above) * rfkill * If you want Airodump-ng to log GPS coordinates, gpsd is needed * For best performance on SMP machines, ensure the hwloc library and headers are installed. It is strongly recommended on high core count systems, it may give a serious speed boost @@ -380,6 +380,40 @@ to your choosing: LD_LIBRARY_PATH=.libs gdb --args ./aircrack-ng [PARAMETERS] ``` +# IDE development + +## VS Code - devcontainers + +A VS Code development environment is provided, as is, for rapid setup of a development environment. This additionally adds support for GitHub Codespaces. + +### Requirements + +The first requirement is a working [Docker Engine](https://docs.docker.com/engine/install/) environment. + +Next, an installation of [VS Code](https://code.visualstudio.com/) with the following extension(s): + +- [`Remote - Containers`](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers) by Microsoft. + +> The "Remote - Containers" extension will refuse to work with OSS Code. + +### Usage + +1. Clone this repository to your working folder: +``` +$ git clone --recursive https://github.com/aircrack-ng/aircrack-ng.git +$ cd aircrack-ng +``` +2. After cloning this repository, open the folder inside VS Code. +``` +$ code . +``` +> IMPORTANT: You should answer "Yes", if it asks if the folder should be opened inside a remote container. If it does not ask, then press `Ctrl+Shift+P` and type `open in container`. This should bring up the correct command, for which pressing enter will run said command. + +3. A number of warnings might appear about a missing `compile_commands.json` file. These are safe to ignore for a moment, as this file is automatically generated after the initial compilation. +4. Now build the entire project by pressing `Ctrl+R` and selecting `Build Full` from the pop-up menu that appears. +5. VS Code should detect the `compile_commands.json` file and ask if it should be used; selecting "Yes, always" will complete the initial setup of a fully working IDE. +> IMPORTANT: If it doesn't detect the file, pressing `Ctrl+Shift+P` and typing `reload window` will bring up the selection to fully reload the environment. +6. At this point, nearly all features of VS Code will function; from Intellisense, auto-completion, live documentation, to code formatting. Additionally, there are pre-configured tasks for builds and tests, as well as an example GDB/LLDB configuration for debugging `aircrack-ng`. # Packaging @@ -392,7 +426,7 @@ the additional flag `--without-opt` to the `./configure` line: `./configure --without-opt` -# Using precompiled binaries +# Using pre-compiled binaries ## Linux/BSD @@ -405,7 +439,7 @@ We provide up to date versions via PackageCloud for a number of Linux distrubuti ## Windows * Install the appropriate "monitor" driver for your card; standard drivers don't work for capturing data. - * Aircrack-ng suite is command line tools. So, you have to open a commandline + * Aircrack-ng suite is command line tools. So, you have to open a command-line `Start menu -> Run... -> cmd.exe` then use them * Run the executables without any parameters to have help diff --git a/build/m4/ax_valgrind_check.m4 b/build/m4/ax_valgrind_check.m4 deleted file mode 100644 index 2dd8f7184b..0000000000 --- a/build/m4/ax_valgrind_check.m4 +++ /dev/null @@ -1,233 +0,0 @@ -# =========================================================================== -# http://www.gnu.org/software/autoconf-archive/ax_valgrind_check.html -# =========================================================================== -# -# SYNOPSIS -# -# AX_VALGRIND_CHECK() -# -# DESCRIPTION -# -# Checks whether Valgrind is present and, if so, allows running `make -# check` under a variety of Valgrind tools to check for memory and -# threading errors. -# -# Defines VALGRIND_CHECK_RULES which should be substituted in your -# Makefile; and $enable_valgrind which can be used in subsequent configure -# output. VALGRIND_ENABLED is defined and substituted, and corresponds to -# the value of the --enable-valgrind option, which defaults to being -# enabled if Valgrind is installed and disabled otherwise. -# -# If unit tests are written using a shell script and automake's -# LOG_COMPILER system, the $(VALGRIND) variable can be used within the -# shell scripts to enable Valgrind, as described here: -# -# https://www.gnu.org/software/gnulib/manual/html_node/Running-self_002dtests-under-valgrind.html -# -# Usage example: -# -# configure.ac: -# -# AX_VALGRIND_CHECK -# -# Makefile.am: -# -# @VALGRIND_CHECK_RULES@ -# VALGRIND_SUPPRESSIONS_FILES = my-project.supp -# EXTRA_DIST = my-project.supp -# -# This results in a "check-valgrind" rule being added to any Makefile.am -# which includes "@VALGRIND_CHECK_RULES@" (assuming the module has been -# configured with --enable-valgrind). Running `make check-valgrind` in -# that directory will run the module's test suite (`make check`) once for -# each of the available Valgrind tools (out of memcheck, helgrind, drd and -# sgcheck), and will output results to test-suite-$toolname.log for each. -# The target will succeed if there are zero errors and fail otherwise. -# -# Alternatively, a "check-valgrind-$TOOL" rule will be added, for $TOOL in -# memcheck, helgrind, drd and sgcheck. These are useful because often only -# some of those tools can be ran cleanly on a codebase. -# -# The macro supports running with and without libtool. -# -# LICENSE -# -# Copyright (c) 2014, 2015, 2016 Philip Withnall -# -# Copying and distribution of this file, with or without modification, are -# permitted in any medium without royalty provided the copyright notice -# and this notice are preserved. This file is offered as-is, without any -# warranty. - -#serial 9 - -AC_DEFUN([AX_VALGRIND_CHECK],[ - dnl Check for --enable-valgrind - AC_ARG_ENABLE([valgrind], - [AS_HELP_STRING([--enable-valgrind], [Whether to enable Valgrind on the unit tests])], - [enable_valgrind=$enableval],[enable_valgrind=]) - - AS_IF([test "$enable_valgrind" != "no"],[ - # Check for Valgrind. - AC_CHECK_PROG([VALGRIND],[valgrind],[valgrind]) - AS_IF([test "$VALGRIND" = ""],[ - AS_IF([test "$enable_valgrind" = "yes"],[ - AC_MSG_ERROR([Could not find valgrind; either install it or reconfigure with --disable-valgrind]) - ],[ - enable_valgrind=no - ]) - ],[ - enable_valgrind=yes - ]) - ]) - - AM_CONDITIONAL([VALGRIND_ENABLED],[test "$enable_valgrind" = "yes"]) - AC_SUBST([VALGRIND_ENABLED],[$enable_valgrind]) - - # Check for Valgrind tools we care about. - m4_define([valgrind_tool_list],[[memcheck], [helgrind], [drd], [exp-sgcheck]]) - - AS_IF([test "$VALGRIND" != ""],[ - m4_foreach([vgtool],[valgrind_tool_list],[ - m4_define([vgtooln],AS_TR_SH(vgtool)) - m4_define([ax_cv_var],[ax_cv_valgrind_tool_]vgtooln) - AC_CACHE_CHECK([for Valgrind tool ]vgtool,ax_cv_var,[ - ax_cv_var= - AS_IF([`$VALGRIND --tool=vgtool --help >/dev/null 2>&1`],[ - ax_cv_var="vgtool" - ]) - ]) - - AC_SUBST([VALGRIND_HAVE_TOOL_]vgtooln,[$ax_cv_var]) - ]) - ]) - -[VALGRIND_CHECK_RULES=' -# Valgrind check -# -# Optional: -# - VALGRIND_SUPPRESSIONS_FILES: Space-separated list of Valgrind suppressions -# files to load. (Default: empty) -# - VALGRIND_FLAGS: General flags to pass to all Valgrind tools. -# (Default: --num-callers=30) -# - VALGRIND_$toolname_FLAGS: Flags to pass to Valgrind $toolname (one of: -# memcheck, helgrind, drd, sgcheck). (Default: various) - -# Optional variables -VALGRIND_SUPPRESSIONS ?= $(addprefix --suppressions=,$(VALGRIND_SUPPRESSIONS_FILES)) -VALGRIND_FLAGS ?= --num-callers=30 -VALGRIND_memcheck_FLAGS ?= --leak-check=full --show-reachable=no -VALGRIND_helgrind_FLAGS ?= --history-level=approx -VALGRIND_drd_FLAGS ?= -VALGRIND_sgcheck_FLAGS ?= - -# Internal use -valgrind_tools = memcheck helgrind drd sgcheck -valgrind_log_files = $(addprefix test-suite-,$(addsuffix .log,$(valgrind_tools))) - -valgrind_memcheck_flags = --tool=memcheck $(VALGRIND_memcheck_FLAGS) -valgrind_helgrind_flags = --tool=helgrind $(VALGRIND_helgrind_FLAGS) -valgrind_drd_flags = --tool=drd $(VALGRIND_drd_FLAGS) -valgrind_sgcheck_flags = --tool=exp-sgcheck $(VALGRIND_sgcheck_FLAGS) - -valgrind_quiet = $(valgrind_quiet_$(V)) -valgrind_quiet_ = $(valgrind_quiet_$(AM_DEFAULT_VERBOSITY)) -valgrind_quiet_0 = --quiet - -# Support running with and without libtool. -ifneq ($(LIBTOOL),) -valgrind_lt = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=execute -else -valgrind_lt = -endif - -# Use recursive makes in order to ignore errors during check -check-valgrind: -ifeq ($(VALGRIND_ENABLED),yes) - -$(foreach tool,$(valgrind_tools), \ - $(if $(VALGRIND_HAVE_TOOL_$(tool))$(VALGRIND_HAVE_TOOL_exp_$(tool)), \ - $(MAKE) $(AM_MAKEFLAGS) -k check-valgrind-tool VALGRIND_TOOL=$(tool); \ - ) \ - ) -else - @echo "Need to reconfigure with --enable-valgrind" -endif - -# Valgrind running -VALGRIND_TESTS_ENVIRONMENT = \ - $(TESTS_ENVIRONMENT) \ - env VALGRIND=$(VALGRIND) \ - G_SLICE=always-malloc,debug-blocks \ - G_DEBUG=fatal-warnings,fatal-criticals,gc-friendly - -VALGRIND_LOG_COMPILER = \ - $(valgrind_lt) \ - $(VALGRIND) $(VALGRIND_SUPPRESSIONS) --error-exitcode=1 $(VALGRIND_FLAGS) - -check-valgrind-tool: -ifeq ($(VALGRIND_ENABLED),yes) - $(MAKE) check-TESTS \ - TESTS_ENVIRONMENT="$(VALGRIND_TESTS_ENVIRONMENT)" \ - LOG_COMPILER="$(VALGRIND_LOG_COMPILER)" \ - LOG_FLAGS="$(valgrind_$(VALGRIND_TOOL)_flags)" \ - TEST_SUITE_LOG=test-suite-$(VALGRIND_TOOL).log -else - @echo "Need to reconfigure with --enable-valgrind" -endif - -check-valgrind-memcheck: -ifeq ($(VALGRIND_ENABLED),yes) - $(MAKE) check-TESTS \ - TESTS_ENVIRONMENT="$(VALGRIND_TESTS_ENVIRONMENT)" \ - LOG_COMPILER="$(VALGRIND_LOG_COMPILER)" \ - LOG_FLAGS="$(valgrind_memcheck_flags)" \ - TEST_SUITE_LOG=test-suite-memcheck.log -else - @echo "Need to reconfigure with --enable-valgrind" -endif - -check-valgrind-helgrind: -ifeq ($(VALGRIND_ENABLED),yes) - $(MAKE) check-TESTS \ - TESTS_ENVIRONMENT="$(VALGRIND_TESTS_ENVIRONMENT)" \ - LOG_COMPILER="$(VALGRIND_LOG_COMPILER)" \ - LOG_FLAGS="$(valgrind_helgrind_flags)" \ - TEST_SUITE_LOG=test-suite-helgrind.log -else - @echo "Need to reconfigure with --enable-valgrind" -endif - -check-valgrind-drd: -ifeq ($(VALGRIND_ENABLED),yes) - $(MAKE) check-TESTS \ - TESTS_ENVIRONMENT="$(VALGRIND_TESTS_ENVIRONMENT)" \ - LOG_COMPILER="$(VALGRIND_LOG_COMPILER)" \ - LOG_FLAGS="$(valgrind_drd_flags)" \ - TEST_SUITE_LOG=test-suite-drd.log -else - @echo "Need to reconfigure with --enable-valgrind" -endif - -check-valgrind-sgcheck: -ifeq ($(VALGRIND_ENABLED),yes) - $(MAKE) check-TESTS \ - TESTS_ENVIRONMENT="$(VALGRIND_TESTS_ENVIRONMENT)" \ - LOG_COMPILER="$(VALGRIND_LOG_COMPILER)" \ - LOG_FLAGS="$(valgrind_sgcheck_flags)" \ - TEST_SUITE_LOG=test-suite-sgcheck.log -else - @echo "Need to reconfigure with --enable-valgrind" -endif - -A''M_DISTCHECK_CONFIGURE_FLAGS ?= -A''M_DISTCHECK_CONFIGURE_FLAGS += --disable-valgrind - -MOSTLYCLEANFILES ?= -MOSTLYCLEANFILES += $(valgrind_log_files) - -.PHONY: check-valgrind check-valgrind-tool -'] - - AC_SUBST([VALGRIND_CHECK_RULES]) - m4_ifdef([_AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE([VALGRIND_CHECK_RULES])]) -]) diff --git a/configure.ac b/configure.ac index dda6346a0f..547dface31 100644 --- a/configure.ac +++ b/configure.ac @@ -173,11 +173,6 @@ CFLAGS="$saved_cflags" # AIRCRACK_NG_CODE_COVERAGE -# -# Valgrind Support -# -AX_VALGRIND_CHECK - # # Compiler set-up # diff --git a/test/Makefile.inc b/test/Makefile.inc index 11d3a81fc2..165c56ff5c 100644 --- a/test/Makefile.inc +++ b/test/Makefile.inc @@ -216,8 +216,3 @@ if CMOCKA include %D%/unit/Makefile.inc endif include %D%/cryptounittest/Makefile.inc - - -VALGRIND_SUPPRESSIONS_FILES = $(abs_srcdir)/build/valgrind.supp -EXTRA_DIST += %D%/../build/valgrind.supp -@VALGRIND_CHECK_RULES@