summaryrefslogtreecommitdiffstats
path: root/Makefile
blob: e302c2b1c3a97f01bc5e3fc2fe729604f184ca7f (plain)
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
#
#   Copyright (c)  2000, 2001		Dmitry Butskoy
#					<dmitry@butskoy.name>
#   License:  GPL v2 or any later
#
#   See COPYING for the status of this software.
#

#
#   Global Makefile.
#   Global rules, targets etc.
#
#   See Make.defines for specific configs.
#


srcdir = $(CURDIR)

override TARGET := .MAIN

dummy: all

include ./Make.rules


targets = $(EXEDIRS) $(LIBDIRS) $(MODDIRS)


# be happy, easy, perfomancy...
.PHONY: $(subdirs) dummy all force
.PHONY: depend indent clean distclean libclean release store libs mods


allprereq := $(EXEDIRS)

ifneq ($(LIBDIRS),)
libs: $(LIBDIRS)
ifneq ($(EXEDIRS),)
$(EXEDIRS): libs
else
allprereq += libs
endif
endif

ifneq ($(MODDIRS),)
mods: $(MODDIRS)
ifneq ($(MODUSERS),)
$(MODUSERS): mods
else
allprereq += mods
endif
ifneq ($(LIBDIRS),)
$(MODDIRS): libs
endif
endif

all: $(allprereq)

depend install: $(allprereq)

$(foreach goal,$(filter install-%,$(MAKECMDGOALS)),\
    $(eval $(goal): $(patsubst install-%,%,$(goal))))


what = all
depend: what = depend
install install-%: what = install

ifneq ($(share),)
$(share): shared = yes
endif
ifneq ($(noshare),)
$(noshare): shared = 
endif


$(targets): mkfile = $(if $(wildcard $@/Makefile),,-f $(srcdir)/default.rules)

$(targets): force
	@$(MAKE) $(mkfile) -C $@ $(what) TARGET=$@

force:


indent:
	find . -type f -name "*.[ch]" -print -exec $(INDENT) {} \;

clean:
	rm -f $(foreach exe, $(EXEDIRS), ./$(exe)/$(exe)) nohup.out
	rm -f `find . \( -name "*.[oa]" -o -name "*.[ls]o" \
		-o -name core -o -name "core.[0-9]*" -o -name a.out \) -print`

distclean: clean
	rm -f `find $(foreach dir, $(subdirs), $(dir)/.) \
		\( -name "*.[oa]" -o -name "*.[ls]o" \
		-o -name core -o -name "core.[0-9]*" -o -name a.out \
		-o -name .depend -o -name "_*" -o -name ".cross:*" \) \
		-print`


libclean:
	rm -f $(foreach lib, $(LIBDIRS), ./$(lib)/$(lib).a ./$(lib)/$(lib).so)


#  Rules to make whole-distributive operations.
#

STORE_DIR = $(HOME)/pub

release release1 release2 release3:
	@./chvers.sh $@
	@$(MAKE) store

store: distclean
	@./store.sh $(NAME) $(STORE_DIR)