blob: 56226ef429de239d5f8bfd11b2a9724e4e01dbfa [file] [log] [blame]
Bruno Rochabe388f32011-08-02 12:40:17 -07001# Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
Darin Petkov65b01462010-04-14 13:32:20 -07002# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4#
5# Makefile for metrics utilities -- library, client and daemon
6#
7
Mike Frysinger8b8dd202012-02-21 13:15:09 -05008PKG_CONFIG ?= pkg-config
Elly Jones4abef112012-01-11 17:27:01 -05009PC_DEPS = dbus-1 glib-2.0 dbus-glib-1 libchrome libchromeos
Mike Frysinger8b8dd202012-02-21 13:15:09 -050010CCONFIG := $(shell $(PKG_CONFIG) --cflags $(PC_DEPS))
11LDCONFIG := $(shell $(PKG_CONFIG) --libs $(PC_DEPS) gthread-2.0)
Darin Petkov65b01462010-04-14 13:32:20 -070012
Darin Petkov41e06232010-05-03 16:45:37 -070013CXXFLAGS += -Wall -Werror -fPIC -fno-exceptions $(CCONFIG)
Darin Petkov65b01462010-04-14 13:32:20 -070014
15CLIENT = metrics_client
16DAEMON = metrics_daemon
Darin Petkov2ccef012010-05-05 16:06:37 -070017DAEMON_TEST = metrics_daemon_test
Darin Petkov65b01462010-04-14 13:32:20 -070018LIB = libmetrics.a
19SHAREDLIB = libmetrics.so
Darin Petkov11b8eb32010-05-18 11:00:59 -070020LIB_TEST = metrics_library_test
Darin Petkovf1e85e42010-06-10 15:59:53 -070021COUNTER_TEST = counter_test
Bruno Rochabe388f32011-08-02 12:40:17 -070022TIMER_TEST = timer_test
Darin Petkov65b01462010-04-14 13:32:20 -070023
Darin Petkovf1e85e42010-06-10 15:59:53 -070024TESTCOUNTER_OBJS = \
25 counter.o \
26 counter_test.o
Bruno Rochabe388f32011-08-02 12:40:17 -070027TESTTIMER_OBJS = \
28 timer.o \
29 timer_test.o
Darin Petkov65b01462010-04-14 13:32:20 -070030CLIENT_OBJS = \
31 metrics_client.o
Darin Petkovf1e85e42010-06-10 15:59:53 -070032DAEMON_OBJS = \
33 counter.o \
34 metrics_daemon.o \
35 metrics_daemon_main.o
36TESTDAEMON_OBJS = \
37 counter.o \
38 metrics_daemon.o \
39 metrics_daemon_test.o
Darin Petkov65b01462010-04-14 13:32:20 -070040LIB_OBJS = \
Sam Leffler10b301d2010-06-17 14:22:43 -070041 c_metrics_library.o \
Bruno Rochabe388f32011-08-02 12:40:17 -070042 metrics_library.o \
43 timer.o
Darin Petkov11b8eb32010-05-18 11:00:59 -070044TESTLIB_OBJS = \
Darin Petkov11b8eb32010-05-18 11:00:59 -070045 metrics_library_test.o
Darin Petkov65b01462010-04-14 13:32:20 -070046
Chris Masone3fd74742010-08-12 12:19:25 -070047TESTCOUNTER_LIBS = -lgmock -lgtest -lbase -lrt -lpthread -lglib-2.0
Bruno Rochabe388f32011-08-02 12:40:17 -070048TESTTIMER_LIBS = -lgmock -lgtest -lbase -lrt -lpthread -lglib-2.0
Elly Jones4abef112012-01-11 17:27:01 -050049DAEMON_LDFLAGS = $(LDFLAGS) $(LDCONFIG) -lpthread -lgflags \
Ken Mixterb2f17092011-07-22 14:59:51 -070050 -lglib-2.0 -lrootdev -lpolicy
Darin Petkovfc91b422010-05-12 13:05:45 -070051TESTDAEMON_LIBS = -lgmock -lgtest
Ken Mixterb2f17092011-07-22 14:59:51 -070052TESTLIB_LIBS = -lgtest -lgmock -lbase -lrt -lpthread -lglib-2.0
Mike Frysinger8b8dd202012-02-21 13:15:09 -050053POLICY_LIBS := -lpolicy $(shell $(PKG_CONFIG) --libs libchrome)
Darin Petkov65b01462010-04-14 13:32:20 -070054
Darin Petkov2ccef012010-05-05 16:06:37 -070055all: $(LIB) $(SHAREDLIB) $(CLIENT) $(DAEMON)
56
Bruno Rochabe388f32011-08-02 12:40:17 -070057tests: $(COUNTER_TEST) $(DAEMON_TEST) $(LIB_TEST) $(TIMER_TEST)
Darin Petkov65b01462010-04-14 13:32:20 -070058
59$(CLIENT): $(CLIENT_OBJS) $(SHAREDLIB)
Mike Frysinger8b8dd202012-02-21 13:15:09 -050060 $(CXX) $(LDFLAGS) $^ -o $@ $(POLICY_LIBS) -lrt
Darin Petkov65b01462010-04-14 13:32:20 -070061
Darin Petkovf1e85e42010-06-10 15:59:53 -070062$(COUNTER_TEST): $(TESTCOUNTER_OBJS)
63 $(CXX) -o $@ $^ $(TESTCOUNTER_LIBS)
64
Bruno Rochabe388f32011-08-02 12:40:17 -070065$(TIMER_TEST): $(TESTTIMER_OBJS)
66 $(CXX) -o $@ $^ $(TESTTIMER_LIBS)
67
Darin Petkov65b01462010-04-14 13:32:20 -070068$(DAEMON): $(DAEMON_OBJS) $(SHAREDLIB)
Ken Mixtere4fb0af2010-09-14 18:09:20 -070069 $(CXX) -o $@ $^ $(DAEMON_LDFLAGS)
Darin Petkov65b01462010-04-14 13:32:20 -070070
Darin Petkov11b8eb32010-05-18 11:00:59 -070071$(DAEMON_TEST): $(TESTDAEMON_OBJS)
Darin Petkov65b01462010-04-14 13:32:20 -070072 $(CXX) -o $@ $^ $(DAEMON_LDFLAGS) $(TESTDAEMON_LIBS)
73
74$(LIB): $(LIB_OBJS)
Darin Petkov2ccef012010-05-05 16:06:37 -070075 $(AR) rcs $@ $^
Darin Petkov65b01462010-04-14 13:32:20 -070076
77$(SHAREDLIB): $(LIB_OBJS)
Mike Frysinger8b8dd202012-02-21 13:15:09 -050078 $(CXX) $(LDFLAGS) -shared $^ -o $@ $(POLICY_LIBS)
Darin Petkov65b01462010-04-14 13:32:20 -070079
Darin Petkov11b8eb32010-05-18 11:00:59 -070080$(LIB_TEST): $(TESTLIB_OBJS) $(SHAREDLIB)
Ken Mixterb2f17092011-07-22 14:59:51 -070081 $(CXX) -o $@ $^ $(LDFLAGS) $(POLICY_LIBS) $(TESTLIB_LIBS)
Darin Petkov11b8eb32010-05-18 11:00:59 -070082
Darin Petkov65b01462010-04-14 13:32:20 -070083%.o: %.cc
84 $(CXX) $(CXXFLAGS) -c $< -o $@
85
Darin Petkov65b01462010-04-14 13:32:20 -070086clean:
Darin Petkov11b8eb32010-05-18 11:00:59 -070087 rm -f $(CLIENT) $(DAEMON) $(LIB) $(SHAREDLIB) *.o
Bruno Rochabe388f32011-08-02 12:40:17 -070088 rm -f $(COUNTER_TEST) $(DAEMON_TEST) $(LIB_TEST) $(TIMER_TEST)