• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1include Makefile.common
2
3RPMBUILD=$(shell `which rpmbuild >&/dev/null` && echo "rpmbuild" || echo "rpm")
4
5INSTALL=install
6
7default: all
8
9all:
10	@$(MAKE) -C src
11	@$(MAKE) -C test
12	@$(MAKE) -C examples
13
14library:
15	@$(MAKE) -C src
16
17.PHONY: all install default clean test library
18.PHONY: FORCE cscope
19
20runtests: all
21	@$(MAKE) -C test runtests
22runtests-loop: all
23	@$(MAKE) -C test runtests-loop
24runtests-parallel: all
25	@$(MAKE) -C test runtests-parallel
26
27config-host.mak: configure
28	+@if [ ! -e "$@" ]; then				\
29	  echo "Running configure ...";				\
30	  ./configure;						\
31	else							\
32	  echo "$@ is out-of-date, running configure";		\
33	  sed -n "/.*Configured with/s/[^:]*: //p" "$@" | sh;	\
34	fi
35
36ifneq ($(MAKECMDGOALS),clean)
37include config-host.mak
38endif
39
40%.pc: %.pc.in config-host.mak $(SPECFILE)
41	sed -e "s%@prefix@%$(prefix)%g" \
42	    -e "s%@libdir@%$(libdir)%g" \
43	    -e "s%@includedir@%$(includedir)%g" \
44	    -e "s%@NAME@%$(NAME)%g" \
45	    -e "s%@VERSION@%$(VERSION)%g" \
46	    $< >$@
47
48install: $(NAME).pc $(NAME)-ffi.pc
49	@$(MAKE) -C src install prefix=$(DESTDIR)$(prefix) \
50		includedir=$(DESTDIR)$(includedir) \
51		libdir=$(DESTDIR)$(libdir) \
52		libdevdir=$(DESTDIR)$(libdevdir) \
53		relativelibdir=$(relativelibdir)
54	$(INSTALL) -D -m 644 $(NAME).pc $(DESTDIR)$(libdevdir)/pkgconfig/$(NAME).pc
55	$(INSTALL) -D -m 644 $(NAME)-ffi.pc $(DESTDIR)$(libdevdir)/pkgconfig/$(NAME)-ffi.pc
56	$(INSTALL) -m 755 -d $(DESTDIR)$(mandir)/man2
57	$(INSTALL) -m 644 man/*.2 $(DESTDIR)$(mandir)/man2
58	$(INSTALL) -m 755 -d $(DESTDIR)$(mandir)/man3
59	$(INSTALL) -m 644 man/*.3 $(DESTDIR)$(mandir)/man3
60	$(INSTALL) -m 755 -d $(DESTDIR)$(mandir)/man7
61	$(INSTALL) -m 644 man/*.7 $(DESTDIR)$(mandir)/man7
62
63uninstall:
64	@$(MAKE) -C src uninstall prefix=$(DESTDIR)$(prefix) datadir=$(DESTDIR)$(datadir)
65	@rm -f $(DESTDIR)$(libdevdir)/pkgconfig/$(NAME).pc
66	@rm -f $(DESTDIR)$(libdevdir)/pkgconfig/$(NAME)-ffi.pc
67	@rm -rf $(DESTDIR)$(mandir)/man2/io_uring*.2
68	@rm -rf $(DESTDIR)$(mandir)/man3/io_uring*.3
69	@rm -rf $(DESTDIR)$(mandir)/man7/io_uring*.7
70
71install-tests:
72	@$(MAKE) -C test install prefix=$(DESTDIR)$(prefix) datadir=$(DESTDIR)$(datadir)
73
74uninstall-tests:
75	@$(MAKE) -C test uninstall prefix=$(DESTDIR)$(prefix) datadir=$(DESTDIR)$(datadir)
76
77clean:
78	@rm -f config-host.mak config-host.h cscope.out $(NAME).pc $(NAME)-ffi.pc test/*.dmesg
79	@$(MAKE) -C src clean
80	@$(MAKE) -C test clean
81	@$(MAKE) -C examples clean
82
83cscope:
84	@cscope -b -R
85
86tag-archive:
87	@git tag $(TAG)
88
89create-archive:
90	@git archive --prefix=$(NAME)-$(VERSION)/ -o $(NAME)-$(VERSION).tar.gz $(TAG)
91	@echo "The final archive is ./$(NAME)-$(VERSION).tar.gz."
92
93archive: clean tag-archive create-archive
94
95srpm: create-archive
96	$(RPMBUILD) --define "_sourcedir `pwd`" --define "_srcrpmdir `pwd`" --nodeps -bs $(SPECFILE)
97