1prefix ?= /usr 2includedir ?= $(prefix)/include 3libdir ?= $(prefix)/lib 4libdevdir ?= $(prefix)/lib 5 6CPPFLAGS ?= 7override CPPFLAGS += -Iinclude/ -include ../config-host.h 8CFLAGS ?= -g -fomit-frame-pointer -O2 9override CFLAGS += -Wall -Wextra -Wno-unused-parameter -Wno-sign-compare 10SO_CFLAGS=-fPIC $(CFLAGS) 11L_CFLAGS=$(CFLAGS) 12LINK_FLAGS= 13LINK_FLAGS+=$(LDFLAGS) 14ENABLE_SHARED ?= 1 15 16soname=liburing.so.2 17minor=0 18micro=0 19libname=$(soname).$(minor).$(micro) 20all_targets += liburing.a 21 22ifeq ($(ENABLE_SHARED),1) 23all_targets += $(libname) 24endif 25 26include ../Makefile.quiet 27 28ifneq ($(MAKECMDGOALS),clean) 29include ../config-host.mak 30endif 31 32all: $(all_targets) 33 34liburing_srcs := setup.c queue.c syscall.c register.c 35 36liburing_objs := $(patsubst %.c,%.ol,$(liburing_srcs)) 37liburing_sobjs := $(patsubst %.c,%.os,$(liburing_srcs)) 38 39$(liburing_objs) $(liburing_sobjs): include/liburing/io_uring.h 40 41%.os: %.c 42 $(QUIET_CC)$(CC) $(CPPFLAGS) $(SO_CFLAGS) -c -o $@ $< 43 44%.ol: %.c 45 $(QUIET_CC)$(CC) $(CPPFLAGS) $(L_CFLAGS) -c -o $@ $< 46 47AR ?= ar 48RANLIB ?= ranlib 49liburing.a: $(liburing_objs) 50 @rm -f liburing.a 51 $(QUIET_AR)$(AR) r liburing.a $^ 52 $(QUIET_RANLIB)$(RANLIB) liburing.a 53 54$(libname): $(liburing_sobjs) liburing.map 55 $(QUIET_CC)$(CC) $(SO_CFLAGS) -shared -Wl,--version-script=liburing.map -Wl,-soname=$(soname) -o $@ $(liburing_sobjs) $(LINK_FLAGS) 56 57install: $(all_targets) 58 install -D -m 644 include/liburing/io_uring.h $(includedir)/liburing/io_uring.h 59 install -D -m 644 include/liburing.h $(includedir)/liburing.h 60 install -D -m 644 include/liburing/compat.h $(includedir)/liburing/compat.h 61 install -D -m 644 include/liburing/barrier.h $(includedir)/liburing/barrier.h 62 install -D -m 644 liburing.a $(libdevdir)/liburing.a 63ifeq ($(ENABLE_SHARED),1) 64 install -D -m 755 $(libname) $(libdir)/$(libname) 65 ln -sf $(libname) $(libdir)/$(soname) 66 ln -sf $(relativelibdir)$(libname) $(libdevdir)/liburing.so 67endif 68 69$(liburing_objs): include/liburing.h 70 71clean: 72 @rm -f $(all_targets) $(liburing_objs) $(liburing_sobjs) $(soname).new 73 @rm -f *.so* *.a *.o 74 @rm -f include/liburing/compat.h 75