From: Andreas Rottmann <a.rottmann(a)gmx.at>
Having subdir-objects enabled is recommended by automake 1.14, to avoid
future incompatibilities.
However, adding that option breaks out-of-tree builds, and also seems to
break "make distclean" for in-tree builds. The reason is that
apparently, automake with subdir-objects enabled cannot cope with source
files in a different, non-child directory. To avoid that, we simply
compile the files referenced in this way into a static library in their
own source directory, and instead of referencing the source files, we
link against that library.
Besides making the build system a bit more future proof, this change
also potentially enhances build times, as it reduces the number of
compiler invocations, in exchange a slight increase of "ar" invocations.
---
openbsc/configure.ac | 2 +-
openbsc/src/gprs/Makefile.am | 20 ++++++++++++--------
openbsc/src/osmo-bsc_nat/Makefile.am | 7 +++++--
openbsc/tests/bsc-nat-trie/Makefile.am | 6 +++---
openbsc/tests/bsc-nat/Makefile.am | 11 +++--------
openbsc/tests/bsc/Makefile.am | 6 +++---
openbsc/tests/gprs/Makefile.am | 6 +++---
openbsc/tests/smpp/Makefile.am | 7 ++++---
8 files changed, 34 insertions(+), 31 deletions(-)
diff --git a/openbsc/configure.ac b/openbsc/configure.ac
index fb6feb9..e022393 100644
--- a/openbsc/configure.ac
+++ b/openbsc/configure.ac
@@ -3,7 +3,7 @@ AC_INIT([openbsc],
m4_esyscmd([./git-version-gen .tarball-version]),
[openbsc(a)lists.osmocom.org])
-AM_INIT_AUTOMAKE([dist-bzip2])
+AM_INIT_AUTOMAKE([subdir-objects dist-bzip2])
AC_CONFIG_TESTDIR(tests)
dnl kernel style compile messages
diff --git a/openbsc/src/gprs/Makefile.am b/openbsc/src/gprs/Makefile.am
index f46a402..9765cdd 100644
--- a/openbsc/src/gprs/Makefile.am
+++ b/openbsc/src/gprs/Makefile.am
@@ -16,18 +16,22 @@ bin_PROGRAMS += osmo-sgsn
endif
endif
+noinst_LIBRARIES = libgprs.a
+
+libgprs_a_SOURCES = gprs_gb_parse.c crc24.c gprs_utils.c \
+ gprs_llc.c gprs_llc_parse.c gprs_llc_vty.c \
+ gprs_subscriber.c \
+ gprs_gsup_messages.c gprs_gsup_client.c
+
osmo_gbproxy_SOURCES = gb_proxy.c gb_proxy_main.c gb_proxy_vty.c \
- gb_proxy_patch.c gb_proxy_tlli.c gb_proxy_peer.c \
- gprs_gb_parse.c gprs_llc_parse.c crc24.c gprs_utils.c
-osmo_gbproxy_LDADD = $(top_builddir)/src/libcommon/libcommon.a \
+ gb_proxy_patch.c gb_proxy_tlli.c gb_proxy_peer.c
+osmo_gbproxy_LDADD = libgprs.a $(top_builddir)/src/libcommon/libcommon.a \
$(OSMO_LIBS) -lrt
osmo_sgsn_SOURCES = gprs_gmm.c gprs_sgsn.c gprs_sndcp.c gprs_sndcp_vty.c \
sgsn_main.c sgsn_vty.c sgsn_libgtp.c \
- gprs_llc.c gprs_llc_parse.c gprs_llc_vty.c crc24.c \
- sgsn_ctrl.c sgsn_auth.c gprs_subscriber.c \
- gprs_gsup_messages.c gprs_utils.c gprs_gsup_client.c \
- gsm_04_08_gprs.c sgsn_cdr.c sgsn_ares.c
-osmo_sgsn_LDADD = \
+ sgsn_ctrl.c sgsn_auth.c \
+ gsm_04_08_gprs.c sgsn_cdr.c
+osmo_sgsn_LDADD = libgprs.a \
$(top_builddir)/src/libcommon/libcommon.a \
-lgtp $(OSMO_LIBS) $(LIBOSMOABIS_LIBS) $(LIBCARES_LIBS) -lrt
diff --git a/openbsc/src/osmo-bsc_nat/Makefile.am b/openbsc/src/osmo-bsc_nat/Makefile.am
index d96a391..a38d68a 100644
--- a/openbsc/src/osmo-bsc_nat/Makefile.am
+++ b/openbsc/src/osmo-bsc_nat/Makefile.am
@@ -3,12 +3,15 @@ AM_CFLAGS=-Wall $(LIBOSMOCORE_CFLAGS) $(LIBOSMOGSM_CFLAGS)
$(LIBOSMOVTY_CFLAGS)
AM_LDFLAGS = $(COVERAGE_LDFLAGS)
bin_PROGRAMS = osmo-bsc_nat
+noinst_LIBRARIES = libbsc_nat.a
-
-osmo_bsc_nat_SOURCES = bsc_filter.c bsc_mgcp_utils.c bsc_nat.c bsc_nat_utils.c \
+libbsc_nat_a_SOURCES = \
+ bsc_filter.c bsc_mgcp_utils.c bsc_nat_utils.c \
bsc_nat_vty.c bsc_sccp.c bsc_ussd.c bsc_nat_ctrl.c \
bsc_nat_rewrite.c bsc_nat_rewrite_trie.c bsc_nat_filter.c
+osmo_bsc_nat_SOURCES = bsc_nat.c
osmo_bsc_nat_LDADD = \
+ libbsc_nat.a \
$(top_builddir)/src/libmgcp/libmgcp.a \
$(top_builddir)/src/libbsc/libbsc.a \
$(top_builddir)/src/libtrau/libtrau.a \
diff --git a/openbsc/tests/bsc-nat-trie/Makefile.am
b/openbsc/tests/bsc-nat-trie/Makefile.am
index cf8ebaf..64c71ba 100644
--- a/openbsc/tests/bsc-nat-trie/Makefile.am
+++ b/openbsc/tests/bsc-nat-trie/Makefile.am
@@ -6,9 +6,9 @@ EXTRA_DIST = bsc_nat_trie_test.ok prefixes.csv
noinst_PROGRAMS = bsc_nat_trie_test
-bsc_nat_trie_test_SOURCES = bsc_nat_trie_test.c \
- $(top_srcdir)/src/osmo-bsc_nat/bsc_nat_rewrite_trie.c
-bsc_nat_trie_test_LDADD = $(top_builddir)/src/libbsc/libbsc.a \
+bsc_nat_trie_test_SOURCES = bsc_nat_trie_test.c
+bsc_nat_trie_test_LDADD = $(top_builddir)/src/osmo-bsc_nat/libbsc_nat.a \
+ $(top_builddir)/src/libbsc/libbsc.a \
$(top_builddir)/src/libmgcp/libmgcp.a \
$(top_builddir)/src/libtrau/libtrau.a \
$(top_builddir)/src/libcommon/libcommon.a \
diff --git a/openbsc/tests/bsc-nat/Makefile.am b/openbsc/tests/bsc-nat/Makefile.am
index 26e5500..c1a5b1a 100644
--- a/openbsc/tests/bsc-nat/Makefile.am
+++ b/openbsc/tests/bsc-nat/Makefile.am
@@ -6,15 +6,10 @@ EXTRA_DIST = bsc_nat_test.ok bsc_data.c barr.cfg barr_dup.cfg
prefixes.csv
noinst_PROGRAMS = bsc_nat_test
-bsc_nat_test_SOURCES = bsc_nat_test.c \
- $(top_srcdir)/src/osmo-bsc_nat/bsc_filter.c \
- $(top_srcdir)/src/osmo-bsc_nat/bsc_sccp.c \
- $(top_srcdir)/src/osmo-bsc_nat/bsc_nat_utils.c \
- $(top_srcdir)/src/osmo-bsc_nat/bsc_nat_rewrite.c \
- $(top_srcdir)/src/osmo-bsc_nat/bsc_nat_rewrite_trie.c \
- $(top_srcdir)/src/osmo-bsc_nat/bsc_mgcp_utils.c \
- $(top_srcdir)/src/osmo-bsc_nat/bsc_nat_filter.c
+bsc_nat_test_SOURCES = bsc_nat_test.c
+
bsc_nat_test_LDADD = \
+ $(top_builddir)/src/osmo-bsc_nat/libbsc_nat.a \
$(top_builddir)/src/libfilter/libfilter.a \
$(top_builddir)/src/libbsc/libbsc.a \
$(top_builddir)/src/libmgcp/libmgcp.a \
diff --git a/openbsc/tests/bsc/Makefile.am b/openbsc/tests/bsc/Makefile.am
index 8b786ff..7c3a219 100644
--- a/openbsc/tests/bsc/Makefile.am
+++ b/openbsc/tests/bsc/Makefile.am
@@ -6,9 +6,9 @@ EXTRA_DIST = bsc_test.ok
noinst_PROGRAMS = bsc_test
-bsc_test_SOURCES = bsc_test.c \
- $(top_srcdir)/src/osmo-bsc/osmo_bsc_filter.c
-bsc_test_LDADD = $(top_builddir)/src/libbsc/libbsc.a \
+bsc_test_SOURCES = bsc_test.c
+bsc_test_LDADD = $(top_builddir)/src/osmo-bsc/libbsc.a \
+ $(top_builddir)/src/libbsc/libbsc.a \
$(top_builddir)/src/libmsc/libmsc.a \
$(top_builddir)/src/libmgcp/libmgcp.a \
$(top_builddir)/src/libtrau/libtrau.a \
diff --git a/openbsc/tests/gprs/Makefile.am b/openbsc/tests/gprs/Makefile.am
index 633c362..44d9965 100644
--- a/openbsc/tests/gprs/Makefile.am
+++ b/openbsc/tests/gprs/Makefile.am
@@ -5,7 +5,7 @@ EXTRA_DIST = gprs_test.ok
noinst_PROGRAMS = gprs_test
-gprs_test_SOURCES = gprs_test.c $(top_srcdir)/src/gprs/gprs_utils.c \
- $(top_srcdir)/src/gprs/gprs_gsup_messages.c
+gprs_test_SOURCES = gprs_test.c
-gprs_test_LDADD = $(LIBOSMOCORE_LIBS) $(LIBOSMOGSM_LIBS)
+gprs_test_LDADD = $(top_builddir)/src/gprs/libgprs.a \
+ $(LIBOSMOCORE_LIBS) $(LIBOSMOGSM_LIBS)
diff --git a/openbsc/tests/smpp/Makefile.am b/openbsc/tests/smpp/Makefile.am
index b3d4568..d36266d 100644
--- a/openbsc/tests/smpp/Makefile.am
+++ b/openbsc/tests/smpp/Makefile.am
@@ -6,7 +6,8 @@ EXTRA_DIST = smpp_test.ok smpp_test.err
noinst_PROGRAMS = smpp_test
-smpp_test_SOURCES = smpp_test.c \
- $(top_builddir)/src/libmsc/smpp_utils.c
-smpp_test_LDADD = $(LIBOSMOCORE_LIBS) \
+smpp_test_SOURCES = smpp_test.c
+smpp_test_LDADD = \
+ $(top_builddir)/src/libmsc/libmsc.a
+ $(LIBOSMOCORE_LIBS) \
$(top_builddir)/src/libcommon/libcommon.a
--
2.1.4