xref: /unit/auto/make (revision 384:8f86d3ff3e29)
1
2# Copyright (C) Igor Sysoev
3# Copyright (C) Valentin V. Bartenev
4# Copyright (C) NGINX, Inc.
5
6
7$echo "creating $NXT_MAKEFILE"
8
9mkdir -p $NXT_BUILD_DIR/src \
10         $NXT_BUILD_DIR/src/test
11
12
13cat << END > $NXT_MAKEFILE
14
15CC =			$CC
16
17CFLAGS = 		$NXT_CFLAGS $NXT_CC_OPT $CFLAGS
18
19NXT_EXEC_LINK =		$NXT_EXEC_LINK $NXT_LD_OPT
20NXT_SHARED_LOCAL_LINK =	$NXT_SHARED_LOCAL_LINK $NXT_LD_OPT
21NXT_MODULE_LINK =	$NXT_MODULE_LINK $NXT_LD_OPT
22
23.PHONY: $NXT_DAEMON
24$NXT_DAEMON: $NXT_BUILD_DIR/$NXT_DAEMON
25
26all: $NXT_DAEMON
27
28END
29
30
31# The include paths list.
32
33$echo -n "NXT_LIB_INCS =" >> $NXT_MAKEFILE
34
35for nxt_inc in src $NXT_BUILD_DIR
36do
37    $echo -n " -I $nxt_inc" >> $NXT_MAKEFILE
38done
39
40$echo >> $NXT_MAKEFILE
41$echo >> $NXT_MAKEFILE
42
43
44# The include files dependences list.
45
46$echo "NXT_LIB_DEPS = \\" >> $NXT_MAKEFILE
47
48for nxt_dep in $NXT_LIB_DEPS $NXT_TEST_DEPS $NXT_AUTO_CONFIG_H
49do
50    $echo "	$nxt_dep \\" >> $NXT_MAKEFILE
51done
52
53$echo >> $NXT_MAKEFILE
54$echo >> $NXT_MAKEFILE
55
56
57# Library object files list.
58
59$echo "NXT_LIB_OBJS = \\" >> $NXT_MAKEFILE
60
61for nxt_src in $NXT_LIB_SRCS
62do
63    nxt_obj=`$echo $nxt_src | sed -e "s/\.c$/\.o/"`
64    $echo "	$NXT_BUILD_DIR/$nxt_obj \\" >> $NXT_MAKEFILE
65done
66
67$echo >> $NXT_MAKEFILE
68
69
70# Shared and static library.
71
72cat << END >> $NXT_MAKEFILE
73
74libnxt:	$NXT_BUILD_DIR/$NXT_LIB_SHARED $NXT_BUILD_DIR/$NXT_LIB_STATIC
75
76$NXT_BUILD_DIR/$NXT_LIB_SHARED:	\$(NXT_LIB_OBJS)
77	\$(NXT_SHARED_LOCAL_LINK) -o $NXT_BUILD_DIR/$NXT_LIB_SHARED \\
78		\$(NXT_LIB_OBJS) \\
79		$NXT_LIBM $NXT_LIBS $NXT_LIB_AUX_LIBS
80
81$NXT_BUILD_DIR/$NXT_LIB_STATIC:	\$(NXT_LIB_OBJS)
82	$NXT_STATIC_LINK $NXT_BUILD_DIR/$NXT_LIB_STATIC \\
83		\$(NXT_LIB_OBJS)
84
85END
86
87
88# Object files.
89
90for nxt_src in $NXT_LIB_SRCS $NXT_TEST_SRCS
91do
92    nxt_obj=`$echo $nxt_src | sed -e "s/\.c$/\.o/"`
93    cat << END >> $NXT_MAKEFILE
94
95$NXT_BUILD_DIR/$nxt_obj: $nxt_src \$(NXT_LIB_DEPS)
96	\$(CC) -c \$(CFLAGS) \$(NXT_LIB_INCS) $NXT_LIB_AUX_CFLAGS \\
97	-o $NXT_BUILD_DIR/$nxt_obj \\
98	$nxt_src
99END
100
101done
102
103$echo >> $NXT_MAKEFILE
104
105
106# Test object files list.
107
108$echo "NXT_TEST_OBJS = \\" >> $NXT_MAKEFILE
109
110for nxt_src in $NXT_TEST_SRCS
111do
112    nxt_obj=`$echo $nxt_src | sed -e "s/\.c$/\.o/"`
113    $echo "	$NXT_BUILD_DIR/$nxt_obj \\" >> $NXT_MAKEFILE
114done
115
116
117# Test executables.
118
119cat << END >> $NXT_MAKEFILE
120
121$NXT_BUILD_DIR/tests: \$(NXT_TEST_OBJS) \\
122			$NXT_BUILD_DIR/$NXT_LIB_STATIC \$(NXT_LIB_DEPS)
123	\$(NXT_EXEC_LINK) -o $NXT_BUILD_DIR/tests \\
124		\$(CFLAGS) \$(NXT_TEST_OBJS) \\
125		$NXT_BUILD_DIR/$NXT_LIB_STATIC \\
126		$NXT_LD_OPT $NXT_LIBM $NXT_LIBS $NXT_LIB_AUX_LIBS
127
128$NXT_BUILD_DIR/utf8_file_name_test: $NXT_LIB_UTF8_FILE_NAME_TEST_SRCS \\
129			$NXT_BUILD_DIR/$NXT_LIB_STATIC \$(NXT_LIB_DEPS)
130	\$(CC) \$(CFLAGS) \$(NXT_LIB_INCS) $NXT_LIB_AUX_CFLAGS \\
131		-o $NXT_BUILD_DIR/utf8_file_name_test \\
132		$NXT_LIB_UTF8_FILE_NAME_TEST_SRCS \\
133		$NXT_BUILD_DIR/$NXT_LIB_STATIC \\
134		$NXT_LD_OPT $NXT_LIBM $NXT_LIBS
135
136END
137
138
139NXT_MAKE_INCS="src $NXT_BUILD_DIR"
140NXT_MAKE_DEPS="\$(NXT_LIB_DEPS) $NXT_DEPS"
141NXT_MAKE_SRCS="$NXT_SRCS"
142
143
144# The include pathes list.
145
146$echo -n "NXT_INCS =" >> $NXT_MAKEFILE
147
148for nxt_inc in $NXT_MAKE_INCS
149do
150    $echo -n " -I $nxt_inc" >> $NXT_MAKEFILE
151done
152
153$echo >> $NXT_MAKEFILE
154$echo >> $NXT_MAKEFILE
155
156
157# The include files dependences list.
158
159$echo "NXT_DEPS = \\" >> $NXT_MAKEFILE
160
161for nxt_dep in $NXT_MAKE_DEPS
162do
163    $echo "	$nxt_dep \\" >> $NXT_MAKEFILE
164done
165
166$echo >> $NXT_MAKEFILE
167$echo >> $NXT_MAKEFILE
168
169
170# Object files list.
171
172$echo "NXT_OBJS = \\" >> $NXT_MAKEFILE
173
174for nxt_src in $NXT_MAKE_SRCS
175do
176    nxt_obj=`$echo $nxt_src | sed -e "s/\.c$/\.o/"`
177    $echo "	$NXT_BUILD_DIR/$nxt_obj \\" >> $NXT_MAKEFILE
178done
179
180$echo >> $NXT_MAKEFILE
181
182
183# unit executable.
184
185cat << END >> $NXT_MAKEFILE
186
187$NXT_BUILD_DIR/$NXT_DAEMON:	$NXT_BUILD_DIR/$NXT_LIB_STATIC \\
188				\$(NXT_OBJS)
189	\$(NXT_EXEC_LINK) -o $NXT_BUILD_DIR/$NXT_DAEMON \$(CFLAGS) \\
190		\$(NXT_OBJS) $NXT_BUILD_DIR/$NXT_LIB_STATIC \\
191		$NXT_LIBM $NXT_LIBS $NXT_LIB_AUX_LIBS
192
193END
194
195
196# unit object files.
197
198for nxt_src in $NXT_MAKE_SRCS
199do
200    nxt_obj=`$echo $nxt_src | sed -e "s/\.c$/\.o/"`
201    cat << END >> $NXT_MAKEFILE
202
203$NXT_BUILD_DIR/$nxt_obj:	$nxt_src \$(NXT_DEPS)
204	\$(CC) -c \$(CFLAGS) \$(NXT_INCS) \\
205		$NXT_LIB_AUX_CFLAGS \\
206		-o $NXT_BUILD_DIR/$nxt_obj \\
207		$nxt_src
208END
209
210done
211
212
213# install
214
215cat << END >> $NXT_MAKEFILE
216
217.PHONY: install ${NXT_DAEMON}-install
218
219install: ${NXT_DAEMON}-install
220
221${NXT_DAEMON}-install: $NXT_DAEMON
222	install -d \$(DESTDIR)$NXT_SBINDIR
223	install -p $NXT_BUILD_DIR/$NXT_DAEMON \$(DESTDIR)$NXT_SBINDIR/
224	install -d \$(DESTDIR)$NXT_STATE
225
226
227.PHONY: uninstall ${NXT_DAEMON}-uninstall
228
229uninstall: ${NXT_DAEMON}-uninstall
230
231${NXT_DAEMON}-uninstall:
232	rm -f \$(DESTDIR)$NXT_SBINDIR/$NXT_DAEMON
233	@rmdir -p \$(DESTDIR)$NXT_SBINDIR 2>/dev/null || true
234
235END
236
237nxt_version=`grep NXT_VERSION src/nxt_main.h | sed -e 's/.*"\(.*\)".*/\1/'`
238
239# Makefile.
240# *.dSYM is MacOSX Clang debug information.
241
242cat << END > Makefile
243
244NXT_VERSION =	$nxt_version
245
246include $NXT_MAKEFILE
247
248.PHONY:		tests
249tests:		$NXT_BUILD_DIR/tests $NXT_BUILD_DIR/utf8_file_name_test
250
251.PHONY: clean
252clean:
253		rm -rf $NXT_BUILD_DIR *.dSYM Makefile
254
255.PHONY: dist
256dist:
257		rm -f unit-\$(NXT_VERSION).tar.gz
258		mkdir unit-\$(NXT_VERSION)
259		cp -rp LICENSE NOTICE CHANGES README \\
260			configure auto src test \\
261			unit-\$(NXT_VERSION)
262		tar czf unit-\$(NXT_VERSION).tar.gz unit-\$(NXT_VERSION)
263		rm -rf unit-\$(NXT_VERSION)
264
265END
266