shill: Compile only .o's going into pppd-plugin.so with -fPIC.
BUG=chromium-os:36090
TEST=unit tests, gmerged shill, tested l2tp/ipsec connectivity
Change-Id: I2dabdea5f33e872b7e69c07ff241fa46d577f641
Reviewed-on: https://gerrit.chromium.org/gerrit/37435
Tested-by: Darin Petkov <petkov@chromium.org>
Reviewed-by: Ben Chan <benchan@chromium.org>
Commit-Ready: Darin Petkov <petkov@chromium.org>
diff --git a/Makefile b/Makefile
index ff228ba..9f5e941 100644
--- a/Makefile
+++ b/Makefile
@@ -5,14 +5,16 @@
AR ?= ar
CC ?= gcc
CXX ?= g++
+CFLAGS += \
+ -Wall \
+ -Werror \
+ -Wextra \
+ -Wno-missing-field-initializers \
+ -Wno-unused-parameter \
+ -Wno-unused-result \
+ -Wuninitialized
CXXFLAGS ?= -fno-strict-aliasing
-CXXFLAGS += -Wall -Wextra -Wno-unused-parameter -Wno-unused-result \
- -Wno-missing-field-initializers \
- -Werror -Wuninitialized -Woverloaded-virtual
-# TODO(petkov): This is needed for building pppd-plugin.so and fixes
-# crosbug.com/36032. Look into restricting the flag only to objects that get
-# linked into that .so.
-CXXFLAGS += -fPIC
+CXXFLAGS += $(CFLAGS) -Woverloaded-virtual
CXXFLAGS += $(EXTRA_CXXFLAGS)
CPPFLAGS ?= -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS
PKG_CONFIG ?= pkg-config
@@ -448,11 +450,11 @@
OPENVPN_SCRIPT_BIN = $(BUILD_SHIMS_DIR)/openvpn-script
PPPD_PLUGIN_OBJS = $(addprefix $(BUILD_SHIMS_DIR)/, \
- c_ppp.o \
- environment.o \
- ppp.o \
- pppd_plugin.o \
- task_proxy.o \
+ c_ppp.pic.o \
+ environment.pic.o \
+ ppp.pic.o \
+ pppd_plugin.pic.o \
+ task_proxy.pic.o \
)
PPPD_PLUGIN_SO = $(BUILD_SHIMS_DIR)/shill-pppd-plugin.so
@@ -502,6 +504,12 @@
$(BUILDDIR)/%.o: %.cc
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE_DIRS) -MMD -c $< -o $@
+$(BUILDDIR)/%.pic.o: %.c
+ $(CC) $(CPPFLAGS) $(CFLAGS) -fPIC $(INCLUDE_DIRS) -MMD -c $< -o $@
+
+$(BUILDDIR)/%.pic.o: %.cc
+ $(CXX) $(CPPFLAGS) $(CXXFLAGS) -fPIC $(INCLUDE_DIRS) -MMD -c $< -o $@
+
$(SHILL_OBJS): $(DBUS_ADAPTOR_BINDINGS) $(DBUS_PROXY_BINDINGS)
$(SHILL_LIB): $(SHILL_OBJS)