### the Free Software Foundation; either version 2 of the License, or (at
### your option) any later version.
###
-### Preload-hacks distributed in the hope that it will be useful, but WITHOUT
-### ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-### FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
-### more details.
+### Preload-hacks are distributed in the hope that it will be useful, but
+### WITHOUT ANY WARRANTY; without even the implied warranty of
+### MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
+### Public License for more details.
###
### You should have received a copy of the GNU General Public License along
-### with mLib; if not, write to the Free Software Foundation, Inc., 59 Temple
-### Place - Suite 330, Boston, MA 02111-1307, USA.
+### with preload-hacks; if not, write to the Free Software Foundation, Inc.,
+### 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
PACKAGE = preload-hacks
VERSION := $(shell ./auto-version)
+.SECONDEXPANSION: #sorry
+
###--------------------------------------------------------------------------
### Configuration.
DESTDIR =
###--------------------------------------------------------------------------
-### Quiet building.
-
-## Verbosity.
-V = 0
-
-## Compilation.
-V_CC = $(V_CC_$(V))$(CC)
-V_CC_0 = @echo " CC $@";
-
-## Linking.
-V_LD = $(V_LD_$(V))$(LD)
-V_LD_0 = @echo " LD $@";
-
-## Generation.
-V_GEN = $(V_GEN_$(V))
-V_GEN_0 = @echo " GEN $@";
-
-###--------------------------------------------------------------------------
### Build parameters.
## Mess with these if you like.
MKDIRS = $(INSTALL) -d -m755
## Probably best if you leave these alone.
-REAL_CFLAGS = $(CFLAGS) -fPIC
+REAL_CFLAGS = $(CFLAGS) -fPIC -MD
REAL_LDFLAGS = $(LDFLAGS) -shared
###--------------------------------------------------------------------------
+### Quiet building.
+
+## Verbosity.
+V = 0
+v_tag = $(call v_tag_$V,$1)
+v_tag_0 = @printf " %-8s %s\n" "$1" "$@";
+V_AT = $(V_AT_$V)
+V_AT_0 = @
+
+###--------------------------------------------------------------------------
### Main targets.
## noip
HACKS += noip
-NOIP_SOURCES = noip.c
-DISTFILES += $(NOIP_SOURCES)
+noip_SOURCES = noip.c
## uopen
HACKS += uopen
-UOPEN_SOURCES = uopen.c
-DISTFILES += $(UOPEN_SOURCES)
+uopen_SOURCES = uopen.c
+
+## Sources.
+ALL_SOURCES = $(foreach h,$(HACKS),$($h_SOURCES))
+DISTFILES += $(ALL_SOURCES)
## Libraries.
LIBS += $(addsuffix .so, $(HACKS))
debpkg = noip uopen
DISTFILES += debian/changelog debian/copyright
DISTFILES += debian/control debian/rules debian/compat
+DISTFILES += debian/source/format
DISTFILES += $(patsubst %, debian/%.install, $(debpkg))
DISTFILES += $(patsubst %, debian/%.lintian-overrides, \
$(debpkg))
###--------------------------------------------------------------------------
### Building.
-all: $(TARGETS)
+all:: $(TARGETS)
.PHONY: ALL
-clean:
- rm -f *.o $(TARGETS)
+CLEAN += $(TARGETS)
+CLEAN += *.o *.d
+clean::
+ rm -f $(CLEAN)
.PHONY: clean
## Building sources.
%.o: %.c
- $(V_CC) -c $(REAL_CFLAGS) $< -o $@
+ $(call v_tag,CC)$(CC) -c $(REAL_CFLAGS) $< -o $@
## Constructing preload hacks.
-noip.so: $(patsubst %.c, %.o, $(NOIP_SOURCES))
- $(V_LD) $(REAL_LDFLAGS) $< $(LDLIBS) -o $@
-uopen.so: $(patsubst %.c, %.o, $(UOPEN_SOURCES))
- $(V_LD) $(REAL_LDFLAGS) $< $(LDLIBS) -o $@
+$(addsuffix .so,$(HACKS)): %.so: $$(patsubst %.c,%.o,$$($$*_SOURCES))
+ $(call v_tag,LD)$(LD) $(REAL_LDFLAGS) $< $(LDLIBS) -o $@
## Constructing the scripts.
$(SCRIPTS): %: withlib.in
- $(V_GEN)sed "s/@lib@/$@/" withlib.in >$@.new && \
+ $(call v_tag,GEN)sed "s/@lib@/$@/" withlib.in >$@.new && \
chmod +x $@.new && mv $@.new $@
+-include $(patsubst %.c,%d,$(ALL_SOURCES))
+
###--------------------------------------------------------------------------
### Installation.
d=$${i%/*} && $(MKDIRS) $(distdir)/$$d || exit 1 \
;; \
esac; \
- ln $$i $(distdir)/$$i || exit 1; \
+ cp $$i $(distdir)/$$i || exit 1; \
done
.PHONY: distdir
distcheck: dist
rm -rf _distcheck
mkdir _distcheck
- cd _distcheck && \
+ +cd _distcheck && \
tar xvfz ../$(DISTTAR) && \
cd $(distdir) && \
make && \