To avoid adding a liblustreapi linker dependency to libjson-c,
which makes it harder to build applications using this library,
link libjson-c directly to liblustreapi fir the few functions
that it needs.
- added configure check for yaml
- added configure check for json
- added json library to the Lustre liblustreapi
- replaced hardcoded -lyaml with variable
- replaced hardcoded -ljson-c with variable
- removed redundant json-c links
Test-Parameters: trivial
Fixes:
fbfd2d075534 ("EX-5176 pcc: use JSON string for trusted.pin xattr")
Change-Id: I57b8abb5170b3e3a4d18782c5611929c7c2b7072
Signed-off-by: Alex Deiter <alex.deiter@gmail.com>
Reviewed-on: https://review.whamcloud.com/47844
Reviewed-by: Jian Yu <yujian@whamcloud.com>
Tested-by: jenkins <devops@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Tested-by: Andreas Dilger <adilger@whamcloud.com>
]) # LB_LIBMOUNT
#
+# LB_LIBYAML
+#
+# Check whether build with libyaml for libnetconfig
+#
+AC_DEFUN([LB_LIBYAML], [
+AC_CHECK_HEADER([yaml.h], [
+ AC_CHECK_LIB([yaml], [yaml_parser_parse], [
+ LDLIBYAML="-lyaml"
+ AC_SUBST(LDLIBYAML)
+ with_libyaml="yes"
+ ],[with_libyaml="no"])
+], [with_libyaml="no"])
+AC_MSG_CHECKING([whether to build with libyaml])
+AS_IF([test "x$with_libyaml" = xyes], [
+ AC_MSG_RESULT([yes])
+], [
+ AC_MSG_RESULT([no])
+ AC_MSG_ERROR([libyaml development package is required])
+])
+]) # LB_LIBYAML
+
+#
+# LB_LIBJSON
+#
+# Check whether build with libjson-c for liblustreapi
+#
+AC_DEFUN([LB_LIBJSON], [
+AC_CHECK_HEADER([json-c/json.h], [
+ AC_CHECK_LIB([json-c], [json_object_get], [
+ LDLIBJSON="-ljson-c"
+ AC_SUBST(LDLIBJSON)
+ with_libjson="yes"
+ ],[with_libjson="no"])
+], [with_libjson="no"])
+AC_MSG_CHECKING([whether to build with libjson-c])
+AS_IF([test "x$with_libjson" = xyes], [
+ AC_MSG_RESULT([yes])
+], [
+ AC_MSG_RESULT([no])
+ AC_MSG_ERROR([json-c development package is required])
+])
+]) # LB_LIBJSON
+
+#
# LB_PATH_PUMOUNT
#
AC_DEFUN([LB_PATH_PUMOUNT], [
LC_QUOTA
LB_LIBMOUNT
+LB_LIBYAML
+LB_LIBJSON
LB_PATH_SNMP
LB_PATH_LUSTREIOKIT
LB_PATH_PUMOUNT
liblnetconfig_lnd.c liblnd.h cyaml.c cyaml.h
liblnetconfig_la_CPPFLAGS = -D_LARGEFILE64_SOURCE=1 -D_FILE_OFFSET_BITS=64 \
-DLUSTRE_UTILS=1 -fPIC
-liblnetconfig_la_LDFLAGS = -L$(top_builddir)/libcfs/libcfs -lyaml -lm \
- $(LIBREADLINE) -version-info 4:0:0
+liblnetconfig_la_LDFLAGS = -L$(top_builddir)/libcfs/libcfs -lm \
+ $(LDLIBYAML) $(LIBREADLINE) -version-info 4:0:0
liblnetconfig_la_LIBADD = $(top_builddir)/libcfs/libcfs/libcfs.la
EXTRA_DIST =
test_DATA = $(noinst_DATA)
nobase_test_DATA = $(nobase_noinst_DATA)
-LIBLUSTREAPI = $(top_builddir)/lustre/utils/liblustreapi.la -ljson-c
+LIBLUSTREAPI = $(top_builddir)/lustre/utils/liblustreapi.la
badarea_io_CFLAGS=-Wno-stringop-overflow
mmap_sanity_LDADD = $(LIBLUSTREAPI) $(PTHREAD_LIBS)
rr_alloc_SOURCES=rr_alloc.c
cascading_rw_SOURCES=cascading_rw.c lp_utils.c lp_utils.h
-cascading_rw_LDADD=$(top_builddir)/lustre/utils/liblustreapi.la -ljson-c
+cascading_rw_LDADD=$(top_builddir)/lustre/utils/liblustreapi.la
mdsrate_SOURCES=mdsrate.c
-mdsrate_LDADD=$(top_builddir)/lustre/utils/liblustreapi.la -ljson-c
+mdsrate_LDADD=$(top_builddir)/lustre/utils/liblustreapi.la
fi
for prog in $LUSTRE_TESTS_API_DIR/*.c; do
- $CC -Wall -Werror -std=c99 $extra_flags -o $out $prog -llustreapi -ljson-c ||
+ $CC -Wall -Werror -std=c99 $extra_flags -o $out $prog -llustreapi ||
error "client api broken"
done
rm -f $out
endif
endif # UTILS
-LIBLUSTREAPI = liblustreapi.la -ljson-c
+LIBLUSTREAPI = liblustreapi.la
lib_LIBRARIES =
noinst_LIBRARIES =
if LDISKFS_ENABLED
if SERVER
lctl_SOURCES += lustre_lfsck.c lsnapshot.c
endif
-lctl_LDADD := $(LIBLUSTREAPI) $(PTHREAD_LIBS) -lyaml
+lctl_LDADD := $(LIBLUSTREAPI) $(PTHREAD_LIBS) $(LDLIBYAML)
lctl_DEPENDENCIES := liblustreapi.la
lfs_SOURCES = lfs.c lfs_project.c lfs_project.h
liblustreapi_heat.c liblustreapi_pcc.c \
liblustreapi_lseek.c libhsm_scanner.h \
libhsm_scanner.c
-liblustreapi_la_LDFLAGS = $(LIBREADLINE) -version-info 1:0:0 \
+liblustreapi_la_LDFLAGS = $(LIBREADLINE) $(LDLIBJSON) -version-info 1:0:0 \
-Wl,--version-script=liblustreapi.map
liblustreapi_la_LIBADD = $(top_builddir)/libcfs/libcfs/libcfs.la
liblustreapi_la_LIBADD += $(top_builddir)/lnet/utils/lnetconfig/liblnetconfig.la
-D_GNU_SOURCE
sbin_PROGRAMS = l_idmap
-LIBLUSTREAPI = $(top_builddir)/lustre/utils/liblustreapi.la -ljson-c
+LIBLUSTREAPI = $(top_builddir)/lustre/utils/liblustreapi.la
if GSS_KEYRING
sbin_PROGRAMS += lsvcgssd lgss_keyring