git: e610bb4a8527 - stable/13 - Add libcbor to the build
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Wed, 09 Feb 2022 23:58:17 UTC
The branch stable/13 has been updated by emaste:
URL: https://cgit.FreeBSD.org/src/commit/?id=e610bb4a8527a4964bcd70b7ea2b1986d5bbc5d9
commit e610bb4a8527a4964bcd70b7ea2b1986d5bbc5d9
Author: Ed Maste <emaste@FreeBSD.org>
AuthorDate: 2021-10-07 00:42:40 +0000
Commit: Ed Maste <emaste@FreeBSD.org>
CommitDate: 2022-02-09 21:24:32 +0000
Add libcbor to the build
From https://github.com/PJK/libcbor:
libcbor is a C library for parsing and generating CBOR, the general-
purpose schema-less binary data format.
libcbor will be used by ssh to support FIDO/U2F keys. It is currently
intended only for use by ssh, and so is installed as a PRIVATELIB and is
placed in the ssh pkgbase package.
cbor_export.h and configuration.h were generated by the upstream CMake
build. We could create them with bmake rules instead (as NetBSD has
done) but this is a fine start.
This is currently disabled for the 32-bit library build as libfido2 is
not compatible with the COMPAT_32BIT hack in usb_ioctl.h, and there is
no need for libcbor without libfido2.
Reviewed by: kevans
MFC after: 2 weeks
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D32347
(cherry picked from commit 2e85df652caef859c532b7e1e8a178c75f1a4a92)
---
lib/Makefile | 3 +++
lib/libcbor/Makefile | 35 ++++++++++++++++++++++++++
lib/libcbor/cbor/cbor_export.h | 42 ++++++++++++++++++++++++++++++++
lib/libcbor/cbor/configuration.h | 16 ++++++++++++
share/mk/src.libnames.mk | 2 ++
tools/build/mk/OptionalObsoleteFiles.inc | 3 +++
6 files changed, 101 insertions(+)
diff --git a/lib/Makefile b/lib/Makefile
index dbf5182f50a5..8b1365e3e59e 100644
--- a/lib/Makefile
+++ b/lib/Makefile
@@ -211,6 +211,9 @@ SUBDIR.${MK_BHYVE}+= libvmmapi
.if ${MACHINE_ARCH} != "powerpc"
SUBDIR.${MK_OPENMP}+= libomp
.endif
+.if !defined(COMPAT_32BIT)
+SUBDIR.${MK_OPENSSH}+= libcbor
+.endif
SUBDIR.${MK_OPENSSL}+= libmp
SUBDIR.${MK_PF}+= libpfctl
SUBDIR.${MK_PMC}+= libpmc libpmcstat
diff --git a/lib/libcbor/Makefile b/lib/libcbor/Makefile
new file mode 100644
index 000000000000..455efdbfc8ee
--- /dev/null
+++ b/lib/libcbor/Makefile
@@ -0,0 +1,35 @@
+# $FreeBSD$
+
+PACKAGE=ssh
+LIB= cbor
+PRIVATELIB=
+
+DIST=${SRCTOP}/contrib/libcbor
+.PATH: ${DIST}/src
+
+SRCS= cbor.c
+SRCS+= cbor/arrays.c
+SRCS+= cbor/bytestrings.c
+SRCS+= cbor/callbacks.c
+SRCS+= cbor/common.c
+SRCS+= cbor/encoding.c
+SRCS+= cbor/floats_ctrls.c
+SRCS+= cbor/ints.c
+SRCS+= cbor/maps.c
+SRCS+= cbor/serialization.c
+SRCS+= cbor/streaming.c
+SRCS+= cbor/strings.c
+SRCS+= cbor/tags.c
+SRCS+= cbor/internal/builder_callbacks.c
+SRCS+= cbor/internal/encoders.c
+SRCS+= cbor/internal/loaders.c
+SRCS+= cbor/internal/memory_utils.c
+SRCS+= cbor/internal/stack.c
+SRCS+= cbor/internal/unicode.c
+
+CFLAGS+= -I${DIST}/src -I${.CURDIR}
+
+WARNS?= 2
+MAN=
+
+.include <bsd.lib.mk>
diff --git a/lib/libcbor/cbor/cbor_export.h b/lib/libcbor/cbor/cbor_export.h
new file mode 100644
index 000000000000..cce2560b8d29
--- /dev/null
+++ b/lib/libcbor/cbor/cbor_export.h
@@ -0,0 +1,42 @@
+
+#ifndef CBOR_EXPORT_H
+#define CBOR_EXPORT_H
+
+#ifdef CBOR_STATIC_DEFINE
+# define CBOR_EXPORT
+# define CBOR_NO_EXPORT
+#else
+# ifndef CBOR_EXPORT
+# ifdef cbor_EXPORTS
+ /* We are building this library */
+# define CBOR_EXPORT __attribute__((visibility("default")))
+# else
+ /* We are using this library */
+# define CBOR_EXPORT __attribute__((visibility("default")))
+# endif
+# endif
+
+# ifndef CBOR_NO_EXPORT
+# define CBOR_NO_EXPORT __attribute__((visibility("hidden")))
+# endif
+#endif
+
+#ifndef CBOR_DEPRECATED
+# define CBOR_DEPRECATED __attribute__ ((__deprecated__))
+#endif
+
+#ifndef CBOR_DEPRECATED_EXPORT
+# define CBOR_DEPRECATED_EXPORT CBOR_EXPORT CBOR_DEPRECATED
+#endif
+
+#ifndef CBOR_DEPRECATED_NO_EXPORT
+# define CBOR_DEPRECATED_NO_EXPORT CBOR_NO_EXPORT CBOR_DEPRECATED
+#endif
+
+#if 0 /* DEFINE_NO_DEPRECATED */
+# ifndef CBOR_NO_DEPRECATED
+# define CBOR_NO_DEPRECATED
+# endif
+#endif
+
+#endif /* CBOR_EXPORT_H */
diff --git a/lib/libcbor/cbor/configuration.h b/lib/libcbor/cbor/configuration.h
new file mode 100644
index 000000000000..a1a964c81e7f
--- /dev/null
+++ b/lib/libcbor/cbor/configuration.h
@@ -0,0 +1,16 @@
+#ifndef LIBCBOR_CONFIGURATION_H
+#define LIBCBOR_CONFIGURATION_H
+
+#define CBOR_MAJOR_VERSION 0
+#define CBOR_MINOR_VERSION 8
+#define CBOR_PATCH_VERSION 0
+
+#define CBOR_CUSTOM_ALLOC 0
+#define CBOR_BUFFER_GROWTH 2
+#define CBOR_MAX_STACK_SIZE 2048
+#define CBOR_PRETTY_PRINTER 1
+
+#define CBOR_RESTRICT_SPECIFIER restrict
+#define CBOR_INLINE_SPECIFIER
+
+#endif //LIBCBOR_CONFIGURATION_H
diff --git a/share/mk/src.libnames.mk b/share/mk/src.libnames.mk
index ee3404b676c3..ef21399af7b6 100644
--- a/share/mk/src.libnames.mk
+++ b/share/mk/src.libnames.mk
@@ -17,6 +17,7 @@ _PRIVATELIBS= \
atf_cxx \
auditd \
bsdstat \
+ cbor \
devdctl \
event1 \
gmock \
@@ -704,6 +705,7 @@ LIBCAP_NETDIR= ${OBJTOP}/lib/libcasper/services/cap_net
LIBCAP_PWDDIR= ${OBJTOP}/lib/libcasper/services/cap_pwd
LIBCAP_SYSCTLDIR= ${OBJTOP}/lib/libcasper/services/cap_sysctl
LIBCAP_SYSLOGDIR= ${OBJTOP}/lib/libcasper/services/cap_syslog
+LIBCBORDIR= ${OBJTOP}/lib/libcbor
LIBBSDXMLDIR= ${OBJTOP}/lib/libexpat
LIBKVMDIR= ${OBJTOP}/lib/libkvm
LIBPTHREADDIR= ${OBJTOP}/lib/libthr
diff --git a/tools/build/mk/OptionalObsoleteFiles.inc b/tools/build/mk/OptionalObsoleteFiles.inc
index bda8a435c5e1..02b239f33a8e 100644
--- a/tools/build/mk/OptionalObsoleteFiles.inc
+++ b/tools/build/mk/OptionalObsoleteFiles.inc
@@ -7197,6 +7197,9 @@ OLD_FILES+=usr/bin/ssh-agent
OLD_FILES+=usr/bin/ssh-copy-id
OLD_FILES+=usr/bin/ssh-keygen
OLD_FILES+=usr/bin/ssh-keyscan
+OLD_FILES+=usr/lib/libprivatecbor.a
+OLD_FILES+=usr/lib/libprivatecbor.so
+OLD_LIBS+=usr/lib/libprivatecbor.so.5
OLD_FILES+=usr/lib/pam_ssh.so
OLD_LIBS+=usr/lib/pam_ssh.so.6
OLD_FILES+=usr/lib/libprivatessh.a