blob: a5a57b9c10f7044cc3988883a2524449085d3845 [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.
include common.mk
BASE_VER ?= 293518
PC_DEPS = openssl protobuf libchrome-$(BASE_VER)
PC_CFLAGS := $(shell $(PKG_CONFIG) --cflags $(PC_DEPS))
PC_LIBS := $(shell $(PKG_CONFIG) --libs $(PC_DEPS))
CPPFLAGS += -Iperf $(PC_CFLAGS) -D__STDC_FORMAT_MACROS
LDLIBS += $(PC_LIBS)
TEST_SOURCES = address_mapper_test.cc conversion_utils_test.cc \
perf_parser_test.cc perf_reader_test.cc \
perf_serializer_test.cc perf_recorder_test.cc utils_test.cc
GENERATED_OBJECTS = perf_data.pb.o
GENERATED_HEADERS = $(GENERATED_OBJECTS:.pb.o=.pb.h)
COMMON_OBJECTS = address_mapper.o conversion_utils.o perf_parser.o \
perf_protobuf_io.o \
perf_reader.o perf_recorder.o perf_serializer.o utils.o \
$(GENERATED_OBJECTS)
COMMON_TEST_OBJECTS = test_utils.o
# Rule for compiling protobuf.
perf_data.pb.h perf_data.pb.cc: perf_data.proto
protoc --cpp_out=. $^
clean: CLEAN(perf_data.pb.h perf_data.pb.cc)
$(eval $(call add_object_rules,perf_data.pb.o,CXX,cc))
# Dependencies on the protobuf.
quipper.o.depends \
perf_protobuf_io.o.depends \
perf_recorder.o.depends \
perf_serializer.o.depends: perf_data.pb.h
# Rule for compiling main quipper executable.
CXX_BINARY(quipper): quipper.o $(COMMON_OBJECTS)
clean: CLEAN(quipper)
all: CXX_BINARY(quipper)
# Template for unit tests.
define TEST_RULES_template
CXX_BINARY($(1)): LDLIBS += -lgtest -lgmock
CXX_BINARY($(1)): $(1).o $(COMMON_OBJECTS) $(COMMON_TEST_OBJECTS)
clean: CLEAN($(1))
tests: TEST(CXX_BINARY($(1)))
endef
TEST_BINS = $(patsubst $(SRC)/%.cc,%,$(wildcard $(SRC)/*_test.cc))
$(foreach prog,$(TEST_BINS),$(eval $(call TEST_RULES_template,$(prog))))