blob: 70d2a4a106736e4d052485f27af8ef0096e14b3c [file] [log] [blame]
# Copyright (C) 2010 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.makefile file.
#
# Top-level Makefile for verity.
# Pull in chromium os defaults
include common.mk
# Force g++ use.
#CC = $(CXX)
# Prepend with our include
CFLAGS := -Iinclude $(CFLAGS)
CXXFLAGS := -Iinclude -I../ $(CXXFLAGS)
# Use openssl for digests
LDFLAGS += -lcrypto
ifneq ($(WITH_CHROME),0)
CXXFLAGS += -DWITH_CHROME=1
LDFLAGS += -lpthread -lrt -L/usr/lib -lbase
WITH_CHROME = 1
endif
# Helper so I can type "make verity" on the prompt
verity: $(OUT)verity
## Binary target linked against a shared libdm-bht.so
#$(OUT)verity-l: $(OUT)libdm-bht.so $(OUT)verity_main.o
# @# Build the target as a binary with extra flags
# $(call cc_binary,-L$(OUT) -ldm-bht)
## Adds verity to the default compile
#all: $(OUT)verity-l
## Add our targets to get auto-rm'd
#RM_ON_CLEAN += $(OUT)verity-l
# Current toolchain doesn't support -pie statically linked binaries
#$(OUT)verity-static: $(C_OBJECTS) $(OUT)kernel/libkernel-pie.a \
# /usr/lib/libcrypto.a
# @# Build the target as a binary with extra flags
# $(call cc_binary,-static)
#all: $(OUT)verity-static
#RM_ON_CLEAN += $(wildcard $(OUT)verity-static)
$(OUT)verity: $(filter-out %_testrunner.o %_unittest.o,$(CXX_OBJECTS)) \
$(C_OBJECTS) \
$(OUT)kernel/libkernel-pie.a \
$(OUT)simple_file/libsimple_file-pie.a
$(call cxx_binary)
all: $(OUT)verity
RM_ON_CLEAN += $(OUT)verity
# Current toolchain doesn't support -pie statically linked binaries
#$(OUT)verity-static: $(C_OBJECTS) $(OUT)kernel/libkernel-pie.a \
# /usr/lib/libcrypto.a
# @# Build the target as a binary with extra flags
# $(call cc_binary,-static)
#all: $(OUT)verity-static
#m_clean: $(wildcard $(OUT)verity)
# Shared dm-bht library
$(OUT)libdm-bht.so: $(filter-out %verity_main.o,$(C_OBJECTS)) \
$(OUT)kernel/libkernel-pic.a
$(call cc_library)
all: $(OUT)libdm-bht.so
RM_ON_CLEAN += $(OUT)libdm-bht.so
# Tests require libchrome
ifneq ($(WITH_CHROME),0)
# For this project, only the unittests are CXX
$(OUT)verity_testrunner: $(filter-out %_main.o,$(CXX_OBJECTS)) \
$(OUT)simple_file/libsimple_file-pie.a \
$(OUT)kernel/libkernel-pie.a
$(call cxx_binary,-lgtest -lgmock)
all: $(OUT)verity_testrunner
RM_ON_CLEAN += $(OUT)verity_testrunner
# Will run each prerequisite for tests.
# If cross-compiled, this is done against the correct architecture.
small_tests: $(OUT)verity_testrunner
# No large tests here so we use the NONE target.
large_tests: NONE
else
small_tests: NONE
large_tests: NONE
endif