xref: /unit/auto/make (revision 805)
10Sigor@sysoev.ru
20Sigor@sysoev.ru# Copyright (C) Igor Sysoev
30Sigor@sysoev.ru# Copyright (C) Valentin V. Bartenev
40Sigor@sysoev.ru# Copyright (C) NGINX, Inc.
50Sigor@sysoev.ru
6396Smax.romanov@nginx.com. auto/cc/deps
70Sigor@sysoev.ru
80Sigor@sysoev.ru$echo "creating $NXT_MAKEFILE"
90Sigor@sysoev.ru
100Sigor@sysoev.rumkdir -p $NXT_BUILD_DIR/src \
11384Szelenkov@nginx.com         $NXT_BUILD_DIR/src/test
120Sigor@sysoev.ru
130Sigor@sysoev.ru
140Sigor@sysoev.rucat << END > $NXT_MAKEFILE
150Sigor@sysoev.ru
160Sigor@sysoev.ruCC =			$CC
170Sigor@sysoev.ru
183Sigor@sysoev.ruCFLAGS = 		$NXT_CFLAGS $NXT_CC_OPT $CFLAGS
190Sigor@sysoev.ru
200Sigor@sysoev.ruNXT_EXEC_LINK =		$NXT_EXEC_LINK $NXT_LD_OPT
210Sigor@sysoev.ruNXT_SHARED_LOCAL_LINK =	$NXT_SHARED_LOCAL_LINK $NXT_LD_OPT
22395Smax.romanov@nginx.comNXT_MODULE_LINK =	$NXT_MODULE_LINK
230Sigor@sysoev.ru
24698Smax.romanov@nginx.comall: $NXT_DAEMON
25698Smax.romanov@nginx.com
26265Smax.romanov@nginx.com.PHONY: $NXT_DAEMON
27265Smax.romanov@nginx.com$NXT_DAEMON: $NXT_BUILD_DIR/$NXT_DAEMON
28216Sigor@sysoev.ru
290Sigor@sysoev.ruEND
300Sigor@sysoev.ru
310Sigor@sysoev.ru
320Sigor@sysoev.ru# The include paths list.
330Sigor@sysoev.ru
340Sigor@sysoev.ru$echo -n "NXT_LIB_INCS =" >> $NXT_MAKEFILE
350Sigor@sysoev.ru
360Sigor@sysoev.rufor nxt_inc in src $NXT_BUILD_DIR
370Sigor@sysoev.rudo
380Sigor@sysoev.ru    $echo -n " -I $nxt_inc" >> $NXT_MAKEFILE
390Sigor@sysoev.rudone
400Sigor@sysoev.ru
410Sigor@sysoev.ru$echo >> $NXT_MAKEFILE
420Sigor@sysoev.ru$echo >> $NXT_MAKEFILE
430Sigor@sysoev.ru
440Sigor@sysoev.ru
450Sigor@sysoev.ru# Library object files list.
460Sigor@sysoev.ru
470Sigor@sysoev.ru$echo "NXT_LIB_OBJS = \\" >> $NXT_MAKEFILE
480Sigor@sysoev.ru
490Sigor@sysoev.rufor nxt_src in $NXT_LIB_SRCS
500Sigor@sysoev.rudo
51396Smax.romanov@nginx.com    nxt_obj=${nxt_src%.c}.o
520Sigor@sysoev.ru    $echo "	$NXT_BUILD_DIR/$nxt_obj \\" >> $NXT_MAKEFILE
530Sigor@sysoev.rudone
540Sigor@sysoev.ru
550Sigor@sysoev.ru$echo >> $NXT_MAKEFILE
560Sigor@sysoev.ru
57743Smax.romanov@nginx.com$echo "NXT_LIB_UNIT_OBJS = \\" >> $NXT_MAKEFILE
58743Smax.romanov@nginx.com$echo "	$NXT_BUILD_DIR/src/nxt_lvlhsh.o \\" >> $NXT_MAKEFILE
59743Smax.romanov@nginx.com$echo "	$NXT_BUILD_DIR/src/nxt_murmur_hash.o \\" >> $NXT_MAKEFILE
60743Smax.romanov@nginx.com
61743Smax.romanov@nginx.comfor nxt_src in $NXT_LIB_UNIT_SRCS
62743Smax.romanov@nginx.comdo
63743Smax.romanov@nginx.com    nxt_obj=${nxt_src%.c}.o
64743Smax.romanov@nginx.com    $echo "	$NXT_BUILD_DIR/$nxt_obj \\" >> $NXT_MAKEFILE
65743Smax.romanov@nginx.comdone
66743Smax.romanov@nginx.com
67743Smax.romanov@nginx.com$echo >> $NXT_MAKEFILE
68743Smax.romanov@nginx.com
690Sigor@sysoev.ru
700Sigor@sysoev.ru# Shared and static library.
710Sigor@sysoev.ru
720Sigor@sysoev.rucat << END >> $NXT_MAKEFILE
730Sigor@sysoev.ru
740Sigor@sysoev.rulibnxt:	$NXT_BUILD_DIR/$NXT_LIB_SHARED $NXT_BUILD_DIR/$NXT_LIB_STATIC
750Sigor@sysoev.ru
760Sigor@sysoev.ru$NXT_BUILD_DIR/$NXT_LIB_SHARED:	\$(NXT_LIB_OBJS)
770Sigor@sysoev.ru	\$(NXT_SHARED_LOCAL_LINK) -o $NXT_BUILD_DIR/$NXT_LIB_SHARED \\
780Sigor@sysoev.ru		\$(NXT_LIB_OBJS) \\
790Sigor@sysoev.ru		$NXT_LIBM $NXT_LIBS $NXT_LIB_AUX_LIBS
800Sigor@sysoev.ru
810Sigor@sysoev.ru$NXT_BUILD_DIR/$NXT_LIB_STATIC:	\$(NXT_LIB_OBJS)
820Sigor@sysoev.ru	$NXT_STATIC_LINK $NXT_BUILD_DIR/$NXT_LIB_STATIC \\
830Sigor@sysoev.ru		\$(NXT_LIB_OBJS)
840Sigor@sysoev.ru
85743Smax.romanov@nginx.com$NXT_BUILD_DIR/$NXT_LIB_UNIT_STATIC:	\$(NXT_LIB_UNIT_OBJS)
86743Smax.romanov@nginx.com	$NXT_STATIC_LINK $NXT_BUILD_DIR/$NXT_LIB_UNIT_STATIC \\
87743Smax.romanov@nginx.com		\$(NXT_LIB_UNIT_OBJS)
88743Smax.romanov@nginx.com
890Sigor@sysoev.ruEND
900Sigor@sysoev.ru
910Sigor@sysoev.ru
920Sigor@sysoev.ru# Object files.
930Sigor@sysoev.ru
94743Smax.romanov@nginx.comfor nxt_src in $NXT_LIB_SRCS $NXT_TEST_SRCS $NXT_LIB_UNIT_SRCS \
95743Smax.romanov@nginx.com               src/test/nxt_unit_app_test.c
960Sigor@sysoev.rudo
97396Smax.romanov@nginx.com    nxt_obj=${nxt_src%.c}.o
98396Smax.romanov@nginx.com    nxt_dep=${nxt_src%.c}.dep
99396Smax.romanov@nginx.com    nxt_dep_flags=`nxt_gen_dep_flags`
100396Smax.romanov@nginx.com    nxt_dep_post=`nxt_gen_dep_post`
1010Sigor@sysoev.ru    cat << END >> $NXT_MAKEFILE
1020Sigor@sysoev.ru
103396Smax.romanov@nginx.com$NXT_BUILD_DIR/$nxt_obj: $nxt_src
1040Sigor@sysoev.ru	\$(CC) -c \$(CFLAGS) \$(NXT_LIB_INCS) $NXT_LIB_AUX_CFLAGS \\
1050Sigor@sysoev.ru	-o $NXT_BUILD_DIR/$nxt_obj \\
106396Smax.romanov@nginx.com	$nxt_dep_flags \\
1070Sigor@sysoev.ru	$nxt_src
108396Smax.romanov@nginx.com	$nxt_dep_post
109396Smax.romanov@nginx.com
110396Smax.romanov@nginx.com-include $NXT_BUILD_DIR/$nxt_dep
111396Smax.romanov@nginx.com
1120Sigor@sysoev.ruEND
1130Sigor@sysoev.ru
1140Sigor@sysoev.rudone
1150Sigor@sysoev.ru
1160Sigor@sysoev.ru$echo >> $NXT_MAKEFILE
1170Sigor@sysoev.ru
1180Sigor@sysoev.ru
119752Svbart@nginx.comif [ $NXT_TESTS = YES ]; then
1200Sigor@sysoev.ru
121752Svbart@nginx.com    # Test object files list.
122752Svbart@nginx.com
123752Svbart@nginx.com    $echo "NXT_TEST_OBJS = \\" >> $NXT_MAKEFILE
1240Sigor@sysoev.ru
125752Svbart@nginx.com    for nxt_src in $NXT_TEST_SRCS
126752Svbart@nginx.com    do
127752Svbart@nginx.com        nxt_obj=${nxt_src%.c}.o
128752Svbart@nginx.com        $echo "	$NXT_BUILD_DIR/$nxt_obj \\" >> $NXT_MAKEFILE
129752Svbart@nginx.com    done
1300Sigor@sysoev.ru
131752Svbart@nginx.com    # Test executables.
1320Sigor@sysoev.ru
133752Svbart@nginx.com    cat << END >> $NXT_MAKEFILE
1340Sigor@sysoev.ru
135752Svbart@nginx.com.PHONY: tests
136752Svbart@nginx.comtests:		$NXT_BUILD_DIR/tests $NXT_BUILD_DIR/utf8_file_name_test \\
137752Svbart@nginx.com			$NXT_BUILD_DIR/unit_app_test
1380Sigor@sysoev.ru
139246Sigor@sysoev.ru$NXT_BUILD_DIR/tests: \$(NXT_TEST_OBJS) \\
140396Smax.romanov@nginx.com			$NXT_BUILD_DIR/$NXT_LIB_STATIC
141246Sigor@sysoev.ru	\$(NXT_EXEC_LINK) -o $NXT_BUILD_DIR/tests \\
142246Sigor@sysoev.ru		\$(CFLAGS) \$(NXT_TEST_OBJS) \\
1430Sigor@sysoev.ru		$NXT_BUILD_DIR/$NXT_LIB_STATIC \\
1440Sigor@sysoev.ru		$NXT_LD_OPT $NXT_LIBM $NXT_LIBS $NXT_LIB_AUX_LIBS
1450Sigor@sysoev.ru
1460Sigor@sysoev.ru$NXT_BUILD_DIR/utf8_file_name_test: $NXT_LIB_UTF8_FILE_NAME_TEST_SRCS \\
147396Smax.romanov@nginx.com			$NXT_BUILD_DIR/$NXT_LIB_STATIC
1480Sigor@sysoev.ru	\$(CC) \$(CFLAGS) \$(NXT_LIB_INCS) $NXT_LIB_AUX_CFLAGS \\
1490Sigor@sysoev.ru		-o $NXT_BUILD_DIR/utf8_file_name_test \\
1500Sigor@sysoev.ru		$NXT_LIB_UTF8_FILE_NAME_TEST_SRCS \\
1510Sigor@sysoev.ru		$NXT_BUILD_DIR/$NXT_LIB_STATIC \\
152771Sigor@sysoev.ru		$NXT_LD_OPT $NXT_LIBM $NXT_LIBS $NXT_LIB_AUX_LIBS
1530Sigor@sysoev.ru
154743Smax.romanov@nginx.com$NXT_BUILD_DIR/unit_app_test: $NXT_BUILD_DIR/src/test/nxt_unit_app_test.o \\
155743Smax.romanov@nginx.com		$NXT_BUILD_DIR/$NXT_LIB_UNIT_STATIC
156743Smax.romanov@nginx.com	\$(NXT_EXEC_LINK) -o $NXT_BUILD_DIR/unit_app_test \\
157743Smax.romanov@nginx.com		\$(CFLAGS) $NXT_BUILD_DIR/src/test/nxt_unit_app_test.o \\
158743Smax.romanov@nginx.com		$NXT_BUILD_DIR/$NXT_LIB_UNIT_STATIC \\
159743Smax.romanov@nginx.com		$NXT_LD_OPT $NXT_LIBM $NXT_LIBS $NXT_LIB_AUX_LIBS
160743Smax.romanov@nginx.com
1610Sigor@sysoev.ruEND
1620Sigor@sysoev.ru
163752Svbart@nginx.comelse
164752Svbart@nginx.com
165752Svbart@nginx.com    cat << END >> $NXT_MAKEFILE
166752Svbart@nginx.com
167752Svbart@nginx.com.PHONY: tests
168752Svbart@nginx.comtests:
169752Svbart@nginx.com	@(echo; \\
170752Svbart@nginx.com	  echo "error: to make tests you need to configure --tests option."; \\
171752Svbart@nginx.com	  echo; \\
172752Svbart@nginx.com	  exit 1)
173752Svbart@nginx.com
174752Svbart@nginx.comEND
175752Svbart@nginx.com
176752Svbart@nginx.comfi
177752Svbart@nginx.com
1780Sigor@sysoev.ru
1790Sigor@sysoev.ruNXT_MAKE_INCS="src $NXT_BUILD_DIR"
1800Sigor@sysoev.ruNXT_MAKE_SRCS="$NXT_SRCS"
1810Sigor@sysoev.ru
1820Sigor@sysoev.ru
183762Svbart@nginx.com# The include paths list.
1840Sigor@sysoev.ru
1850Sigor@sysoev.ru$echo -n "NXT_INCS =" >> $NXT_MAKEFILE
1860Sigor@sysoev.ru
1870Sigor@sysoev.rufor nxt_inc in $NXT_MAKE_INCS
1880Sigor@sysoev.rudo
1890Sigor@sysoev.ru    $echo -n " -I $nxt_inc" >> $NXT_MAKEFILE
1900Sigor@sysoev.rudone
1910Sigor@sysoev.ru
1920Sigor@sysoev.ru$echo >> $NXT_MAKEFILE
1930Sigor@sysoev.ru$echo >> $NXT_MAKEFILE
1940Sigor@sysoev.ru
1950Sigor@sysoev.ru
1960Sigor@sysoev.ru# Object files list.
1970Sigor@sysoev.ru
1980Sigor@sysoev.ru$echo "NXT_OBJS = \\" >> $NXT_MAKEFILE
1990Sigor@sysoev.ru
200216Sigor@sysoev.rufor nxt_src in $NXT_MAKE_SRCS
2010Sigor@sysoev.rudo
202396Smax.romanov@nginx.com    nxt_obj=${nxt_src%.c}.o
2030Sigor@sysoev.ru    $echo "	$NXT_BUILD_DIR/$nxt_obj \\" >> $NXT_MAKEFILE
2040Sigor@sysoev.rudone
2050Sigor@sysoev.ru
2060Sigor@sysoev.ru$echo >> $NXT_MAKEFILE
2070Sigor@sysoev.ru
2080Sigor@sysoev.ru
209259Sigor@sysoev.ru# unit executable.
2100Sigor@sysoev.ru
2110Sigor@sysoev.rucat << END >> $NXT_MAKEFILE
2120Sigor@sysoev.ru
213265Smax.romanov@nginx.com$NXT_BUILD_DIR/$NXT_DAEMON:	$NXT_BUILD_DIR/$NXT_LIB_STATIC \\
2140Sigor@sysoev.ru				\$(NXT_OBJS)
215265Smax.romanov@nginx.com	\$(NXT_EXEC_LINK) -o $NXT_BUILD_DIR/$NXT_DAEMON \$(CFLAGS) \\
2160Sigor@sysoev.ru		\$(NXT_OBJS) $NXT_BUILD_DIR/$NXT_LIB_STATIC \\
2170Sigor@sysoev.ru		$NXT_LIBM $NXT_LIBS $NXT_LIB_AUX_LIBS
2180Sigor@sysoev.ru
2190Sigor@sysoev.ruEND
2200Sigor@sysoev.ru
2210Sigor@sysoev.ru
222259Sigor@sysoev.ru# unit object files.
2230Sigor@sysoev.ru
2240Sigor@sysoev.rufor nxt_src in $NXT_MAKE_SRCS
2250Sigor@sysoev.rudo
226396Smax.romanov@nginx.com    nxt_obj=${nxt_src%.c}.o
227396Smax.romanov@nginx.com    nxt_dep=${nxt_src%.c}.dep
228396Smax.romanov@nginx.com    nxt_dep_flags=`nxt_gen_dep_flags`
229396Smax.romanov@nginx.com    nxt_dep_post=`nxt_gen_dep_post`
2300Sigor@sysoev.ru    cat << END >> $NXT_MAKEFILE
2310Sigor@sysoev.ru
232396Smax.romanov@nginx.com$NXT_BUILD_DIR/$nxt_obj:	$nxt_src
2330Sigor@sysoev.ru	\$(CC) -c \$(CFLAGS) \$(NXT_INCS) \\
2340Sigor@sysoev.ru		$NXT_LIB_AUX_CFLAGS \\
2350Sigor@sysoev.ru		-o $NXT_BUILD_DIR/$nxt_obj \\
236396Smax.romanov@nginx.com		$nxt_dep_flags \\
2370Sigor@sysoev.ru		$nxt_src
238396Smax.romanov@nginx.com	$nxt_dep_post
239396Smax.romanov@nginx.com
240396Smax.romanov@nginx.com-include $NXT_BUILD_DIR/$nxt_dep
241396Smax.romanov@nginx.com
2420Sigor@sysoev.ruEND
2430Sigor@sysoev.ru
2440Sigor@sysoev.rudone
2450Sigor@sysoev.ru
2460Sigor@sysoev.ru
247265Smax.romanov@nginx.com# install
248265Smax.romanov@nginx.com
249265Smax.romanov@nginx.comcat << END >> $NXT_MAKEFILE
250265Smax.romanov@nginx.com
251706Sigor@sysoev.ru.PHONY: install ${NXT_DAEMON}-install install-check
252265Smax.romanov@nginx.com
253265Smax.romanov@nginx.cominstall: ${NXT_DAEMON}-install
254265Smax.romanov@nginx.com
255706Sigor@sysoev.ruinstall-check:
256706Sigor@sysoev.ru	@test -n "\$(DESTDIR)$NXT_PREFIX" \\
257706Sigor@sysoev.ru	|| (echo; \\
258706Sigor@sysoev.ru	    echo "error: to make install you need either"; \\
259706Sigor@sysoev.ru	    echo "    to configure --prefix option"; \\
260706Sigor@sysoev.ru	    echo "    or to set DESTDIR environment variable."; \\
261706Sigor@sysoev.ru	    echo; \\
262706Sigor@sysoev.ru	    exit 1)
263706Sigor@sysoev.ru
264706Sigor@sysoev.ru${NXT_DAEMON}-install: $NXT_DAEMON install-check
265265Smax.romanov@nginx.com	install -d \$(DESTDIR)$NXT_SBINDIR
266265Smax.romanov@nginx.com	install -p $NXT_BUILD_DIR/$NXT_DAEMON \$(DESTDIR)$NXT_SBINDIR/
267331Sigor@sysoev.ru	install -d \$(DESTDIR)$NXT_STATE
268265Smax.romanov@nginx.com
269265Smax.romanov@nginx.com
270265Smax.romanov@nginx.com.PHONY: uninstall ${NXT_DAEMON}-uninstall
271265Smax.romanov@nginx.com
272265Smax.romanov@nginx.comuninstall: ${NXT_DAEMON}-uninstall
273265Smax.romanov@nginx.com
274265Smax.romanov@nginx.com${NXT_DAEMON}-uninstall:
275265Smax.romanov@nginx.com	rm -f \$(DESTDIR)$NXT_SBINDIR/$NXT_DAEMON
276265Smax.romanov@nginx.com	@rmdir -p \$(DESTDIR)$NXT_SBINDIR 2>/dev/null || true
277265Smax.romanov@nginx.com
278265Smax.romanov@nginx.comEND
279265Smax.romanov@nginx.com
280*805Smax.romanov@nginx.comcat << END >> $NXT_MAKEFILE
281*805Smax.romanov@nginx.com
282*805Smax.romanov@nginx.com.PHONY: libunit-install libunit-uninstall
283*805Smax.romanov@nginx.com
284*805Smax.romanov@nginx.comlibunit-install: $NXT_BUILD_DIR/$NXT_LIB_UNIT_STATIC
285*805Smax.romanov@nginx.com	install -d \$(DESTDIR)$NXT_LIBDIR
286*805Smax.romanov@nginx.com	install -p -m u=rw,go=r $NXT_BUILD_DIR/$NXT_LIB_UNIT_STATIC \
287*805Smax.romanov@nginx.com		\$(DESTDIR)$NXT_LIBDIR/
288*805Smax.romanov@nginx.com	install -d \$(DESTDIR)$NXT_INCDIR
289*805Smax.romanov@nginx.com	install -p -m u=rw,go=r src/nxt_unit.h src/nxt_unit_field.h \
290*805Smax.romanov@nginx.com		src/nxt_unit_request.h src/nxt_unit_response.h src/nxt_unit_sptr.h \
291*805Smax.romanov@nginx.com		src/nxt_unit_typedefs.h \$(DESTDIR)$NXT_INCDIR/
292*805Smax.romanov@nginx.com
293*805Smax.romanov@nginx.comlibunit-uninstall:
294*805Smax.romanov@nginx.com	rm -f \$(DESTDIR)$NXT_LIBDIR/$NXT_LIB_UNIT_STATIC
295*805Smax.romanov@nginx.com	@rmdir -p \$(DESTDIR)$NXT_LIBDIR 2>/dev/null || true
296*805Smax.romanov@nginx.com	rm -f \$(DESTDIR)$NXT_INCDIR/nxt_unit.h \
297*805Smax.romanov@nginx.com		\$(DESTDIR)$NXT_INCDIR/nxt_unit_field.h \
298*805Smax.romanov@nginx.com		\$(DESTDIR)$NXT_INCDIR/nxt_unit_request.h \
299*805Smax.romanov@nginx.com		\$(DESTDIR)$NXT_INCDIR/nxt_unit_response.h \
300*805Smax.romanov@nginx.com		\$(DESTDIR)$NXT_INCDIR/nxt_unit_sptr.h \
301*805Smax.romanov@nginx.com		\$(DESTDIR)$NXT_INCDIR/nxt_unit_typedefs.h
302*805Smax.romanov@nginx.com	@rmdir -p \$(DESTDIR)$NXT_INCDIR 2>/dev/null || true
303*805Smax.romanov@nginx.com
304*805Smax.romanov@nginx.comEND
305*805Smax.romanov@nginx.com
3060Sigor@sysoev.ru# Makefile.
3070Sigor@sysoev.ru# *.dSYM is MacOSX Clang debug information.
3080Sigor@sysoev.ru
3090Sigor@sysoev.rucat << END > Makefile
3100Sigor@sysoev.ru
311191Smax.romanov@nginx.cominclude $NXT_MAKEFILE
3120Sigor@sysoev.ru
313304Smax.romanov@nginx.com.PHONY: clean
3140Sigor@sysoev.ruclean:
315216Sigor@sysoev.ru		rm -rf $NXT_BUILD_DIR *.dSYM Makefile
3160Sigor@sysoev.ru
3170Sigor@sysoev.ruEND
318