blob: 44a2461452a0914d9f6efe99d837fb9323eae6c4 [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.
# Pull in chromium os defaults
# See the header of common.mk for details on its origin
include common.mk
PKG_CONFIG ?= pkg-config
BASE_VER ?= 242728
PC_DEPS = bootstat dbus-1 glib-2.0 nss libchrome-$(BASE_VER) \
libchromeos-$(BASE_VER)
PC_CFLAGS := $(shell $(PKG_CONFIG) --cflags $(PC_DEPS))
PC_LIBS := $(shell $(PKG_CONFIG) --libs $(PC_DEPS))
CPPFLAGS += -I$(SRC)/.. -I$(OUT) -DOS_CHROMEOS -DUSE_NSS -D__STDC_FORMAT_MACROS
CPPFLAGS += $(PC_CFLAGS)
LDLIBS += -lchrome_crypto $(PC_LIBS) -lprotobuf-lite -lmetrics-$(BASE_VER)
# Special logic for generating protobuffer bindings.
PROTO_PATH = $(SYSROOT)/usr/include/proto
PROTO_BINDINGS = chrome_device_policy.pb.cc device_management_backend.pb.cc
PROTO_HEADERS = $(patsubst %.cc,%.h,$(PROTO_BINDINGS))
PROTO_OBJS = chrome_device_policy.pb.o device_management_backend.pb.o
$(PROTO_HEADERS): %.h: %.cc ;
$(PROTO_BINDINGS): %.pb.cc: $(PROTO_PATH)/%.proto
protoc --proto_path=$(PROTO_PATH) --cpp_out=$(OUT) $<
clean: CLEAN($(PROTO_BINDINGS))
clean: CLEAN($(PROTO_HEADERS))
clean: CLEAN($(PROTO_OBJS))
# Add rules for compiling generated protobuffer code, as the CXX_OBJECTS list
# is built before these source files exists and, as such, does not contain them.
$(eval $(call add_object_rules,$(PROTO_OBJS),CXX,cc,CXXFLAGS))
# The binaries we build and the objects they depend on
KEYGEN_BIN = keygen
KEYGEN_OBJS = keygen.o keygen_worker.o nss_util.o policy_key.o \
system_utils_impl.o
SESSION_BIN = session_manager
SESSION_OBJS = $(PROTO_OBJS) \
$(filter-out keygen%.o mock_%.o fake_%.o \
%_testrunner.o %_unittest.o,$(CXX_OBJECTS))
TEST_BIN = session_manager_unittest
TEST_OBJS = $(PROTO_OBJS) $(filter-out %main.o keygen.o,$(CXX_OBJECTS))
# Require proto and dbus bindings to be generated first.
$(patsubst %.o,%.o.depends,$(filter-out keygen.o,$(CXX_OBJECTS))): \
$(PROTO_HEADERS)
CXX_BINARY($(KEYGEN_BIN)): $(KEYGEN_OBJS)
clean: CLEAN($(KEYGEN_BIN))
CXX_BINARY($(SESSION_BIN)): $(SESSION_OBJS)
clean: CLEAN($(SESSION_BIN))
CXX_BINARY($(TEST_BIN)): $(TEST_OBJS) | CXX_BINARY($(KEYGEN_BIN))
CXX_BINARY($(TEST_BIN)): CPPFLAGS += -DUNIT_TEST
UNITTEST_LIBS := $(shell gmock-config --libs) $(shell gtest-config --libs)
CXX_BINARY($(TEST_BIN)): LDLIBS += $(UNITTEST_LIBS)
clean: CLEAN($(TEST_BIN)))
tests: TEST(CXX_BINARY($(TEST_BIN)))
CC_BINARY(cros-xauth): cros-xauth.o
CC_BINARY(cros-xauth): LDLIBS =
clean: CLEAN(cros-xauth)
all: login_manager CC_BINARY(cros-xauth)
login_manager: \
CXX_BINARY($(KEYGEN_BIN)) CXX_BINARY($(SESSION_BIN))