blob: 89be111b3affe0c9820cdab44b2028b0325508ca [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.
#
# Top-level Makefile for chaps.
# Pull in chromium os defaults
include common.mk
PKG_CONFIG ?= pkg-config
DBUSXX_XML2CPP = dbusxx-xml2cpp
PROTOC = protoc
BASE_VER = 85268
PC_DEPS = dbus-c++-1 protobuf openssl \
libchrome-$(BASE_VER) libchromeos-$(BASE_VER)
PC_CFLAGS := $(shell $(PKG_CONFIG) --cflags $(PC_DEPS))
PC_LIBS := $(shell $(PKG_CONFIG) --libs $(PC_DEPS))
INCLUDE_DIRS = -I$(OUT)include -I.. $(PC_CFLAGS)
LIB_DIRS = -L$(OUT)
CXXFLAGS := $(INCLUDE_DIRS) $(CXXFLAGS) -DNDEBUG
LDFLAGS += $(LIB_DIRS) $(PC_LIBS)
COMMON = $(OUT)chaps_utility.o $(OUT)attributes.pb.o $(OUT)attributes.o
MOCK = $(OUT)chaps_factory_mock.o \
$(OUT)object_mock.o \
$(OUT)object_policy_mock.o \
$(OUT)object_pool_mock.o \
$(OUT)object_store_mock.o \
$(OUT)session_mock.o \
$(OUT)slot_manager_mock.o \
$(OUT)tpm_utility_mock.o
# Rules
chaps_proxy_generated.h: chaps_interface.xml
$(DBUSXX_XML2CPP) $< --proxy=$@
RM_ON_CLEAN += chaps_proxy_generated.h
chaps_adaptor_generated.h: chaps_interface.xml
$(DBUSXX_XML2CPP) $< --adaptor=$@
RM_ON_CLEAN += chaps_adaptor_generated.h
attributes.pb.h: attributes.proto
$(PROTOC) -I. --cpp_out=. $<
RM_ON_CLEAN += attributes.pb.h attributes.pb.cc
attributes.pb.cc: attributes.pb.h
@echo
attributes.cc: attributes.pb.h
chaps_adaptor.cc chaps_adaptor.h chapsd.cc: chaps_adaptor_generated.h
chaps_proxy.cc chaps_proxy.h chaps.cc: chaps_proxy_generated.h
$(OUT)libchaps.so: $(COMMON) \
$(OUT)chaps.o \
$(OUT)chaps_proxy.o \
$(OUT)login_event_client.o
$(call cxx_library)
RM_ON_CLEAN += $(OUT)libchaps.so
$(OUT)chapsd: $(COMMON) \
$(OUT)chapsd.o \
$(OUT)chaps_service.o \
$(OUT)chaps_service_redirect.o \
$(OUT)chaps_adaptor.o \
$(OUT)slot_manager_impl.o \
$(OUT)session_impl.o \
$(OUT)object_impl.o \
$(OUT)object_policy_common.o \
$(OUT)object_policy_data.o \
$(OUT)object_policy_cert.o \
$(OUT)object_policy_key.o \
$(OUT)object_policy_public_key.o \
$(OUT)object_policy_private_key.o \
$(OUT)object_policy_secret_key.o \
$(OUT)object_pool_impl.o \
$(OUT)tpm_utility_impl.o \
$(OUT)chaps_factory_impl.o \
$(OUT)object_store_impl.o
$(call cxx_binary, -ldl -ltspi)
RM_ON_CLEAN += $(OUT)chapsd
$(OUT)chapsd_test: $(OUT)chapsd_test.o $(OUT)chaps_service_redirect.o
$(call cxx_binary, -lgtest -lgflags -lchaps -ldl)
RM_ON_CLEAN += $(OUT)chapsd_test
$(OUT)chaps_test: $(OUT)chaps_test.o $(OUT)chaps_proxy_mock.o $(OUT)libchaps.so
$(call cxx_binary, -lgtest -lgmock)
RM_ON_CLEAN += $(OUT)chaps_test
$(OUT)chaps_live_test: $(OUT)chaps_test.o
$(call cxx_binary, -lgtest -lgmock -lchaps)
RM_ON_CLEAN += $(OUT)chaps_live_test
$(OUT)vpn_replay: $(OUT)vpn_replay.o
$(call cxx_binary, -lchaps)
RM_ON_CLEAN += $(OUT)vpn_replay
$(OUT)chaps_event_generator: $(COMMON) \
$(OUT)chaps_event_generator.o \
$(OUT)chaps_proxy.o
$(call cxx_binary)
RM_ON_CLEAN += $(OUT)chaps_event_generator
$(OUT)chaps_service_test: $(COMMON) $(MOCK) \
$(OUT)chaps_service_test.o \
$(OUT)chaps_service.o
$(call cxx_binary, -lgtest -lgmock)
RM_ON_CLEAN += $(OUT)chaps_service_test
$(OUT)slot_manager_test: $(COMMON) $(MOCK) \
$(OUT)slot_manager_test.o \
$(OUT)slot_manager_impl.o
$(call cxx_binary, -lgtest -lgmock)
RM_ON_CLEAN += $(OUT)slot_manager_test
$(OUT)session_test: $(COMMON) $(MOCK) \
$(OUT)session_test.o \
$(OUT)session_impl.o
$(call cxx_binary, -lgtest -lgmock)
RM_ON_CLEAN += $(OUT)session_test
$(OUT)object_test: $(COMMON) $(MOCK) \
$(OUT)object_test.o \
$(OUT)object_impl.o
$(call cxx_binary, -lgtest -lgmock)
RM_ON_CLEAN += $(OUT)object_test
$(OUT)object_policy_test: $(COMMON) $(MOCK) \
$(OUT)object_policy_test.o \
$(OUT)object_policy_common.o \
$(OUT)object_policy_data.o \
$(OUT)object_policy_cert.o \
$(OUT)object_policy_key.o \
$(OUT)object_policy_public_key.o \
$(OUT)object_policy_private_key.o \
$(OUT)object_policy_secret_key.o
$(call cxx_binary, -lgtest -lgmock)
RM_ON_CLEAN += $(OUT)object_policy_test
$(OUT)object_pool_test: $(COMMON) $(MOCK) \
$(OUT)object_pool_test.o \
$(OUT)object_pool_impl.o
$(call cxx_binary, -lgtest -lgmock)
RM_ON_CLEAN += $(OUT)object_pool_test
$(OUT)object_store_test: $(COMMON) \
$(OUT)object_store_test.o \
$(OUT)object_store_impl.o
$(call cxx_binary, -lgtest)
RM_ON_CLEAN += $(OUT)object_store_test
$(OUT)tpm_utility_test: $(COMMON) $(MOCK) \
$(OUT)tpm_utility_test.o \
$(OUT)tpm_utility_impl.o
$(call cxx_binary, -lgtest -lgmock -ltspi)
RM_ON_CLEAN += $(OUT)tpm_utility_test
# Some shortcuts
all: $(OUT)libchaps.so $(OUT)chapsd
lib: $(OUT)libchaps.so
chapsd: $(OUT)chapsd
@echo
chapsd_test: $(OUT)chapsd_test
@echo
dbus-headers: chaps_adaptor_generated.h \
chaps_proxy_generated.h
protobufs: attributes.pb.h
tests: $(OUT)chaps_test \
$(OUT)chaps_service_test \
$(OUT)slot_manager_test \
$(OUT)session_test \
$(OUT)object_test \
$(OUT)object_policy_test \
$(OUT)object_pool_test \
$(OUT)object_store_test
live_tests: $(OUT)chapsd_test \
$(OUT)chaps_event_generator \
$(OUT)tpm_utility_test
perf: $(OUT)vpn_replay
runtests: tests
$(OUT)chaps_test
$(OUT)chaps_service_test
$(OUT)slot_manager_test
$(OUT)session_test
$(OUT)object_test
$(OUT)object_policy_test
$(OUT)object_pool_test
$(OUT)object_store_test