Commit 4cbbcdc8 authored by Jim Harris's avatar Jim Harris
Browse files

util: use libuuid for FreeBSD if it is available



Define new HAVE_LIBUUID config variable to support this case.

Fixes issue #3696.

Signed-off-by: default avatarJim Harris <jim.harris@nvidia.com>
Change-Id: I1cd5be242b12361cec3540fb1a68949679d6cd44
Reviewed-on: https://review.spdk.io/c/spdk/spdk/+/26367


Tested-by: default avatarSPDK Automated Test System <spdkbot@gmail.com>
Reviewed-by: default avatarBoris Glimcher <Boris.Glimcher@emc.com>
Reviewed-by: default avatarKonrad Sztyber <ksztyber@nvidia.com>
Reviewed-by: default avatarTomasz Zawadzki <tomasz@tzawadzki.com>
Community-CI: Mellanox Build Bot
parent b5bd8c9d
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -206,6 +206,9 @@ CONFIG_IDXD_KERNEL=n
# arc4random is available in stdlib.h
CONFIG_HAVE_ARC4RANDOM=n

# libuuid is available
CONFIG_HAVE_LIBUUID=n

# uuid_generate_sha1 is available in uuid/uuid.h
CONFIG_HAVE_UUID_GENERATE_SHA1=n

+5 −0
Original line number Diff line number Diff line
@@ -1158,6 +1158,11 @@ if echo -e '#include <stdlib.h>\nint main(void) { arc4random(); return 0; }\n' \
	CONFIG[HAVE_ARC4RANDOM]="y"
fi

if echo -e '#include <uuid/uuid.h>\nint main(void) { return 0; }\n' \
	| "${BUILD_CMD[@]}" - -luuid 2> /dev/null; then
	CONFIG[HAVE_LIBUUID]="y"
fi

if echo -e '#include <uuid/uuid.h>\nint main(void) { uuid_generate_sha1(NULL, NULL, NULL, 0); return 0; }\n' \
	| "${BUILD_CMD[@]}" - -luuid 2> /dev/null; then
	CONFIG[HAVE_UUID_GENERATE_SHA1]="y"
+1 −1
Original line number Diff line number Diff line
@@ -14,7 +14,7 @@ C_SRCS = base64.c bit_array.c cpuset.c crc16.c crc32.c crc32c.c crc32_ieee.c crc
	 pipe.c strerror_tls.c string.c uuid.c xor.c zipf.c md5.c
LIBNAME = util

ifneq ($(OS),FreeBSD)
ifeq ($(CONFIG_HAVE_LIBUUID),y)
LOCAL_SYS_LIBS = -luuid
endif

+4 −2
Original line number Diff line number Diff line
@@ -11,7 +11,7 @@
#include <openssl/evp.h>
#endif /* SPDK_CONFIG_HAVE_UUID_GENERATE_SHA1 */

#ifndef __FreeBSD__
#if defined(SPDK_CONFIG_HAVE_LIBUUID)

#include <uuid/uuid.h>

@@ -64,7 +64,7 @@ spdk_uuid_set_null(struct spdk_uuid *uuid)
	uuid_clear((void *)uuid);
}

#else
#elif defined(__FreeBSD__)

#include <uuid.h>

@@ -141,6 +141,8 @@ spdk_uuid_set_null(struct spdk_uuid *uuid)
	uuid_create_nil((uuid_t *)uuid, NULL);
}

#else
#error System must either have libuuid available or be FreeBSD.
#endif

int
+1 −1
Original line number Diff line number Diff line
@@ -339,7 +339,7 @@ CFLAGS += $(COMMON_CFLAGS) -Wno-pointer-sign -Wstrict-prototypes -Wold-style-d
CXXFLAGS += $(COMMON_CFLAGS) -std=c++11

SYS_LIBS += -lrt
ifneq ($(OS),FreeBSD)
ifeq ($(CONFIG_HAVE_LIBUUID),y)
SYS_LIBS += -luuid
endif
SYS_LIBS += -lssl