blob: 86bec911f456e616fba29bf619ae58491d4164e0 [file] [log] [blame]
Chris Masone96832c32011-05-03 12:23:18 -07001# Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5CXX ?= g++
mukesh agrawalf60e4062011-05-27 13:13:41 -07006CXXFLAGS ?= -fno-strict-aliasing
Darin Petkov3cef27c2011-08-03 16:21:40 -07007CXXFLAGS += -Wall -Wextra -Werror -Wuninitialized -Woverloaded-virtual
Darin Petkov04d46b42011-08-31 14:17:34 -07008CXXFLAGS += $(EXTRA_CXXFLAGS)
Chris Masone96832c32011-05-03 12:23:18 -07009CPPFLAGS ?= -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS
Chris Masone96832c32011-05-03 12:23:18 -070010PKG_CONFIG ?= pkg-config
Chris Masone14de6e52011-05-09 09:20:59 -070011DBUSXX_XML2CPP = dbusxx-xml2cpp
Chris Masone96832c32011-05-03 12:23:18 -070012
Chris Masone0e1d1042011-05-09 18:07:03 -070013# libevent, gdk and gtk-2.0 are needed to leverage chrome's MessageLoop
14# TODO(cmasone): explore if newer versions of libbase let us avoid this.
Thieu Le48e6d6d2011-12-06 00:40:27 +000015BASE_LIBS = -lbase -lchromeos -levent -lpthread -lrt -lcares -lmobile-provider \
16 -lmetrics
Chris Masone96832c32011-05-03 12:23:18 -070017BASE_INCLUDE_DIRS = -I..
18BASE_LIB_DIRS =
19
20LIBS = $(BASE_LIBS)
Chris Masoned7732e42011-05-20 11:08:56 -070021INCLUDE_DIRS = $(BASE_INCLUDE_DIRS) $(shell $(PKG_CONFIG) --cflags dbus-c++-1 \
22 glib-2.0 gdk-2.0 gtk+-2.0)
23LIB_DIRS = $(BASE_LIB_DIRS) $(shell $(PKG_CONFIG) --libs dbus-c++-1 glib-2.0 \
mukesh agrawalf8a51ce2011-05-27 11:18:13 -070024 gdk-2.0 gtk+-2.0)
Chris Masone96832c32011-05-03 12:23:18 -070025
26TEST_LIBS = $(BASE_LIBS) -lgmock -lgtest
Chris Masone96832c32011-05-03 12:23:18 -070027TEST_LIB_DIRS = $(LIB_DIRS)
28
Darin Petkov4a09b6b2011-07-19 12:52:06 -070029DBUS_BINDINGS_DIR = dbus_bindings
Darin Petkov4a09b6b2011-07-19 12:52:06 -070030
Darin Petkov567a7d02011-05-26 17:15:34 -070031DBUS_ADAPTOR_HEADERS = \
32 flimflam-device.h \
Chris Masoneccc88812011-06-08 18:00:10 -070033 flimflam-ipconfig.h \
Darin Petkov567a7d02011-05-26 17:15:34 -070034 flimflam-manager.h \
Chris Masoneccc88812011-06-08 18:00:10 -070035 flimflam-profile.h \
Darin Petkov567a7d02011-05-26 17:15:34 -070036 flimflam-service.h
Chris Masone14de6e52011-05-09 09:20:59 -070037
Darin Petkov567a7d02011-05-26 17:15:34 -070038DBUS_PROXY_HEADERS = \
Darin Petkov3117bab2011-08-02 16:10:21 -070039 dbus-properties.h \
Darin Petkov567a7d02011-05-26 17:15:34 -070040 dhcpcd.h \
Darin Petkov394b7d42011-11-03 15:48:02 +010041 power_manager.h \
Darin Petkov567a7d02011-05-26 17:15:34 -070042 supplicant-bss.h \
43 supplicant-interface.h \
44 supplicant-network.h \
mukesh agrawalab87ea42011-05-18 11:44:49 -070045 supplicant-process.h
Darin Petkov567a7d02011-05-26 17:15:34 -070046
Darin Petkovf5f61e02011-07-29 11:35:40 -070047# Generates rules for copying SYSROOT XMLs locally and updates the proxy header
48# dependencies.
49DBUS_BINDINGS_XML_SYSROOT = \
50 org.freedesktop.ModemManager>modem_manager \
Darin Petkov1ec741c2011-08-02 10:45:27 -070051 org.freedesktop.ModemManager.Modem>modem \
Darin Petkovf5f61e02011-07-29 11:35:40 -070052 org.freedesktop.ModemManager.Modem.Cdma>modem-cdma \
53 org.freedesktop.ModemManager.Modem.Gsm.Card>modem-gsm-card \
54 org.freedesktop.ModemManager.Modem.Gsm.Network>modem-gsm-network \
55 org.freedesktop.ModemManager.Modem.Simple>modem-simple
56
57define ADD_BINDING
58$(eval _SOURCE = $(word 1,$(subst >, ,$(1))))
59$(eval _TARGET = $(word 2,$(subst >, ,$(1))))
60CLEAN_FILES += $(DBUS_BINDINGS_DIR)/$(_TARGET).xml
61DBUS_PROXY_HEADERS += $(_TARGET).h
62$(DBUS_BINDINGS_DIR)/$(_TARGET).xml: \
63 $(SYSROOT)/usr/share/dbus-1/interfaces/$(_SOURCE).xml
64 cat $$< > $$@
65endef
66
67$(foreach b,$(DBUS_BINDINGS_XML_SYSROOT),$(eval $(call ADD_BINDING,$(b))))
68
Darin Petkov4a09b6b2011-07-19 12:52:06 -070069DBUS_ADAPTOR_BINDINGS = \
70 $(addprefix $(DBUS_BINDINGS_DIR)/, $(DBUS_ADAPTOR_HEADERS))
71DBUS_PROXY_BINDINGS = $(addprefix $(DBUS_BINDINGS_DIR)/, $(DBUS_PROXY_HEADERS))
72DBUS_BINDINGS = $(DBUS_ADAPTOR_BINDINGS) $(DBUS_PROXY_BINDINGS)
Chris Masone96832c32011-05-03 12:23:18 -070073
Chris Masone96832c32011-05-03 12:23:18 -070074SHILL_OBJS = \
Paul Stewartf65320c2011-10-13 14:34:52 -070075 async_connection.o \
Paul Stewart3ecfa2b2011-07-15 10:47:42 -070076 byte_string.o \
mukesh agrawal186af052012-01-11 15:07:34 -080077 callback_list.o \
Chris Masone3bd3c8c2011-06-13 08:20:26 -070078 cellular.o \
Darin Petkovdaf43862011-10-27 11:37:28 +020079 cellular_capability.o \
80 cellular_capability_cdma.o \
81 cellular_capability_gsm.o \
Chris Masone3bd3c8c2011-06-13 08:20:26 -070082 cellular_service.o \
Paul Stewartdd60e452011-08-08 11:38:36 -070083 connection.o \
Darin Petkov823c47e2011-06-27 16:15:35 -070084 crypto_des_cbc.o \
Darin Petkov86964e02011-06-29 13:49:28 -070085 crypto_provider.o \
Darin Petkov877642b2011-06-27 13:37:22 -070086 crypto_rot47.o \
Chris Masoned0ceb8c2011-06-02 10:05:39 -070087 dbus_adaptor.o \
Chris Masone96832c32011-05-03 12:23:18 -070088 dbus_control.o \
Darin Petkove0a312e2011-07-20 13:45:28 -070089 dbus_properties.o \
Darin Petkov5c97ac52011-07-19 16:30:49 -070090 dbus_properties_proxy.o \
Chris Masone88cbd5f2011-07-03 14:30:04 -070091 default_profile.o \
Chris Masone96832c32011-05-03 12:23:18 -070092 device.o \
Chris Masoned7732e42011-05-20 11:08:56 -070093 device_dbus_adaptor.o \
Paul Stewart0af98bf2011-05-10 17:38:08 -070094 device_info.o \
Darin Petkov50308cd2011-06-01 18:25:07 -070095 dhcp_config.o \
96 dhcp_provider.o \
97 dhcpcd_proxy.o \
Paul Stewartc2350ee2011-10-19 12:28:40 -070098 dns_client.o \
mukesh agrawalb54601c2011-06-07 17:39:22 -070099 endpoint.o \
Chris Masone7aa5f902011-07-11 11:13:35 -0700100 ephemeral_profile.o \
Chris Masone8fe2c7e2011-06-09 15:51:19 -0700101 error.o \
Paul Stewartb50f0b92011-05-16 16:31:42 -0700102 ethernet.o \
Paul Stewartf1ce5d22011-05-19 13:10:20 -0700103 ethernet_service.o \
Paul Stewart26b327e2011-10-19 11:38:09 -0700104 event_dispatcher.o \
Darin Petkovf7897bc2011-06-08 17:13:36 -0700105 glib.o \
Paul Stewartf0aae102011-10-19 12:11:44 -0700106 glib_io_ready_handler.o \
107 glib_io_input_handler.o \
Paul Stewartf65320c2011-10-13 14:34:52 -0700108 http_proxy.o \
Paul Stewart1d18e8c2011-07-15 11:00:31 -0700109 ip_address.o \
Darin Petkove02b3ca2011-05-31 16:00:44 -0700110 ipconfig.o \
Chris Masonec6c6c132011-06-30 11:29:52 -0700111 ipconfig_dbus_adaptor.o \
Darin Petkov083047b2011-06-23 20:42:48 -0700112 key_file_store.o \
mukesh agrawal7a4e4002011-09-06 11:26:05 -0700113 key_value_store.o \
Chris Masone96832c32011-05-03 12:23:18 -0700114 manager.o \
Chris Masoned7732e42011-05-20 11:08:56 -0700115 manager_dbus_adaptor.o \
Thieu Le48e6d6d2011-12-06 00:40:27 +0000116 metrics.o \
Darin Petkov5c97ac52011-07-19 16:30:49 -0700117 modem.o \
Darin Petkovbec79a22011-08-01 14:47:17 -0700118 modem_cdma_proxy.o \
Darin Petkov975b5e72011-08-30 11:48:08 -0700119 modem_gsm_card_proxy.o \
Darin Petkova1e0a1c2011-08-25 15:08:33 -0700120 modem_gsm_network_proxy.o \
Darin Petkov887f2982011-07-14 16:10:17 -0700121 modem_info.o \
122 modem_manager.o \
Darin Petkovc90fe522011-07-15 13:59:47 -0700123 modem_manager_proxy.o \
Darin Petkove9d12e02011-07-27 15:09:37 -0700124 modem_proxy.o \
Darin Petkove604f702011-07-28 15:51:17 -0700125 modem_simple_proxy.o \
Darin Petkov394b7d42011-11-03 15:48:02 +0100126 power_manager_proxy.o \
Chris Masone52cd19b2011-06-29 17:23:04 -0700127 profile.o \
128 profile_dbus_adaptor.o \
Chris Masoneb925cc82011-06-22 15:39:57 -0700129 property_store.o \
Darin Petkovc90fe522011-07-15 13:59:47 -0700130 proxy_factory.o \
Paul Stewart75e89d22011-08-01 10:00:02 -0700131 routing_table.o \
Paul Stewartb6063942011-08-05 10:17:29 -0700132 resolver.o \
Paul Stewartf1ce5d22011-05-19 13:10:20 -0700133 rtnl_handler.o \
134 rtnl_listener.o \
Paul Stewartdd7df792011-07-15 11:09:50 -0700135 rtnl_message.o \
Chris Masone96832c32011-05-03 12:23:18 -0700136 service.o \
Chris Masoned7732e42011-05-20 11:08:56 -0700137 service_dbus_adaptor.o \
Paul Stewartc2350ee2011-10-19 12:28:40 -0700138 shill_ares.o \
Chris Masone96832c32011-05-03 12:23:18 -0700139 shill_config.o \
140 shill_daemon.o \
Chris Masoneb9c00592011-10-06 13:10:39 -0700141 shill_test_config.o \
Paul Stewartc2350ee2011-10-19 12:28:40 -0700142 shill_time.o \
Darin Petkov633ac6f2011-07-08 13:56:13 -0700143 sockets.o \
mukesh agrawalaf571952011-07-14 14:31:12 -0700144 supplicant_interface_proxy.o \
145 supplicant_process_proxy.o \
Paul Stewartfdd16072011-09-16 12:41:35 -0700146 technology.o \
mukesh agrawalb54601c2011-06-07 17:39:22 -0700147 wifi.o \
148 wifi_endpoint.o \
mukesh agrawal6e277772011-09-29 15:04:23 -0700149 wifi_service.o \
150 wpa_supplicant.o
Chris Masone96832c32011-05-03 12:23:18 -0700151
152SHILL_BIN = shill
mukesh agrawal837bb562011-11-23 01:06:01 +0000153# Broken out separately, because (unlike other SHILL_OBJS), it
154# shouldn't be linked into TEST_BIN.
Chris Masone96832c32011-05-03 12:23:18 -0700155SHILL_MAIN_OBJ = shill_main.o
156
157TEST_BIN = shill_unittest
Darin Petkove02b3ca2011-05-31 16:00:44 -0700158TEST_OBJS = \
Paul Stewartf65320c2011-10-13 14:34:52 -0700159 async_connection_unittest.o \
Paul Stewart3ecfa2b2011-07-15 10:47:42 -0700160 byte_string_unittest.o \
mukesh agrawal186af052012-01-11 15:07:34 -0800161 callback_list_unittest.o \
Darin Petkovcb547732011-11-09 13:55:26 +0100162 cellular_capability_cdma_unittest.o \
Darin Petkovb05315f2011-11-07 10:14:25 +0100163 cellular_capability_gsm_unittest.o \
Darin Petkovb72cf402011-11-22 14:51:39 +0100164 cellular_service_unittest.o \
Chris Masoneb925cc82011-06-22 15:39:57 -0700165 cellular_unittest.o \
Darin Petkov823c47e2011-06-27 16:15:35 -0700166 crypto_des_cbc_unittest.o \
Darin Petkov86964e02011-06-29 13:49:28 -0700167 crypto_provider_unittest.o \
Darin Petkov877642b2011-06-27 13:37:22 -0700168 crypto_rot47_unittest.o \
Paul Stewartdd60e452011-08-08 11:38:36 -0700169 connection_unittest.o \
Chris Masoned0ceb8c2011-06-02 10:05:39 -0700170 dbus_adaptor_unittest.o \
Darin Petkove0a312e2011-07-20 13:45:28 -0700171 dbus_properties_unittest.o \
Chris Masone88cbd5f2011-07-03 14:30:04 -0700172 default_profile_unittest.o \
Darin Petkove02b3ca2011-05-31 16:00:44 -0700173 device_info_unittest.o \
Darin Petkovafa6fc42011-06-21 16:21:08 -0700174 device_unittest.o \
Darin Petkove7cb7f82011-06-03 13:21:51 -0700175 dhcp_config_unittest.o \
Darin Petkov98dd6a02011-06-10 15:12:57 -0700176 dhcp_provider_unittest.o \
Paul Stewartc2350ee2011-10-19 12:28:40 -0700177 dns_client_unittest.o \
Darin Petkove4c0ace2011-08-24 10:32:46 -0700178 error_unittest.o \
Paul Stewartf65320c2011-10-13 14:34:52 -0700179 http_proxy_unittest.o \
Paul Stewart1d18e8c2011-07-15 11:00:31 -0700180 ip_address_unittest.o \
Darin Petkove02b3ca2011-05-31 16:00:44 -0700181 ipconfig_unittest.o \
Darin Petkov083047b2011-06-23 20:42:48 -0700182 key_file_store_unittest.o \
Darin Petkove02b3ca2011-05-31 16:00:44 -0700183 manager_unittest.o \
Thieu Le48e6d6d2011-12-06 00:40:27 +0000184 metrics_unittest.o \
Chris Masone95207da2011-06-29 16:50:49 -0700185 mock_adaptors.o \
Paul Stewartc2350ee2011-10-19 12:28:40 -0700186 mock_ares.o \
Paul Stewartf65320c2011-10-13 14:34:52 -0700187 mock_async_connection.o \
mukesh agrawal186af052012-01-11 15:07:34 -0800188 mock_callback.o \
Paul Stewartc1dec4d2011-12-08 15:25:28 -0800189 mock_connection.o \
Darin Petkove02b3ca2011-05-31 16:00:44 -0700190 mock_control.o \
Darin Petkov1bdedf12011-08-26 13:32:11 -0700191 mock_dbus_properties_proxy.o \
Chris Masonea82b7112011-05-25 15:16:29 -0700192 mock_device.o \
Darin Petkov1bdedf12011-08-26 13:32:11 -0700193 mock_device_info.o \
194 mock_dhcp_config.o \
195 mock_dhcp_provider.o \
196 mock_dhcp_proxy.o \
Paul Stewartf65320c2011-10-13 14:34:52 -0700197 mock_dns_client.o \
Paul Stewartc2350ee2011-10-19 12:28:40 -0700198 mock_event_dispatcher.o \
Darin Petkov1bdedf12011-08-26 13:32:11 -0700199 mock_glib.o \
Darin Petkovef34f182011-08-26 14:14:40 -0700200 mock_ipconfig.o \
201 mock_manager.o \
202 mock_modem_cdma_proxy.o \
Darin Petkov975b5e72011-08-30 11:48:08 -0700203 mock_modem_gsm_card_proxy.o \
Darin Petkovef34f182011-08-26 14:14:40 -0700204 mock_modem_gsm_network_proxy.o \
205 mock_modem_manager_proxy.o \
206 mock_modem_proxy.o \
207 mock_modem_simple_proxy.o \
Darin Petkov394b7d42011-11-03 15:48:02 +0100208 mock_power_manager_proxy.o \
Chris Masone7aa5f902011-07-11 11:13:35 -0700209 mock_profile.o \
Darin Petkovef34f182011-08-26 14:14:40 -0700210 mock_property_store.o \
Darin Petkoveac68e62011-08-26 16:24:51 -0700211 mock_resolver.o \
212 mock_routing_table.o \
Darin Petkovef34f182011-08-26 14:14:40 -0700213 mock_rtnl_handler.o \
Chris Masonea82b7112011-05-25 15:16:29 -0700214 mock_service.o \
Darin Petkovef34f182011-08-26 14:14:40 -0700215 mock_sockets.o \
Darin Petkoveac68e62011-08-26 16:24:51 -0700216 mock_store.o \
Darin Petkovef34f182011-08-26 14:14:40 -0700217 mock_supplicant_interface_proxy.o \
218 mock_supplicant_process_proxy.o \
Paul Stewartc2350ee2011-10-19 12:28:40 -0700219 mock_time.o \
mukesh agrawal7a4e4002011-09-06 11:26:05 -0700220 mock_wifi.o \
mukesh agrawal7ec71312011-11-10 02:08:26 +0000221 mock_wifi_service.o \
Darin Petkov887f2982011-07-14 16:10:17 -0700222 modem_info_unittest.o \
223 modem_manager_unittest.o \
Darin Petkove0a312e2011-07-20 13:45:28 -0700224 modem_unittest.o \
mukesh agrawaldc42bb32011-07-28 10:40:26 -0700225 nice_mock_control.o \
Darin Petkova4766822011-07-07 10:42:22 -0700226 profile_unittest.o \
Chris Masone27bf1032011-06-28 17:02:01 -0700227 property_accessor_unittest.o \
Chris Masoneb925cc82011-06-22 15:39:57 -0700228 property_store_unittest.o \
Paul Stewartb6063942011-08-05 10:17:29 -0700229 resolver_unittest.o \
Paul Stewart75e89d22011-08-01 10:00:02 -0700230 routing_table_unittest.o \
Darin Petkove0a312e2011-07-20 13:45:28 -0700231 rtnl_handler_unittest.o \
Darin Petkovca432fc2011-07-08 15:56:57 -0700232 rtnl_listener_unittest.o \
Paul Stewartdd7df792011-07-15 11:09:50 -0700233 rtnl_message_unittest.o \
Chris Masone6515aab2011-10-12 16:19:09 -0700234 service_under_test.o \
Chris Masone3bd3c8c2011-06-13 08:20:26 -0700235 service_unittest.o \
Darin Petkove02b3ca2011-05-31 16:00:44 -0700236 shill_unittest.o \
Chris Masone853b81b2011-06-24 14:11:41 -0700237 testrunner.o \
mukesh agrawal6e277772011-09-29 15:04:23 -0700238 wifi_endpoint_unittest.o \
Chris Masone34af2182011-08-22 11:59:36 -0700239 wifi_service_unittest.o \
Chris Masone853b81b2011-06-24 14:11:41 -0700240 wifi_unittest.o
Chris Masone96832c32011-05-03 12:23:18 -0700241
Darin Petkovc90fe522011-07-15 13:59:47 -0700242.PHONY: all clean
243
Chris Masone96832c32011-05-03 12:23:18 -0700244all: $(SHILL_BIN) $(TEST_BIN)
245
Darin Petkov4a09b6b2011-07-19 12:52:06 -0700246$(DBUS_PROXY_BINDINGS): %.h: %.xml
Darin Petkov005aa382011-11-17 14:26:21 +0100247 $(DBUSXX_XML2CPP) $< --proxy=$@ --sync --async
Chris Masone413a3192011-05-09 17:10:05 -0700248
Darin Petkov4a09b6b2011-07-19 12:52:06 -0700249$(DBUS_ADAPTOR_BINDINGS): %.h: %.xml
Chris Masone14de6e52011-05-09 09:20:59 -0700250 $(DBUSXX_XML2CPP) $< --adaptor=$@
251
Chris Masone96832c32011-05-03 12:23:18 -0700252.cc.o:
mukesh agrawal837bb562011-11-23 01:06:01 +0000253 $(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE_DIRS) -MMD -c $< -o $@
Chris Masone96832c32011-05-03 12:23:18 -0700254
Darin Petkov4a09b6b2011-07-19 12:52:06 -0700255$(SHILL_OBJS): $(DBUS_BINDINGS)
Chris Masone14de6e52011-05-09 09:20:59 -0700256
Darin Petkovd1b715b2011-06-02 21:21:22 -0700257$(SHILL_BIN): $(SHILL_MAIN_OBJ) $(SHILL_OBJS)
Chris Masone96832c32011-05-03 12:23:18 -0700258 $(CXX) $(CXXFLAGS) $(INCLUDE_DIRS) $(LIB_DIRS) $(LDFLAGS) $^ $(LIBS) \
Darin Petkovd1b715b2011-06-02 21:21:22 -0700259 -o $@
Chris Masone96832c32011-05-03 12:23:18 -0700260
261$(TEST_BIN): CXXFLAGS += -DUNIT_TEST
Darin Petkovd1b715b2011-06-02 21:21:22 -0700262$(TEST_BIN): $(TEST_OBJS) $(SHILL_OBJS)
Darin Petkovc90fe522011-07-15 13:59:47 -0700263 $(CXX) $(CXXFLAGS) $(TEST_LIB_DIRS) $(LDFLAGS) $^ $(TEST_LIBS) -o $@
Chris Masone96832c32011-05-03 12:23:18 -0700264
265clean:
Darin Petkove604f702011-07-28 15:51:17 -0700266 rm -rf \
267 *.o \
mukesh agrawal837bb562011-11-23 01:06:01 +0000268 *.d \
Darin Petkovf5f61e02011-07-29 11:35:40 -0700269 $(CLEAN_FILES) \
Darin Petkove604f702011-07-28 15:51:17 -0700270 $(DBUS_BINDINGS) \
271 $(SHILL_BIN) \
272 $(TEST_BIN)
mukesh agrawal837bb562011-11-23 01:06:01 +0000273
274-include $(SHILL_OBJS:.o=.d)
275-include $(SHILL_MAIN_OBJ:.o=.d)
276-include $(TEST_OBJS:.o=.d)