AC_SUBST(XIO_LIBS)
fi
-#
-# DPDK
-#
-
-AC_ARG_WITH(dpdk,
- [AC_HELP_STRING([--with-dpdk], [build Ceph DPDK Support])], [], [with_dpdk=no])
-
-AM_CONDITIONAL(WITH_DPDK, [test "x$with_dpdk" != "xno"])
-
-if test "x$with_dpdk" != x"no"; then
- CPPFLAGS="$CPPFLAGS -I$with_dpdk/include"
- LDFLAGS="$LDFLAGS -L$with_dpdk/lib"
- AC_CHECK_HEADER([rte_config.h], [], AC_MSG_ERROR([Cannot find header 'rte_config.h'.]))
- AC_CHECK_LIB([rte_eal], [rte_eal_init], [], AC_MSG_FAILURE([DPDK rte_eal_init not found]),
- [-lrte_mempool -lrte_ring -lpthread -ldl])
-
- AC_DEFINE([HAVE_DPDK], [1], [DPDK conditional compilation])
-fi
-
#
# SPDK
#
AM_CONDITIONAL(WITH_SPDK, [test "x$with_spdk" != "xno"])
if test "x$with_spdk" != x"no"; then
- CPPFLAGS="$CPPFLAGS -I$with_spdk/include"
- LDFLAGS="$LDFLAGS -L$with_spdk/lib/nvme -L$with_spdk/lib/memory -L$with_spdk/lib/util"
- AC_CHECK_HEADER([spdk/nvme.h], [], AC_MSG_ERROR([Cannot find header 'spdk/nvme.h'.]))
- #AC_CHECK_LIB([spdk_nvme], [nvme_attach], [], AC_MSG_FAILURE([SPDK nvme_attach not found]))
-
+ PKG_CHECK_MODULES([LIBPCIACCESS], [pciaccess])
+ AC_CHECK_HEADER([dpdk/rte_config.h], [],
+ AC_MSG_ERROR([dpdk/rte_config.h not found (libdpdk-dev, libdpdk-devel)]))
+ AC_CHECK_LIB([rte_eal], [rte_eal_init], [true],
+ AC_MSG_FAILURE([DPDK rte_eal_init not found]),
+ [-lrte_mempool -lrte_ring -lpthread -ldl])
+ AC_SUBST([LIBDPDK_CFLAGS], [-I/usr/include/dpdk])
+ AC_SUBST([LIBDPDK_LIBS], ['-lrte_eal -lrte_mempool -lrte_ring -lpthread'])
+ AC_SUBST([LIBPCIACCESS_LIBS])
AC_DEFINE([HAVE_SPDK], [1], [SPDK conditional compilation])
- AC_SUBST(SPDK_LIBS)
fi
#libatomic-ops? You want it!
endif
if WITH_SPDK
-libos_a_CXXFLAGS = ${AM_CXXFLAGS} -I ${with_spdk}/include -fPIC
+
+SPDK_SRCDIR = ${top_srcdir}/src/spdk/lib
+${SPDK_SRCDIR}/nvme/libspdk_nvme.a:
+ $(MAKE) -C ${SPDK_SRCDIR}/nvme DPDK_INC=${LIBDPDK_CFLAGS}
+${SPDK_SRCDIR}/memory/libspdk_memory.a:
+ $(MAKE) -C ${SPDK_SRCDIR}/memory DPDK_INC=${LIBDPDK_CFLAGS}
+${SPDK_SRCDIR}/util/libspdk_util.a:
+ $(MAKE) -C ${SPDK_SRCDIR}/util DPDK_INC=${LIBDPDK_CFLAGS}
+${SPDK_SRCDIR}/ioat/libspdk_ioat.a:
+ $(MAKE) -C ${SPDK_SRCDIR}/ioat DPDK_INC=${LIBDPDK_CFLAGS}
+LIBSPDK_CFLAGS = "-I${top_srcdir}/src/spdk/include"
+LIBSPDK_LIBS = \
+ ${top_srcdir}/src/spdk/lib/nvme/libspdk_nvme.a \
+ ${top_srcdir}/src/spdk/lib/memory/libspdk_memory.a \
+ ${top_srcdir}/src/spdk/lib/util/libspdk_util.a \
+ ${top_srcdir}/src/spdk/lib/ioat/libspdk_ioat.a
+
+libos_a_CXXFLAGS += \
+ ${LIBSPDK_CFLAGS} \
+ ${LIBDPDK_CFLAGS} \
+ ${LIBPCIACCESS_CFLAGS}
libos_a_SOURCES += os/bluestore/NVMEDevice.cc
noinst_HEADERS += os/bluestore/NVMEDevice.h
endif