X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=Makefile;h=f374ac841b9af43afb23975c5a18fcd30a468c36;hb=0123751ca55fe462e8888c8d7b8c7def14b74ab3;hp=7eb5e899df994ee822ac1043737404e18c79026a;hpb=c61d39d9ed1fbe7c8f6522353a847939537a5c4f;p=fio.git diff --git a/Makefile b/Makefile index 7eb5e899..f374ac84 100644 --- a/Makefile +++ b/Makefile @@ -60,15 +60,17 @@ ifdef CONFIG_LIBHDFS endif ifdef CONFIG_LIBISCSI - CFLAGS := $(LIBISCSI_CFLAGS) $(CFLAGS) - LIBS += $(LIBISCSI_LIBS) - SOURCE += engines/libiscsi.c + iscsi_SRCS = engines/libiscsi.c + iscsi_LIBS = $(LIBISCSI_LIBS) + iscsi_CFLAGS = $(LIBISCSI_LIBS) + ENGINES += iscsi endif ifdef CONFIG_LIBNBD - CFLAGS := $(LIBNBD_CFLAGS) $(CFLAGS) - LIBS += $(LIBNBD_LIBS) - SOURCE += engines/nbd.c + nbd_SRCS = engines/nbd.c + nbd_LIBS = $(LIBNBD_LIBS) + nbd_CFLAGS = $(LIBNBD_CFLAGS) + ENGINES += nbd endif ifdef CONFIG_64BIT @@ -78,10 +80,19 @@ ifdef CONFIG_32BIT CFLAGS := -DBITS_PER_LONG=32 $(CFLAGS) endif ifdef CONFIG_LIBAIO - SOURCE += engines/libaio.c + aio_SRCS = engines/libaio.c + aio_LIBS = -laio + ifdef CONFIG_LIBAIO_URING + aio_LIBS = -luring + else + aio_LIBS = -laio + endif + ENGINES += aio endif ifdef CONFIG_RDMA - SOURCE += engines/rdma.c + rdma_SRCS = engines/rdma.c + rdma_LIBS = -libverbs -lrdmacm + ENGINES += rdma endif ifdef CONFIG_POSIXAIO SOURCE += engines/posixaio.c @@ -96,7 +107,8 @@ ifdef CONFIG_LINUX_SPLICE SOURCE += engines/splice.c endif ifdef CONFIG_GUASI - SOURCE += engines/guasi.c + guasi_SRCS = engines/guasi.c + ENGINES += guasi endif ifdef CONFIG_SOLARISAIO SOURCE += engines/solarisaio.c @@ -105,13 +117,19 @@ ifdef CONFIG_WINDOWSAIO SOURCE += engines/windowsaio.c endif ifdef CONFIG_RADOS - SOURCE += engines/rados.c + rados_SRCS = engines/rados.c + rados_LIBS = -lrados + ENGINES += rados endif ifdef CONFIG_RBD - SOURCE += engines/rbd.c + rbd_SRCS = engines/rbd.c + rbd_LIBS = -lrbd -lrados + ENGINES += rbd endif ifdef CONFIG_HTTP - SOURCE += engines/http.c + http_SRCS = engines/http.c + http_LIBS = -lcurl -lssl -lcrypto + ENGINES += http endif SOURCE += oslib/asprintf.c ifndef CONFIG_STRSEP @@ -139,6 +157,7 @@ ifdef CONFIG_GFAPI SOURCE += engines/glusterfs.c SOURCE += engines/glusterfs_sync.c SOURCE += engines/glusterfs_async.c + LIBS += -lgfapi -lglusterfs ifdef CONFIG_GF_FADVISE CFLAGS := "-DGFAPI_USE_FADVISE" $(CFLAGS) endif @@ -149,19 +168,27 @@ ifdef CONFIG_MTD SOURCE += oslib/libmtd_legacy.c endif ifdef CONFIG_PMEMBLK - SOURCE += engines/pmemblk.c + pmemblk_SRCS = engines/pmemblk.c + pmemblk_LIBS = -lpmemblk + ENGINES += pmemblk endif ifdef CONFIG_LINUX_DEVDAX - SOURCE += engines/dev-dax.c + dev-dax_SRCS = engines/dev-dax.c + dev-dax_LIBS = -lpmem + ENGINES += dev-dax endif ifdef CONFIG_LIBPMEM - SOURCE += engines/libpmem.c + pmem_SRCS = engines/libpmem.c + pmem_LIBS = -lpmem + ENGINES += pmem endif ifdef CONFIG_IME SOURCE += engines/ime.c endif ifdef CONFIG_LIBZBC - SOURCE += engines/libzbc.c + zbc_SRCS = engines/libzbc.c + zbc_LIBS = -lzbc + ENGINES += zbc endif ifeq ($(CONFIG_TARGET_OS), Linux) @@ -223,6 +250,26 @@ ifneq (,$(findstring CYGWIN,$(CONFIG_TARGET_OS))) CFLAGS := -DPSAPI_VERSION=1 -Ios/windows/posix/include -Wno-format $(CFLAGS) endif +ifdef CONFIG_DYNAMIC_ENGINES + DYNAMIC_ENGS := $(ENGINES) +define engine_template = +$(1)_OBJS := $$($(1)_SRCS:.c=.o) +$$($(1)_OBJS): CFLAGS := -fPIC $$($(1)_CFLAGS) $(CFLAGS) +engines/lib$(1).so: $$($(1)_OBJS) + $$(QUIET_LINK)$(CC) -shared -rdynamic -fPIC -Wl,-soname,lib$(1).so.1 $$($(1)_LIBS) -o $$@ $$< +ENGS_OBJS += engines/lib$(1).so +all install: $(ENGS_OBJS) +endef +else # !CONFIG_DYNAMIC_ENGINES +define engine_template = +SOURCE += $$($(1)_SRCS) +LIBS += $$($(1)_LIBS) +CFLAGS := $$($(1)_CFLAGS) $(CFLAGS) +endef +endif + +$(foreach eng,$(ENGINES),$(eval $(call engine_template,$(eng)))) + OBJS := $(SOURCE:.c=.o) FIO_OBJS = $(OBJS) fio.o @@ -337,12 +384,14 @@ PROGS += $(T_PROGS) ifdef CONFIG_HAVE_CUNIT UT_OBJS = unittests/unittest.o UT_OBJS += unittests/lib/memalign.o +UT_OBJS += unittests/lib/num2str.o UT_OBJS += unittests/lib/strntol.o UT_OBJS += unittests/oslib/strlcat.o UT_OBJS += unittests/oslib/strndup.o UT_OBJS += unittests/oslib/strcasestr.o UT_OBJS += unittests/oslib/strsep.o UT_TARGET_OBJS = lib/memalign.o +UT_TARGET_OBJS += lib/num2str.o UT_TARGET_OBJS += lib/strntol.o UT_TARGET_OBJS += oslib/strlcat.o UT_TARGET_OBJS += oslib/strndup.o @@ -372,6 +421,7 @@ else endif prefix = $(INSTALL_PREFIX) bindir = $(prefix)/bin +libdir = $(prefix)/lib/fio ifeq ($(CONFIG_TARGET_OS), Darwin) mandir = /usr/share/man @@ -520,7 +570,7 @@ unittests/unittest: $(UT_OBJS) $(UT_TARGET_OBJS) endif clean: FORCE - @rm -f .depend $(FIO_OBJS) $(GFIO_OBJS) $(OBJS) $(T_OBJS) $(UT_OBJS) $(PROGS) $(T_PROGS) $(T_TEST_PROGS) core.* core gfio unittests/unittest FIO-VERSION-FILE *.[do] lib/*.d oslib/*.[do] crc/*.d engines/*.[do] profiles/*.[do] t/*.[do] unittests/*.[do] unittests/*/*.[do] config-host.mak config-host.h y.tab.[ch] lex.yy.c exp/*.[do] lexer.h + @rm -f .depend $(FIO_OBJS) $(GFIO_OBJS) $(OBJS) $(T_OBJS) $(UT_OBJS) $(PROGS) $(T_PROGS) $(T_TEST_PROGS) core.* core gfio unittests/unittest FIO-VERSION-FILE *.[do] lib/*.d oslib/*.[do] crc/*.d engines/*.[do] engines/*.so profiles/*.[do] t/*.[do] unittests/*.[do] unittests/*/*.[do] config-host.mak config-host.h y.tab.[ch] lex.yy.c exp/*.[do] lexer.h @rm -f t/fio-btrace2fio t/io_uring t/read-to-pipe-async @rm -rf doc/output @@ -560,6 +610,10 @@ fulltest: install: $(PROGS) $(SCRIPTS) tools/plot/fio2gnuplot.1 FORCE $(INSTALL) -m 755 -d $(DESTDIR)$(bindir) $(INSTALL) $(PROGS) $(SCRIPTS) $(DESTDIR)$(bindir) +ifdef CONFIG_DYNAMIC_ENGINES + $(INSTALL) -m 755 -d $(DESTDIR)$(libdir) + $(INSTALL) -m 755 $(SRCDIR)/engines/*.so $(DESTDIR)$(libdir) +endif $(INSTALL) -m 755 -d $(DESTDIR)$(mandir)/man1 $(INSTALL) -m 644 $(SRCDIR)/fio.1 $(DESTDIR)$(mandir)/man1 $(INSTALL) -m 644 $(SRCDIR)/tools/fio_generate_plots.1 $(DESTDIR)$(mandir)/man1