-
Notifications
You must be signed in to change notification settings - Fork 1
/
Makefile
131 lines (110 loc) · 3.79 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
# This is the central Makefile of the "old" version of tinolib.
# (old means: tinolib does not yet have the structure I want it to have.)
#
# This Makefile mainly is a bunch of a lot of helpers.
# See README for information on how to use it.
#
# The usual targets:
# all clean distclean
# test (but see below)
#
# The magic targets (resembled in Makefile.proto too):
# tar create an intermediate archive based on VERSION file.
# This does not check GIT. Use this instead of "dist"!
# tino Create Makefile from Makefile.tino using Makefile.proto
# This probably is no very clever name, however I cannot
# call it "Makefile" as this is reserved for make internally.
#
# The magic targets which probably only help me:
# dist create a new distribution archive based on VERSION file.
# This makes sure everything is checked into CVS and
# then does a CVS distribution tag. Includes "distclean".
# More magic may go into this in future, too.
# diff Show what differs to CVS HEAD revision.
# This greatly helps me to keep track of all those distrubuted
# changes in my libs and programs etc.
#
# Test targets:
# check MISSING TODAY (sadly)
# Create a clean checked version (-lefence etc.)
# This shall go before make test
# test INCOMPLETE TODAY
# Make check and run all unit tests.
# This shall always go before make dist.
# Copyright (C)2004-2014 Valentin Hilbig, webmaster@scylla-charybdis.com
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is 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 this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Preset working directory, this can be overwritten from command line
HERE=$(PWD)
BASH=bash
CP=cp
MV=mv -f
CMP=cmp -s
GAWK=gawk
GIT=git
ECHO=echo
TEST=test
DIFF=diff -u
TOUCH=touch
STRIP=strip
MDvSUM=md5sum
UNITTEST=UNIT_TEST
.PHONY: it all clean distclean dist tar diff tino check test
# Helping target for all too lazy people like me:
# Often I invoke 'M-x compile' in the tinolib directory
it: all
[ ".$(PWD)" = ".$(HERE)" ] && [ ! -f VERSION ] && \
{ UP="`dirname "$(HERE)"`"; $(MAKE) -C"$$UP" it HERE="$$UP"; }
all:
lib.h:
$(TOUCH) lib.h
clean:
$(RM) *~
$(RM) -r $(UNITTEST)
distclean: clean
$(RM) lib.h .#*
dist: distclean
if [ -n "$(DBG_CFLAGS)$(DBG_LDFLAGS)$(DBG_LDLIBS)$(DEBUGS)" ]; \
then echo ""; \
echo "Debugging options still set in Makefile.tino"; \
echo ""; \
exit 1; \
fi; \
$(BASH) Makefile-tar.sh dist "$(HERE)"
tar:
$(BASH) Makefile-tar.sh tar "$(HERE)"
diff:
set -e; here="`pwd`"; cd "$(HERE)"; \
for a in 1 2 3 4 5; do [ -f VERSION ] && break; cd ..; done; \
$(GIT) status
tino:
$(BASH) Makefile-tino.sh "$(HERE)" $(TINOCOPY)
check:
false
test: $(UNITTEST)/Makefile
$(MAKE) -s -C $(UNITTEST)
.PHONY: fail bug unit info log+test log+fail log+bug log+unit log+info
fail bug unit info log+test log+fail log+bug log+unit log+info: $(UNITTEST)/Makefile
@$(MAKE) -s -C $(UNITTEST) $@
$(UNITTEST)/Makefile: Makefile Makefile-test.sh
$(RM) -r $(UNITTEST)
$(BASH) Makefile-test.sh $(UNITTEST)
.PHONY: void unvoid
# If you want to get rid of the warnings because of my code missing markers '000;', use `make void`
void:
sed -i'~' 's!^\([[:space:]]*\)000;!\1(void)000;!' *.h
# To get a clean state again (`git diff`) use `make unvoid`
unvoid:
sed -i'~' 's!^\([[:space:]]*\)(void)000;!\1000;!' *.h