[Openvpn-devel] tests/unit_tests: Fix 'make distcheck' with subdir-objects enabled

Message ID 20230308150704.128797-1-frank@lichtenheld.com
State Accepted
Headers show
Series [Openvpn-devel] tests/unit_tests: Fix 'make distcheck' with subdir-objects enabled | expand

Commit Message

Frank Lichtenheld March 8, 2023, 3:07 p.m. UTC
Commit 7f72abcf8a56bb35a510a3409e03a4e2aaba50da enabled subdir-objects
when using automake 1.16+.

There is an issue with the handling of .deps directories with this option.
While automake 1.16 fixed subdir-objects to work at all when _SOURCES
contains "unexpanded references" and it did fix subdir-objects to work
with out-of-tree build for "source files specified with an explicit
'$(srcdir)'" those fixes are not transitive. "unexpanded references"
still break out-of-tree builds when enforcing a read-only source dir
like 'make distcheck' does. When using *explicit* references to
srcdir and top_srcdir it works correctly.

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.com>
---
 tests/unit_tests/openvpn/Makefile.am          | 220 +++++++++---------
 tests/unit_tests/plugins/auth-pam/Makefile.am |   6 +-
 2 files changed, 110 insertions(+), 116 deletions(-)

Comments

Selva Nair March 9, 2023, 3:49 a.m. UTC | #1
Hi,

On Wed, Mar 8, 2023 at 10:08 AM Frank Lichtenheld <frank@lichtenheld.com>
wrote:

> Commit 7f72abcf8a56bb35a510a3409e03a4e2aaba50da enabled subdir-objects
> when using automake 1.16+.
>
> There is an issue with the handling of .deps directories with this option.
> While automake 1.16 fixed subdir-objects to work at all when _SOURCES
> contains "unexpanded references" and it did fix subdir-objects to work
> with out-of-tree build for "source files specified with an explicit
> '$(srcdir)'" those fixes are not transitive. "unexpanded references"
> still break out-of-tree builds when enforcing a read-only source dir
> like 'make distcheck' does. When using *explicit* references to
> srcdir and top_srcdir it works correctly.
>

Thanks for quickly finding a fix for this. Even after re-reading the related
changelog in automake a dozen times, I cannot figure arbitrary variable
expansion won't work as expected for out-of-tree builds with read-only
sources. But testing does show only $(srcdir) and $(top_srcdir) get
correctly handled, and the fix below appears to be a reasonable way out.

Tested "make distcheck" and also compared with a locally generated
search and replace version. LGTM.

Acked-by: Selva Nair <selva.nair@gmail.com>

<rant>We waited long enough to enable subdir-objects though automake
has been warning about this for almost a decade. Now they have softened
their stand on it from "this behaviour will change ..." and
"unconditionally cause ..." etc.. to "may change" in future. And, the
implementation is still lacking. In retrospect, we (I) could have waited
longer.
</rant>

Selva


> Signed-off-by: Frank Lichtenheld <frank@lichtenheld.com>
> ---
>  tests/unit_tests/openvpn/Makefile.am          | 220 +++++++++---------
>  tests/unit_tests/plugins/auth-pam/Makefile.am |   6 +-
>  2 files changed, 110 insertions(+), 116 deletions(-)
>
> diff --git a/tests/unit_tests/openvpn/Makefile.am
> b/tests/unit_tests/openvpn/Makefile.am
> index ee0a3d8a..339c7ef3 100644
> --- a/tests/unit_tests/openvpn/Makefile.am
> +++ b/tests/unit_tests/openvpn/Makefile.am
> @@ -30,189 +30,185 @@ if HAVE_SITNL
>  check_PROGRAMS += networking_testdriver
>  endif
>
> -openvpn_includedir = $(top_srcdir)/include
> -openvpn_srcdir = $(top_srcdir)/src/openvpn
> -compat_srcdir = $(top_srcdir)/src/compat
> -
> -argv_testdriver_CFLAGS  = @TEST_CFLAGS@ -I$(openvpn_srcdir)
> -I$(compat_srcdir)
> -argv_testdriver_LDFLAGS = @TEST_LDFLAGS@ -L$(openvpn_srcdir)
> -Wl,--wrap=parse_line
> +argv_testdriver_CFLAGS  = @TEST_CFLAGS@ -I$(top_srcdir)/src/openvpn
> -I$(top_srcdir)/src/compat
> +argv_testdriver_LDFLAGS = @TEST_LDFLAGS@ -L$(top_srcdir)/src/openvpn
> -Wl,--wrap=parse_line
>  argv_testdriver_SOURCES = test_argv.c mock_msg.c mock_msg.h \
>         mock_get_random.c \
> -       $(openvpn_srcdir)/platform.c \
> -       $(openvpn_srcdir)/buffer.c \
> -       $(openvpn_srcdir)/win32-util.c \
> -       $(openvpn_srcdir)/argv.c
> +       $(top_srcdir)/src/openvpn/platform.c \
> +       $(top_srcdir)/src/openvpn/buffer.c \
> +       $(top_srcdir)/src/openvpn/win32-util.c \
> +       $(top_srcdir)/src/openvpn/argv.c
>
> -buffer_testdriver_CFLAGS  = @TEST_CFLAGS@ -I$(openvpn_srcdir)
> -I$(compat_srcdir)
> -buffer_testdriver_LDFLAGS = @TEST_LDFLAGS@ -L$(openvpn_srcdir)
> -Wl,--wrap=parse_line
> +buffer_testdriver_CFLAGS  = @TEST_CFLAGS@ -I$(top_srcdir)/src/openvpn
> -I$(top_srcdir)/src/compat
> +buffer_testdriver_LDFLAGS = @TEST_LDFLAGS@ -L$(top_srcdir)/src/openvpn
> -Wl,--wrap=parse_line
>  buffer_testdriver_SOURCES = test_buffer.c mock_msg.c mock_msg.h \
>         mock_get_random.c \
> -       $(openvpn_srcdir)/win32-util.c \
> -       $(openvpn_srcdir)/platform.c
> +       $(top_srcdir)/src/openvpn/win32-util.c \
> +       $(top_srcdir)/src/openvpn/platform.c
>
>  crypto_testdriver_CFLAGS  = @TEST_CFLAGS@ \
> -       -I$(openvpn_includedir) -I$(compat_srcdir) -I$(openvpn_srcdir)
> +       -I$(top_srcdir)/include -I$(top_srcdir)/src/compat
> -I$(top_srcdir)/src/openvpn
>  crypto_testdriver_LDFLAGS = @TEST_LDFLAGS@
>  crypto_testdriver_SOURCES = test_crypto.c mock_msg.c mock_msg.h \
> -       $(openvpn_srcdir)/buffer.c \
> -       $(openvpn_srcdir)/crypto.c \
> -       $(openvpn_srcdir)/crypto_mbedtls.c \
> -       $(openvpn_srcdir)/crypto_openssl.c \
> -       $(openvpn_srcdir)/otime.c \
> -       $(openvpn_srcdir)/packet_id.c \
> -       $(openvpn_srcdir)/platform.c \
> -       $(openvpn_srcdir)/mtu.c \
> -       $(openvpn_srcdir)/win32-util.c \
> -       $(openvpn_srcdir)/mss.c
> +       $(top_srcdir)/src/openvpn/buffer.c \
> +       $(top_srcdir)/src/openvpn/crypto.c \
> +       $(top_srcdir)/src/openvpn/crypto_mbedtls.c \
> +       $(top_srcdir)/src/openvpn/crypto_openssl.c \
> +       $(top_srcdir)/src/openvpn/otime.c \
> +       $(top_srcdir)/src/openvpn/packet_id.c \
> +       $(top_srcdir)/src/openvpn/platform.c \
> +       $(top_srcdir)/src/openvpn/mtu.c \
> +       $(top_srcdir)/src/openvpn/win32-util.c \
> +       $(top_srcdir)/src/openvpn/mss.c
>
>  packet_id_testdriver_CFLAGS  = @TEST_CFLAGS@ \
> -       -I$(openvpn_includedir) -I$(compat_srcdir) -I$(openvpn_srcdir)
> +       -I$(top_srcdir)/include -I$(top_srcdir)/src/compat
> -I$(top_srcdir)/src/openvpn
>  packet_id_testdriver_LDFLAGS = @TEST_LDFLAGS@
>  packet_id_testdriver_SOURCES = test_packet_id.c mock_msg.c mock_msg.h \
>         mock_get_random.c \
> -       $(openvpn_srcdir)/buffer.c \
> -       $(openvpn_srcdir)/otime.c \
> -       $(openvpn_srcdir)/packet_id.c \
> -       $(openvpn_srcdir)/platform.c \
> -       $(openvpn_srcdir)/reliable.c \
> -       $(openvpn_srcdir)/win32-util.c \
> -       $(openvpn_srcdir)/session_id.c
> +       $(top_srcdir)/src/openvpn/buffer.c \
> +       $(top_srcdir)/src/openvpn/otime.c \
> +       $(top_srcdir)/src/openvpn/packet_id.c \
> +       $(top_srcdir)/src/openvpn/platform.c \
> +       $(top_srcdir)/src/openvpn/reliable.c \
> +       $(top_srcdir)/src/openvpn/win32-util.c \
> +       $(top_srcdir)/src/openvpn/session_id.c
>
>  pkt_testdriver_CFLAGS  = @TEST_CFLAGS@ \
> -       -I$(openvpn_includedir) -I$(compat_srcdir) -I$(openvpn_srcdir)
> +       -I$(top_srcdir)/include -I$(top_srcdir)/src/compat
> -I$(top_srcdir)/src/openvpn
>  pkt_testdriver_LDFLAGS = @TEST_LDFLAGS@
>  pkt_testdriver_SOURCES = test_pkt.c mock_msg.c mock_msg.h \
> -       $(openvpn_srcdir)/argv.c \
> -       $(openvpn_srcdir)/base64.c \
> -       $(openvpn_srcdir)/buffer.c \
> -       $(openvpn_srcdir)/crypto.c \
> -       $(openvpn_srcdir)/crypto_mbedtls.c \
> -       $(openvpn_srcdir)/crypto_openssl.c \
> -       $(openvpn_srcdir)/env_set.c \
> -       $(openvpn_srcdir)/otime.c \
> -       $(openvpn_srcdir)/packet_id.c \
> -       $(openvpn_srcdir)/platform.c \
> -       $(openvpn_srcdir)/reliable.c \
> -       $(openvpn_srcdir)/run_command.c \
> -       $(openvpn_srcdir)/session_id.c \
> -       $(openvpn_srcdir)/ssl_pkt.c \
> -       $(openvpn_srcdir)/win32-util.c \
> -       $(openvpn_srcdir)/tls_crypt.c
> +       $(top_srcdir)/src/openvpn/argv.c \
> +       $(top_srcdir)/src/openvpn/base64.c \
> +       $(top_srcdir)/src/openvpn/buffer.c \
> +       $(top_srcdir)/src/openvpn/crypto.c \
> +       $(top_srcdir)/src/openvpn/crypto_mbedtls.c \
> +       $(top_srcdir)/src/openvpn/crypto_openssl.c \
> +       $(top_srcdir)/src/openvpn/env_set.c \
> +       $(top_srcdir)/src/openvpn/otime.c \
> +       $(top_srcdir)/src/openvpn/packet_id.c \
> +       $(top_srcdir)/src/openvpn/platform.c \
> +       $(top_srcdir)/src/openvpn/reliable.c \
> +       $(top_srcdir)/src/openvpn/run_command.c \
> +       $(top_srcdir)/src/openvpn/session_id.c \
> +       $(top_srcdir)/src/openvpn/ssl_pkt.c \
> +       $(top_srcdir)/src/openvpn/win32-util.c \
> +       $(top_srcdir)/src/openvpn/tls_crypt.c
>
>  if !WIN32
>  tls_crypt_testdriver_CFLAGS  = @TEST_CFLAGS@ \
> -       -I$(openvpn_includedir) -I$(compat_srcdir) -I$(openvpn_srcdir)
> +       -I$(top_srcdir)/include -I$(top_srcdir)/src/compat
> -I$(top_srcdir)/src/openvpn
>  tls_crypt_testdriver_LDFLAGS = @TEST_LDFLAGS@ \
>         -Wl,--wrap=buffer_read_from_file \
>         -Wl,--wrap=buffer_write_file \
>         -Wl,--wrap=parse_line \
>         -Wl,--wrap=rand_bytes
>  tls_crypt_testdriver_SOURCES = test_tls_crypt.c mock_msg.c mock_msg.h \
> -       $(openvpn_srcdir)/argv.c \
> -       $(openvpn_srcdir)/base64.c \
> -       $(openvpn_srcdir)/buffer.c \
> -       $(openvpn_srcdir)/crypto.c \
> -       $(openvpn_srcdir)/crypto_mbedtls.c \
> -       $(openvpn_srcdir)/crypto_openssl.c \
> -       $(openvpn_srcdir)/env_set.c \
> -       $(openvpn_srcdir)/otime.c \
> -       $(openvpn_srcdir)/packet_id.c \
> -       $(openvpn_srcdir)/platform.c \
> -       $(openvpn_srcdir)/run_command.c
> +       $(top_srcdir)/src/openvpn/argv.c \
> +       $(top_srcdir)/src/openvpn/base64.c \
> +       $(top_srcdir)/src/openvpn/buffer.c \
> +       $(top_srcdir)/src/openvpn/crypto.c \
> +       $(top_srcdir)/src/openvpn/crypto_mbedtls.c \
> +       $(top_srcdir)/src/openvpn/crypto_openssl.c \
> +       $(top_srcdir)/src/openvpn/env_set.c \
> +       $(top_srcdir)/src/openvpn/otime.c \
> +       $(top_srcdir)/src/openvpn/packet_id.c \
> +       $(top_srcdir)/src/openvpn/platform.c \
> +       $(top_srcdir)/src/openvpn/run_command.c
>  endif
>
>  if HAVE_SITNL
>  networking_testdriver_CFLAGS = @TEST_CFLAGS@ \
> -       -I$(openvpn_includedir) -I$(compat_srcdir) -I$(openvpn_srcdir) \
> +       -I$(top_srcdir)/include -I$(top_srcdir)/src/compat
> -I$(top_srcdir)/src/openvpn \
>         $(OPTIONAL_CRYPTO_CFLAGS)
> -networking_testdriver_LDFLAGS = @TEST_LDFLAGS@ -L$(openvpn_srcdir) \
> +networking_testdriver_LDFLAGS = @TEST_LDFLAGS@
> -L$(top_srcdir)/src/openvpn \
>         $(OPTIONAL_CRYPTO_LIBS)
>  networking_testdriver_SOURCES = test_networking.c mock_msg.c \
> -       $(openvpn_srcdir)/networking_sitnl.c \
> -       $(openvpn_srcdir)/buffer.c \
> -       $(openvpn_srcdir)/crypto.c \
> -       $(openvpn_srcdir)/crypto_mbedtls.c \
> -       $(openvpn_srcdir)/crypto_openssl.c \
> -       $(openvpn_srcdir)/otime.c \
> -       $(openvpn_srcdir)/packet_id.c \
> -       $(openvpn_srcdir)/platform.c
> +       $(top_srcdir)/src/openvpn/networking_sitnl.c \
> +       $(top_srcdir)/src/openvpn/buffer.c \
> +       $(top_srcdir)/src/openvpn/crypto.c \
> +       $(top_srcdir)/src/openvpn/crypto_mbedtls.c \
> +       $(top_srcdir)/src/openvpn/crypto_openssl.c \
> +       $(top_srcdir)/src/openvpn/otime.c \
> +       $(top_srcdir)/src/openvpn/packet_id.c \
> +       $(top_srcdir)/src/openvpn/platform.c
>  endif
>
>  provider_testdriver_CFLAGS  = @TEST_CFLAGS@ \
> -       -I$(openvpn_includedir) -I$(compat_srcdir) -I$(openvpn_srcdir) \
> +       -I$(top_srcdir)/include -I$(top_srcdir)/src/compat
> -I$(top_srcdir)/src/openvpn \
>         $(OPTIONAL_CRYPTO_CFLAGS)
>  provider_testdriver_LDFLAGS = @TEST_LDFLAGS@ \
>         $(OPTIONAL_CRYPTO_LIBS)
>
>  provider_testdriver_SOURCES = test_provider.c mock_msg.c \
> -       $(openvpn_srcdir)/xkey_helper.c \
> -       $(openvpn_srcdir)/xkey_provider.c \
> -       $(openvpn_srcdir)/buffer.c \
> -       $(openvpn_srcdir)/base64.c \
> +       $(top_srcdir)/src/openvpn/xkey_helper.c \
> +       $(top_srcdir)/src/openvpn/xkey_provider.c \
> +       $(top_srcdir)/src/openvpn/buffer.c \
> +       $(top_srcdir)/src/openvpn/base64.c \
>         mock_get_random.c \
> -       $(openvpn_srcdir)/win32-util.c \
> -       $(openvpn_srcdir)/platform.c
> +       $(top_srcdir)/src/openvpn/win32-util.c \
> +       $(top_srcdir)/src/openvpn/platform.c
>
>  if WIN32
>  cryptoapi_testdriver_CFLAGS  = @TEST_CFLAGS@ \
> -       -I$(openvpn_includedir) -I$(compat_srcdir) -I$(openvpn_srcdir) \
> +       -I$(top_srcdir)/include -I$(top_srcdir)/src/compat
> -I$(top_srcdir)/src/openvpn \
>         $(OPTIONAL_CRYPTO_CFLAGS)
>  cryptoapi_testdriver_LDFLAGS = @TEST_LDFLAGS@ \
>         $(OPTIONAL_CRYPTO_LIBS) -lcrypt32 -lncrypt
>  cryptoapi_testdriver_SOURCES = test_cryptoapi.c mock_msg.c \
> -       $(openvpn_srcdir)/xkey_helper.c \
> -       $(openvpn_srcdir)/buffer.c \
> -       $(openvpn_srcdir)/base64.c \
> -       $(openvpn_srcdir)/platform.c \
> +       $(top_srcdir)/src/openvpn/xkey_helper.c \
> +       $(top_srcdir)/src/openvpn/buffer.c \
> +       $(top_srcdir)/src/openvpn/base64.c \
> +       $(top_srcdir)/src/openvpn/platform.c \
>         mock_get_random.c \
> -       $(openvpn_srcdir)/win32-util.c
> +       $(top_srcdir)/src/openvpn/win32-util.c
>  endif
>
>  auth_token_testdriver_CFLAGS  = @TEST_CFLAGS@ \
> -       -I$(openvpn_includedir) -I$(compat_srcdir) -I$(openvpn_srcdir) \
> +       -I$(top_srcdir)/include -I$(top_srcdir)/src/compat
> -I$(top_srcdir)/src/openvpn \
>         $(OPTIONAL_CRYPTO_CFLAGS)
>  auth_token_testdriver_LDFLAGS = @TEST_LDFLAGS@ \
>         $(OPTIONAL_CRYPTO_LIBS)
>
>  auth_token_testdriver_SOURCES = test_auth_token.c mock_msg.c \
> -       $(openvpn_srcdir)/buffer.c \
> -       $(openvpn_srcdir)/crypto.c \
> -       $(openvpn_srcdir)/crypto_mbedtls.c \
> -       $(openvpn_srcdir)/crypto_openssl.c \
> -       $(openvpn_srcdir)/otime.c \
> -       $(openvpn_srcdir)/packet_id.c \
> -       $(openvpn_srcdir)/platform.c \
> -       $(openvpn_srcdir)/win32-util.c \
> -       $(openvpn_srcdir)/base64.c
> +       $(top_srcdir)/src/openvpn/buffer.c \
> +       $(top_srcdir)/src/openvpn/crypto.c \
> +       $(top_srcdir)/src/openvpn/crypto_mbedtls.c \
> +       $(top_srcdir)/src/openvpn/crypto_openssl.c \
> +       $(top_srcdir)/src/openvpn/otime.c \
> +       $(top_srcdir)/src/openvpn/packet_id.c \
> +       $(top_srcdir)/src/openvpn/platform.c \
> +       $(top_srcdir)/src/openvpn/win32-util.c \
> +       $(top_srcdir)/src/openvpn/base64.c
>
>
>  ncp_testdriver_CFLAGS  = @TEST_CFLAGS@ \
> -       -I$(openvpn_includedir) -I$(compat_srcdir) -I$(openvpn_srcdir) \
> +       -I$(top_srcdir)/include -I$(top_srcdir)/src/compat
> -I$(top_srcdir)/src/openvpn \
>         $(OPTIONAL_CRYPTO_CFLAGS)
>  ncp_testdriver_LDFLAGS = @TEST_LDFLAGS@ \
>         $(OPTIONAL_CRYPTO_LIBS)
>
>  ncp_testdriver_SOURCES = test_ncp.c mock_msg.c \
> -       $(openvpn_srcdir)/buffer.c \
> -       $(openvpn_srcdir)/crypto.c \
> -       $(openvpn_srcdir)/crypto_mbedtls.c \
> -       $(openvpn_srcdir)/crypto_openssl.c \
> -       $(openvpn_srcdir)/otime.c \
> -       $(openvpn_srcdir)/packet_id.c \
> -       $(openvpn_srcdir)/platform.c \
> -       $(openvpn_srcdir)/win32-util.c \
> -       $(compat_srcdir)/compat-strsep.c \
> -       $(openvpn_srcdir)/ssl_util.c
> +       $(top_srcdir)/src/openvpn/buffer.c \
> +       $(top_srcdir)/src/openvpn/crypto.c \
> +       $(top_srcdir)/src/openvpn/crypto_mbedtls.c \
> +       $(top_srcdir)/src/openvpn/crypto_openssl.c \
> +       $(top_srcdir)/src/openvpn/otime.c \
> +       $(top_srcdir)/src/openvpn/packet_id.c \
> +       $(top_srcdir)/src/openvpn/platform.c \
> +       $(top_srcdir)/src/openvpn/win32-util.c \
> +       $(top_srcdir)/src/compat/compat-strsep.c \
> +       $(top_srcdir)/src/openvpn/ssl_util.c
>
>  misc_testdriver_CFLAGS  = @TEST_CFLAGS@ \
> -       -I$(openvpn_includedir) -I$(compat_srcdir) -I$(openvpn_srcdir)
> +       -I$(top_srcdir)/include -I$(top_srcdir)/src/compat
> -I$(top_srcdir)/src/openvpn
>
>  misc_testdriver_LDFLAGS = @TEST_LDFLAGS@
>
>  misc_testdriver_SOURCES = test_misc.c mock_msg.c \
>         mock_get_random.c \
> -       $(openvpn_srcdir)/buffer.c \
> -       $(openvpn_srcdir)/options_util.c \
> -       $(openvpn_srcdir)/ssl_util.c \
> -       $(openvpn_srcdir)/win32-util.c \
> -       $(openvpn_srcdir)/platform.c
> +       $(top_srcdir)/src/openvpn/buffer.c \
> +       $(top_srcdir)/src/openvpn/options_util.c \
> +       $(top_srcdir)/src/openvpn/ssl_util.c \
> +       $(top_srcdir)/src/openvpn/win32-util.c \
> +       $(top_srcdir)/src/openvpn/platform.c
> diff --git a/tests/unit_tests/plugins/auth-pam/Makefile.am
> b/tests/unit_tests/plugins/auth-pam/Makefile.am
> index 07233eee..de5e96e6 100644
> --- a/tests/unit_tests/plugins/auth-pam/Makefile.am
> +++ b/tests/unit_tests/plugins/auth-pam/Makefile.am
> @@ -5,8 +5,6 @@ check_PROGRAMS = auth_pam_testdriver
>  TESTS = $(check_PROGRAMS)
>  endif
>
> -sut_sourcedir = $(top_srcdir)/src/plugins/auth-pam
> -
> -auth_pam_testdriver_SOURCES = test_search_and_replace.c
> $(sut_sourcedir)/utils.h $(sut_sourcedir)/utils.c
> -auth_pam_testdriver_CFLAGS  = @TEST_CFLAGS@ -I$(sut_sourcedir)
> +auth_pam_testdriver_SOURCES = test_search_and_replace.c
> $(top_srcdir)/src/plugins/auth-pam/utils.h
> $(top_srcdir)/src/plugins/auth-pam/utils.c
> +auth_pam_testdriver_CFLAGS  = @TEST_CFLAGS@
> -I$(top_srcdir)/src/plugins/auth-pam
>  auth_pam_testdriver_LDFLAGS = @TEST_LDFLAGS@
> --
>
>
>
> _______________________________________________
> Openvpn-devel mailing list
> Openvpn-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/openvpn-devel
>
Gert Doering March 9, 2023, 7:37 p.m. UTC | #2
Tested in-tree and out-of-tree builds, regular "make check" and also
"make distcheck", Linux and FreeBSD.  All works.

Your patch has been applied to the master and release/2.6 branch.

commit 838474145933199a62d1f59fbc2df14e4fbd57f3 (master)
commit 5eb94ce9ef2d4095004a0a3c9dbf3aeae78cf371 (release/2.6)
Author: Frank Lichtenheld
Date:   Wed Mar 8 16:07:04 2023 +0100

     tests/unit_tests: Fix 'make distcheck' with subdir-objects enabled

     Signed-off-by: Frank Lichtenheld <frank@lichtenheld.com>
     Acked-by: Selva Nair <selva.nair@gmail.com>
     Message-Id: <20230308150704.128797-1-frank@lichtenheld.com>
     URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg26352.html
     Signed-off-by: Gert Doering <gert@greenie.muc.de>


--
kind regards,

Gert Doering

Patch

diff --git a/tests/unit_tests/openvpn/Makefile.am b/tests/unit_tests/openvpn/Makefile.am
index ee0a3d8a..339c7ef3 100644
--- a/tests/unit_tests/openvpn/Makefile.am
+++ b/tests/unit_tests/openvpn/Makefile.am
@@ -30,189 +30,185 @@  if HAVE_SITNL
 check_PROGRAMS += networking_testdriver
 endif
 
-openvpn_includedir = $(top_srcdir)/include
-openvpn_srcdir = $(top_srcdir)/src/openvpn
-compat_srcdir = $(top_srcdir)/src/compat
-
-argv_testdriver_CFLAGS  = @TEST_CFLAGS@ -I$(openvpn_srcdir) -I$(compat_srcdir)
-argv_testdriver_LDFLAGS = @TEST_LDFLAGS@ -L$(openvpn_srcdir) -Wl,--wrap=parse_line
+argv_testdriver_CFLAGS  = @TEST_CFLAGS@ -I$(top_srcdir)/src/openvpn -I$(top_srcdir)/src/compat
+argv_testdriver_LDFLAGS = @TEST_LDFLAGS@ -L$(top_srcdir)/src/openvpn -Wl,--wrap=parse_line
 argv_testdriver_SOURCES = test_argv.c mock_msg.c mock_msg.h \
 	mock_get_random.c \
-	$(openvpn_srcdir)/platform.c \
-	$(openvpn_srcdir)/buffer.c \
-	$(openvpn_srcdir)/win32-util.c \
-	$(openvpn_srcdir)/argv.c
+	$(top_srcdir)/src/openvpn/platform.c \
+	$(top_srcdir)/src/openvpn/buffer.c \
+	$(top_srcdir)/src/openvpn/win32-util.c \
+	$(top_srcdir)/src/openvpn/argv.c
 
-buffer_testdriver_CFLAGS  = @TEST_CFLAGS@ -I$(openvpn_srcdir) -I$(compat_srcdir)
-buffer_testdriver_LDFLAGS = @TEST_LDFLAGS@ -L$(openvpn_srcdir) -Wl,--wrap=parse_line
+buffer_testdriver_CFLAGS  = @TEST_CFLAGS@ -I$(top_srcdir)/src/openvpn -I$(top_srcdir)/src/compat
+buffer_testdriver_LDFLAGS = @TEST_LDFLAGS@ -L$(top_srcdir)/src/openvpn -Wl,--wrap=parse_line
 buffer_testdriver_SOURCES = test_buffer.c mock_msg.c mock_msg.h \
 	mock_get_random.c \
-	$(openvpn_srcdir)/win32-util.c \
-	$(openvpn_srcdir)/platform.c
+	$(top_srcdir)/src/openvpn/win32-util.c \
+	$(top_srcdir)/src/openvpn/platform.c
 
 crypto_testdriver_CFLAGS  = @TEST_CFLAGS@ \
-	-I$(openvpn_includedir) -I$(compat_srcdir) -I$(openvpn_srcdir)
+	-I$(top_srcdir)/include -I$(top_srcdir)/src/compat -I$(top_srcdir)/src/openvpn
 crypto_testdriver_LDFLAGS = @TEST_LDFLAGS@
 crypto_testdriver_SOURCES = test_crypto.c mock_msg.c mock_msg.h \
-	$(openvpn_srcdir)/buffer.c \
-	$(openvpn_srcdir)/crypto.c \
-	$(openvpn_srcdir)/crypto_mbedtls.c \
-	$(openvpn_srcdir)/crypto_openssl.c \
-	$(openvpn_srcdir)/otime.c \
-	$(openvpn_srcdir)/packet_id.c \
-	$(openvpn_srcdir)/platform.c \
-	$(openvpn_srcdir)/mtu.c \
-	$(openvpn_srcdir)/win32-util.c \
-	$(openvpn_srcdir)/mss.c
+	$(top_srcdir)/src/openvpn/buffer.c \
+	$(top_srcdir)/src/openvpn/crypto.c \
+	$(top_srcdir)/src/openvpn/crypto_mbedtls.c \
+	$(top_srcdir)/src/openvpn/crypto_openssl.c \
+	$(top_srcdir)/src/openvpn/otime.c \
+	$(top_srcdir)/src/openvpn/packet_id.c \
+	$(top_srcdir)/src/openvpn/platform.c \
+	$(top_srcdir)/src/openvpn/mtu.c \
+	$(top_srcdir)/src/openvpn/win32-util.c \
+	$(top_srcdir)/src/openvpn/mss.c
 
 packet_id_testdriver_CFLAGS  = @TEST_CFLAGS@ \
-	-I$(openvpn_includedir) -I$(compat_srcdir) -I$(openvpn_srcdir)
+	-I$(top_srcdir)/include -I$(top_srcdir)/src/compat -I$(top_srcdir)/src/openvpn
 packet_id_testdriver_LDFLAGS = @TEST_LDFLAGS@
 packet_id_testdriver_SOURCES = test_packet_id.c mock_msg.c mock_msg.h \
 	mock_get_random.c \
-	$(openvpn_srcdir)/buffer.c \
-	$(openvpn_srcdir)/otime.c \
-	$(openvpn_srcdir)/packet_id.c \
-	$(openvpn_srcdir)/platform.c \
-	$(openvpn_srcdir)/reliable.c \
-	$(openvpn_srcdir)/win32-util.c \
-	$(openvpn_srcdir)/session_id.c
+	$(top_srcdir)/src/openvpn/buffer.c \
+	$(top_srcdir)/src/openvpn/otime.c \
+	$(top_srcdir)/src/openvpn/packet_id.c \
+	$(top_srcdir)/src/openvpn/platform.c \
+	$(top_srcdir)/src/openvpn/reliable.c \
+	$(top_srcdir)/src/openvpn/win32-util.c \
+	$(top_srcdir)/src/openvpn/session_id.c
 
 pkt_testdriver_CFLAGS  = @TEST_CFLAGS@ \
-	-I$(openvpn_includedir) -I$(compat_srcdir) -I$(openvpn_srcdir)
+	-I$(top_srcdir)/include -I$(top_srcdir)/src/compat -I$(top_srcdir)/src/openvpn
 pkt_testdriver_LDFLAGS = @TEST_LDFLAGS@
 pkt_testdriver_SOURCES = test_pkt.c mock_msg.c mock_msg.h \
-	$(openvpn_srcdir)/argv.c \
-	$(openvpn_srcdir)/base64.c \
-	$(openvpn_srcdir)/buffer.c \
-	$(openvpn_srcdir)/crypto.c \
-	$(openvpn_srcdir)/crypto_mbedtls.c \
-	$(openvpn_srcdir)/crypto_openssl.c \
-	$(openvpn_srcdir)/env_set.c \
-	$(openvpn_srcdir)/otime.c \
-	$(openvpn_srcdir)/packet_id.c \
-	$(openvpn_srcdir)/platform.c \
-	$(openvpn_srcdir)/reliable.c \
-	$(openvpn_srcdir)/run_command.c \
-	$(openvpn_srcdir)/session_id.c \
-	$(openvpn_srcdir)/ssl_pkt.c \
-	$(openvpn_srcdir)/win32-util.c \
-	$(openvpn_srcdir)/tls_crypt.c
+	$(top_srcdir)/src/openvpn/argv.c \
+	$(top_srcdir)/src/openvpn/base64.c \
+	$(top_srcdir)/src/openvpn/buffer.c \
+	$(top_srcdir)/src/openvpn/crypto.c \
+	$(top_srcdir)/src/openvpn/crypto_mbedtls.c \
+	$(top_srcdir)/src/openvpn/crypto_openssl.c \
+	$(top_srcdir)/src/openvpn/env_set.c \
+	$(top_srcdir)/src/openvpn/otime.c \
+	$(top_srcdir)/src/openvpn/packet_id.c \
+	$(top_srcdir)/src/openvpn/platform.c \
+	$(top_srcdir)/src/openvpn/reliable.c \
+	$(top_srcdir)/src/openvpn/run_command.c \
+	$(top_srcdir)/src/openvpn/session_id.c \
+	$(top_srcdir)/src/openvpn/ssl_pkt.c \
+	$(top_srcdir)/src/openvpn/win32-util.c \
+	$(top_srcdir)/src/openvpn/tls_crypt.c
 
 if !WIN32
 tls_crypt_testdriver_CFLAGS  = @TEST_CFLAGS@ \
-	-I$(openvpn_includedir) -I$(compat_srcdir) -I$(openvpn_srcdir)
+	-I$(top_srcdir)/include -I$(top_srcdir)/src/compat -I$(top_srcdir)/src/openvpn
 tls_crypt_testdriver_LDFLAGS = @TEST_LDFLAGS@ \
 	-Wl,--wrap=buffer_read_from_file \
 	-Wl,--wrap=buffer_write_file \
 	-Wl,--wrap=parse_line \
 	-Wl,--wrap=rand_bytes
 tls_crypt_testdriver_SOURCES = test_tls_crypt.c mock_msg.c mock_msg.h \
-	$(openvpn_srcdir)/argv.c \
-	$(openvpn_srcdir)/base64.c \
-	$(openvpn_srcdir)/buffer.c \
-	$(openvpn_srcdir)/crypto.c \
-	$(openvpn_srcdir)/crypto_mbedtls.c \
-	$(openvpn_srcdir)/crypto_openssl.c \
-	$(openvpn_srcdir)/env_set.c \
-	$(openvpn_srcdir)/otime.c \
-	$(openvpn_srcdir)/packet_id.c \
-	$(openvpn_srcdir)/platform.c \
-	$(openvpn_srcdir)/run_command.c
+	$(top_srcdir)/src/openvpn/argv.c \
+	$(top_srcdir)/src/openvpn/base64.c \
+	$(top_srcdir)/src/openvpn/buffer.c \
+	$(top_srcdir)/src/openvpn/crypto.c \
+	$(top_srcdir)/src/openvpn/crypto_mbedtls.c \
+	$(top_srcdir)/src/openvpn/crypto_openssl.c \
+	$(top_srcdir)/src/openvpn/env_set.c \
+	$(top_srcdir)/src/openvpn/otime.c \
+	$(top_srcdir)/src/openvpn/packet_id.c \
+	$(top_srcdir)/src/openvpn/platform.c \
+	$(top_srcdir)/src/openvpn/run_command.c
 endif
 
 if HAVE_SITNL
 networking_testdriver_CFLAGS = @TEST_CFLAGS@ \
-	-I$(openvpn_includedir) -I$(compat_srcdir) -I$(openvpn_srcdir) \
+	-I$(top_srcdir)/include -I$(top_srcdir)/src/compat -I$(top_srcdir)/src/openvpn \
 	$(OPTIONAL_CRYPTO_CFLAGS)
-networking_testdriver_LDFLAGS = @TEST_LDFLAGS@ -L$(openvpn_srcdir) \
+networking_testdriver_LDFLAGS = @TEST_LDFLAGS@ -L$(top_srcdir)/src/openvpn \
 	$(OPTIONAL_CRYPTO_LIBS)
 networking_testdriver_SOURCES = test_networking.c mock_msg.c \
-	$(openvpn_srcdir)/networking_sitnl.c \
-	$(openvpn_srcdir)/buffer.c \
-	$(openvpn_srcdir)/crypto.c \
-	$(openvpn_srcdir)/crypto_mbedtls.c \
-	$(openvpn_srcdir)/crypto_openssl.c \
-	$(openvpn_srcdir)/otime.c \
-	$(openvpn_srcdir)/packet_id.c \
-	$(openvpn_srcdir)/platform.c
+	$(top_srcdir)/src/openvpn/networking_sitnl.c \
+	$(top_srcdir)/src/openvpn/buffer.c \
+	$(top_srcdir)/src/openvpn/crypto.c \
+	$(top_srcdir)/src/openvpn/crypto_mbedtls.c \
+	$(top_srcdir)/src/openvpn/crypto_openssl.c \
+	$(top_srcdir)/src/openvpn/otime.c \
+	$(top_srcdir)/src/openvpn/packet_id.c \
+	$(top_srcdir)/src/openvpn/platform.c
 endif
 
 provider_testdriver_CFLAGS  = @TEST_CFLAGS@ \
-	-I$(openvpn_includedir) -I$(compat_srcdir) -I$(openvpn_srcdir) \
+	-I$(top_srcdir)/include -I$(top_srcdir)/src/compat -I$(top_srcdir)/src/openvpn \
 	$(OPTIONAL_CRYPTO_CFLAGS)
 provider_testdriver_LDFLAGS = @TEST_LDFLAGS@ \
 	$(OPTIONAL_CRYPTO_LIBS)
 
 provider_testdriver_SOURCES = test_provider.c mock_msg.c \
-	$(openvpn_srcdir)/xkey_helper.c \
-	$(openvpn_srcdir)/xkey_provider.c \
-	$(openvpn_srcdir)/buffer.c \
-	$(openvpn_srcdir)/base64.c \
+	$(top_srcdir)/src/openvpn/xkey_helper.c \
+	$(top_srcdir)/src/openvpn/xkey_provider.c \
+	$(top_srcdir)/src/openvpn/buffer.c \
+	$(top_srcdir)/src/openvpn/base64.c \
 	mock_get_random.c \
-	$(openvpn_srcdir)/win32-util.c \
-	$(openvpn_srcdir)/platform.c
+	$(top_srcdir)/src/openvpn/win32-util.c \
+	$(top_srcdir)/src/openvpn/platform.c
 
 if WIN32
 cryptoapi_testdriver_CFLAGS  = @TEST_CFLAGS@ \
-	-I$(openvpn_includedir) -I$(compat_srcdir) -I$(openvpn_srcdir) \
+	-I$(top_srcdir)/include -I$(top_srcdir)/src/compat -I$(top_srcdir)/src/openvpn \
 	$(OPTIONAL_CRYPTO_CFLAGS)
 cryptoapi_testdriver_LDFLAGS = @TEST_LDFLAGS@ \
 	$(OPTIONAL_CRYPTO_LIBS) -lcrypt32 -lncrypt
 cryptoapi_testdriver_SOURCES = test_cryptoapi.c mock_msg.c \
-	$(openvpn_srcdir)/xkey_helper.c \
-	$(openvpn_srcdir)/buffer.c \
-	$(openvpn_srcdir)/base64.c \
-	$(openvpn_srcdir)/platform.c \
+	$(top_srcdir)/src/openvpn/xkey_helper.c \
+	$(top_srcdir)/src/openvpn/buffer.c \
+	$(top_srcdir)/src/openvpn/base64.c \
+	$(top_srcdir)/src/openvpn/platform.c \
 	mock_get_random.c \
-	$(openvpn_srcdir)/win32-util.c
+	$(top_srcdir)/src/openvpn/win32-util.c
 endif
 
 auth_token_testdriver_CFLAGS  = @TEST_CFLAGS@ \
-	-I$(openvpn_includedir) -I$(compat_srcdir) -I$(openvpn_srcdir) \
+	-I$(top_srcdir)/include -I$(top_srcdir)/src/compat -I$(top_srcdir)/src/openvpn \
 	$(OPTIONAL_CRYPTO_CFLAGS)
 auth_token_testdriver_LDFLAGS = @TEST_LDFLAGS@ \
 	$(OPTIONAL_CRYPTO_LIBS)
 
 auth_token_testdriver_SOURCES = test_auth_token.c mock_msg.c \
-	$(openvpn_srcdir)/buffer.c \
-	$(openvpn_srcdir)/crypto.c \
-	$(openvpn_srcdir)/crypto_mbedtls.c \
-	$(openvpn_srcdir)/crypto_openssl.c \
-	$(openvpn_srcdir)/otime.c \
-	$(openvpn_srcdir)/packet_id.c \
-	$(openvpn_srcdir)/platform.c \
-	$(openvpn_srcdir)/win32-util.c \
-	$(openvpn_srcdir)/base64.c
+	$(top_srcdir)/src/openvpn/buffer.c \
+	$(top_srcdir)/src/openvpn/crypto.c \
+	$(top_srcdir)/src/openvpn/crypto_mbedtls.c \
+	$(top_srcdir)/src/openvpn/crypto_openssl.c \
+	$(top_srcdir)/src/openvpn/otime.c \
+	$(top_srcdir)/src/openvpn/packet_id.c \
+	$(top_srcdir)/src/openvpn/platform.c \
+	$(top_srcdir)/src/openvpn/win32-util.c \
+	$(top_srcdir)/src/openvpn/base64.c
 
 
 ncp_testdriver_CFLAGS  = @TEST_CFLAGS@ \
-	-I$(openvpn_includedir) -I$(compat_srcdir) -I$(openvpn_srcdir) \
+	-I$(top_srcdir)/include -I$(top_srcdir)/src/compat -I$(top_srcdir)/src/openvpn \
 	$(OPTIONAL_CRYPTO_CFLAGS)
 ncp_testdriver_LDFLAGS = @TEST_LDFLAGS@ \
 	$(OPTIONAL_CRYPTO_LIBS)
 
 ncp_testdriver_SOURCES = test_ncp.c mock_msg.c \
-	$(openvpn_srcdir)/buffer.c \
-	$(openvpn_srcdir)/crypto.c \
-	$(openvpn_srcdir)/crypto_mbedtls.c \
-	$(openvpn_srcdir)/crypto_openssl.c \
-	$(openvpn_srcdir)/otime.c \
-	$(openvpn_srcdir)/packet_id.c \
-	$(openvpn_srcdir)/platform.c \
-	$(openvpn_srcdir)/win32-util.c \
-	$(compat_srcdir)/compat-strsep.c \
-	$(openvpn_srcdir)/ssl_util.c
+	$(top_srcdir)/src/openvpn/buffer.c \
+	$(top_srcdir)/src/openvpn/crypto.c \
+	$(top_srcdir)/src/openvpn/crypto_mbedtls.c \
+	$(top_srcdir)/src/openvpn/crypto_openssl.c \
+	$(top_srcdir)/src/openvpn/otime.c \
+	$(top_srcdir)/src/openvpn/packet_id.c \
+	$(top_srcdir)/src/openvpn/platform.c \
+	$(top_srcdir)/src/openvpn/win32-util.c \
+	$(top_srcdir)/src/compat/compat-strsep.c \
+	$(top_srcdir)/src/openvpn/ssl_util.c
 
 misc_testdriver_CFLAGS  = @TEST_CFLAGS@ \
-	-I$(openvpn_includedir) -I$(compat_srcdir) -I$(openvpn_srcdir)
+	-I$(top_srcdir)/include -I$(top_srcdir)/src/compat -I$(top_srcdir)/src/openvpn
 
 misc_testdriver_LDFLAGS = @TEST_LDFLAGS@
 
 misc_testdriver_SOURCES = test_misc.c mock_msg.c \
 	mock_get_random.c \
-	$(openvpn_srcdir)/buffer.c \
-	$(openvpn_srcdir)/options_util.c \
-	$(openvpn_srcdir)/ssl_util.c \
-	$(openvpn_srcdir)/win32-util.c \
-	$(openvpn_srcdir)/platform.c
+	$(top_srcdir)/src/openvpn/buffer.c \
+	$(top_srcdir)/src/openvpn/options_util.c \
+	$(top_srcdir)/src/openvpn/ssl_util.c \
+	$(top_srcdir)/src/openvpn/win32-util.c \
+	$(top_srcdir)/src/openvpn/platform.c
diff --git a/tests/unit_tests/plugins/auth-pam/Makefile.am b/tests/unit_tests/plugins/auth-pam/Makefile.am
index 07233eee..de5e96e6 100644
--- a/tests/unit_tests/plugins/auth-pam/Makefile.am
+++ b/tests/unit_tests/plugins/auth-pam/Makefile.am
@@ -5,8 +5,6 @@  check_PROGRAMS = auth_pam_testdriver
 TESTS = $(check_PROGRAMS)
 endif
 
-sut_sourcedir = $(top_srcdir)/src/plugins/auth-pam
-
-auth_pam_testdriver_SOURCES = test_search_and_replace.c  $(sut_sourcedir)/utils.h $(sut_sourcedir)/utils.c
-auth_pam_testdriver_CFLAGS  = @TEST_CFLAGS@ -I$(sut_sourcedir)
+auth_pam_testdriver_SOURCES = test_search_and_replace.c  $(top_srcdir)/src/plugins/auth-pam/utils.h $(top_srcdir)/src/plugins/auth-pam/utils.c
+auth_pam_testdriver_CFLAGS  = @TEST_CFLAGS@ -I$(top_srcdir)/src/plugins/auth-pam
 auth_pam_testdriver_LDFLAGS = @TEST_LDFLAGS@