You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by nn...@apache.org on 2015/03/16 21:21:01 UTC
mesos git commit: Used LDADD to add unbundled libraries to all
command line programs.
Repository: mesos
Updated Branches:
refs/heads/master 24d640e2d -> 64b12f50e
Used LDADD to add unbundled libraries to all command line programs.
When building with unbundled libraries, every program needs to link
against the libraries, and can't assume it will be linked against
because the program links with a program which links against the
libraries.
This comes up on Debian and Ubuntu[1] which set the flag
`-Wl,--no-copy-dt-needed-entries` which forcibly disables the binaries
from getting automatically the dependencies of the shared libraries they
link against.
Also adds -Wl,--as-needed to AM_LDFLAGS to silence warnings in Fedora
packaging since we link against more libraries than things actually use
at the command line. Debian and Ubuntu default to this option.
OS X doesn't have `-Wl,--as-needed` or `--no-copy-dt-needed-entries` so
only enable it on Linux.
[1] https://wiki.ubuntu.com/ToolChain/CompilerFlags#A-Wl.2C--no-copy-dt-needed-entries
Review: https://reviews.apache.org/r/32008
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/64b12f50
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/64b12f50
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/64b12f50
Branch: refs/heads/master
Commit: 64b12f50e1151bd2e389889fc46de0c97cec9951
Parents: 24d640e
Author: Cody Maloney <co...@mesosphere.io>
Authored: Mon Mar 16 12:17:06 2015 -0700
Committer: Niklas Q. Nielsen <ni...@mesosphere.io>
Committed: Mon Mar 16 13:19:07 2015 -0700
----------------------------------------------------------------------
src/Makefile.am | 67 +++++++++++++++++++++++++++++++---------------------
1 file changed, 40 insertions(+), 27 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mesos/blob/64b12f50/src/Makefile.am
----------------------------------------------------------------------
diff --git a/src/Makefile.am b/src/Makefile.am
index 3059818..7a06c70 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -74,6 +74,15 @@ BUILT_SOURCES =
CLEANFILES =
EXTRA_DIST =
PHONY_TARGETS =
+LDADD =
+
+# Use -Wl,--as-needed to AM_LDFLAGS since we link against all the
+# libraries programs may depend upon, not the exact one. --as-needed
+# causes the linker to only link to the ones a program actually uses,
+# not the full list on the command line.
+if OS_LINUX
+AM_LDFLAGS=-Wl,--as-needed
+endif
# Add compiler and linker flags for pthreads.
AM_CXXFLAGS = $(PTHREAD_CFLAGS)
@@ -707,6 +716,7 @@ if WITH_BUNDLED_GLOG
libmesos_la_LIBADD += ../$(GLOG)/libglog.la
else
libmesos_la_LIBADD += -lglog
+ LDADD += -lglog
endif
if WITH_BUNDLED_LEVELDB
@@ -717,18 +727,21 @@ if WITH_BUNDLED_LEVELDB
libmesos_la_LIBADD += ../$(LEVELDB)/libleveldb.a
else
libmesos_la_LIBADD += -lleveldb
+ LDADD += -lleveldb
endif
if WITH_BUNDLED_ZOOKEEPER
libmesos_la_LIBADD += ../$(ZOOKEEPER)/libzookeeper_mt.la
else
libmesos_la_LIBADD += -lzookeeper_mt
+ LDADD += -lzookeeper_mt
endif
if WITH_BUNDLED_PROTOBUF
libmesos_la_LIBADD += ../$(PROTOBUF)/src/libprotobuf.la
else
libmesos_la_LIBADD += -lprotobuf
+ LDADD += -lprotobuf
endif
@@ -736,69 +749,69 @@ endif
sbin_PROGRAMS += mesos-master
mesos_master_SOURCES = master/main.cpp
mesos_master_CPPFLAGS = $(MESOS_CPPFLAGS)
-mesos_master_LDADD = libmesos.la
+mesos_master_LDADD = libmesos.la $(LDADD)
sbin_PROGRAMS += mesos-slave
mesos_slave_SOURCES = slave/main.cpp
mesos_slave_CPPFLAGS = $(MESOS_CPPFLAGS)
-mesos_slave_LDADD = libmesos.la
+mesos_slave_LDADD = libmesos.la $(LDADD)
bin_PROGRAMS += mesos-local
mesos_local_SOURCES = local/main.cpp
mesos_local_CPPFLAGS = $(MESOS_CPPFLAGS)
-mesos_local_LDADD = libmesos.la
+mesos_local_LDADD = libmesos.la $(LDADD)
pkglibexec_PROGRAMS += mesos-fetcher
mesos_fetcher_SOURCES = launcher/fetcher.cpp
mesos_fetcher_CPPFLAGS = $(MESOS_CPPFLAGS)
-mesos_fetcher_LDADD = libmesos.la
+mesos_fetcher_LDADD = libmesos.la $(LDADD)
pkglibexec_PROGRAMS += mesos-executor
mesos_executor_SOURCES = launcher/executor.cpp
mesos_executor_CPPFLAGS = $(MESOS_CPPFLAGS)
-mesos_executor_LDADD = libmesos.la
+mesos_executor_LDADD = libmesos.la $(LDADD)
pkglibexec_PROGRAMS += mesos-containerizer
mesos_containerizer_SOURCES = slave/containerizer/mesos/main.cpp
mesos_containerizer_CPPFLAGS = $(MESOS_CPPFLAGS)
-mesos_containerizer_LDADD = libmesos.la
+mesos_containerizer_LDADD = libmesos.la $(LDADD)
if WITH_NETWORK_ISOLATOR
pkglibexec_PROGRAMS += mesos-network-helper
mesos_network_helper_SOURCES = slave/containerizer/isolators/network/helper.cpp
mesos_network_helper_CPPFLAGS = $(MESOS_CPPFLAGS)
-mesos_network_helper_LDADD = libmesos.la
+mesos_network_helper_LDADD = libmesos.la $(LDADD)
endif
pkglibexec_PROGRAMS += mesos-health-check
mesos_health_check_SOURCES = health-check/main.cpp
mesos_health_check_CPPFLAGS = $(MESOS_CPPFLAGS)
-mesos_health_check_LDADD = libmesos.la
+mesos_health_check_LDADD = libmesos.la $(LDADD)
pkglibexec_PROGRAMS += mesos-usage
mesos_usage_SOURCES = usage/main.cpp
mesos_usage_CPPFLAGS = $(MESOS_CPPFLAGS)
-mesos_usage_LDADD = libmesos.la
+mesos_usage_LDADD = libmesos.la $(LDADD)
bin_PROGRAMS += mesos-log
mesos_log_SOURCES = log/main.cpp
mesos_log_CPPFLAGS = $(MESOS_CPPFLAGS)
-mesos_log_LDADD = libmesos.la
+mesos_log_LDADD = libmesos.la $(LDADD)
bin_PROGRAMS += mesos
mesos_SOURCES = cli/mesos.cpp
mesos_CPPFLAGS = $(MESOS_CPPFLAGS)
-mesos_LDADD = libmesos.la
+mesos_LDADD = libmesos.la $(LDADD)
bin_PROGRAMS += mesos-execute
mesos_execute_SOURCES = cli/execute.cpp
mesos_execute_CPPFLAGS = $(MESOS_CPPFLAGS)
-mesos_execute_LDADD = libmesos.la
+mesos_execute_LDADD = libmesos.la $(LDADD)
bin_PROGRAMS += mesos-resolve
mesos_resolve_SOURCES = cli/resolve.cpp
mesos_resolve_CPPFLAGS = $(MESOS_CPPFLAGS)
-mesos_resolve_LDADD = libmesos.la
+mesos_resolve_LDADD = libmesos.la $(LDADD)
# Need to distribute and install mesos-*.
dist_bin_SCRIPTS += \
@@ -1205,57 +1218,57 @@ PHONY_TARGETS += clean-python
check_PROGRAMS += low-level-scheduler-libprocess
low_level_scheduler_libprocess_SOURCES = examples/low_level_scheduler_libprocess.cpp
low_level_scheduler_libprocess_CPPFLAGS = $(MESOS_CPPFLAGS)
-low_level_scheduler_libprocess_LDADD = libmesos.la
+low_level_scheduler_libprocess_LDADD = libmesos.la $(LDADD)
check_PROGRAMS += low-level-scheduler-pthread
low_level_scheduler_pthread_SOURCES = examples/low_level_scheduler_pthread.cpp
low_level_scheduler_pthread_CPPFLAGS = $(MESOS_CPPFLAGS)
-low_level_scheduler_pthread_LDADD = libmesos.la
+low_level_scheduler_pthread_LDADD = libmesos.la $(LDADD)
check_PROGRAMS += test-framework
test_framework_SOURCES = examples/test_framework.cpp
test_framework_CPPFLAGS = $(MESOS_CPPFLAGS)
-test_framework_LDADD = libmesos.la
+test_framework_LDADD = libmesos.la $(LDADD)
check_PROGRAMS += test-executor
test_executor_SOURCES = examples/test_executor.cpp
test_executor_CPPFLAGS = $(MESOS_CPPFLAGS)
-test_executor_LDADD = libmesos.la
+test_executor_LDADD = libmesos.la $(LDADD)
check_PROGRAMS += long-lived-framework
long_lived_framework_SOURCES = examples/long_lived_framework.cpp
long_lived_framework_CPPFLAGS = $(MESOS_CPPFLAGS)
-long_lived_framework_LDADD = libmesos.la
+long_lived_framework_LDADD = libmesos.la $(LDADD)
check_PROGRAMS += long-lived-executor
long_lived_executor_SOURCES = examples/long_lived_executor.cpp
long_lived_executor_CPPFLAGS = $(MESOS_CPPFLAGS)
-long_lived_executor_LDADD = libmesos.la
+long_lived_executor_LDADD = libmesos.la $(LDADD)
check_PROGRAMS += no-executor-framework
no_executor_framework_SOURCES = examples/no_executor_framework.cpp
no_executor_framework_CPPFLAGS = $(MESOS_CPPFLAGS)
-no_executor_framework_LDADD = libmesos.la
+no_executor_framework_LDADD = libmesos.la $(LDADD)
check_PROGRAMS += docker-no-executor-framework
docker_no_executor_framework_SOURCES = examples/docker_no_executor_framework.cpp
docker_no_executor_framework_CPPFLAGS = $(MESOS_CPPFLAGS)
-docker_no_executor_framework_LDADD = libmesos.la
+docker_no_executor_framework_LDADD = libmesos.la $(LDADD)
check_PROGRAMS += balloon-framework
balloon_framework_SOURCES = examples/balloon_framework.cpp
balloon_framework_CPPFLAGS = $(MESOS_CPPFLAGS)
-balloon_framework_LDADD = libmesos.la
+balloon_framework_LDADD = libmesos.la $(LDADD)
check_PROGRAMS += balloon-executor
balloon_executor_SOURCES = examples/balloon_executor.cpp
balloon_executor_CPPFLAGS = $(MESOS_CPPFLAGS)
-balloon_executor_LDADD = libmesos.la
+balloon_executor_LDADD = libmesos.la $(LDADD)
check_PROGRAMS += load-generator-framework
load_generator_framework_SOURCES = examples/load_generator_framework.cpp
load_generator_framework_CPPFLAGS = $(MESOS_CPPFLAGS)
-load_generator_framework_LDADD = libmesos.la
+load_generator_framework_LDADD = libmesos.la $(LDADD)
if OS_LINUX
check_PROGRAMS += setns-test-helper
@@ -1263,13 +1276,13 @@ if OS_LINUX
tests/setns_test_helper_main.cpp \
tests/setns_test_helper.cpp
setns_test_helper_CPPFLAGS = $(MESOS_CPPFLAGS)
- setns_test_helper_LDADD = libmesos.la
+ setns_test_helper_LDADD = libmesos.la $(LDADD)
endif
check_PROGRAMS += active-user-test-helper
active_user_test_helper_SOURCES = tests/active_user_test_helper.cpp
active_user_test_helper_CPPFLAGS = $(MESOS_CPPFLAGS)
-active_user_test_helper_LDADD = libmesos.la
+active_user_test_helper_LDADD = libmesos.la $(LDADD)
check_PROGRAMS += mesos-tests
@@ -1383,7 +1396,7 @@ mesos_tests_CPPFLAGS += -DBUILD_DIR=\"$(abs_top_builddir)\"
mesos_tests_CPPFLAGS += -I../$(GTEST)/include
mesos_tests_CPPFLAGS += -I../$(GMOCK)/include
-mesos_tests_LDADD = ../$(LIBPROCESS)/3rdparty/libgmock.la libmesos.la -ldl
+mesos_tests_LDADD = ../$(LIBPROCESS)/3rdparty/libgmock.la libmesos.la -ldl $(LDADD)
mesos_tests_DEPENDENCIES = # Initialized to allow += below.