aboutsummaryrefslogtreecommitdiffstats
path: root/tools/vtpm/Makefile
blob: d1cf6caf931025cee273dee430f0b866adf73d1f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
XEN_ROOT = ../..

# Base definitions and rules
include $(XEN_ROOT)/tools/vtpm/Rules.mk

# Dir name for emulator (as dom0 tpm driver)
TPM_EMULATOR_DIR = tpm_emulator
# Dir name for vtpm instance
VTPM_DIR = vtpm
ORIG_DIR = orig

# Emulator tarball name
TPM_EMULATOR_NAME = tpm_emulator-0.4
TPM_EMULATOR_TARFILE = $(TPM_EMULATOR_NAME).tar.gz

GMP_HEADER = /usr/include/gmp.h

.PHONY: all
all: build

.PHONY: build
build: $(VTPM_DIR) $(TPM_EMULATOR_DIR) build_sub

.PHONY: install
install: build
	if [ "$(BUILD_EMULATOR)" = "y" ]; then \
		$(MAKE) -C $(TPM_EMULATOR_DIR) $@ ;\
	fi 
	$(MAKE) -C $(VTPM_DIR) $@

.PHONY: clean
clean:
	@if [ -d $(TPM_EMULATOR_DIR) ]; \
		then $(MAKE) -C $(TPM_EMULATOR_DIR) clean; \
	fi
	@if [ -d $(VTPM_DIR) ]; \
		then $(MAKE) -C $(VTPM_DIR) clean; \
	fi

.PHONY: mrproper
mrproper:
	rm -f $(TPM_EMULATOR_TARFILE) tpm_emulator.patch.old vtpm.patch.old
	rm -rf $(TPM_EMULATOR_DIR) $(VTPM_DIR) $(ORIG_DIR)

# Download Swiss emulator
$(TPM_EMULATOR_TARFILE):
	wget http://download.berlios.de/tpm-emulator/$(TPM_EMULATOR_TARFILE)

# Create vtpm and TPM emulator dirs
# apply patches for 1) used as dom0 tpm driver 2) used as vtpm device instance
$(TPM_EMULATOR_DIR): $(TPM_EMULATOR_TARFILE) tpm_emulator.patch 
	set -e; if [ "$(BUILD_EMULATOR)" = "y" ]; then \
		rm -rf $(TPM_EMULATOR_DIR); \
		tar -xzf $(TPM_EMULATOR_TARFILE); \
		mv $(TPM_EMULATOR_NAME) $(TPM_EMULATOR_DIR); \
		cd $(TPM_EMULATOR_DIR); \
		patch -p1 <../tpm_emulator.patch; \
	fi

$(VTPM_DIR): $(TPM_EMULATOR_TARFILE) vtpm.patch
	rm -rf $(VTPM_DIR)
	tar -xzf $(TPM_EMULATOR_TARFILE)
	mv $(TPM_EMULATOR_NAME) $(VTPM_DIR)

	set -e; cd $(VTPM_DIR); \
	patch -p1 < ../tpm_emulator.patch; \
	patch -p1 < ../vtpm.patch

orig: $(TPM_EMULATOR_TARFILE)
	mkdir $(ORIG_DIR);
	set -e; cd $(ORIG_DIR); \
	tar -xzf ../$(TPM_EMULATOR_TARFILE);

updatepatches: clean orig
	set -e; if [ "$(BUILD_EMULATOR)" = "y" ]; then \
		find $(TPM_EMULATOR_DIR) -name "*.orig" -print | xargs rm -f; \
		mv tpm_emulator.patch tpm_emulator.patch.old; \
		diff -uprN orig/$(TPM_EMULATOR_NAME) $(TPM_EMULATOR_DIR) > tpm_emulator.patch || true; \
        fi; 
	find $(VTPM_DIR) -name "*.orig" -print | xargs rm -f; 
	mv vtpm.patch vtpm.patch.old; 
	diff -uprN $(TPM_EMULATOR_DIR) $(VTPM_DIR) > vtpm.patch || true;

.PHONY: build_sub
build_sub:
	set -e; if [ -e $(GMP_HEADER) ]; then \
		$(MAKE) -C $(VTPM_DIR); \
		if [ "$(BUILD_EMULATOR)" = "y" ]; then \
			$(MAKE) -C $(TPM_EMULATOR_DIR); \
		fi \
	else \
		echo "=== Unable to build VTPMs. libgmp could not be found."; \
	fi