blob: 2e5cd219643148c628e478bdc4424ec47eabef9c [file] [log] [blame]
# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
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
# -std=gnu++11 is c++11 with GNU extensions. In particular, typeof is allowed.
CXXFLAGS += $(CFLAGS) \
-std=gnu++11 \
-Woverloaded-virtual
CXXFLAGS += $(EXTRA_CXXFLAGS)
CPPFLAGS ?= -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS
PKG_CONFIG ?= pkg-config
DBUSXX_XML2CPP = dbusxx-xml2cpp
PROTOC ?= protoc
BUILDDIR = build
VPATH = $(BUILDDIR)
LIBDIR = /usr/lib
SHIMDIR = $(LIBDIR)/shill/shims
RUNDIR = /var/run/shill
CPPFLAGS += -DSHIMDIR=\"$(SHIMDIR)\" -DRUNDIR=\"$(RUNDIR)\"
BASE_VER ?= 180609
COMMON_PC_DEPS = libchrome-$(BASE_VER) libchromeos-$(BASE_VER)
SHILL_PC_DEPS = \
$(COMMON_PC_DEPS) \
dbus-c++-1 \
gio-2.0 \
glib-2.0 \
libnl-3.0 \
libnl-genl-3.0
CRYPTO_UTIL_PC_DEPS = \
$(COMMON_PC_DEPS) \
protobuf-lite \
openssl
NET_DIAGS_UPLOAD_PC_DEPS = $(COMMON_PC_DEPS)
NETFILTER_QUEUE_HELPER_PC_DEPS = \
$(COMMON_PC_DEPS) \
libmnl \
libnetfilter_queue \
libnfnetlink
NSS_GET_CERT_PC_DEPS = $(COMMON_PC_DEPS) nss
INCLUDE_DIRS = \
-iquote.. \
-iquote $(BUILDDIR) \
$(shell $(PKG_CONFIG) --cflags \
$(CRYPTO_UTIL_PC_DEPS) \
$(NET_DIAGS_UPLOAD_PC_DEPS) \
$(NETFILTER_QUEUE_HELPER_PC_DEPS) \
$(NSS_GET_CERT_PC_DEPS) \
$(SHILL_PC_DEPS))
SHILL_LIBS = \
-lbootstat \
-lcares \
-lmetrics \
-lminijail \
-lprotobuf-lite \
-lrt \
$(shell $(PKG_CONFIG) --libs $(SHILL_PC_DEPS))
CRYPTO_UTIL_LIBS = \
$(shell $(PKG_CONFIG) --libs $(CRYPTO_UTIL_PC_DEPS))
NET_DIAGS_UPLOAD_LIBS = \
$(shell $(PKG_CONFIG) --libs $(NET_DIAGS_UPLOAD_PC_DEPS))
NETFILTER_QUEUE_HELPER_LIBS = \
$(shell $(PKG_CONFIG) --libs $(NETFILTER_QUEUE_HELPER_PC_DEPS))
NSS_GET_CERT_LIBS = $(shell $(PKG_CONFIG) --libs $(NSS_GET_CERT_PC_DEPS))
DBUS_BINDINGS_DIR = dbus_bindings
BUILD_DBUS_BINDINGS_DIR = $(BUILDDIR)/shill/$(DBUS_BINDINGS_DIR)
BUILD_DBUS_BINDINGS_SHIMS_DIR = $(BUILD_DBUS_BINDINGS_DIR)/shims
BUILD_PROTO_BINDINGS_DIR = $(BUILDDIR)/shill/proto_bindings
BUILD_SHIMS_DIR = $(BUILDDIR)/shims
_CREATE_BUILDDIR := $(shell mkdir -p \
$(BUILDDIR) \
$(BUILD_DBUS_BINDINGS_DIR) \
$(BUILD_DBUS_BINDINGS_SHIMS_DIR) \
$(BUILD_PROTO_BINDINGS_DIR)/power_manager \
$(BUILD_PROTO_BINDINGS_DIR)/shims/protos \
$(BUILD_SHIMS_DIR))
DBUS_ADAPTOR_HEADERS :=
DBUS_PROXY_HEADERS = \
dbus-properties.h \
dbus-service.h \
dhcpcd.h \
power_manager.h \
shims/flimflam-task.h \
supplicant-bss.h \
supplicant-interface.h \
supplicant-network.h \
supplicant-process.h
# Generates rules for copying SYSROOT XMLs locally and updates the proxy header
# dependencies.
DBUS_BINDINGS_XML_SYSROOT = \
org.chromium.WiMaxManager>wimax_manager \
org.chromium.WiMaxManager.Device>wimax_manager-device \
org.chromium.WiMaxManager.Network>wimax_manager-network
# Rename local XML files with the names required by DBus to XML files with the
# names required by the style guide, which will then be turned into generated
# headers later.
DBUS_BINDINGS_XML_LOCAL = \
org.chromium.flimflam.Device>flimflam-device \
org.chromium.flimflam.IPConfig>flimflam-ipconfig \
org.chromium.flimflam.Manager>flimflam-manager \
org.chromium.flimflam.Profile>flimflam-profile \
org.chromium.flimflam.Service>flimflam-service \
org.chromium.flimflam.Task>flimflam-task
ifneq ($(SHILL_CELLULAR), 0)
DBUS_PROXY_HEADERS += \
dbus-objectmanager.h \
modem-gobi.h
DBUS_BINDINGS_XML_SYSROOT += \
org.freedesktop.ModemManager>modem_manager \
org.freedesktop.ModemManager.Modem>modem \
org.freedesktop.ModemManager.Modem.Cdma>modem-cdma \
org.freedesktop.ModemManager.Modem.Gsm.Card>modem-gsm-card \
org.freedesktop.ModemManager.Modem.Gsm.Network>modem-gsm-network \
org.freedesktop.ModemManager.Modem.Simple>modem-simple \
org.freedesktop.ModemManager1.Bearer>mm1-bearer \
org.freedesktop.ModemManager1.Modem>mm1-modem \
org.freedesktop.ModemManager1.Modem.Location>mm1-modem-location \
org.freedesktop.ModemManager1.Modem.Modem3gpp>mm1-modem-modem3gpp \
org.freedesktop.ModemManager1.Modem.ModemCdma>mm1-modem-modemcdma \
org.freedesktop.ModemManager1.Modem.Simple>mm1-modem-simple \
org.freedesktop.ModemManager1.Modem.Time>mm1-modem-time \
org.freedesktop.ModemManager1.Sim>mm1-sim
endif # SHILL_CELLULAR
define ADD_BINDING
$(eval _SOURCE = $(word 1,$(subst >, ,$(1))))
$(eval _TARGET = $(word 2,$(subst >, ,$(1))))
DBUS_PROXY_HEADERS += $(_TARGET).h
$(BUILD_DBUS_BINDINGS_DIR)/$(_TARGET).xml: \
$(SYSROOT)/usr/share/dbus-1/interfaces/$(_SOURCE).xml
echo " CP " $$@
cp $$< $$@
endef
define ADD_LOCAL_BINDING
$(eval _SOURCE = $(word 1,$(subst >, ,$(1))))
$(eval _TARGET = $(word 2,$(subst >, ,$(1))))
DBUS_ADAPTOR_HEADERS += $(_TARGET).h
$(BUILD_DBUS_BINDINGS_DIR)/$(_TARGET).xml: $(DBUS_BINDINGS_DIR)/$(_SOURCE).xml
echo " CP " $$@
cp $$< $$@
endef
$(foreach b,$(DBUS_BINDINGS_XML_SYSROOT),$(eval $(call ADD_BINDING,$(b))))
$(foreach b,$(DBUS_BINDINGS_XML_LOCAL),$(eval $(call ADD_LOCAL_BINDING,$(b))))
DBUS_ADAPTOR_BINDINGS = \
$(addprefix $(BUILD_DBUS_BINDINGS_DIR)/, $(DBUS_ADAPTOR_HEADERS))
DBUS_PROXY_BINDINGS = \
$(addprefix $(BUILD_DBUS_BINDINGS_DIR)/, $(DBUS_PROXY_HEADERS))
SYSTEM_API_PROTO_PATH = $(SYSROOT)/usr/include/chromeos/dbus
SYSTEM_PROTO_BINDINGS_OBJS = $(addprefix $(BUILD_PROTO_BINDINGS_DIR)/, \
power_manager/suspend.pb.o \
)
CRYPTO_UTIL_PROTO_BINDINGS_OBJS = $(addprefix $(BUILD_PROTO_BINDINGS_DIR)/, \
shims/protos/crypto_util.pb.o \
)
PROTO_BINDINGS_OBJS = \
$(SYSTEM_PROTO_BINDINGS_OBJS) \
$(CRYPTO_UTIL_PROTO_BINDINGS_OBJS)
PROTO_BINDINGS_H = $(PROTO_BINDINGS_OBJS:.o=.h)
SYSTEM_PROTO_BINDINGS_CC = $(SYSTEM_PROTO_BINDINGS_OBJS:.o=.cc)
SHIM_PROTO_BINDINGS_CC = $(CRYPTO_UTIL_PROTO_BINDINGS_OBJS:.o=.cc)
SHILL_LIB = $(BUILDDIR)/shill.a
SHILL_OBJS = $(addprefix $(BUILDDIR)/, \
arp_client.o \
arp_packet.o \
async_connection.o \
attribute_list.o \
byte_string.o \
callback80211_metrics.o \
certificate_file.o \
connection.o \
connection_health_checker.o \
connection_info.o \
connection_info_reader.o \
control_netlink_attribute.o \
crypto_des_cbc.o \
crypto_provider.o \
crypto_rot47.o \
dbus_adaptor.o \
dbus_control.o \
dbus_manager.o \
dbus_properties.o \
dbus_properties_proxy.o \
dbus_service_proxy.o \
default_profile.o \
crypto_util_proxy.o \
device.o \
device_dbus_adaptor.o \
device_info.o \
dhcp_config.o \
dhcp_provider.o \
dhcpcd_proxy.o \
diagnostics_reporter.o \
dns_client.o \
dns_client_factory.o \
eap_credentials.o \
eap_listener.o \
endpoint.o \
ephemeral_profile.o \
error.o \
ethernet.o \
ethernet_eap_provider.o \
ethernet_eap_service.o \
ethernet_service.o \
external_task.o \
event_dispatcher.o \
file_io.o \
file_reader.o \
generic_netlink_message.o \
geolocation_info.o \
glib.o \
glib_io_ready_handler.o \
glib_io_input_handler.o \
hook_table.o \
http_proxy.o \
http_request.o \
http_url.o \
ip_address.o \
ip_address_store.o \
ipconfig.o \
ipconfig_dbus_adaptor.o \
key_file_store.o \
key_value_store.o \
link_monitor.o \
manager.o \
manager_dbus_adaptor.o \
memory_log.o \
metrics.o \
minijail.o \
modem_info.o \
netlink_attribute.o \
netlink_manager.o \
netlink_message.o \
netlink_socket.o \
nl80211_attribute.o \
nl80211_message.o \
nss.o \
pending_activation_store.o \
portal_detector.o \
power_manager.o \
power_manager_proxy.o \
ppp_device.o \
process_killer.o \
profile.o \
profile_dbus_adaptor.o \
profile_dbus_property_exporter.o \
property_store.o \
proxy_factory.o \
routing_table.o \
resolver.o \
rpc_task.o \
rpc_task_dbus_adaptor.o \
rtnl_handler.o \
rtnl_listener.o \
rtnl_message.o \
scan_session.o \
scope_logger.o \
service.o \
service_dbus_adaptor.o \
shill_ares.o \
shill_config.o \
shill_daemon.o \
shill_test_config.o \
shill_time.o \
socket_info.o \
socket_info_reader.o \
sockets.o \
static_ip_parameters.o \
supplicant_bss_proxy.o \
supplicant_eap_state_handler.o \
supplicant_interface_proxy.o \
supplicant_network_proxy.o \
supplicant_process_proxy.o \
technology.o \
traffic_monitor.o \
virtio_ethernet.o \
virtual_device.o \
vpn_driver.o \
vpn_provider.o \
vpn_service.o \
wifi.o \
wifi_endpoint.o \
wifi_provider.o \
wifi_service.o \
wimax.o \
wimax_device_proxy.o \
wimax_manager_proxy.o \
wimax_network_proxy.o \
wimax_provider.o \
wimax_service.o \
wpa_supplicant.o \
) \
$(PROTO_BINDINGS_OBJS)
SHILL_BIN = shill
# Broken out separately, because (unlike other SHILL_OBJS), it
# shouldn't be linked into TEST_BIN.
SHILL_MAIN_OBJ = $(BUILDDIR)/shill_main.o
TEST_BIN = shill_unittest
TEST_OBJS = $(addprefix $(BUILDDIR)/, \
arp_client_unittest.o \
arp_packet_unittest.o \
async_connection_unittest.o \
byte_string_unittest.o \
cellular_capability_cdma_unittest.o \
cellular_capability_classic_unittest.o \
cellular_capability_gsm_unittest.o \
cellular_capability_universal_unittest.o \
cellular_capability_universal_cdma_unittest.o \
cellular_operator_info_unittest.o \
cellular_service_unittest.o \
cellular_unittest.o \
certificate_file_unittest.o \
crypto_des_cbc_unittest.o \
crypto_provider_unittest.o \
crypto_rot47_unittest.o \
crypto_util_proxy_unittest.o \
connection_health_checker_unittest.o \
connection_info_reader_unittest.o \
connection_info_unittest.o \
connection_unittest.o \
dbus_adaptor_unittest.o \
dbus_manager_unittest.o \
dbus_properties_unittest.o \
dbus_variant_gmock_printer.o \
default_profile_unittest.o \
device_info_unittest.o \
device_unittest.o \
dhcp_config_unittest.o \
dhcp_provider_unittest.o \
diagnostics_reporter_unittest.o \
dns_client_unittest.o \
eap_credentials_unittest.o \
eap_listener_unittest.o \
error_unittest.o \
ethernet_unittest.o \
ethernet_eap_provider_unittest.o \
ethernet_eap_service_unittest.o \
ethernet_service_unittest.o \
external_task_unittest.o \
file_reader_unittest.o \
hook_table_unittest.o \
http_proxy_unittest.o \
http_request_unittest.o \
http_url_unittest.o \
ip_address_unittest.o \
ip_address_store_unittest.o \
ipconfig_unittest.o \
key_file_store_unittest.o \
key_value_store_unittest.o \
link_monitor_unittest.o \
manager_unittest.o \
memory_log_unittest.o \
metrics_unittest.o \
mock_adaptors.o \
mock_ares.o \
mock_arp_client.o \
mock_async_connection.o \
mock_certificate_file.o \
mock_connection.o \
mock_connection_health_checker.o \
mock_connection_info_reader.o \
mock_control.o \
mock_crypto_util_proxy.o \
mock_dbus_manager.o \
mock_dbus_objectmanager_proxy.o \
mock_dbus_properties_proxy.o \
mock_dbus_service_proxy.o \
mock_device.o \
mock_device_info.o \
mock_dhcp_config.o \
mock_dhcp_provider.o \
mock_dhcp_proxy.o \
mock_diagnostics_reporter.o \
mock_dns_client.o \
mock_dns_client_factory.o \
mock_eap_credentials.o \
mock_eap_listener.o \
mock_ethernet.o \
mock_ethernet_eap_provider.o \
mock_ethernet_service.o \
mock_event_dispatcher.o \
mock_external_task.o \
mock_glib.o \
mock_http_request.o \
mock_ip_address_store.o \
mock_ipconfig.o \
mock_link_monitor.o \
mock_log.o \
mock_log_unittest.o \
mock_manager.o \
mock_metrics.o \
mock_minijail.o \
mock_modem_info.o \
mock_netlink_manager.o \
mock_nss.o \
mock_pending_activation_store.o \
mock_portal_detector.o \
mock_power_manager.o \
mock_power_manager_proxy.o \
mock_ppp_device.o \
mock_process_killer.o \
mock_profile.o \
mock_property_store.o \
mock_proxy_factory.o \
mock_resolver.o \
mock_routing_table.o \
mock_rtnl_handler.o \
mock_scan_session.o \
mock_service.o \
mock_socket_info_reader.o \
mock_sockets.o \
mock_store.o \
mock_supplicant_bss_proxy.o \
mock_supplicant_eap_state_handler.o \
mock_supplicant_interface_proxy.o \
mock_supplicant_network_proxy.o \
mock_supplicant_process_proxy.o \
mock_time.o \
mock_traffic_monitor.o \
mock_virtual_device.o \
mock_vpn_provider.o \
mock_wifi.o \
mock_wifi_provider.o \
mock_wifi_service.o \
mock_wimax.o \
mock_wimax_device_proxy.o \
mock_wimax_manager_proxy.o \
mock_wimax_network_proxy.o \
mock_wimax_provider.o \
mock_wimax_service.o \
modem_info_unittest.o \
netlink_manager_unittest.o \
netlink_message_unittest.o \
netlink_socket_unittest.o \
nice_mock_control.o \
nss_unittest.o \
pending_activation_store_unittest.o \
portal_detector_unittest.o \
power_manager_unittest.o \
ppp_device_unittest.o \
process_killer_unittest.o \
profile_dbus_property_exporter_unittest.o \
profile_unittest.o \
property_accessor_unittest.o \
property_store_unittest.o \
resolver_unittest.o \
routing_table_unittest.o \
rpc_task_unittest.o \
rtnl_handler_unittest.o \
rtnl_listener_unittest.o \
rtnl_message_unittest.o \
scan_session_unittest.o \
scope_logger_unittest.o \
service_property_change_test.o \
service_under_test.o \
service_unittest.o \
supplicant_eap_state_handler_unittest.o \
shill_unittest.o \
shims/certificates_unittest.o \
shims/netfilter_queue_processor_unittest.o \
socket_info_unittest.o \
socket_info_reader_unittest.o \
static_ip_parameters_unittest.o \
technology_unittest.o \
traffic_monitor_unittest.o \
testrunner.o \
virtual_device_unittest.o \
wifi_endpoint_unittest.o \
wifi_provider_unittest.o \
wifi_service_unittest.o \
wifi_unittest.o \
wimax_provider_unittest.o \
wimax_service_unittest.o \
wimax_unittest.o \
wpa_supplicant_unittest.o \
)
CRYPTO_UTIL_MAIN_OBJ = $(BUILD_SHIMS_DIR)/crypto_util.o
CRYPTO_UTIL_BIN = $(BUILD_SHIMS_DIR)/crypto-util
NET_DIAGS_UPLOAD_MAIN_OBJ = $(BUILD_SHIMS_DIR)/net_diags_upload.o
NET_DIAGS_UPLOAD_BIN = $(BUILD_SHIMS_DIR)/net-diags-upload
NETFILTER_QUEUE_HELPER_OBJS = $(BUILD_SHIMS_DIR)/netfilter_queue_processor.o
NETFILTER_QUEUE_HELPER_MAIN_OBJ = $(BUILD_SHIMS_DIR)/netfilter_queue_helper.o
NETFILTER_QUEUE_HELPER_BIN = $(BUILD_SHIMS_DIR)/netfilter-queue-helper
NSS_GET_CERT_OBJS = $(BUILD_SHIMS_DIR)/certificates.o
NSS_GET_CERT_MAIN_OBJ = $(BUILD_SHIMS_DIR)/nss_get_cert.o
NSS_GET_CERT_BIN = $(BUILD_SHIMS_DIR)/nss-get-cert
WPA_SUPPLICANT_CONF = $(BUILD_SHIMS_DIR)/wpa_supplicant.conf
# If SHILL_CELLULAR=0, don't build cellular support into shill.
ifeq ($(SHILL_CELLULAR), 0)
CPPFLAGS += -DDISABLE_CELLULAR
else
CELLULAR_PC_DEPS = ModemManager
SET_APN_HELPER_PC_DEPS = dbus-1
INCLUDE_DIRS += \
$(shell $(PKG_CONFIG) --cflags \
$(CELLULAR_PC_DEPS) \
$(SET_APN_HELPER_PC_DEPS))
SET_APN_HELPER_LIBS = $(shell $(PKG_CONFIG) --libs $(SET_APN_HELPER_PC_DEPS))
SHILL_LIBS += \
-lmobile-provider \
$(shell $(PKG_CONFIG) --libs $(CELLULAR_PC_DEPS))
SHILL_OBJS += $(addprefix $(BUILDDIR)/, \
cellular.o \
cellular_capability.o \
cellular_capability_cdma.o \
cellular_capability_classic.o \
cellular_capability_gsm.o \
cellular_capability_universal.o \
cellular_capability_universal_cdma.o \
cellular_error.o \
cellular_error_mm1.o \
cellular_operator_info.o \
cellular_service.o \
dbus_objectmanager_proxy.o \
mm1_bearer_proxy.o \
mm1_modem_location_proxy.o \
mm1_modem_modem3gpp_proxy.o \
mm1_modem_modemcdma_proxy.o \
mm1_modem_proxy.o \
mm1_modem_simple_proxy.o \
mm1_modem_time_proxy.o \
mm1_sim_proxy.o \
modem.o \
modem_1.o \
modem_cdma_proxy.o \
modem_classic.o \
modem_gobi_proxy.o \
modem_gsm_card_proxy.o \
modem_gsm_network_proxy.o \
modem_manager.o \
modem_manager_1.o \
modem_manager_proxy.o \
modem_proxy.o \
modem_simple_proxy.o \
)
TEST_OBJS += $(addprefix $(BUILDDIR)/, \
cellular_capability_cdma_unittest.o \
cellular_capability_classic_unittest.o \
cellular_capability_gsm_unittest.o \
cellular_capability_universal_cdma_unittest.o \
cellular_capability_universal_unittest.o \
cellular_error_unittest.o \
cellular_operator_info_unittest.o \
cellular_service_unittest.o \
cellular_unittest.o \
mock_cellular.o \
mock_mm1_bearer_proxy.o \
mock_mm1_modem_location_proxy.o \
mock_mm1_modem_modemcdma_proxy.o \
mock_mm1_modem_modem3gpp_proxy.o \
mock_mm1_modem_proxy.o \
mock_mm1_modem_simple_proxy.o \
mock_mm1_modem_time_proxy.o \
mock_mm1_sim_proxy.o \
mock_modem.o \
mock_modem_cdma_proxy.o \
mock_modem_gobi_proxy.o \
mock_modem_gsm_card_proxy.o \
mock_modem_gsm_network_proxy.o \
mock_modem_manager_proxy.o \
mock_modem_proxy.o \
mock_modem_simple_proxy.o \
mock_cellular_operator_info.o \
mock_cellular_service.o \
modem_1_unittest.o \
modem_manager_unittest.o \
modem_unittest.o \
)
SET_APN_HELPER_MAIN_OBJ = $(BUILD_SHIMS_DIR)/set_apn_helper.o
SET_APN_HELPER_BIN = $(BUILD_SHIMS_DIR)/set-apn-helper
$(SET_APN_HELPER_BIN): $(SET_APN_HELPER_MAIN_OBJ)
echo " CXX " $@
$(CXX) $(CXXFLAGS) $(LDFLAGS) $^ $(SET_APN_HELPER_LIBS) -o $@
endif # SHILL_CELLULAR=0
# If SHILL_VPN=0, don't build VPN support into shill.
ifeq ($(SHILL_VPN), 0)
CPPFLAGS += -DDISABLE_VPN
else
OPENVPN_SCRIPT_PC_DEPS = $(COMMON_PC_DEPS) dbus-c++-1
PPPD_PLUGIN_PC_DEPS = $(COMMON_PC_DEPS) dbus-c++-1
INCLUDE_DIRS += \
$(shell $(PKG_CONFIG) --cflags \
$(OPENVPN_SCRIPT_PC_DEPS) \
$(PPPD_PLUGIN_PC_DEPS))
OPENVPN_SCRIPT_LIBS = $(shell $(PKG_CONFIG) --libs $(OPENVPN_SCRIPT_PC_DEPS))
PPPD_PLUGIN_LIBS = $(shell $(PKG_CONFIG) --libs $(PPPD_PLUGIN_PC_DEPS))
OPENVPN_SCRIPT_OBJS = $(addprefix $(BUILD_SHIMS_DIR)/, \
environment.o \
task_proxy.o \
)
OPENVPN_SCRIPT_MAIN_OBJ = $(BUILD_SHIMS_DIR)/openvpn_script.o
OPENVPN_SCRIPT_BIN = $(BUILD_SHIMS_DIR)/openvpn-script
PPPD_PLUGIN_OBJS = $(addprefix $(BUILD_SHIMS_DIR)/, \
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
SHILL_OBJS += $(addprefix $(BUILDDIR)/, \
l2tp_ipsec_driver.o \
openvpn_driver.o \
openvpn_management_server.o \
)
TEST_OBJS += $(addprefix $(BUILDDIR)/, \
l2tp_ipsec_driver_unittest.o \
mock_openvpn_driver.o \
mock_openvpn_management_server.o \
mock_vpn_driver.o \
mock_vpn_service.o \
openvpn_driver_unittest.o \
openvpn_management_server_unittest.o \
shims/environment_unittest.o \
vpn_driver_unittest.o \
vpn_provider_unittest.o \
vpn_service_unittest.o \
)
$(OPENVPN_SCRIPT_OBJS): $(DBUS_PROXY_BINDINGS)
$(OPENVPN_SCRIPT_MAIN_OBJ): $(DBUS_PROXY_BINDINGS)
$(OPENVPN_SCRIPT_BIN): $(OPENVPN_SCRIPT_MAIN_OBJ) $(OPENVPN_SCRIPT_OBJS)
echo " CXX " $@
$(CXX) $(CXXFLAGS) $(LDFLAGS) $^ $(OPENVPN_SCRIPT_LIBS) -o $@
$(PPPD_PLUGIN_OBJS): $(DBUS_PROXY_BINDINGS)
$(PPPD_PLUGIN_SO): $(PPPD_PLUGIN_OBJS)
echo " CXX " $@
$(CXX) $(CXXFLAGS) $(LDFLAGS) -shared $^ $(PPPD_PLUGIN_LIBS) -o $@
endif # SHILL_VPN=0
OBJS = \
$(CRYPTO_UTIL_MAIN_OBJ) \
$(NET_DIAGS_UPLOAD_MAIN_OBJ) \
$(NETFILTER_QUEUE_HELPER_MAIN_OBJ) \
$(NETFILTER_QUEUE_HELPER_OBJS) \
$(NSS_GET_CERT_MAIN_OBJ) \
$(NSS_GET_CERT_OBJS) \
$(OPENVPN_SCRIPT_MAIN_OBJ) \
$(OPENVPN_SCRIPT_OBJS) \
$(PPPD_PLUGIN_OBJS) \
$(SET_APN_HELPER_MAIN_OBJ) \
$(SHILL_MAIN_OBJ) \
$(SHILL_OBJS) \
$(TEST_OBJS)
GTEST_LIBS := $(shell gmock-config --libs) $(shell gtest-config --libs)
TEST_LIBS = $(SHILL_LIBS) $(NSS_GET_CERT_LIBS) $(NETFILTER_QUEUE_HELPER_LIBS) \
$(GTEST_LIBS)
.PHONY: all clean shims
all: $(SHILL_BIN) $(TEST_BIN) shims
shims: \
$(CRYPTO_UTIL_BIN) \
$(NET_DIAGS_UPLOAD_BIN) \
$(NETFILTER_QUEUE_HELPER_BIN) \
$(NSS_GET_CERT_BIN) \
$(OPENVPN_SCRIPT_BIN) \
$(PPPD_PLUGIN_SO) \
$(SET_APN_HELPER_BIN) \
$(WPA_SUPPLICANT_CONF)
$(BUILD_DBUS_BINDINGS_SHIMS_DIR)/flimflam-task.xml: \
$(BUILD_DBUS_BINDINGS_DIR)/flimflam-task.xml
echo " CP " $@
cp $< $@
$(BUILD_DBUS_BINDINGS_DIR)/%.xml: $(DBUS_BINDINGS_DIR)/%.xml
echo " CP " $@
cp $< $@
$(DBUS_PROXY_BINDINGS): %.h: %.xml
echo " DBUSXX_XML2CPP " $@
$(DBUSXX_XML2CPP) $< --proxy=$@ --sync --async
$(DBUS_ADAPTOR_BINDINGS): %.h: %.xml
echo " DBUSXX_XML2CPP " $@
$(DBUSXX_XML2CPP) $< --adaptor=$@
$(PROTO_BINDINGS_H): %.h: %.cc ;
$(SYSTEM_PROTO_BINDINGS_CC): \
$(BUILD_PROTO_BINDINGS_DIR)/%.pb.cc: $(SYSTEM_API_PROTO_PATH)/%.proto
echo " PROTOC " $@
$(PROTOC) --proto_path=$(SYSTEM_API_PROTO_PATH) \
--cpp_out=$(BUILD_PROTO_BINDINGS_DIR) $<
$(SHIM_PROTO_BINDINGS_CC): \
$(BUILD_PROTO_BINDINGS_DIR)/%.pb.cc: %.proto
echo " PROTOC " $@
$(PROTOC) --proto_path=./ --cpp_out=$(BUILD_PROTO_BINDINGS_DIR) $<
$(BUILDDIR)/%.o: %.c
echo " CC " $@
$(CC) $(CPPFLAGS) $(CFLAGS) $(INCLUDE_DIRS) -MMD -c $< -o $@
$(PROTO_BINDINGS_OBJS): INCLUDE_DIRS += -iquote $(BUILD_PROTO_BINDINGS_DIR)
$(BUILDDIR)/%.o: %.cc
echo " CXX " $@
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE_DIRS) -MMD -c $< -o $@
$(BUILDDIR)/%.pic.o: %.c
echo " CC " $@
$(CC) $(CPPFLAGS) $(CFLAGS) -fPIC $(INCLUDE_DIRS) -MMD -c $< -o $@
$(BUILDDIR)/%.pic.o: %.cc
echo " CXX " $@
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -fPIC $(INCLUDE_DIRS) -MMD -c $< -o $@
$(SHILL_OBJS): \
$(DBUS_ADAPTOR_BINDINGS) \
$(DBUS_PROXY_BINDINGS) \
$(PROTO_BINDINGS_H)
$(SHILL_LIB): $(SHILL_OBJS)
echo " AR " $@
$(AR) rcs $@ $^
$(SHILL_BIN): $(SHILL_MAIN_OBJ) $(SHILL_LIB)
echo " CXX " $@
$(CXX) $(CXXFLAGS) $(LDFLAGS) $^ $(SHILL_LIBS) -o $@
$(CRYPTO_UTIL_BIN): $(CRYPTO_UTIL_MAIN_OBJ) $(CRYPTO_UTIL_PROTO_BINDINGS_OBJS)
echo " CXX " $@
$(CXX) $(CXXFLAGS) $(LDFLAGS) $^ $(CRYPTO_UTIL_LIBS) -o $@
$(NET_DIAGS_UPLOAD_BIN): $(NET_DIAGS_UPLOAD_MAIN_OBJ)
echo " CXX " $@
$(CXX) $(CXXFLAGS) $(LDFLAGS) $^ $(NET_DIAGS_UPLOAD_LIBS) -o $@
$(NETFILTER_QUEUE_HELPER_BIN): \
$(NETFILTER_QUEUE_HELPER_MAIN_OBJ) \
$(NETFILTER_QUEUE_HELPER_OBJS)
echo " CXX " $@
$(CXX) $(CXXFLAGS) $(LDFLAGS) $^ $(NETFILTER_QUEUE_HELPER_LIBS) -o $@
$(NSS_GET_CERT_BIN): $(NSS_GET_CERT_MAIN_OBJ) $(NSS_GET_CERT_OBJS) $(SHILL_LIB)
echo " CXX " $@
$(CXX) $(CXXFLAGS) $(LDFLAGS) $^ $(NSS_GET_CERT_LIBS) -o $@
$(WPA_SUPPLICANT_CONF): shims/wpa_supplicant.conf.in
echo " SED " $@
sed s,@libdir@,$(LIBDIR), $^ > $@
$(TEST_BIN): CPPFLAGS += -DUNIT_TEST -DSYSROOT=\"$(SYSROOT)\"
$(TEST_BIN): \
$(TEST_OBJS) \
$(NETFILTER_QUEUE_HELPER_OBJS) \
$(NSS_GET_CERT_OBJS) \
$(OPENVPN_SCRIPT_OBJS) \
$(SHILL_LIB)
echo " CXX " $@
$(CXX) $(CXXFLAGS) $(LDFLAGS) $^ $(TEST_LIBS) -o $@
clean:
rm -rf \
$(BUILDDIR) \
$(SHILL_BIN) \
$(TEST_BIN)
# Don't output build commands. When adding rules, please echo a short
# form of the build command manually. E.g. 'echo " CXX " $@'.
.SILENT:
-include $(OBJS:.o=.d)