Hi, On Wed, Mar 8, 2023 at 10:08 AM Frank Lichtenheld <fr...@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.n...@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 <fr...@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 >
_______________________________________________ Openvpn-devel mailing list Openvpn-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/openvpn-devel