| 1 ## |
1 ## |
| 2 ## Some make rules |
2 ## Some make rules |
| 3 ## |
3 ## |
| 4 |
4 |
| 5 ###################################### |
5 ifdef MODULE |
| |
6 ifeq ($(PRELOAD_MODULES),1) |
| |
7 MODULE_TARGETS := $(MODULE).a $(MODULE).lc |
| |
8 else |
| |
9 MODULE_TARGETS := $(MODULE).so $(MODULE).lc |
| |
10 endif |
| |
11 TARGETS := $(TARGETS) $(MODULE_TARGETS) |
| |
12 endif |
| 6 |
13 |
| 7 ifdef MODULE |
14 ifdef LUA_SOURCES |
| 8 ifneq ($(STATIC_MODULES),1) |
15 LUA_COMPILED := $(subst .lua,.lc, $(LUA_SOURCES)) |
| 9 TARGETS := $(TARGETS) $(MODULE).so |
16 TARGETS := $(TARGETS) $(LUA_COMPILED) |
| 10 else |
|
| 11 TARGETS := $(TARGETS) $(MODULE).a |
|
| 12 endif |
|
| 13 endif |
17 endif |
| 14 |
18 |
| 15 |
19 |
| 16 ifdef SUBDIRS |
20 # Main targets |
| |
21 ###################################### |
| |
22 |
| |
23 .PHONY: subdirs |
| |
24 .PHONY: subdirs-clean |
| |
25 .PHONY: subdirs-realclean |
| |
26 .PHONY: subdirs-depend |
| |
27 .PHONY: subdirs-install |
| |
28 .PHONY: _install |
| |
29 .PHONY: _depend |
| 17 |
30 |
| 18 all: subdirs $(TARGETS) |
31 all: subdirs $(TARGETS) |
| 19 |
32 |
| 20 clean: subdirs-clean _clean |
33 clean: subdirs-clean _clean |
| 21 |
34 |
| 22 realclean: subdirs-realclean _clean _realclean |
35 realclean: subdirs-realclean _clean _realclean |
| 23 |
36 |
| 24 depend: subdirs-depend _depend |
37 depend: subdirs-depend _depend |
| 25 |
38 |
| 26 else |
|
| 27 |
|
| 28 all: $(TARGETS) |
|
| 29 |
|
| 30 clean: _clean |
|
| 31 |
|
| 32 realclean: _clean _realclean |
|
| 33 |
|
| 34 depend: _depend |
|
| 35 |
|
| 36 endif |
|
| 37 |
|
| 38 ifdef INSTALL_SUBDIRS |
|
| 39 |
|
| 40 install: subdirs-install _install |
39 install: subdirs-install _install |
| 41 |
40 |
| 42 else |
|
| 43 |
41 |
| 44 install: _install |
42 # Exports |
| 45 |
|
| 46 endif |
|
| 47 |
|
| 48 ###################################### |
43 ###################################### |
| 49 |
|
| 50 OBJS=$(subst .c,.o,$(SOURCES)) |
|
| 51 |
44 |
| 52 ifdef MAKE_EXPORTS |
45 ifdef MAKE_EXPORTS |
| 53 |
46 |
| 54 TO_CLEAN := $(TO_CLEAN) exports.c |
47 TO_CLEAN := $(TO_CLEAN) exports.c |
| 55 |
48 |
| 56 OBJS := $(OBJS) exports.o |
49 EXPORTS_C = exports.c |
| 57 |
50 |
| 58 exports.c: $(SOURCES) |
51 exports.c: $(SOURCES) |
| 59 $(PERL) $(TOPDIR)/mkexports.pl $(MAKE_EXPORTS) exports.c $(SOURCES) |
52 $(MKEXPORTS) -module $(MAKE_EXPORTS) -o exports.c $(SOURCES) |
| |
53 |
| |
54 else # !MAKE_EXPORTS |
| |
55 |
| |
56 EXPORTS_C = |
| |
57 |
| |
58 endif # !MAKE_EXPORTS |
| |
59 |
| |
60 |
| |
61 # Compilation and linking |
| |
62 ###################################### |
| |
63 |
| |
64 OBJS=$(subst .c,.o,$(SOURCES) $(EXPORTS_C)) |
| |
65 |
| |
66 ifdef MODULE |
| |
67 |
| |
68 ifneq ($(PRELOAD_MODULES),1) |
| |
69 |
| |
70 CC_PICFLAGS=-fPIC -DPIC |
| |
71 LD_SHAREDFLAGS=-shared |
| |
72 |
| |
73 %.o: %.c |
| |
74 $(CC) $(CC_PICFLAGS) $(CFLAGS) -c $< -o $@ |
| |
75 |
| |
76 $(MODULE).so: $(OBJS) $(EXT_OBJS) |
| |
77 $(CC) $(LD_SHAREDFLAGS) $(LDFLAGS) $(OBJS) $(EXT_OBJS) -o $@ |
| |
78 |
| |
79 |
| |
80 module_install: module_stub_install |
| |
81 $(INSTALLDIR) $(MODULEDIR) |
| |
82 $(INSTALL) -m $(BIN_MODE) $(MODULE).so $(MODULEDIR) |
| |
83 |
| |
84 else # PRELOAD_MODULES |
| |
85 |
| |
86 PICOPT=-fPIC -DPIC |
| |
87 LINKOPT=-shared |
| |
88 |
| |
89 %.o: %.c |
| |
90 $(CC) $(CFLAGS) -c $< -o $@ |
| |
91 |
| |
92 $(MODULE).a: $(OBJS) $(EXT_OBJS) |
| |
93 $(AR) $(ARFLAGS) $@ $+ |
| |
94 $(RANLIB) $@ |
| |
95 |
| |
96 module_install: module_stub_install |
| |
97 |
| |
98 endif # PRELOAD_MODULES |
| |
99 |
| |
100 module_stub_install: |
| |
101 $(INSTALLDIR) $(LCDIR) |
| |
102 $(INSTALL) -m $(DATA_MODE) $(MODULE).lc $(LCDIR) |
| |
103 |
| |
104 ifndef MODULE_STUB |
| |
105 |
| |
106 $(MODULE).lc: |
| |
107 echo "ioncore.load_module('$(MODULE)')" | $(LUAC) -o $@ - |
| |
108 else |
| |
109 |
| |
110 LUA_SOURCES += $(MODULE_STUB) |
| |
111 |
| |
112 endif #MODULE_STUB |
| |
113 |
| |
114 else # !MODULE |
| |
115 |
| |
116 |
| |
117 %.o: %.c |
| |
118 $(CC) $(CFLAGS) -c $< -o $@ |
| |
119 |
| |
120 |
| |
121 endif# !MODULE |
| |
122 |
| |
123 |
| |
124 # Clean rules |
| |
125 ###################################### |
| |
126 |
| |
127 _clean: |
| |
128 $(RM) -f $(TO_CLEAN) core $(DEPEND_FILE) $(OBJS) |
| |
129 |
| |
130 _realclean: |
| |
131 $(RM) -f $(TO_REALCLEAN) $(TARGETS) |
| |
132 |
| |
133 # Lua rules |
| |
134 ###################################### |
| |
135 |
| |
136 %.lc: %.lua |
| |
137 $(LUAC) -o $@ $< |
| |
138 |
| |
139 lc_install: |
| |
140 $(INSTALLDIR) $(LCDIR) |
| |
141 for i in $(LUA_COMPILED); do \ |
| |
142 $(INSTALL) -m $(DATA_MODE) $$i $(LCDIR); \ |
| |
143 done |
| |
144 |
| |
145 etc_install: |
| |
146 $(INSTALLDIR) $(ETCDIR) |
| |
147 for i in $(ETC); do \ |
| |
148 $(INSTALL) -m $(DATA_MODE) $$i $(ETCDIR); \ |
| |
149 done |
| |
150 |
| |
151 # Dependencies |
| |
152 ###################################### |
| |
153 |
| |
154 ifdef SOURCES |
| |
155 |
| |
156 _depend: $(DEPEND_DEPENDS) |
| |
157 $(MAKE_DEPEND) |
| |
158 |
| |
159 ifeq ($(DEPEND_FILE),$(wildcard $(DEPEND_FILE))) |
| |
160 include $(DEPEND_FILE) |
| |
161 endif |
| 60 |
162 |
| 61 endif |
163 endif |
| 62 |
164 |
| 63 ifdef MODULE |
165 # Subdirectories |
| |
166 ###################################### |
| 64 |
167 |
| 65 ifneq ($(STATIC_MODULES),1) |
168 ifdef SUBDIRS |
| 66 |
|
| 67 $(MODULE).so: $(OBJS) $(EXT_OBJS) |
|
| 68 $(CC) $(CFLAGS) $(LDFLAGS) $(MODULE_LDFLAGS) $(OBJS) $(EXT_OBJS) -o $@ |
|
| 69 |
|
| 70 module_install: |
|
| 71 $(INSTALLDIR) $(MODULEDIR) |
|
| 72 $(INSTALL) -m $(BIN_MODE) $(MODULE).so $(MODULEDIR) |
|
| 73 # $(STRIP) $(MODULEDIR)/$(MODULE).so |
|
| 74 |
|
| 75 else |
|
| 76 |
|
| 77 $(MODULE).a: $(OBJS) |
|
| 78 $(AR) $(ARFLAGS) $@ $+ |
|
| 79 $(RANLIB) $@ |
|
| 80 |
|
| 81 module_install: |
|
| 82 |
|
| 83 endif |
|
| 84 |
|
| 85 .c.o: |
|
| 86 $(CC) $(CFLAGS) $(MODULE_CFLAGS) -c $< -o $@ |
|
| 87 |
|
| 88 else |
|
| 89 |
|
| 90 .c.o: |
|
| 91 $(CC) $(CFLAGS) -c $< -o $@ |
|
| 92 |
|
| 93 endif |
|
| 94 |
|
| 95 _clean: |
|
| 96 rm -f core $(DEPEND_FILE) $(OBJS) $(TO_CLEAN) |
|
| 97 |
|
| 98 _realclean: |
|
| 99 rm -f $(TARGETS) $(TO_REALCLEAN) |
|
| 100 |
|
| 101 |
|
| 102 ifdef SOURCES |
|
| 103 _depend: |
|
| 104 $(MAKE_DEPEND) $(SOURCES) |
|
| 105 else |
|
| 106 _depend: |
|
| 107 |
|
| 108 endif |
|
| 109 |
|
| 110 ###################################### |
|
| 111 |
169 |
| 112 subdirs: |
170 subdirs: |
| 113 set -e; for i in $(SUBDIRS); do $(MAKE) -C $$i; done |
171 set -e; for i in $(SUBDIRS); do $(MAKE) -C $$i; done |
| 114 |
172 |
| 115 subdirs-depend: |
173 subdirs-depend: |