2 # Copyright (c) 2009-2011 Mark Heily <mark@heily.com>
4 # Permission to use, copy, modify, and distribute this software for any
5 # purpose with or without fee is hereby granted, provided that the above
6 # copyright notice and this permission notice appear in all copies.
8 # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9 # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10 # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11 # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12 # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13 # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14 # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17 REPOSITORY=svn+ssh://mark.heily.com/$$HOME/svn/$(PROGRAM)
18 DIST=heily.com:$$HOME/public_html/$(PROGRAM)/dist
19 DISTFILE=$(PROGRAM)-$(VERSION).tar.gz
23 .PHONY :: install uninstall check dist dist-upload publish-www clean merge distclean fresh-build rpm edit cscope
25 all: $(PROGRAM).so $(PROGRAM).a
28 $(CC) -c -o $@ -I./include -I./src/common $(CFLAGS) $<
31 $(AR) rcs $(PROGRAM).a $(OBJS)
33 $(PROGRAM).so: $(OBJS)
34 $(LD) $(LDFLAGS) $(OBJS) $(LDADD)
35 $(LN) -sf $(PROGRAM).so.$(ABI_VERSION) $(PROGRAM).so
37 install: $(PROGRAM).so
38 $(INSTALL) -d -m 755 $(INCLUDEDIR)/kqueue/sys
39 $(INSTALL) -m 644 include/sys/event.h $(INCLUDEDIR)/kqueue/sys/event.h
40 $(INSTALL) -d -m 755 $(LIBDIR)
41 $(INSTALL) -m 644 $(PROGRAM).so.$(ABI_VERSION) $(LIBDIR)
42 $(LN) -sf $(PROGRAM).so.$(ABI_VERSION) $(LIBDIR)/$(PROGRAM).so.$(ABI_MAJOR)
43 $(LN) -sf $(PROGRAM).so.$(ABI_VERSION) $(LIBDIR)/$(PROGRAM).so
44 $(INSTALL) -m 644 $(PROGRAM).la $(LIBDIR)
45 $(INSTALL) -m 644 $(PROGRAM).a $(LIBDIR)
46 $(INSTALL) -d -m 755 $(LIBDIR)/pkgconfig
47 $(INSTALL) -m 644 libkqueue.pc $(LIBDIR)/pkgconfig
48 $(INSTALL) -d -m 755 $(MANDIR)/man2
49 $(INSTALL) -m 644 kqueue.2 $(MANDIR)/man2/kqueue.2
50 $(INSTALL) -m 644 kqueue.2 $(MANDIR)/man2/kevent.2
53 rm -f $(INCLUDEDIR)/kqueue/sys/event.h
54 rm -f $(LIBDIR)/libkqueue.so
55 rm -f $(LIBDIR)/pkgconfig/libkqueue.pc
56 rm -f $(MANDIR)/man2/kqueue.2
57 rm -f $(MANDIR)/man2/kevent.2
58 rmdir $(INCLUDEDIR)/kqueue/sys $(INCLUDEDIR)/kqueue
61 cd test && ./configure && make check
63 debug-check: clean $(PROGRAM).a
64 cd test && ./configure && KQUEUE_DEBUG=y make check
66 $(DISTFILE): $(SOURCES) $(HEADERS)
67 mkdir $(PROGRAM)-$(VERSION)
68 cp Makefile ChangeLog configure config.inc \
69 $(MANS) $(EXTRA_DIST) \
71 cp -R $(SUBDIRS) $(PROGRAM)-$(VERSION)
72 rm -rf `find $(PROGRAM)-$(VERSION) -type d -name .svn -o -name .libs`
73 cd $(PROGRAM)-$(VERSION) && ./configure && cd test && ./configure && cd .. && make distclean
74 tar zcf $(PROGRAM)-$(VERSION).tar.gz $(PROGRAM)-$(VERSION)
75 rm -rf $(PROGRAM)-$(VERSION)
81 dist-upload: $(DISTFILE)
82 scp $(DISTFILE) $(DIST)
85 rm -f tags *.a *.so *.so.*
86 find src -name '*.o' -exec rm {} \;
88 cd test && make clean || true
91 rm -f *.tar.gz config.mk config.h $(PROGRAM).pc $(PROGRAM).la rpm.spec
92 rm -f test/config.mk test/config.h
93 rm -rf $(PROGRAM)-$(VERSION) 2>/dev/null || true
96 rm -rf /tmp/$(PROGRAM)-testbuild
97 svn co svn://mark.heily.com/libkqueue/trunk /tmp/$(PROGRAM)-testbuild
98 cd /tmp/$(PROGRAM)-testbuild && ./configure && make check
99 rm -rf /tmp/$(PROGRAM)-testbuild
102 svn diff $(REPOSITORY)/branches/stable $(REPOSITORY)/trunk | gvim -
103 @printf "Merge changes from the trunk to the stable branch [y/N]? "
104 @read x && test "$$x" = "y"
107 tags: $(SOURCES) $(HEADERS)
108 ctags $(SOURCES) $(HEADERS)
111 $(EDITOR) $(SOURCES) $(HEADERS)
114 cscope $(SOURCES) $(HEADERS)
116 # Creates an ~/rpmbuild tree
118 mkdir -p $$HOME/rpmbuild
119 cd $$HOME/rpmbuild && mkdir -p BUILD RPMS SOURCES SPECS SRPMS
120 grep _topdir $$HOME/.rpmmacros || \
121 echo "%_topdir %(echo $$HOME/rpmbuild)" >> $$HOME/.rpmmacros
123 rpm: rpmbuild clean $(DISTFILE)
125 cp $(DISTFILE) $$HOME/rpmbuild/SOURCES
126 rpmbuild -bb rpm.spec
127 find $$HOME/rpmbuild -name '$(PROGRAM)-$(VERSION)*.rpm' -exec mv {} ./pkg \;
129 deb: clean $(DISTFILE)
130 mkdir pkg && cd pkg ; \
131 tar zxf ../$(DISTFILE) ; \
132 cp ../$(DISTFILE) $(PROGRAM)_$(VERSION).orig.tar.gz ; \
133 cp -R ../ports/debian $(PROGRAM)-$(VERSION) ; \
134 rm -rf `find $(PROGRAM)-$(VERSION)/debian -type d -name .svn` ; \
135 perl -pi -e 's/\@\@VERSION\@\@/$(VERSION)/' $(PROGRAM)-$(VERSION)/debian/changelog ; \
136 cd $(PROGRAM)-$(VERSION) && dpkg-buildpackage -uc -us
138 @printf "\nThe following packages have been created:\n"
139 @find ./pkg -name '*.deb' | sed 's/^/ /'
142 ./configure --prefix=/usr --debug=yes
143 make clean && make && sudo make install
146 if [ "`pwd | grep /trunk`" != "" ] ; then \
147 (cd .. ; $(DIFF) branches/stable trunk | less) ; \
149 if [ "`pwd | grep /branches/stable`" != "" ] ; then \
150 (cd ../.. ; $(DIFF) branches/stable trunk | less) ; \
153 # Copy to/from the host to the Solaris guest VM
156 ssh -p 2222 localhost 'rm -rf /export/home/mheily/libkqueue'
157 cd .. ; scp -rq -P 2222 trunk localhost:/export/home/mheily/libkqueue
159 solaris-test: solaris-push
160 ssh -p 2222 localhost 'cd /export/home/mheily/libkqueue && /usr/sfw/bin/gmake distclean && ./configure && /usr/sfw/bin/gmake clean all check'
163 scp -rq -P 2222 localhost:/export/home/mheily/libkqueue/\* .