blob: 70270051a6b4a5b76c167ce84d223caf50d58713 [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++
6CXXFLAGS ?= -fno-strict-aliasing -Wall -Wextra -Werror -Wuninitialized
7CPPFLAGS ?= -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS
8AR ?= ar
9PKG_CONFIG ?= pkg-config
Chris Masone14de6e52011-05-09 09:20:59 -070010DBUSXX_XML2CPP = dbusxx-xml2cpp
Chris Masone96832c32011-05-03 12:23:18 -070011
Chris Masone0e1d1042011-05-09 18:07:03 -070012# libevent, gdk and gtk-2.0 are needed to leverage chrome's MessageLoop
13# TODO(cmasone): explore if newer versions of libbase let us avoid this.
14BASE_LIBS = -lbase -lchromeos -levent -lpthread -lrt
Chris Masone96832c32011-05-03 12:23:18 -070015BASE_INCLUDE_DIRS = -I..
16BASE_LIB_DIRS =
17
18LIBS = $(BASE_LIBS)
Chris Masoned7732e42011-05-20 11:08:56 -070019INCLUDE_DIRS = $(BASE_INCLUDE_DIRS) $(shell $(PKG_CONFIG) --cflags dbus-c++-1 \
20 glib-2.0 gdk-2.0 gtk+-2.0)
21LIB_DIRS = $(BASE_LIB_DIRS) $(shell $(PKG_CONFIG) --libs dbus-c++-1 glib-2.0 \
mukesh agrawalf8a51ce2011-05-27 11:18:13 -070022 gdk-2.0 gtk+-2.0)
Chris Masone96832c32011-05-03 12:23:18 -070023
24TEST_LIBS = $(BASE_LIBS) -lgmock -lgtest
25TEST_INCLUDE_DIRS = $(INCLUDE_DIRS)
26TEST_LIB_DIRS = $(LIB_DIRS)
27
Darin Petkov567a7d02011-05-26 17:15:34 -070028DBUS_ADAPTOR_HEADERS = \
29 flimflam-device.h \
Chris Masoneccc88812011-06-08 18:00:10 -070030 flimflam-ipconfig.h \
Darin Petkov567a7d02011-05-26 17:15:34 -070031 flimflam-manager.h \
Chris Masoneccc88812011-06-08 18:00:10 -070032 flimflam-profile.h \
Darin Petkov567a7d02011-05-26 17:15:34 -070033 flimflam-service.h
Chris Masone14de6e52011-05-09 09:20:59 -070034
Darin Petkov567a7d02011-05-26 17:15:34 -070035DBUS_PROXY_HEADERS = \
36 dhcpcd.h \
37 supplicant-bss.h \
38 supplicant-interface.h \
39 supplicant-network.h \
mukesh agrawalab87ea42011-05-18 11:44:49 -070040 supplicant-process.h
Darin Petkov567a7d02011-05-26 17:15:34 -070041
42DBUS_HEADERS = $(DBUS_ADAPTOR_HEADERS) $(DBUS_PROXY_HEADERS)
Chris Masone96832c32011-05-03 12:23:18 -070043
Chris Masone96832c32011-05-03 12:23:18 -070044SHILL_OBJS = \
Chris Masoned0ceb8c2011-06-02 10:05:39 -070045 dbus_adaptor.o \
Chris Masone96832c32011-05-03 12:23:18 -070046 dbus_control.o \
47 device.o \
Chris Masoned7732e42011-05-20 11:08:56 -070048 device_dbus_adaptor.o \
Paul Stewart0af98bf2011-05-10 17:38:08 -070049 device_info.o \
Darin Petkov50308cd2011-06-01 18:25:07 -070050 dhcp_config.o \
51 dhcp_provider.o \
52 dhcpcd_proxy.o \
mukesh agrawalb54601c2011-06-07 17:39:22 -070053 endpoint.o \
Chris Masone8fe2c7e2011-06-09 15:51:19 -070054 error.o \
Paul Stewartb50f0b92011-05-16 16:31:42 -070055 ethernet.o \
Paul Stewartf1ce5d22011-05-19 13:10:20 -070056 ethernet_service.o \
Darin Petkovf7897bc2011-06-08 17:13:36 -070057 glib.o \
Paul Stewartf1ce5d22011-05-19 13:10:20 -070058 glib_io_handler.o \
Darin Petkove02b3ca2011-05-31 16:00:44 -070059 ipconfig.o \
Chris Masone96832c32011-05-03 12:23:18 -070060 manager.o \
Chris Masoned7732e42011-05-20 11:08:56 -070061 manager_dbus_adaptor.o \
Chris Masone8fe2c7e2011-06-09 15:51:19 -070062 property_store_interface.o \
Paul Stewartf1ce5d22011-05-19 13:10:20 -070063 rtnl_handler.o \
64 rtnl_listener.o \
Chris Masone96832c32011-05-03 12:23:18 -070065 service.o \
Chris Masoned7732e42011-05-20 11:08:56 -070066 service_dbus_adaptor.o \
Chris Masone96832c32011-05-03 12:23:18 -070067 shill_config.o \
68 shill_daemon.o \
Paul Stewartb50f0b92011-05-16 16:31:42 -070069 shill_event.o \
mukesh agrawalb54601c2011-06-07 17:39:22 -070070 wifi.o \
71 wifi_endpoint.o \
72 wifi_service.o
Chris Masone96832c32011-05-03 12:23:18 -070073
74SHILL_BIN = shill
75SHILL_MAIN_OBJ = shill_main.o
76
77TEST_BIN = shill_unittest
Darin Petkove02b3ca2011-05-31 16:00:44 -070078TEST_OBJS = \
Chris Masoned0ceb8c2011-06-02 10:05:39 -070079 dbus_adaptor_unittest.o \
Darin Petkove02b3ca2011-05-31 16:00:44 -070080 device_info_unittest.o \
Darin Petkove7cb7f82011-06-03 13:21:51 -070081 dhcp_config_unittest.o \
Darin Petkov98dd6a02011-06-10 15:12:57 -070082 dhcp_provider_unittest.o \
Darin Petkove02b3ca2011-05-31 16:00:44 -070083 ipconfig_unittest.o \
84 manager_unittest.o \
85 mock_control.o \
Chris Masonea82b7112011-05-25 15:16:29 -070086 mock_device.o \
87 mock_service.o \
Darin Petkove02b3ca2011-05-31 16:00:44 -070088 shill_unittest.o \
89 testrunner.o
Chris Masone96832c32011-05-03 12:23:18 -070090
91all: $(SHILL_BIN) $(TEST_BIN)
mukesh agrawalab87ea42011-05-18 11:44:49 -070092integration_tests: wifi_integrationtest
Chris Masone96832c32011-05-03 12:23:18 -070093
Darin Petkov567a7d02011-05-26 17:15:34 -070094$(DBUS_PROXY_HEADERS): %.h: %.xml
mukesh agrawal1c16aaf2011-05-10 13:43:08 -070095 $(DBUSXX_XML2CPP) $< --proxy=$@
Chris Masone413a3192011-05-09 17:10:05 -070096
Darin Petkov567a7d02011-05-26 17:15:34 -070097$(DBUS_ADAPTOR_HEADERS): %.h: %.xml
Chris Masone14de6e52011-05-09 09:20:59 -070098 $(DBUSXX_XML2CPP) $< --adaptor=$@
99
Chris Masone96832c32011-05-03 12:23:18 -0700100.cc.o:
101 $(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE_DIRS) -c $< -o $@
102
Chris Masone14de6e52011-05-09 09:20:59 -0700103$(SHILL_OBJS): $(DBUS_HEADERS)
104
Darin Petkovd1b715b2011-06-02 21:21:22 -0700105$(SHILL_BIN): $(SHILL_MAIN_OBJ) $(SHILL_OBJS)
Chris Masone96832c32011-05-03 12:23:18 -0700106 $(CXX) $(CXXFLAGS) $(INCLUDE_DIRS) $(LIB_DIRS) $(LDFLAGS) $^ $(LIBS) \
Darin Petkovd1b715b2011-06-02 21:21:22 -0700107 -o $@
Chris Masone96832c32011-05-03 12:23:18 -0700108
109$(TEST_BIN): CXXFLAGS += -DUNIT_TEST
Darin Petkovd1b715b2011-06-02 21:21:22 -0700110$(TEST_BIN): $(TEST_OBJS) $(SHILL_OBJS)
Chris Masone96832c32011-05-03 12:23:18 -0700111 $(CXX) $(CXXFLAGS) $(TEST_INCLUDE_DIRS) $(TEST_LIB_DIRS) $(LDFLAGS) $^ \
112 $(TEST_LIBS) -o $@
113
mukesh agrawalab87ea42011-05-18 11:44:49 -0700114# NB(quiche): statically link gmock, gtest, as test device will not have them
115wifi_integrationtest: CXXFLAGS += -DUNIT_TEST
Darin Petkovd1b715b2011-06-02 21:21:22 -0700116wifi_integrationtest: wifi_integrationtest.o $(SHILL_OBJS)
mukesh agrawalab87ea42011-05-18 11:44:49 -0700117 $(CXX) $(CXXFLAGS) $(TEST_INCLUDE_DIRS) $(TEST_LIB_DIRS) $(LDFLAGS) $^ \
118 $(BASE_LIBS) -Wl,-Bstatic -lgmock -lgtest -Wl,-Bdynamic -o $@
119
Chris Masone96832c32011-05-03 12:23:18 -0700120clean:
Darin Petkovd1b715b2011-06-02 21:21:22 -0700121 rm -rf *.o $(DBUS_HEADERS) $(SHILL_BIN) $(TEST_BIN)