3 ### Makefile for preload-hacks
5 ### (c) 2008 Straylight/Edgeware
8 ###----- Licensing notice ---------------------------------------------------
10 ### This file is part of the preload-hacks package.
12 ### Preload-hacks are free software; you can redistribute it and/or modify
13 ### them under the terms of the GNU General Public License as published by
14 ### the Free Software Foundation; either version 2 of the License, or (at
15 ### your option) any later version.
17 ### Preload-hacks are distributed in the hope that it will be useful, but
18 ### WITHOUT ANY WARRANTY; without even the implied warranty of
19 ### MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
20 ### Public License for more details.
22 ### You should have received a copy of the GNU General Public License along
23 ### with preload-hacks; if not, write to the Free Software Foundation, Inc.,
24 ### 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
27 PACKAGE = preload-hacks
28 VERSION := $(shell cd $(srcdir) && ./auto-version)
31 .SECONDEXPANSION: #sorry
33 ###--------------------------------------------------------------------------
36 ## Where to install things.
38 exec_prefix = ${prefix}
39 bindir = ${exec_prefix}/bin
40 libdir = ${exec_prefix}/lib
41 datadir = ${prefix}/share
42 mandir = ${datadir}/man
43 man1dir = ${mandir}/man1
45 ## Private installation tree for packagers.
48 ###--------------------------------------------------------------------------
51 ## Mess with these if you like.
58 INST_BIN = $(INSTALL) -c -m755
59 INST_LIB = $(INSTALL) -c -m644
60 INST_MAN = $(INSTALL) -c -m644
61 INST_BIN = $(INSTALL) -c -m755
62 MKDIRS = $(INSTALL) -d -m755
64 ## Probably best if you leave these alone.
65 REAL_CFLAGS = $(CFLAGS) -fPIC -MD
66 REAL_LDFLAGS = $(LDFLAGS) -shared
68 ## Allow user overrides for this stuff.
71 ###--------------------------------------------------------------------------
76 v_tag = $(call v_tag_$V,$1)
77 v_tag_0 = @printf " %-8s %s\n" "$1" "$@";
81 ###--------------------------------------------------------------------------
90 uopen_SOURCES = uopen.c
93 ALL_SOURCES = $(foreach h,$(HACKS),$($h_SOURCES))
94 DISTFILES += $(ALL_SOURCES)
97 LIBS += $(addsuffix .so, $(HACKS))
102 TARGETS += $(SCRIPTS)
103 DISTFILES += withlib.in
106 MAN1 += $(addsuffix .1, $(HACKS))
109 ###--------------------------------------------------------------------------
110 ### Distribution arrangements.
113 distdir = $(PACKAGE)-$(VERSION)
114 DISTTAR = $(distdir).tar.gz
116 ## Distribute the build utilities.
117 DISTFILES += Make.rules
118 DISTFILES += configure
119 DISTFILES += auto-version
129 DISTFILES += debian/changelog debian/copyright
130 DISTFILES += debian/control debian/rules debian/compat
131 DISTFILES += debian/source/format
132 DISTFILES += $(patsubst %, debian/%.install, $(debpkg))
133 DISTFILES += $(patsubst %, debian/%.lintian-overrides, \
136 ###--------------------------------------------------------------------------
150 $(call v_tag,CC)$(CC) -c $(REAL_CFLAGS) $< -o $@
152 ## Constructing preload hacks.
153 $(addsuffix .so,$(HACKS)): %.so: $$(patsubst %.c,%.o,$$($$*_SOURCES))
154 $(call v_tag,LD)$(LD) $(REAL_LDFLAGS) $< $(LDLIBS) -o $@
156 ## Constructing the scripts.
157 $(SCRIPTS): %: withlib.in
158 $(call v_tag,GEN)sed "s/@lib@/$@/" $(srcdir)/withlib.in >$@.new && \
159 chmod +x $@.new && mv $@.new $@
161 -include $(patsubst %.c,%d,$(ALL_SOURCES))
163 ###--------------------------------------------------------------------------
167 $(MKDIRS) $(DESTDIR)$(bindir)
168 $(INST_BIN) $(SCRIPTS) $(DESTDIR)$(bindir)
169 $(MKDIRS) $(DESTDIR)$(libdir)
170 $(INST_BIN) $(LIBS) $(DESTDIR)$(libdir)
171 $(MKDIRS) $(DESTDIR)$(man1dir)
172 $(INST_MAN) $(addprefix $(srcdir)/,$(MAN1)) $(DESTDIR)$(man1dir)
176 rm -f $(addprefix $(DESTDIR)$(libdir)/, $(LIBS))
177 rm -f $(addprefix $(DESTDIR)$(bindir)/, $(SCRIPTS))
178 rm -f $(addprefix $(DESTDIR)$(man1dir)/, $(MAN1))
181 ###--------------------------------------------------------------------------
187 echo $(VERSION) >$(distdir)/RELEASE
188 for i in $(DISTFILES); do \
191 d=$${i%/*} && $(MKDIRS) $(distdir)/$$d || exit 1 \
194 cp $(srcdir)/$$i $(distdir)/$$i || exit 1; \
199 tar chozf $(DISTTAR) $(distdir)
207 tar xvfz ../$(DISTTAR) && \
208 mkdir _build && cd _build && \
209 ../$(distdir)/configure && \
211 make install DESTDIR=../_install && \
215 ###----- That's all, folks --------------------------------------------------