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
This commit is contained in:
Ed Maste 2021-10-06 20:42:40 -04:00
parent 67829b6307
commit 2e85df652c
6 changed files with 101 additions and 0 deletions

View file

@ -215,6 +215,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

35
lib/libcbor/Makefile Normal file
View file

@ -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>

View file

@ -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 */

View file

@ -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

View file

@ -17,6 +17,7 @@ _PRIVATELIBS= \
atf_cxx \
auditd \
bsdstat \
cbor \
devdctl \
event1 \
gmock \
@ -687,6 +688,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

View file

@ -7119,6 +7119,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