blob: d6b5b6dc4927a0ea30fa7954690ea4d3303a5507 [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 Masone0e1d1042011-05-09 18:07:03 -070019INCLUDE_DIRS = $(BASE_INCLUDE_DIRS) $(shell $(PKG_CONFIG) --cflags glib-2.0 \
20 gdk-2.0 gtk+-2.0)
21LIB_DIRS = $(BASE_LIB_DIRS) $(shell $(PKG_CONFIG) --libs glib-2.0 \
22 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
Chris Masone14de6e52011-05-09 09:20:59 -070028XMLFILES = flimflam-device.xml \
29 flimflam-manager.xml \
Chris Masone413a3192011-05-09 17:10:05 -070030 flimflam-service.xml \
mukesh agrawal31d90f02011-05-10 16:53:22 -070031 supplicant-bss.xml \
32 supplicant-interface.xml \
33 supplicant-network.xml \
34 supplicant-supplicant.xml
Chris Masone14de6e52011-05-09 09:20:59 -070035
36DBUS_HEADERS = $(patsubst %.xml,%.h,$(XMLFILES))
Chris Masone96832c32011-05-03 12:23:18 -070037
38SHILL_LIB = shill_lib.a
39SHILL_OBJS = \
40 dbus_control.o \
41 device.o \
Paul Stewart0af98bf2011-05-10 17:38:08 -070042 device_info.o \
Paul Stewartb50f0b92011-05-16 16:31:42 -070043 ethernet.o \
Chris Masone96832c32011-05-03 12:23:18 -070044 manager.o \
Chris Masone96832c32011-05-03 12:23:18 -070045 service.o \
46 shill_config.o \
47 shill_daemon.o \
Paul Stewartb50f0b92011-05-16 16:31:42 -070048 shill_event.o \
49 wifi.o
Chris Masone96832c32011-05-03 12:23:18 -070050
51SHILL_BIN = shill
52SHILL_MAIN_OBJ = shill_main.o
53
54TEST_BIN = shill_unittest
Chris Masone9be4a9d2011-05-16 15:44:09 -070055TEST_OBJS = testrunner.o device_info_unittest.o manager_unittest.o \
56 shill_unittest.o
Chris Masone96832c32011-05-03 12:23:18 -070057
58all: $(SHILL_BIN) $(TEST_BIN)
59
mukesh agrawal31d90f02011-05-10 16:53:22 -070060supplicant-%.h: supplicant-%.xml
mukesh agrawal1c16aaf2011-05-10 13:43:08 -070061 $(DBUSXX_XML2CPP) $< --proxy=$@
Chris Masone413a3192011-05-09 17:10:05 -070062
mukesh agrawal31d90f02011-05-10 16:53:22 -070063flimflam-%.h: flimflam-%.xml
Chris Masone14de6e52011-05-09 09:20:59 -070064 $(DBUSXX_XML2CPP) $< --adaptor=$@
65
Chris Masone96832c32011-05-03 12:23:18 -070066.cc.o:
67 $(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE_DIRS) -c $< -o $@
68
Chris Masone14de6e52011-05-09 09:20:59 -070069$(SHILL_OBJS): $(DBUS_HEADERS)
70
Chris Masone96832c32011-05-03 12:23:18 -070071$(SHILL_LIB): $(SHILL_OBJS)
72 $(AR) rcs $@ $^
73
74$(SHILL_BIN): $(SHILL_MAIN_OBJ) $(SHILL_LIB)
75 $(CXX) $(CXXFLAGS) $(INCLUDE_DIRS) $(LIB_DIRS) $(LDFLAGS) $^ $(LIBS) \
76 -o $@
77
78$(TEST_BIN): CXXFLAGS += -DUNIT_TEST
79$(TEST_BIN): $(TEST_OBJS) $(SHILL_LIB)
80 $(CXX) $(CXXFLAGS) $(TEST_INCLUDE_DIRS) $(TEST_LIB_DIRS) $(LDFLAGS) $^ \
81 $(TEST_LIBS) -o $@
82
83clean:
Chris Masone14de6e52011-05-09 09:20:59 -070084 rm -rf *.o $(DBUS_HEADERS) $(SHILL_BIN) $(SHILL_LIB) $(TEST_BIN)