mirror of
https://github.com/jiazhang0/meta-secure-core.git
synced 2026-05-06 17:58:24 +00:00
meta-secure-core: initial commit
Signed-off-by: Lans Zhang <jia.zhang@windriver.com>
This commit is contained in:
21
meta-tpm2/README.md
Normal file
21
meta-tpm2/README.md
Normal file
@@ -0,0 +1,21 @@
|
||||
### TPM 2.0
|
||||
This feature enables Trusted Platform Module (TPM 2.0) support, including
|
||||
kernel option changes to enable tpm drivers, and picking up TPM 2.0 packages.
|
||||
|
||||
Trusted Platform Module (TPM 2.0) is a microcontroller that stores keys,
|
||||
passwords, and digital certificates. A TPM 2.0 offers the capabilities as
|
||||
part of the overall platform security requirements.
|
||||
|
||||
### Clear TPM
|
||||
For TPM 2.0, the following typical steps can be performed to get the TPM
|
||||
ready for use:
|
||||
|
||||
- Clear and enable TPM from the BIOS or set the security jumper on the board.
|
||||
- Take TPM ownership, setting Owner/Endorsement/Lockout passwords if
|
||||
necessary. These passwords are used for the authorization to certain
|
||||
TPM 2.0 commands.
|
||||
```
|
||||
# tpm2_takeownership -o <ownerPasswd> -e <endorsePasswd> -l <lockPasswd>
|
||||
```
|
||||
Then, you can use the TPM for a specific need, such as key generation,
|
||||
sealing encrypted data, etc.
|
||||
12
meta-tpm2/conf/layer.conf
Normal file
12
meta-tpm2/conf/layer.conf
Normal file
@@ -0,0 +1,12 @@
|
||||
# We have a conf and classes directory, add to BBPATH
|
||||
BBPATH .= ":${LAYERDIR}"
|
||||
|
||||
# We have recipes-* directories, add to BBFILES
|
||||
BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \
|
||||
${LAYERDIR}/recipes-*/*/*.bbappend"
|
||||
|
||||
BBFILE_COLLECTIONS += "tpm2"
|
||||
BBFILE_PATTERN_tpm2 = "^${LAYERDIR}/"
|
||||
BBFILE_PRIORITY_tpm2 = "10"
|
||||
|
||||
LAYERDEPENDS_tpm2 = "core"
|
||||
@@ -0,0 +1 @@
|
||||
include packagegroup-tpm2.inc
|
||||
11
meta-tpm2/recipes-base/packagegroups/packagegroup-tpm2.bb
Normal file
11
meta-tpm2/recipes-base/packagegroups/packagegroup-tpm2.bb
Normal file
@@ -0,0 +1,11 @@
|
||||
include packagegroup-tpm2.inc
|
||||
|
||||
RDEPENDS_${PN} += "\
|
||||
tpm2-abrmd \
|
||||
tpm2.0-tools \
|
||||
rng-tools \
|
||||
"
|
||||
|
||||
RRECOMMENDS_${PN} += "\
|
||||
kernel-module-tpm-rng \
|
||||
"
|
||||
@@ -0,0 +1,5 @@
|
||||
DESCRIPTION = "Packagegroup for TPM2 TCG TSS userspace and utilities."
|
||||
LICENSE = "MIT"
|
||||
PR = "r0"
|
||||
|
||||
inherit packagegroup
|
||||
@@ -0,0 +1 @@
|
||||
include linux-yocto-tpm2.inc
|
||||
6
meta-tpm2/recipes-kernel/linux/linux-yocto-tpm2.inc
Normal file
6
meta-tpm2/recipes-kernel/linux/linux-yocto-tpm2.inc
Normal file
@@ -0,0 +1,6 @@
|
||||
FILESEXTRAPATHS_prepend := "${THISDIR}/linux-yocto:"
|
||||
|
||||
SRC_URI += " \
|
||||
${@bb.utils.contains('DISTRO_FEATURES', 'tpm2', \
|
||||
'file://tpm2.scc file://tpm2.cfg', '', d)} \
|
||||
"
|
||||
16
meta-tpm2/recipes-kernel/linux/linux-yocto/tpm2.cfg
Normal file
16
meta-tpm2/recipes-kernel/linux/linux-yocto/tpm2.cfg
Normal file
@@ -0,0 +1,16 @@
|
||||
..........................................................................
|
||||
. WARNING
|
||||
.
|
||||
. This file is a kernel configuration fragment, and not a full kernel
|
||||
. configuration file. The final kernel configuration is made up of
|
||||
. an assembly of processed fragments, each of which is designed to
|
||||
. capture a specific part of the final configuration (e.g. platform
|
||||
. configuration, feature configuration, and board specific hardware
|
||||
. configuration). For more information on kernel configuration, please
|
||||
. consult the product documentation.
|
||||
.
|
||||
..........................................................................
|
||||
|
||||
CONFIG_TCG_TPM=y
|
||||
CONFIG_TCG_TIS=y
|
||||
CONFIG_TCG_CRB=y
|
||||
4
meta-tpm2/recipes-kernel/linux/linux-yocto/tpm2.scc
Normal file
4
meta-tpm2/recipes-kernel/linux/linux-yocto/tpm2.scc
Normal file
@@ -0,0 +1,4 @@
|
||||
define KFEATURE_DESCRIPTION "TPM 2.x enablement"
|
||||
|
||||
kconf hardware tpm2.cfg
|
||||
|
||||
1
meta-tpm2/recipes-kernel/linux/linux-yocto_4.%.bbappend
Normal file
1
meta-tpm2/recipes-kernel/linux/linux-yocto_4.%.bbappend
Normal file
@@ -0,0 +1 @@
|
||||
include linux-yocto-tpm2.inc
|
||||
@@ -0,0 +1,293 @@
|
||||
From 034e9cd7e539e1feda2fbe9a3646e28156856594 Mon Sep 17 00:00:00 2001
|
||||
From: Lans Zhang <jia.zhang@windriver.com>
|
||||
Date: Thu, 15 Jun 2017 10:21:02 +0800
|
||||
Subject: [PATCH] Fix build failure when searching tabrmd.h
|
||||
|
||||
Signed-off-by: Lans Zhang <jia.zhang@windriver.com>
|
||||
---
|
||||
Makefile.am | 2 +-
|
||||
src/access-broker.c | 2 +-
|
||||
src/include/tabrmd.h | 56 ---------------------------
|
||||
src/include/tcti-tabrmd.h | 2 +-
|
||||
src/include/tss2/tabrmd.h | 56 +++++++++++++++++++++++++++
|
||||
src/resource-manager.c | 2 +-
|
||||
src/tabrmd-error.c | 2 +-
|
||||
src/tabrmd.c | 2 +-
|
||||
src/tcti-tabrmd.c | 2 +-
|
||||
test/integration/hash-sequence.int.c | 2 +-
|
||||
test/integration/password-authorization.int.c | 2 +-
|
||||
test/integration/tcti-cancel.int.c | 2 +-
|
||||
test/integration/tcti-set-locality.int.c | 2 +-
|
||||
13 files changed, 67 insertions(+), 67 deletions(-)
|
||||
delete mode 100644 src/include/tabrmd.h
|
||||
create mode 100644 src/include/tss2/tabrmd.h
|
||||
|
||||
diff --git a/Makefile.am b/Makefile.am
|
||||
index 5f88429..4733d4f 100644
|
||||
--- a/Makefile.am
|
||||
+++ b/Makefile.am
|
||||
@@ -90,7 +90,7 @@ install-data-hook:
|
||||
$(DESTDIR)$(mandir)/man3/tss2_tcti_tabrmd_init_full.3
|
||||
|
||||
tpm2_abrmddir = $(includedir)/tss2
|
||||
-tpm2_abrmd_HEADERS = $(srcdir)/src/include/tabrmd.h
|
||||
+tpm2_abrmd_HEADERS = $(srcdir)/src/include/tss2/tabrmd.h
|
||||
libtcti_tabrmddir = $(includedir)/tcti
|
||||
libtcti_tabrmd_HEADERS = $(srcdir)/src/include/tcti-tabrmd.h
|
||||
|
||||
diff --git a/src/access-broker.c b/src/access-broker.c
|
||||
index d21113d..f357101 100644
|
||||
--- a/src/access-broker.c
|
||||
+++ b/src/access-broker.c
|
||||
@@ -28,7 +28,7 @@
|
||||
#include <inttypes.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
-#include "tabrmd.h"
|
||||
+#include <tss2/tabrmd.h>
|
||||
|
||||
#include "access-broker.h"
|
||||
#include "tcti.h"
|
||||
diff --git a/src/include/tabrmd.h b/src/include/tabrmd.h
|
||||
deleted file mode 100644
|
||||
index 42d41a2..0000000
|
||||
--- a/src/include/tabrmd.h
|
||||
+++ /dev/null
|
||||
@@ -1,56 +0,0 @@
|
||||
-/*
|
||||
- * Copyright (c) 2017, Intel Corporation
|
||||
- * All rights reserved.
|
||||
- *
|
||||
- * Redistribution and use in source and binary forms, with or without
|
||||
- * modification, are permitted provided that the following conditions are met:
|
||||
- *
|
||||
- * 1. Redistributions of source code must retain the above copyright notice,
|
||||
- * this list of conditions and the following disclaimer.
|
||||
- *
|
||||
- * 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
- * this list of conditions and the following disclaimer in the documentation
|
||||
- * and/or other materials provided with the distribution.
|
||||
- *
|
||||
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
|
||||
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
|
||||
- * THE POSSIBILITY OF SUCH DAMAGE.
|
||||
- */
|
||||
-#ifndef TSS2_TABD_H
|
||||
-#define TSS2_TABD_H
|
||||
-
|
||||
-#include <gio/gio.h>
|
||||
-#include <tpm20.h>
|
||||
-
|
||||
-#define TABRMD_DBUS_INTERFACE "com.intel.tss2.TctiTabrmd"
|
||||
-#define TABRMD_DBUS_NAME_DEFAULT "com.intel.tss2.Tabrmd"
|
||||
-#define TABRMD_DBUS_PATH "/com/intel/tss2/Tabrmd/Tcti"
|
||||
-#define TABRMD_DBUS_METHOD_CREATE_CONNECTION "CreateConnection"
|
||||
-#define TABRMD_DBUS_METHOD_CANCEL "Cancel"
|
||||
-#define TABRMD_DBUS_TYPE_DEFAULT G_BUS_TYPE_SYSTEM
|
||||
-
|
||||
-/* implementation specific RCs */
|
||||
-#define TSS2_RESMGR_RC_INTERNAL_ERROR (TSS2_RC)(TSS2_RESMGR_ERROR_LEVEL | (1 << TSS2_LEVEL_IMPLEMENTATION_SPECIFIC_SHIFT))
|
||||
-#define TSS2_RESMGR_RC_SAPI_INIT (TSS2_RC)(TSS2_RESMGR_ERROR_LEVEL | (2 << TSS2_LEVEL_IMPLEMENTATION_SPECIFIC_SHIFT))
|
||||
-#define TSS2_RESMGR_RC_OUT_OF_MEMORY (TSS2_RC)(TSS2_RESMGR_ERROR_LEVEL | (3 << TSS2_LEVEL_IMPLEMENTATION_SPECIFIC_SHIFT))
|
||||
-/* RCs in the RESMGR layer */
|
||||
-#define TSS2_RESMGR_RC_BAD_VALUE (TSS2_RC)(TSS2_RESMGR_ERROR_LEVEL | TSS2_BASE_RC_BAD_VALUE)
|
||||
-#define TSS2_RESMGR_RC_NOT_PERMITTED (TSS2_RC)(TSS2_RESMGR_ERROR_LEVEL | TSS2_BASE_RC_NOT_PERMITTED)
|
||||
-#define TSS2_RESMGR_RC_NOT_IMPLEMENTED (TSS2_RC)(TSS2_RESMGR_ERROR_LEVEL | TSS2_BASE_RC_NOT_IMPLEMENTED)
|
||||
-#define TSS2_RESMGR_RC_GENERAL_FAILURE (TSS2_RC)(TSS2_RESMGR_ERROR_LEVEL | TSS2_BASE_RC_GENERAL_FAILURE)
|
||||
-#define TSS2_RESMGR_RC_OBJECT_MEMORY (TSS2_RC)(TSS2_RESMGR_ERROR_LEVEL | TPM_RC_OBJECT_MEMORY)
|
||||
-
|
||||
-#define TABRMD_ERROR tabrmd_error_quark ()
|
||||
-GQuark tabrmd_error_quark (void);
|
||||
-
|
||||
-TSS2_RC tss2_tcti_tabrmd_dump_trans_state (TSS2_TCTI_CONTEXT *tcti_context);
|
||||
-
|
||||
-#endif /* TSS2_TABD_H */
|
||||
diff --git a/src/include/tcti-tabrmd.h b/src/include/tcti-tabrmd.h
|
||||
index c145eb5..e8e0c7f 100644
|
||||
--- a/src/include/tcti-tabrmd.h
|
||||
+++ b/src/include/tcti-tabrmd.h
|
||||
@@ -35,7 +35,7 @@ extern "C" {
|
||||
#include <sapi/tpm20.h>
|
||||
#include <sapi/tss2_tcti.h>
|
||||
|
||||
-#include "tabrmd.h"
|
||||
+#include <tss2/tabrmd.h>
|
||||
|
||||
#define TCTI_TABRMD_DBUS_TYPE_DEFAULT TABRMD_DBUS_TYPE_DEFAULT
|
||||
#define TCTI_TABRMD_DBUS_NAME_DEFAULT TABRMD_DBUS_NAME_DEFAULT
|
||||
diff --git a/src/include/tss2/tabrmd.h b/src/include/tss2/tabrmd.h
|
||||
new file mode 100644
|
||||
index 0000000..42d41a2
|
||||
--- /dev/null
|
||||
+++ b/src/include/tss2/tabrmd.h
|
||||
@@ -0,0 +1,56 @@
|
||||
+/*
|
||||
+ * Copyright (c) 2017, Intel Corporation
|
||||
+ * All rights reserved.
|
||||
+ *
|
||||
+ * Redistribution and use in source and binary forms, with or without
|
||||
+ * modification, are permitted provided that the following conditions are met:
|
||||
+ *
|
||||
+ * 1. Redistributions of source code must retain the above copyright notice,
|
||||
+ * this list of conditions and the following disclaimer.
|
||||
+ *
|
||||
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
+ * this list of conditions and the following disclaimer in the documentation
|
||||
+ * and/or other materials provided with the distribution.
|
||||
+ *
|
||||
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
|
||||
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
|
||||
+ * THE POSSIBILITY OF SUCH DAMAGE.
|
||||
+ */
|
||||
+#ifndef TSS2_TABD_H
|
||||
+#define TSS2_TABD_H
|
||||
+
|
||||
+#include <gio/gio.h>
|
||||
+#include <tpm20.h>
|
||||
+
|
||||
+#define TABRMD_DBUS_INTERFACE "com.intel.tss2.TctiTabrmd"
|
||||
+#define TABRMD_DBUS_NAME_DEFAULT "com.intel.tss2.Tabrmd"
|
||||
+#define TABRMD_DBUS_PATH "/com/intel/tss2/Tabrmd/Tcti"
|
||||
+#define TABRMD_DBUS_METHOD_CREATE_CONNECTION "CreateConnection"
|
||||
+#define TABRMD_DBUS_METHOD_CANCEL "Cancel"
|
||||
+#define TABRMD_DBUS_TYPE_DEFAULT G_BUS_TYPE_SYSTEM
|
||||
+
|
||||
+/* implementation specific RCs */
|
||||
+#define TSS2_RESMGR_RC_INTERNAL_ERROR (TSS2_RC)(TSS2_RESMGR_ERROR_LEVEL | (1 << TSS2_LEVEL_IMPLEMENTATION_SPECIFIC_SHIFT))
|
||||
+#define TSS2_RESMGR_RC_SAPI_INIT (TSS2_RC)(TSS2_RESMGR_ERROR_LEVEL | (2 << TSS2_LEVEL_IMPLEMENTATION_SPECIFIC_SHIFT))
|
||||
+#define TSS2_RESMGR_RC_OUT_OF_MEMORY (TSS2_RC)(TSS2_RESMGR_ERROR_LEVEL | (3 << TSS2_LEVEL_IMPLEMENTATION_SPECIFIC_SHIFT))
|
||||
+/* RCs in the RESMGR layer */
|
||||
+#define TSS2_RESMGR_RC_BAD_VALUE (TSS2_RC)(TSS2_RESMGR_ERROR_LEVEL | TSS2_BASE_RC_BAD_VALUE)
|
||||
+#define TSS2_RESMGR_RC_NOT_PERMITTED (TSS2_RC)(TSS2_RESMGR_ERROR_LEVEL | TSS2_BASE_RC_NOT_PERMITTED)
|
||||
+#define TSS2_RESMGR_RC_NOT_IMPLEMENTED (TSS2_RC)(TSS2_RESMGR_ERROR_LEVEL | TSS2_BASE_RC_NOT_IMPLEMENTED)
|
||||
+#define TSS2_RESMGR_RC_GENERAL_FAILURE (TSS2_RC)(TSS2_RESMGR_ERROR_LEVEL | TSS2_BASE_RC_GENERAL_FAILURE)
|
||||
+#define TSS2_RESMGR_RC_OBJECT_MEMORY (TSS2_RC)(TSS2_RESMGR_ERROR_LEVEL | TPM_RC_OBJECT_MEMORY)
|
||||
+
|
||||
+#define TABRMD_ERROR tabrmd_error_quark ()
|
||||
+GQuark tabrmd_error_quark (void);
|
||||
+
|
||||
+TSS2_RC tss2_tcti_tabrmd_dump_trans_state (TSS2_TCTI_CONTEXT *tcti_context);
|
||||
+
|
||||
+#endif /* TSS2_TABD_H */
|
||||
diff --git a/src/resource-manager.c b/src/resource-manager.c
|
||||
index 6efdd82..8ad4e46 100644
|
||||
--- a/src/resource-manager.c
|
||||
+++ b/src/resource-manager.c
|
||||
@@ -35,7 +35,7 @@
|
||||
#include "resource-manager.h"
|
||||
#include "sink-interface.h"
|
||||
#include "source-interface.h"
|
||||
-#include "tabrmd.h"
|
||||
+#include <tss2/tabrmd.h>
|
||||
#include "tpm2-header.h"
|
||||
#include "tpm2-command.h"
|
||||
#include "tpm2-response.h"
|
||||
diff --git a/src/tabrmd-error.c b/src/tabrmd-error.c
|
||||
index 5ff5a7d..41a561d 100644
|
||||
--- a/src/tabrmd-error.c
|
||||
+++ b/src/tabrmd-error.c
|
||||
@@ -1,6 +1,6 @@
|
||||
#include <gio/gio.h>
|
||||
#include <glib.h>
|
||||
-#include "tabrmd.h"
|
||||
+#include <tss2/tabrmd.h>
|
||||
|
||||
static const GDBusErrorEntry tabrmd_error_entries[] = {
|
||||
{
|
||||
diff --git a/src/tabrmd.c b/src/tabrmd.c
|
||||
index 2275aa5..7156cdf 100644
|
||||
--- a/src/tabrmd.c
|
||||
+++ b/src/tabrmd.c
|
||||
@@ -34,7 +34,7 @@
|
||||
#include <unistd.h>
|
||||
|
||||
#include <sapi/tpm20.h>
|
||||
-#include "tabrmd.h"
|
||||
+#include <tss2/tabrmd.h>
|
||||
#include "access-broker.h"
|
||||
#include "connection.h"
|
||||
#include "connection-manager.h"
|
||||
diff --git a/src/tcti-tabrmd.c b/src/tcti-tabrmd.c
|
||||
index d6d78ea..52418de 100644
|
||||
--- a/src/tcti-tabrmd.c
|
||||
+++ b/src/tcti-tabrmd.c
|
||||
@@ -35,7 +35,7 @@
|
||||
|
||||
#include <sapi/tpm20.h>
|
||||
|
||||
-#include "tabrmd.h"
|
||||
+#include <tss2/tabrmd.h>
|
||||
#include "tcti-tabrmd.h"
|
||||
#include "tcti-tabrmd-priv.h"
|
||||
#include "tpm2-header.h"
|
||||
diff --git a/test/integration/hash-sequence.int.c b/test/integration/hash-sequence.int.c
|
||||
index cf8331d..fd489f9 100644
|
||||
--- a/test/integration/hash-sequence.int.c
|
||||
+++ b/test/integration/hash-sequence.int.c
|
||||
@@ -34,7 +34,7 @@
|
||||
|
||||
#include <sapi/tpm20.h>
|
||||
|
||||
-#include "tabrmd.h"
|
||||
+#include <tss2/tabrmd.h>
|
||||
#include "tcti-tabrmd.h"
|
||||
#include "common.h"
|
||||
|
||||
diff --git a/test/integration/password-authorization.int.c b/test/integration/password-authorization.int.c
|
||||
index e6298ef..5416eaa 100644
|
||||
--- a/test/integration/password-authorization.int.c
|
||||
+++ b/test/integration/password-authorization.int.c
|
||||
@@ -32,7 +32,7 @@
|
||||
#include <glib.h>
|
||||
#include <inttypes.h>
|
||||
|
||||
-#include "tabrmd.h"
|
||||
+#include <tss2/tabrmd.h>
|
||||
#include "tcti-tabrmd.h"
|
||||
#include "common.h"
|
||||
|
||||
diff --git a/test/integration/tcti-cancel.int.c b/test/integration/tcti-cancel.int.c
|
||||
index 31f0f9a..c2a808b 100644
|
||||
--- a/test/integration/tcti-cancel.int.c
|
||||
+++ b/test/integration/tcti-cancel.int.c
|
||||
@@ -27,7 +27,7 @@
|
||||
#include <glib.h>
|
||||
#include <inttypes.h>
|
||||
|
||||
-#include "tabrmd.h"
|
||||
+#include <tss2/tabrmd.h>
|
||||
#include "tcti-tabrmd.h"
|
||||
#include "common.h"
|
||||
|
||||
diff --git a/test/integration/tcti-set-locality.int.c b/test/integration/tcti-set-locality.int.c
|
||||
index 6b7509b..0a54b6a 100644
|
||||
--- a/test/integration/tcti-set-locality.int.c
|
||||
+++ b/test/integration/tcti-set-locality.int.c
|
||||
@@ -27,7 +27,7 @@
|
||||
#include <glib.h>
|
||||
#include <inttypes.h>
|
||||
|
||||
-#include "tabrmd.h"
|
||||
+#include <tss2/tabrmd.h>
|
||||
#include "tcti-tabrmd.h"
|
||||
#include "common.h"
|
||||
|
||||
--
|
||||
2.7.5
|
||||
|
||||
65
meta-tpm2/recipes-tpm/tpm2-abrmd/files/tpm2-abrmd-init.sh
Normal file
65
meta-tpm2/recipes-tpm/tpm2-abrmd/files/tpm2-abrmd-init.sh
Normal file
@@ -0,0 +1,65 @@
|
||||
#!/bin/sh
|
||||
|
||||
### BEGIN INIT INFO
|
||||
# Provides: tpm2-abrmd
|
||||
# Required-Start: $local_fs $remote_fs $network
|
||||
# Required-Stop: $local_fs $remote_fs $network
|
||||
# Should-Start:
|
||||
# Should-Stop:
|
||||
# Default-Start: 2 3 4 5
|
||||
# Default-Stop: 0 1 6
|
||||
# Short-Description: starts tpm2-abrmd
|
||||
# Description: tpm2-abrmd implements the TCG resource manager
|
||||
### END INIT INFO
|
||||
|
||||
PATH=/sbin:/bin:/usr/sbin:/usr/bin
|
||||
DAEMON=/usr/sbin/tpm2-abrmd
|
||||
NAME=tpm2-abrmd
|
||||
DESC="TCG TSS2 Access Broker and Resource Management daemon"
|
||||
USER="tss"
|
||||
|
||||
test -x "${DAEMON}" || exit 0
|
||||
|
||||
# Read configuration variable file if it is present
|
||||
[ -r /etc/default/$NAME ] && . /etc/default/$NAME
|
||||
|
||||
case "${1}" in
|
||||
start)
|
||||
echo -n "Starting $DESC: "
|
||||
|
||||
if [ ! -e /dev/tpm* ]
|
||||
then
|
||||
echo "device driver not loaded, skipping."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
start-stop-daemon --start --quiet --oknodo --background --pidfile /var/run/${NAME}.pid --user ${USER} --chuid ${USER} --exec ${DAEMON} -- ${DAEMON_OPTS}
|
||||
RETVAL="$?"
|
||||
echo "$NAME."
|
||||
[ "$RETVAL" = 0 ] && pidof $DAEMON > /var/run/${NAME}.pid
|
||||
exit $RETVAL
|
||||
;;
|
||||
|
||||
stop)
|
||||
echo -n "Stopping $DESC: "
|
||||
|
||||
start-stop-daemon --stop --quiet --oknodo --pidfile /var/run/${NAME}.pid --user ${USER} --exec ${DAEMON}
|
||||
RETVAL="$?"
|
||||
echo "$NAME."
|
||||
rm -f /var/run/${NAME}.pid
|
||||
exit $RETVAL
|
||||
;;
|
||||
|
||||
restart|force-reload)
|
||||
"${0}" stop
|
||||
sleep 1
|
||||
"${0}" start
|
||||
exit $?
|
||||
;;
|
||||
*)
|
||||
echo "Usage: ${NAME} {start|stop|restart|force-reload|status}" >&2
|
||||
exit 3
|
||||
;;
|
||||
esac
|
||||
|
||||
exit 0
|
||||
@@ -0,0 +1 @@
|
||||
DAEMON_OPTS="--tcti=device --logger=syslog --max-connections=20 --max-transient-objects=20 --fail-on-loaded-trans"
|
||||
61
meta-tpm2/recipes-tpm/tpm2-abrmd/tpm2-abrmd_git.bb
Normal file
61
meta-tpm2/recipes-tpm/tpm2-abrmd/tpm2-abrmd_git.bb
Normal file
@@ -0,0 +1,61 @@
|
||||
SUMMARY = ""
|
||||
DESCRIPTION = ""
|
||||
SECTION = "tpm"
|
||||
|
||||
# This is a lie. The source for this project is covered by several licenses.
|
||||
# We're currently working on a way to make this clear for those consuming the
|
||||
# project. Till then I'm using 'BSD' as a place holder since the Intel license
|
||||
# is "BSD-like".
|
||||
LICENSE = "BSD"
|
||||
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/BSD;md5=3775480a712fc46a69647678acb234cb"
|
||||
|
||||
DEPENDS += "autoconf-archive dbus glib-2.0 pkgconfig tpm2.0-tss glib-2.0-native"
|
||||
RDEPENDS_${PN} += "libgcc dbus-glib"
|
||||
|
||||
SRC_URI = " \
|
||||
git://github.com/01org/tpm2-abrmd.git;branch=master;name=tpm2-abrmd;destsuffix=tpm2-abrmd \
|
||||
file://tpm2-abrmd-init.sh \
|
||||
file://tpm2-abrmd.default \
|
||||
"
|
||||
|
||||
SRCREV = "4f0bd204d07176084b245d005df665fbfdf68db5"
|
||||
PV = "1.0.0+git${SRCPV}"
|
||||
S = "${WORKDIR}/${BPN}"
|
||||
|
||||
inherit autotools pkgconfig systemd update-rc.d useradd
|
||||
|
||||
SYSTEMD_PACKAGES += "${PN}"
|
||||
SYSTEMD_SERVICE_${PN} = "tpm2-abrmd.service"
|
||||
SYSTEMD_AUTO_ENABLE_${PN} = "enable"
|
||||
|
||||
INITSCRIPT_NAME = "tpm2-abrmd"
|
||||
INITSCRIPT_PARAMS = "start 99 2 3 4 5 . stop 19 0 1 6 ."
|
||||
|
||||
USERADD_PACKAGES = "${PN}"
|
||||
GROUPADD_PARAM_${PN} = "tss"
|
||||
USERADD_PARAM_${PN} = "-M -d /var/lib/tpm -s /bin/false -g tss tss"
|
||||
|
||||
# break out tcti into a package: libtcti-tabrmd
|
||||
# package up the service file
|
||||
|
||||
EXTRA_OECONF += " \
|
||||
--with-systemdsystemunitdir=${systemd_system_unitdir} \
|
||||
--with-udevrulesdir=${sysconfdir}/udev/rules.d \
|
||||
"
|
||||
|
||||
do_configure_prepend() {
|
||||
# execute the bootstrap script
|
||||
currentdir=$(pwd)
|
||||
cd "${S}"
|
||||
ACLOCAL="aclocal --system-acdir=${STAGING_DATADIR}/aclocal" ./bootstrap --force
|
||||
cd "${currentdir}"
|
||||
}
|
||||
|
||||
do_install_append() {
|
||||
install -d "${D}${sysconfdir}/init.d"
|
||||
install -m 0755 "${WORKDIR}/tpm2-abrmd-init.sh" "${D}${sysconfdir}/init.d/tpm2-abrmd"
|
||||
install -d "${D}${sysconfdir}/default"
|
||||
install -m 0644 "${WORKDIR}/tpm2-abrmd.default" "${D}${sysconfdir}/default/tpm2-abrmd"
|
||||
}
|
||||
|
||||
BBCLASSEXTEND = "native"
|
||||
@@ -0,0 +1,80 @@
|
||||
From 9aee7b2bc400a336f0a938ce80eba51707662612 Mon Sep 17 00:00:00 2001
|
||||
From: Lans Zhang <jia.zhang@windriver.com>
|
||||
Date: Mon, 19 Jun 2017 13:52:53 +0800
|
||||
Subject: [PATCH 1/2] tpm2-tools: use dynamic linkage with tpm2-abrmd
|
||||
|
||||
tpm2-abrmd has huge dependencies and they are not necessary to be involved
|
||||
in initramfs.
|
||||
|
||||
Signed-off-by: Lans Zhang <jia.zhang@windriver.com>
|
||||
---
|
||||
Makefile.am | 2 +-
|
||||
lib/context-util.c | 22 ++++++++++++++++++++--
|
||||
2 files changed, 21 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/Makefile.am b/Makefile.am
|
||||
index a3c43f8..68ba044 100644
|
||||
--- a/Makefile.am
|
||||
+++ b/Makefile.am
|
||||
@@ -38,7 +38,7 @@ LIB_COMMON := lib/libcommon.a
|
||||
AM_CFLAGS := $(INCLUDE_DIRS) $(TPM20_TSS_CFLAGS) $(EXTRA_CFLAGS) $(TCTI_TABRMD_CFLAGS)
|
||||
AM_LDFLAGS := $(EXTRA_LDFLAGS)
|
||||
|
||||
-LDADD = $(LIB_COMMON) $(TPM20_TSS_LIBS) $(TCTI_SOCK_LIBS) $(TCTI_DEV_LIBS) $(TCTI_TABRMD_LIBS)
|
||||
+LDADD = $(LIB_COMMON) $(TPM20_TSS_LIBS) $(TCTI_SOCK_LIBS) $(TCTI_DEV_LIBS) $(TCTI_TABRMD_LIBS) -ldl
|
||||
|
||||
sbin_PROGRAMS = \
|
||||
tools/tpm2_create \
|
||||
diff --git a/lib/context-util.c b/lib/context-util.c
|
||||
index 7de22ac..2ef181d 100644
|
||||
--- a/lib/context-util.c
|
||||
+++ b/lib/context-util.c
|
||||
@@ -38,6 +38,7 @@
|
||||
#include <tcti/tcti_socket.h>
|
||||
#endif
|
||||
#ifdef HAVE_TCTI_TABRMD
|
||||
+#include <dlfcn.h>
|
||||
#include <tcti/tcti-tabrmd.h>
|
||||
#endif
|
||||
|
||||
@@ -134,10 +135,27 @@ TSS2_TCTI_CONTEXT*
|
||||
tcti_tabrmd_init (void)
|
||||
{
|
||||
TSS2_TCTI_CONTEXT *tcti_ctx;
|
||||
+ TSS2_RC (*init)(TSS2_TCTI_CONTEXT *, size_t *);
|
||||
+ /*
|
||||
+ * Intend to "forget" the handle in order to make sure libtcti-tabrmd
|
||||
+ * is unloaded along with the deconstructed functions.
|
||||
+ */
|
||||
+ void *tabrmd_handle;
|
||||
TSS2_RC rc;
|
||||
size_t size;
|
||||
|
||||
- rc = tss2_tcti_tabrmd_init(NULL, &size);
|
||||
+ tabrmd_handle = dlopen("libtcti-tabrmd.so.0", RTLD_LAZY);
|
||||
+ if (!tabrmd_handle) {
|
||||
+ fprintf (stderr,
|
||||
+ "Unable to find out the tabrmd tcti library\n");
|
||||
+ return NULL;
|
||||
+ }
|
||||
+
|
||||
+ init = dlsym(tabrmd_handle, "tss2_tcti_tabrmd_init");
|
||||
+ if (!init)
|
||||
+ return NULL;
|
||||
+
|
||||
+ rc = init(NULL, &size);
|
||||
if (rc != TSS2_RC_SUCCESS) {
|
||||
LOG_ERR ("Failed to get size for TABRMD TCTI context: 0x%" PRIx32, rc);
|
||||
return NULL;
|
||||
@@ -148,7 +166,7 @@ tcti_tabrmd_init (void)
|
||||
strerror (errno));
|
||||
return NULL;
|
||||
}
|
||||
- rc = tss2_tcti_tabrmd_init (tcti_ctx, &size);
|
||||
+ rc = init (tcti_ctx, &size);
|
||||
if (rc != TSS2_RC_SUCCESS) {
|
||||
LOG_ERR ("Failed to initialize TABRMD TCTI context: 0x%" PRIx32, rc);
|
||||
free (tcti_ctx);
|
||||
--
|
||||
2.7.5
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
From 53f9b2f63c5370f4d269bf08d940cc8576fcbbf4 Mon Sep 17 00:00:00 2001
|
||||
From: Lans Zhang <jia.zhang@windriver.com>
|
||||
Date: Mon, 19 Jun 2017 13:54:34 +0800
|
||||
Subject: [PATCH 2/2] Fix build failure with glib-2.0
|
||||
|
||||
Signed-off-by: Lans Zhang <jia.zhang@windriver.com>
|
||||
---
|
||||
Makefile.am | 2 +-
|
||||
configure.ac | 1 +
|
||||
2 files changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/Makefile.am b/Makefile.am
|
||||
index 68ba044..e792049 100644
|
||||
--- a/Makefile.am
|
||||
+++ b/Makefile.am
|
||||
@@ -35,7 +35,7 @@ ACLOCAL_AMFLAGS = -I m4
|
||||
INCLUDE_DIRS = -I$(srcdir)/src -I$(srcdir)/lib
|
||||
LIB_COMMON := lib/libcommon.a
|
||||
|
||||
-AM_CFLAGS := $(INCLUDE_DIRS) $(TPM20_TSS_CFLAGS) $(EXTRA_CFLAGS) $(TCTI_TABRMD_CFLAGS)
|
||||
+AM_CFLAGS := $(INCLUDE_DIRS) $(GLIB_CFLAGS) $(TPM20_TSS_CFLAGS) $(EXTRA_CFLAGS) $(TCTI_TABRMD_CFLAGS)
|
||||
AM_LDFLAGS := $(EXTRA_LDFLAGS)
|
||||
|
||||
LDADD = $(LIB_COMMON) $(TPM20_TSS_LIBS) $(TCTI_SOCK_LIBS) $(TCTI_DEV_LIBS) $(TCTI_TABRMD_LIBS) -ldl
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index ce781ea..08fa81c 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -6,6 +6,7 @@ LT_INIT
|
||||
AM_INIT_AUTOMAKE([foreign
|
||||
subdir-objects])
|
||||
AC_CONFIG_FILES([Makefile])
|
||||
+PKG_CHECK_MODULES([GLIB], [glib-2.0])
|
||||
PKG_CHECK_MODULES([SAPI],[sapi])
|
||||
# disable libtcti-device selectively (enabled by default)
|
||||
AC_ARG_WITH(
|
||||
--
|
||||
2.7.5
|
||||
|
||||
@@ -0,0 +1,74 @@
|
||||
# ===========================================================================
|
||||
# https://www.gnu.org/software/autoconf-archive/ax_check_compile_flag.html
|
||||
# ===========================================================================
|
||||
#
|
||||
# SYNOPSIS
|
||||
#
|
||||
# AX_CHECK_COMPILE_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS], [INPUT])
|
||||
#
|
||||
# DESCRIPTION
|
||||
#
|
||||
# Check whether the given FLAG works with the current language's compiler
|
||||
# or gives an error. (Warnings, however, are ignored)
|
||||
#
|
||||
# ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on
|
||||
# success/failure.
|
||||
#
|
||||
# If EXTRA-FLAGS is defined, it is added to the current language's default
|
||||
# flags (e.g. CFLAGS) when the check is done. The check is thus made with
|
||||
# the flags: "CFLAGS EXTRA-FLAGS FLAG". This can for example be used to
|
||||
# force the compiler to issue an error when a bad flag is given.
|
||||
#
|
||||
# INPUT gives an alternative input source to AC_COMPILE_IFELSE.
|
||||
#
|
||||
# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this
|
||||
# macro in sync with AX_CHECK_{PREPROC,LINK}_FLAG.
|
||||
#
|
||||
# LICENSE
|
||||
#
|
||||
# Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
|
||||
# Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License as published by the
|
||||
# Free Software Foundation, either version 3 of the License, or (at your
|
||||
# option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
||||
# Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License along
|
||||
# with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
#
|
||||
# As a special exception, the respective Autoconf Macro's copyright owner
|
||||
# gives unlimited permission to copy, distribute and modify the configure
|
||||
# scripts that are the output of Autoconf when processing the Macro. You
|
||||
# need not follow the terms of the GNU General Public License when using
|
||||
# or distributing such scripts, even though portions of the text of the
|
||||
# Macro appear in them. The GNU General Public License (GPL) does govern
|
||||
# all other use of the material that constitutes the Autoconf Macro.
|
||||
#
|
||||
# This special exception to the GPL applies to versions of the Autoconf
|
||||
# Macro released by the Autoconf Archive. When you make and distribute a
|
||||
# modified version of the Autoconf Macro, you may extend this special
|
||||
# exception to the GPL to apply to your modified version as well.
|
||||
|
||||
#serial 5
|
||||
|
||||
AC_DEFUN([AX_CHECK_COMPILE_FLAG],
|
||||
[AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_IF
|
||||
AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl
|
||||
AC_CACHE_CHECK([whether _AC_LANG compiler accepts $1], CACHEVAR, [
|
||||
ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS
|
||||
_AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $4 $1"
|
||||
AC_COMPILE_IFELSE([m4_default([$5],[AC_LANG_PROGRAM()])],
|
||||
[AS_VAR_SET(CACHEVAR,[yes])],
|
||||
[AS_VAR_SET(CACHEVAR,[no])])
|
||||
_AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags])
|
||||
AS_VAR_IF(CACHEVAR,yes,
|
||||
[m4_default([$2], :)],
|
||||
[m4_default([$3], :)])
|
||||
AS_VAR_POPDEF([CACHEVAR])dnl
|
||||
])dnl AX_CHECK_COMPILE_FLAGS
|
||||
@@ -0,0 +1,74 @@
|
||||
# ===========================================================================
|
||||
# https://www.gnu.org/software/autoconf-archive/ax_check_link_flag.html
|
||||
# ===========================================================================
|
||||
#
|
||||
# SYNOPSIS
|
||||
#
|
||||
# AX_CHECK_LINK_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS], [INPUT])
|
||||
#
|
||||
# DESCRIPTION
|
||||
#
|
||||
# Check whether the given FLAG works with the linker or gives an error.
|
||||
# (Warnings, however, are ignored)
|
||||
#
|
||||
# ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on
|
||||
# success/failure.
|
||||
#
|
||||
# If EXTRA-FLAGS is defined, it is added to the linker's default flags
|
||||
# when the check is done. The check is thus made with the flags: "LDFLAGS
|
||||
# EXTRA-FLAGS FLAG". This can for example be used to force the linker to
|
||||
# issue an error when a bad flag is given.
|
||||
#
|
||||
# INPUT gives an alternative input source to AC_LINK_IFELSE.
|
||||
#
|
||||
# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this
|
||||
# macro in sync with AX_CHECK_{PREPROC,COMPILE}_FLAG.
|
||||
#
|
||||
# LICENSE
|
||||
#
|
||||
# Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
|
||||
# Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License as published by the
|
||||
# Free Software Foundation, either version 3 of the License, or (at your
|
||||
# option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
||||
# Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License along
|
||||
# with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
#
|
||||
# As a special exception, the respective Autoconf Macro's copyright owner
|
||||
# gives unlimited permission to copy, distribute and modify the configure
|
||||
# scripts that are the output of Autoconf when processing the Macro. You
|
||||
# need not follow the terms of the GNU General Public License when using
|
||||
# or distributing such scripts, even though portions of the text of the
|
||||
# Macro appear in them. The GNU General Public License (GPL) does govern
|
||||
# all other use of the material that constitutes the Autoconf Macro.
|
||||
#
|
||||
# This special exception to the GPL applies to versions of the Autoconf
|
||||
# Macro released by the Autoconf Archive. When you make and distribute a
|
||||
# modified version of the Autoconf Macro, you may extend this special
|
||||
# exception to the GPL to apply to your modified version as well.
|
||||
|
||||
#serial 5
|
||||
|
||||
AC_DEFUN([AX_CHECK_LINK_FLAG],
|
||||
[AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_IF
|
||||
AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_ldflags_$4_$1])dnl
|
||||
AC_CACHE_CHECK([whether the linker accepts $1], CACHEVAR, [
|
||||
ax_check_save_flags=$LDFLAGS
|
||||
LDFLAGS="$LDFLAGS $4 $1"
|
||||
AC_LINK_IFELSE([m4_default([$5],[AC_LANG_PROGRAM()])],
|
||||
[AS_VAR_SET(CACHEVAR,[yes])],
|
||||
[AS_VAR_SET(CACHEVAR,[no])])
|
||||
LDFLAGS=$ax_check_save_flags])
|
||||
AS_VAR_IF(CACHEVAR,yes,
|
||||
[m4_default([$2], :)],
|
||||
[m4_default([$3], :)])
|
||||
AS_VAR_POPDEF([CACHEVAR])dnl
|
||||
])dnl AX_CHECK_LINK_FLAGS
|
||||
@@ -0,0 +1,74 @@
|
||||
# ===========================================================================
|
||||
# https://www.gnu.org/software/autoconf-archive/ax_check_preproc_flag.html
|
||||
# ===========================================================================
|
||||
#
|
||||
# SYNOPSIS
|
||||
#
|
||||
# AX_CHECK_PREPROC_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS], [INPUT])
|
||||
#
|
||||
# DESCRIPTION
|
||||
#
|
||||
# Check whether the given FLAG works with the current language's
|
||||
# preprocessor or gives an error. (Warnings, however, are ignored)
|
||||
#
|
||||
# ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on
|
||||
# success/failure.
|
||||
#
|
||||
# If EXTRA-FLAGS is defined, it is added to the preprocessor's default
|
||||
# flags when the check is done. The check is thus made with the flags:
|
||||
# "CPPFLAGS EXTRA-FLAGS FLAG". This can for example be used to force the
|
||||
# preprocessor to issue an error when a bad flag is given.
|
||||
#
|
||||
# INPUT gives an alternative input source to AC_PREPROC_IFELSE.
|
||||
#
|
||||
# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this
|
||||
# macro in sync with AX_CHECK_{COMPILE,LINK}_FLAG.
|
||||
#
|
||||
# LICENSE
|
||||
#
|
||||
# Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
|
||||
# Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License as published by the
|
||||
# Free Software Foundation, either version 3 of the License, or (at your
|
||||
# option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
||||
# Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License along
|
||||
# with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
#
|
||||
# As a special exception, the respective Autoconf Macro's copyright owner
|
||||
# gives unlimited permission to copy, distribute and modify the configure
|
||||
# scripts that are the output of Autoconf when processing the Macro. You
|
||||
# need not follow the terms of the GNU General Public License when using
|
||||
# or distributing such scripts, even though portions of the text of the
|
||||
# Macro appear in them. The GNU General Public License (GPL) does govern
|
||||
# all other use of the material that constitutes the Autoconf Macro.
|
||||
#
|
||||
# This special exception to the GPL applies to versions of the Autoconf
|
||||
# Macro released by the Autoconf Archive. When you make and distribute a
|
||||
# modified version of the Autoconf Macro, you may extend this special
|
||||
# exception to the GPL to apply to your modified version as well.
|
||||
|
||||
#serial 5
|
||||
|
||||
AC_DEFUN([AX_CHECK_PREPROC_FLAG],
|
||||
[AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_IF
|
||||
AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]cppflags_$4_$1])dnl
|
||||
AC_CACHE_CHECK([whether _AC_LANG preprocessor accepts $1], CACHEVAR, [
|
||||
ax_check_save_flags=$CPPFLAGS
|
||||
CPPFLAGS="$CPPFLAGS $4 $1"
|
||||
AC_PREPROC_IFELSE([m4_default([$5],[AC_LANG_PROGRAM()])],
|
||||
[AS_VAR_SET(CACHEVAR,[yes])],
|
||||
[AS_VAR_SET(CACHEVAR,[no])])
|
||||
CPPFLAGS=$ax_check_save_flags])
|
||||
AS_VAR_IF(CACHEVAR,yes,
|
||||
[m4_default([$2], :)],
|
||||
[m4_default([$3], :)])
|
||||
AS_VAR_POPDEF([CACHEVAR])dnl
|
||||
])dnl AX_CHECK_PREPROC_FLAGS
|
||||
48
meta-tpm2/recipes-tpm/tpm2.0-tools/tpm2.0-tools_git.bb
Normal file
48
meta-tpm2/recipes-tpm/tpm2.0-tools/tpm2.0-tools_git.bb
Normal file
@@ -0,0 +1,48 @@
|
||||
SUMMARY = "Tools for TPM2."
|
||||
DESCRIPTION = "tpm2.0-tools"
|
||||
SECTION = "tpm"
|
||||
|
||||
LICENSE = "BSD"
|
||||
LIC_FILES_CHKSUM = "file://${S}/LICENSE;md5=91b7c548d73ea16537799e8060cea819"
|
||||
|
||||
DEPENDS += "tpm2.0-tss tpm2-abrmd openssl curl autoconf-archive pkgconfig"
|
||||
RDEPENDS_${PN} += "libtss2 libtctidevice"
|
||||
|
||||
SRC_URI = " \
|
||||
git://github.com/01org/tpm2.0-tools.git;branch=master;name=tpm2.0-tools;destsuffix=tpm2.0-tools \
|
||||
file://ax_check_compile_flag.m4 \
|
||||
file://ax_check_preproc_flag.m4 \
|
||||
file://ax_check_link_flag.m4 \
|
||||
file://0001-tpm2-tools-use-dynamic-linkage-with-tpm2-abrmd.patch \
|
||||
file://0002-Fix-build-failure-with-glib-2.0.patch \
|
||||
"
|
||||
|
||||
S = "${WORKDIR}/${BPN}"
|
||||
SRCREV = "ada4c20d23d99b4b489c6c793e4132c1d5234b66"
|
||||
PV = "2.0.0+git${SRCPV}"
|
||||
|
||||
inherit autotools pkgconfig
|
||||
|
||||
EXTRA_OECONF += " \
|
||||
--with-tcti-device \
|
||||
--without-tcti-socket \
|
||||
--with-tcti-tabrmd \
|
||||
"
|
||||
|
||||
EXTRA_OEMAKE += " \
|
||||
CFLAGS="${CFLAGS} -Wno-implicit-fallthrough" \
|
||||
"
|
||||
|
||||
do_configure_prepend() {
|
||||
mkdir -p "${S}/m4"
|
||||
cp "${WORKDIR}/ax_check_compile_flag.m4" "${S}/m4"
|
||||
cp "${WORKDIR}/ax_check_preproc_flag.m4" "${S}/m4"
|
||||
cp "${WORKDIR}/ax_check_link_flag.m4" "${S}/m4"
|
||||
|
||||
# execute the bootstrap script
|
||||
currentdir=$(pwd)
|
||||
cd "${S}"
|
||||
ACLOCAL="aclocal --system-acdir=${STAGING_DATADIR}/aclocal" \
|
||||
./bootstrap --force
|
||||
cd "${currentdir}"
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
Index: TPM2.0-TSS/bootstrap
|
||||
===================================================================
|
||||
--- TPM2.0-TSS.orig/bootstrap
|
||||
+++ TPM2.0-TSS/bootstrap
|
||||
@@ -13,6 +13,7 @@ src_listvar () {
|
||||
}
|
||||
|
||||
VARS_FILE=src_vars.mk
|
||||
+AUTORECONF=${AUTORECONF:-autoreconf}
|
||||
|
||||
echo "Generating file lists: ${VARS_FILE}"
|
||||
(
|
||||
@@ -30,11 +31,3 @@ echo "Generating file lists: ${VARS_FILE
|
||||
printf "SAMPLE_SRC = \$(SAMPLE_C) \$(SAMPLE_H)\n"
|
||||
) > ${VARS_FILE}
|
||||
|
||||
-printf "Running libtoolize ...\n"
|
||||
-libtoolize --install
|
||||
-printf "Running aclocal ...\n"
|
||||
-aclocal
|
||||
-printf "Running autoconf ...\n"
|
||||
-autoconf
|
||||
-printf "Running automake ...\n"
|
||||
-automake --add-missing
|
||||
@@ -0,0 +1,74 @@
|
||||
# ===========================================================================
|
||||
# https://www.gnu.org/software/autoconf-archive/ax_check_compile_flag.html
|
||||
# ===========================================================================
|
||||
#
|
||||
# SYNOPSIS
|
||||
#
|
||||
# AX_CHECK_COMPILE_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS], [INPUT])
|
||||
#
|
||||
# DESCRIPTION
|
||||
#
|
||||
# Check whether the given FLAG works with the current language's compiler
|
||||
# or gives an error. (Warnings, however, are ignored)
|
||||
#
|
||||
# ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on
|
||||
# success/failure.
|
||||
#
|
||||
# If EXTRA-FLAGS is defined, it is added to the current language's default
|
||||
# flags (e.g. CFLAGS) when the check is done. The check is thus made with
|
||||
# the flags: "CFLAGS EXTRA-FLAGS FLAG". This can for example be used to
|
||||
# force the compiler to issue an error when a bad flag is given.
|
||||
#
|
||||
# INPUT gives an alternative input source to AC_COMPILE_IFELSE.
|
||||
#
|
||||
# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this
|
||||
# macro in sync with AX_CHECK_{PREPROC,LINK}_FLAG.
|
||||
#
|
||||
# LICENSE
|
||||
#
|
||||
# Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
|
||||
# Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License as published by the
|
||||
# Free Software Foundation, either version 3 of the License, or (at your
|
||||
# option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
||||
# Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License along
|
||||
# with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
#
|
||||
# As a special exception, the respective Autoconf Macro's copyright owner
|
||||
# gives unlimited permission to copy, distribute and modify the configure
|
||||
# scripts that are the output of Autoconf when processing the Macro. You
|
||||
# need not follow the terms of the GNU General Public License when using
|
||||
# or distributing such scripts, even though portions of the text of the
|
||||
# Macro appear in them. The GNU General Public License (GPL) does govern
|
||||
# all other use of the material that constitutes the Autoconf Macro.
|
||||
#
|
||||
# This special exception to the GPL applies to versions of the Autoconf
|
||||
# Macro released by the Autoconf Archive. When you make and distribute a
|
||||
# modified version of the Autoconf Macro, you may extend this special
|
||||
# exception to the GPL to apply to your modified version as well.
|
||||
|
||||
#serial 5
|
||||
|
||||
AC_DEFUN([AX_CHECK_COMPILE_FLAG],
|
||||
[AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_IF
|
||||
AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl
|
||||
AC_CACHE_CHECK([whether _AC_LANG compiler accepts $1], CACHEVAR, [
|
||||
ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS
|
||||
_AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $4 $1"
|
||||
AC_COMPILE_IFELSE([m4_default([$5],[AC_LANG_PROGRAM()])],
|
||||
[AS_VAR_SET(CACHEVAR,[yes])],
|
||||
[AS_VAR_SET(CACHEVAR,[no])])
|
||||
_AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags])
|
||||
AS_VAR_IF(CACHEVAR,yes,
|
||||
[m4_default([$2], :)],
|
||||
[m4_default([$3], :)])
|
||||
AS_VAR_POPDEF([CACHEVAR])dnl
|
||||
])dnl AX_CHECK_COMPILE_FLAGS
|
||||
@@ -0,0 +1,74 @@
|
||||
# ===========================================================================
|
||||
# https://www.gnu.org/software/autoconf-archive/ax_check_link_flag.html
|
||||
# ===========================================================================
|
||||
#
|
||||
# SYNOPSIS
|
||||
#
|
||||
# AX_CHECK_LINK_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS], [INPUT])
|
||||
#
|
||||
# DESCRIPTION
|
||||
#
|
||||
# Check whether the given FLAG works with the linker or gives an error.
|
||||
# (Warnings, however, are ignored)
|
||||
#
|
||||
# ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on
|
||||
# success/failure.
|
||||
#
|
||||
# If EXTRA-FLAGS is defined, it is added to the linker's default flags
|
||||
# when the check is done. The check is thus made with the flags: "LDFLAGS
|
||||
# EXTRA-FLAGS FLAG". This can for example be used to force the linker to
|
||||
# issue an error when a bad flag is given.
|
||||
#
|
||||
# INPUT gives an alternative input source to AC_LINK_IFELSE.
|
||||
#
|
||||
# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this
|
||||
# macro in sync with AX_CHECK_{PREPROC,COMPILE}_FLAG.
|
||||
#
|
||||
# LICENSE
|
||||
#
|
||||
# Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
|
||||
# Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License as published by the
|
||||
# Free Software Foundation, either version 3 of the License, or (at your
|
||||
# option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
||||
# Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License along
|
||||
# with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
#
|
||||
# As a special exception, the respective Autoconf Macro's copyright owner
|
||||
# gives unlimited permission to copy, distribute and modify the configure
|
||||
# scripts that are the output of Autoconf when processing the Macro. You
|
||||
# need not follow the terms of the GNU General Public License when using
|
||||
# or distributing such scripts, even though portions of the text of the
|
||||
# Macro appear in them. The GNU General Public License (GPL) does govern
|
||||
# all other use of the material that constitutes the Autoconf Macro.
|
||||
#
|
||||
# This special exception to the GPL applies to versions of the Autoconf
|
||||
# Macro released by the Autoconf Archive. When you make and distribute a
|
||||
# modified version of the Autoconf Macro, you may extend this special
|
||||
# exception to the GPL to apply to your modified version as well.
|
||||
|
||||
#serial 5
|
||||
|
||||
AC_DEFUN([AX_CHECK_LINK_FLAG],
|
||||
[AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_IF
|
||||
AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_ldflags_$4_$1])dnl
|
||||
AC_CACHE_CHECK([whether the linker accepts $1], CACHEVAR, [
|
||||
ax_check_save_flags=$LDFLAGS
|
||||
LDFLAGS="$LDFLAGS $4 $1"
|
||||
AC_LINK_IFELSE([m4_default([$5],[AC_LANG_PROGRAM()])],
|
||||
[AS_VAR_SET(CACHEVAR,[yes])],
|
||||
[AS_VAR_SET(CACHEVAR,[no])])
|
||||
LDFLAGS=$ax_check_save_flags])
|
||||
AS_VAR_IF(CACHEVAR,yes,
|
||||
[m4_default([$2], :)],
|
||||
[m4_default([$3], :)])
|
||||
AS_VAR_POPDEF([CACHEVAR])dnl
|
||||
])dnl AX_CHECK_LINK_FLAGS
|
||||
@@ -0,0 +1,74 @@
|
||||
# ===========================================================================
|
||||
# https://www.gnu.org/software/autoconf-archive/ax_check_preproc_flag.html
|
||||
# ===========================================================================
|
||||
#
|
||||
# SYNOPSIS
|
||||
#
|
||||
# AX_CHECK_PREPROC_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS], [INPUT])
|
||||
#
|
||||
# DESCRIPTION
|
||||
#
|
||||
# Check whether the given FLAG works with the current language's
|
||||
# preprocessor or gives an error. (Warnings, however, are ignored)
|
||||
#
|
||||
# ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on
|
||||
# success/failure.
|
||||
#
|
||||
# If EXTRA-FLAGS is defined, it is added to the preprocessor's default
|
||||
# flags when the check is done. The check is thus made with the flags:
|
||||
# "CPPFLAGS EXTRA-FLAGS FLAG". This can for example be used to force the
|
||||
# preprocessor to issue an error when a bad flag is given.
|
||||
#
|
||||
# INPUT gives an alternative input source to AC_PREPROC_IFELSE.
|
||||
#
|
||||
# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this
|
||||
# macro in sync with AX_CHECK_{COMPILE,LINK}_FLAG.
|
||||
#
|
||||
# LICENSE
|
||||
#
|
||||
# Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
|
||||
# Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License as published by the
|
||||
# Free Software Foundation, either version 3 of the License, or (at your
|
||||
# option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
||||
# Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License along
|
||||
# with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
#
|
||||
# As a special exception, the respective Autoconf Macro's copyright owner
|
||||
# gives unlimited permission to copy, distribute and modify the configure
|
||||
# scripts that are the output of Autoconf when processing the Macro. You
|
||||
# need not follow the terms of the GNU General Public License when using
|
||||
# or distributing such scripts, even though portions of the text of the
|
||||
# Macro appear in them. The GNU General Public License (GPL) does govern
|
||||
# all other use of the material that constitutes the Autoconf Macro.
|
||||
#
|
||||
# This special exception to the GPL applies to versions of the Autoconf
|
||||
# Macro released by the Autoconf Archive. When you make and distribute a
|
||||
# modified version of the Autoconf Macro, you may extend this special
|
||||
# exception to the GPL to apply to your modified version as well.
|
||||
|
||||
#serial 5
|
||||
|
||||
AC_DEFUN([AX_CHECK_PREPROC_FLAG],
|
||||
[AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_IF
|
||||
AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]cppflags_$4_$1])dnl
|
||||
AC_CACHE_CHECK([whether _AC_LANG preprocessor accepts $1], CACHEVAR, [
|
||||
ax_check_save_flags=$CPPFLAGS
|
||||
CPPFLAGS="$CPPFLAGS $4 $1"
|
||||
AC_PREPROC_IFELSE([m4_default([$5],[AC_LANG_PROGRAM()])],
|
||||
[AS_VAR_SET(CACHEVAR,[yes])],
|
||||
[AS_VAR_SET(CACHEVAR,[no])])
|
||||
CPPFLAGS=$ax_check_save_flags])
|
||||
AS_VAR_IF(CACHEVAR,yes,
|
||||
[m4_default([$2], :)],
|
||||
[m4_default([$3], :)])
|
||||
AS_VAR_POPDEF([CACHEVAR])dnl
|
||||
])dnl AX_CHECK_PREPROC_FLAGS
|
||||
332
meta-tpm2/recipes-tpm/tpm2.0-tss/tpm2.0-tss/ax_pthread.m4
Normal file
332
meta-tpm2/recipes-tpm/tpm2.0-tss/tpm2.0-tss/ax_pthread.m4
Normal file
@@ -0,0 +1,332 @@
|
||||
# ===========================================================================
|
||||
# http://www.gnu.org/software/autoconf-archive/ax_pthread.html
|
||||
# ===========================================================================
|
||||
#
|
||||
# SYNOPSIS
|
||||
#
|
||||
# AX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
|
||||
#
|
||||
# DESCRIPTION
|
||||
#
|
||||
# This macro figures out how to build C programs using POSIX threads. It
|
||||
# sets the PTHREAD_LIBS output variable to the threads library and linker
|
||||
# flags, and the PTHREAD_CFLAGS output variable to any special C compiler
|
||||
# flags that are needed. (The user can also force certain compiler
|
||||
# flags/libs to be tested by setting these environment variables.)
|
||||
#
|
||||
# Also sets PTHREAD_CC to any special C compiler that is needed for
|
||||
# multi-threaded programs (defaults to the value of CC otherwise). (This
|
||||
# is necessary on AIX to use the special cc_r compiler alias.)
|
||||
#
|
||||
# NOTE: You are assumed to not only compile your program with these flags,
|
||||
# but also link it with them as well. e.g. you should link with
|
||||
# $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS $LIBS
|
||||
#
|
||||
# If you are only building threads programs, you may wish to use these
|
||||
# variables in your default LIBS, CFLAGS, and CC:
|
||||
#
|
||||
# LIBS="$PTHREAD_LIBS $LIBS"
|
||||
# CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
|
||||
# CC="$PTHREAD_CC"
|
||||
#
|
||||
# In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute constant
|
||||
# has a nonstandard name, defines PTHREAD_CREATE_JOINABLE to that name
|
||||
# (e.g. PTHREAD_CREATE_UNDETACHED on AIX).
|
||||
#
|
||||
# Also HAVE_PTHREAD_PRIO_INHERIT is defined if pthread is found and the
|
||||
# PTHREAD_PRIO_INHERIT symbol is defined when compiling with
|
||||
# PTHREAD_CFLAGS.
|
||||
#
|
||||
# ACTION-IF-FOUND is a list of shell commands to run if a threads library
|
||||
# is found, and ACTION-IF-NOT-FOUND is a list of commands to run it if it
|
||||
# is not found. If ACTION-IF-FOUND is not specified, the default action
|
||||
# will define HAVE_PTHREAD.
|
||||
#
|
||||
# Please let the authors know if this macro fails on any platform, or if
|
||||
# you have any other suggestions or comments. This macro was based on work
|
||||
# by SGJ on autoconf scripts for FFTW (http://www.fftw.org/) (with help
|
||||
# from M. Frigo), as well as ac_pthread and hb_pthread macros posted by
|
||||
# Alejandro Forero Cuervo to the autoconf macro repository. We are also
|
||||
# grateful for the helpful feedback of numerous users.
|
||||
#
|
||||
# Updated for Autoconf 2.68 by Daniel Richard G.
|
||||
#
|
||||
# LICENSE
|
||||
#
|
||||
# Copyright (c) 2008 Steven G. Johnson <stevenj@alum.mit.edu>
|
||||
# Copyright (c) 2011 Daniel Richard G. <skunk@iSKUNK.ORG>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License as published by the
|
||||
# Free Software Foundation, either version 3 of the License, or (at your
|
||||
# option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
||||
# Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License along
|
||||
# with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# As a special exception, the respective Autoconf Macro's copyright owner
|
||||
# gives unlimited permission to copy, distribute and modify the configure
|
||||
# scripts that are the output of Autoconf when processing the Macro. You
|
||||
# need not follow the terms of the GNU General Public License when using
|
||||
# or distributing such scripts, even though portions of the text of the
|
||||
# Macro appear in them. The GNU General Public License (GPL) does govern
|
||||
# all other use of the material that constitutes the Autoconf Macro.
|
||||
#
|
||||
# This special exception to the GPL applies to versions of the Autoconf
|
||||
# Macro released by the Autoconf Archive. When you make and distribute a
|
||||
# modified version of the Autoconf Macro, you may extend this special
|
||||
# exception to the GPL to apply to your modified version as well.
|
||||
|
||||
#serial 21
|
||||
|
||||
AU_ALIAS([ACX_PTHREAD], [AX_PTHREAD])
|
||||
AC_DEFUN([AX_PTHREAD], [
|
||||
AC_REQUIRE([AC_CANONICAL_HOST])
|
||||
AC_LANG_PUSH([C])
|
||||
ax_pthread_ok=no
|
||||
|
||||
# We used to check for pthread.h first, but this fails if pthread.h
|
||||
# requires special compiler flags (e.g. on True64 or Sequent).
|
||||
# It gets checked for in the link test anyway.
|
||||
|
||||
# First of all, check if the user has set any of the PTHREAD_LIBS,
|
||||
# etcetera environment variables, and if threads linking works using
|
||||
# them:
|
||||
if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then
|
||||
save_CFLAGS="$CFLAGS"
|
||||
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
|
||||
save_LIBS="$LIBS"
|
||||
LIBS="$PTHREAD_LIBS $LIBS"
|
||||
AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS])
|
||||
AC_TRY_LINK_FUNC([pthread_join], [ax_pthread_ok=yes])
|
||||
AC_MSG_RESULT([$ax_pthread_ok])
|
||||
if test x"$ax_pthread_ok" = xno; then
|
||||
PTHREAD_LIBS=""
|
||||
PTHREAD_CFLAGS=""
|
||||
fi
|
||||
LIBS="$save_LIBS"
|
||||
CFLAGS="$save_CFLAGS"
|
||||
fi
|
||||
|
||||
# We must check for the threads library under a number of different
|
||||
# names; the ordering is very important because some systems
|
||||
# (e.g. DEC) have both -lpthread and -lpthreads, where one of the
|
||||
# libraries is broken (non-POSIX).
|
||||
|
||||
# Create a list of thread flags to try. Items starting with a "-" are
|
||||
# C compiler flags, and other items are library names, except for "none"
|
||||
# which indicates that we try without any flags at all, and "pthread-config"
|
||||
# which is a program returning the flags for the Pth emulation library.
|
||||
|
||||
ax_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config"
|
||||
|
||||
# The ordering *is* (sometimes) important. Some notes on the
|
||||
# individual items follow:
|
||||
|
||||
# pthreads: AIX (must check this before -lpthread)
|
||||
# none: in case threads are in libc; should be tried before -Kthread and
|
||||
# other compiler flags to prevent continual compiler warnings
|
||||
# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h)
|
||||
# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
|
||||
# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
|
||||
# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads)
|
||||
# -pthreads: Solaris/gcc
|
||||
# -mthreads: Mingw32/gcc, Lynx/gcc
|
||||
# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it
|
||||
# doesn't hurt to check since this sometimes defines pthreads too;
|
||||
# also defines -D_REENTRANT)
|
||||
# ... -mt is also the pthreads flag for HP/aCC
|
||||
# pthread: Linux, etcetera
|
||||
# --thread-safe: KAI C++
|
||||
# pthread-config: use pthread-config program (for GNU Pth library)
|
||||
|
||||
case ${host_os} in
|
||||
solaris*)
|
||||
|
||||
# On Solaris (at least, for some versions), libc contains stubbed
|
||||
# (non-functional) versions of the pthreads routines, so link-based
|
||||
# tests will erroneously succeed. (We need to link with -pthreads/-mt/
|
||||
# -lpthread.) (The stubs are missing pthread_cleanup_push, or rather
|
||||
# a function called by this macro, so we could check for that, but
|
||||
# who knows whether they'll stub that too in a future libc.) So,
|
||||
# we'll just look for -pthreads and -lpthread first:
|
||||
|
||||
ax_pthread_flags="-pthreads pthread -mt -pthread $ax_pthread_flags"
|
||||
;;
|
||||
|
||||
darwin*)
|
||||
ax_pthread_flags="-pthread $ax_pthread_flags"
|
||||
;;
|
||||
esac
|
||||
|
||||
# Clang doesn't consider unrecognized options an error unless we specify
|
||||
# -Werror. We throw in some extra Clang-specific options to ensure that
|
||||
# this doesn't happen for GCC, which also accepts -Werror.
|
||||
|
||||
AC_MSG_CHECKING([if compiler needs -Werror to reject unknown flags])
|
||||
save_CFLAGS="$CFLAGS"
|
||||
ax_pthread_extra_flags="-Werror"
|
||||
CFLAGS="$CFLAGS $ax_pthread_extra_flags -Wunknown-warning-option -Wsizeof-array-argument"
|
||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([int foo(void);],[foo()])],
|
||||
[AC_MSG_RESULT([yes])],
|
||||
[ax_pthread_extra_flags=
|
||||
AC_MSG_RESULT([no])])
|
||||
CFLAGS="$save_CFLAGS"
|
||||
|
||||
if test x"$ax_pthread_ok" = xno; then
|
||||
for flag in $ax_pthread_flags; do
|
||||
|
||||
case $flag in
|
||||
none)
|
||||
AC_MSG_CHECKING([whether pthreads work without any flags])
|
||||
;;
|
||||
|
||||
-*)
|
||||
AC_MSG_CHECKING([whether pthreads work with $flag])
|
||||
PTHREAD_CFLAGS="$flag"
|
||||
;;
|
||||
|
||||
pthread-config)
|
||||
AC_CHECK_PROG([ax_pthread_config], [pthread-config], [yes], [no])
|
||||
if test x"$ax_pthread_config" = xno; then continue; fi
|
||||
PTHREAD_CFLAGS="`pthread-config --cflags`"
|
||||
PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`"
|
||||
;;
|
||||
|
||||
*)
|
||||
AC_MSG_CHECKING([for the pthreads library -l$flag])
|
||||
PTHREAD_LIBS="-l$flag"
|
||||
;;
|
||||
esac
|
||||
|
||||
save_LIBS="$LIBS"
|
||||
save_CFLAGS="$CFLAGS"
|
||||
LIBS="$PTHREAD_LIBS $LIBS"
|
||||
CFLAGS="$CFLAGS $PTHREAD_CFLAGS $ax_pthread_extra_flags"
|
||||
|
||||
# Check for various functions. We must include pthread.h,
|
||||
# since some functions may be macros. (On the Sequent, we
|
||||
# need a special flag -Kthread to make this header compile.)
|
||||
# We check for pthread_join because it is in -lpthread on IRIX
|
||||
# while pthread_create is in libc. We check for pthread_attr_init
|
||||
# due to DEC craziness with -lpthreads. We check for
|
||||
# pthread_cleanup_push because it is one of the few pthread
|
||||
# functions on Solaris that doesn't have a non-functional libc stub.
|
||||
# We try pthread_create on general principles.
|
||||
AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>
|
||||
static void routine(void *a) { a = 0; }
|
||||
static void *start_routine(void *a) { return a; }],
|
||||
[pthread_t th; pthread_attr_t attr;
|
||||
pthread_create(&th, 0, start_routine, 0);
|
||||
pthread_join(th, 0);
|
||||
pthread_attr_init(&attr);
|
||||
pthread_cleanup_push(routine, 0);
|
||||
pthread_cleanup_pop(0) /* ; */])],
|
||||
[ax_pthread_ok=yes],
|
||||
[])
|
||||
|
||||
LIBS="$save_LIBS"
|
||||
CFLAGS="$save_CFLAGS"
|
||||
|
||||
AC_MSG_RESULT([$ax_pthread_ok])
|
||||
if test "x$ax_pthread_ok" = xyes; then
|
||||
break;
|
||||
fi
|
||||
|
||||
PTHREAD_LIBS=""
|
||||
PTHREAD_CFLAGS=""
|
||||
done
|
||||
fi
|
||||
|
||||
# Various other checks:
|
||||
if test "x$ax_pthread_ok" = xyes; then
|
||||
save_LIBS="$LIBS"
|
||||
LIBS="$PTHREAD_LIBS $LIBS"
|
||||
save_CFLAGS="$CFLAGS"
|
||||
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
|
||||
|
||||
# Detect AIX lossage: JOINABLE attribute is called UNDETACHED.
|
||||
AC_MSG_CHECKING([for joinable pthread attribute])
|
||||
attr_name=unknown
|
||||
for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do
|
||||
AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>],
|
||||
[int attr = $attr; return attr /* ; */])],
|
||||
[attr_name=$attr; break],
|
||||
[])
|
||||
done
|
||||
AC_MSG_RESULT([$attr_name])
|
||||
if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then
|
||||
AC_DEFINE_UNQUOTED([PTHREAD_CREATE_JOINABLE], [$attr_name],
|
||||
[Define to necessary symbol if this constant
|
||||
uses a non-standard name on your system.])
|
||||
fi
|
||||
|
||||
AC_MSG_CHECKING([if more special flags are required for pthreads])
|
||||
flag=no
|
||||
case ${host_os} in
|
||||
aix* | freebsd* | darwin*) flag="-D_THREAD_SAFE";;
|
||||
osf* | hpux*) flag="-D_REENTRANT";;
|
||||
solaris*)
|
||||
if test "$GCC" = "yes"; then
|
||||
flag="-D_REENTRANT"
|
||||
else
|
||||
# TODO: What about Clang on Solaris?
|
||||
flag="-mt -D_REENTRANT"
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
AC_MSG_RESULT([$flag])
|
||||
if test "x$flag" != xno; then
|
||||
PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS"
|
||||
fi
|
||||
|
||||
AC_CACHE_CHECK([for PTHREAD_PRIO_INHERIT],
|
||||
[ax_cv_PTHREAD_PRIO_INHERIT], [
|
||||
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <pthread.h>]],
|
||||
[[int i = PTHREAD_PRIO_INHERIT;]])],
|
||||
[ax_cv_PTHREAD_PRIO_INHERIT=yes],
|
||||
[ax_cv_PTHREAD_PRIO_INHERIT=no])
|
||||
])
|
||||
AS_IF([test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes"],
|
||||
[AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], [1], [Have PTHREAD_PRIO_INHERIT.])])
|
||||
|
||||
LIBS="$save_LIBS"
|
||||
CFLAGS="$save_CFLAGS"
|
||||
|
||||
# More AIX lossage: compile with *_r variant
|
||||
if test "x$GCC" != xyes; then
|
||||
case $host_os in
|
||||
aix*)
|
||||
AS_CASE(["x/$CC"],
|
||||
[x*/c89|x*/c89_128|x*/c99|x*/c99_128|x*/cc|x*/cc128|x*/xlc|x*/xlc_v6|x*/xlc128|x*/xlc128_v6],
|
||||
[#handle absolute path differently from PATH based program lookup
|
||||
AS_CASE(["x$CC"],
|
||||
[x/*],
|
||||
[AS_IF([AS_EXECUTABLE_P([${CC}_r])],[PTHREAD_CC="${CC}_r"])],
|
||||
[AC_CHECK_PROGS([PTHREAD_CC],[${CC}_r],[$CC])])])
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
fi
|
||||
|
||||
test -n "$PTHREAD_CC" || PTHREAD_CC="$CC"
|
||||
|
||||
AC_SUBST([PTHREAD_LIBS])
|
||||
AC_SUBST([PTHREAD_CFLAGS])
|
||||
AC_SUBST([PTHREAD_CC])
|
||||
|
||||
# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
|
||||
if test x"$ax_pthread_ok" = xyes; then
|
||||
ifelse([$1],,[AC_DEFINE([HAVE_PTHREAD],[1],[Define if you have POSIX threads libraries and header files.])],[$1])
|
||||
:
|
||||
else
|
||||
ax_pthread_ok=no
|
||||
$2
|
||||
fi
|
||||
AC_LANG_POP
|
||||
])dnl AX_PTHREAD
|
||||
@@ -0,0 +1,10 @@
|
||||
Index: TPM2.0-TSS/configure.ac
|
||||
===================================================================
|
||||
--- TPM2.0-TSS.orig/configure.ac
|
||||
+++ TPM2.0-TSS/configure.ac
|
||||
@@ -11,5 +11,4 @@ AX_PTHREAD([], [AC_MSG_ERROR([requires p
|
||||
AM_INIT_AUTOMAKE([foreign
|
||||
subdir-objects])
|
||||
AC_CONFIG_FILES([Makefile])
|
||||
-PKG_CHECK_MODULES([CMOCKA],[cmocka])
|
||||
AC_OUTPUT
|
||||
109
meta-tpm2/recipes-tpm/tpm2.0-tss/tpm2.0-tss_git.bb
Normal file
109
meta-tpm2/recipes-tpm/tpm2.0-tss/tpm2.0-tss_git.bb
Normal file
@@ -0,0 +1,109 @@
|
||||
SUMMARY = "Software stack for TPM2."
|
||||
DESCRIPTION = "tpm2.0-tss like woah."
|
||||
SECTION = "tpm"
|
||||
|
||||
# This is a lie. The source for this project is covered by several licenses.
|
||||
# We're currently working on a way to make this clear for those consuming the
|
||||
# project. Till then I'm using 'BSD' as a place holder since the Intel license
|
||||
# is "BSD-like".
|
||||
LICENSE = "BSD"
|
||||
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/BSD;md5=3775480a712fc46a69647678acb234cb"
|
||||
|
||||
# This doesn't seem to work. Keeping it here for completeness. Remove once
|
||||
# it's fixed upstream.
|
||||
DEPENDS += "autoconf-archive pkgconfig"
|
||||
#RDEPENDS_libtss2 += "libmarshal"
|
||||
#RDEPENDS_libtctidevice += "libmarshal"
|
||||
|
||||
SRC_URI = " \
|
||||
git://github.com/01org/TPM2.0-TSS.git;protocol=http;branch=1.x;name=TPM2.0-TSS;destsuffix=TPM2.0-TSS \
|
||||
"
|
||||
|
||||
# CAPS? SRSLY?
|
||||
S = "${WORKDIR}/${@d.getVar('BPN',d).upper()}"
|
||||
|
||||
SRCREV = "1fa2f4d12449d5d639032fee28d922fe9d4877b5"
|
||||
PV = "1.1.0+git${SRCPV}"
|
||||
|
||||
RRECOMMENDS_${PN} += "\
|
||||
kernel-module-tpm-crb \
|
||||
kernel-module-tpm-tis \
|
||||
"
|
||||
|
||||
TPM_DESCRIPTION = 'device/description'
|
||||
FAMILY_MAJOR = 'TPM 2.0'
|
||||
|
||||
PACKAGES = " \
|
||||
${PN}-dbg \
|
||||
libtss2 \
|
||||
libtss2-dev \
|
||||
libtss2-staticdev \
|
||||
libtss2-doc \
|
||||
libtctidevice \
|
||||
libtctidevice-dev \
|
||||
libtctidevice-staticdev \
|
||||
libtctisocket \
|
||||
libtctisocket-dev \
|
||||
libtctisocket-staticdev \
|
||||
libmarshal \
|
||||
libmarshal-dev \
|
||||
libmarshal-staticdev \
|
||||
"
|
||||
|
||||
FILES_libtss2 = "${libdir}/libsapi.so.*"
|
||||
FILES_libtss2-dev = " \
|
||||
${includedir}/sapi \
|
||||
${includedir}/tcti/common.h \
|
||||
${libdir}/libsapi.so \
|
||||
${libdir}/pkgconfig/sapi.pc \
|
||||
${libdir}/libsapi.la \
|
||||
"
|
||||
FILES_libtss2-staticdev = " \
|
||||
${libdir}/libsapi.a \
|
||||
"
|
||||
FILES_libtss2-doc = " \
|
||||
${mandir} \
|
||||
"
|
||||
FILES_libtctidevice = "${libdir}/libtcti-device.so.*"
|
||||
FILES_libtctidevice-dev = " \
|
||||
${includedir}/tcti/tcti_device.h \
|
||||
${libdir}/libtcti-device.so \
|
||||
${libdir}/pkgconfig/tcti-device.pc \
|
||||
${libdir}/libtcti-device.la \
|
||||
"
|
||||
FILES_libtctidevice-staticdev = "${libdir}/libtcti-device.a"
|
||||
FILES_libtctisocket = "${libdir}/libtcti-socket.so.*"
|
||||
FILES_libtctisocket-dev = " \
|
||||
${includedir}/tcti/tcti_socket.h \
|
||||
${libdir}/libtcti-socket.so \
|
||||
${libdir}/pkgconfig/tcti-socket.pc \
|
||||
${libdir}/libtcti-socket.la \
|
||||
"
|
||||
FILES_libtctisocket-staticdev = "${libdir}/libtcti-socket.a"
|
||||
FILES_libmarshal = "${libdir}/libmarshal.so.*"
|
||||
FILES_libmarshal-dev = "${libdir}/libmarshal.la ${libdir}/libmarshal.so"
|
||||
FILES_libmarshal-staticdev = "${libdir}/libmarshal.a"
|
||||
|
||||
inherit autotools
|
||||
|
||||
# the autotools / autoconf-archive don't work as expected so we include the
|
||||
# pthread macro ourselves for now
|
||||
SRC_URI += " \
|
||||
file://ax_pthread.m4 \
|
||||
file://ax_check_compile_flag.m4 \
|
||||
file://ax_check_preproc_flag.m4 \
|
||||
file://ax_check_link_flag.m4 \
|
||||
"
|
||||
do_configure_prepend () {
|
||||
mkdir -p ${S}/m4
|
||||
cp ${WORKDIR}/ax_pthread.m4 ${S}/m4
|
||||
cp ${WORKDIR}/ax_check_compile_flag.m4 ${S}/m4
|
||||
cp ${WORKDIR}/ax_check_preproc_flag.m4 ${S}/m4
|
||||
cp ${WORKDIR}/ax_check_link_flag.m4 ${S}/m4
|
||||
# execute the bootstrap script
|
||||
currentdir=$(pwd)
|
||||
cd ${S}
|
||||
ACLOCAL="aclocal --system-acdir=${STAGING_DATADIR}/aclocal" ./bootstrap --force
|
||||
cd ${currentdir}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user