blob: e92cb5d2002a3403ea8219bfbc3ebd55d25882a9 [file] [log] [blame]
# Copyright (c) 2013 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.
#
# Top-level Makefile for Chromium OS Modem Interface Switching Tool (mist).
include common.mk
PKG_CONFIG ?= pkg-config
PROTOC ?= protoc
BASE_VER ?= 180609
PC_DEPS = libchrome-$(BASE_VER) libchromeos-$(BASE_VER) libusb-1.0
PC_CFLAGS := $(shell $(PKG_CONFIG) --cflags $(PC_DEPS))
PC_LIBS := $(shell $(PKG_CONFIG) --libs $(PC_DEPS))
GENERATED_DIR = generated
CPPFLAGS += -I$(SRC)/.. -I$(OUT)/$(GENERATED_DIR) $(PC_CFLAGS)
LDLIBS += -lmetrics -lprotobuf -lpthread -ludev $(PC_LIBS)
MIST_PROTO_BINDINGS_DIR = $(GENERATED_DIR)/mist/proto_bindings
MIST_PROTO_BINDINGS = \
$(MIST_PROTO_BINDINGS_DIR)/config.pb.cc \
$(MIST_PROTO_BINDINGS_DIR)/usb_modem_info.pb.cc
MIST_PROTO_PATH = $(SRC)/proto
MIST_PROTO_HEADERS = $(patsubst %.cc,%.h,$(MIST_PROTO_BINDINGS))
MIST_PROTO_OBJS = $(patsubst %.cc,%.o,$(MIST_PROTO_BINDINGS))
$(MIST_PROTO_HEADERS): %.h: %.cc ;
$(MIST_PROTO_BINDINGS): \
$(MIST_PROTO_BINDINGS_DIR)/%.pb.cc: $(MIST_PROTO_PATH)/%.proto
$(call auto_mkdir,$@)
$(PROTOC) --proto_path=$(MIST_PROTO_PATH) \
--cpp_out=$(MIST_PROTO_BINDINGS_DIR) $<
clean: CLEAN($(MIST_PROTO_BINDINGS))
clean: CLEAN($(MIST_PROTO_HEADERS))
clean: CLEAN($(MIST_PROTO_OBJS))
$(eval $(call add_object_rules,$(MIST_PROTO_OBJS),CXX,cc,CXXFLAGS))
$(patsubst %.o,%.o.depends,$(CXX_OBJECTS)): $(MIST_PROTO_HEADERS)
CXX_BINARY(mist): \
$(filter-out mock_%.o testrunner.o %_unittest.o,$(CXX_OBJECTS)) \
$(MIST_PROTO_OBJS)
clean: CLEAN(mist)
testrunner: \
$(filter-out %main.o,$(CXX_OBJECTS)) \
$(MIST_PROTO_OBJS)
$(call cxx_binary, -lgtest -lgmock)
clean: CLEAN(testrunner)
default: CXX_BINARY(mist)
all: default
tests: TEST(testrunner)