xref: /unit/auto/make (revision 396)
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
6*396Smax.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
24265Smax.romanov@nginx.com.PHONY: $NXT_DAEMON
25265Smax.romanov@nginx.com$NXT_DAEMON: $NXT_BUILD_DIR/$NXT_DAEMON
26216Sigor@sysoev.ru
27265Smax.romanov@nginx.comall: $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
51*396Smax.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
570Sigor@sysoev.ru
580Sigor@sysoev.ru# Shared and static library.
590Sigor@sysoev.ru
600Sigor@sysoev.rucat << END >> $NXT_MAKEFILE
610Sigor@sysoev.ru
620Sigor@sysoev.rulibnxt:	$NXT_BUILD_DIR/$NXT_LIB_SHARED $NXT_BUILD_DIR/$NXT_LIB_STATIC
630Sigor@sysoev.ru
640Sigor@sysoev.ru$NXT_BUILD_DIR/$NXT_LIB_SHARED:	\$(NXT_LIB_OBJS)
650Sigor@sysoev.ru	\$(NXT_SHARED_LOCAL_LINK) -o $NXT_BUILD_DIR/$NXT_LIB_SHARED \\
660Sigor@sysoev.ru		\$(NXT_LIB_OBJS) \\
670Sigor@sysoev.ru		$NXT_LIBM $NXT_LIBS $NXT_LIB_AUX_LIBS
680Sigor@sysoev.ru
690Sigor@sysoev.ru$NXT_BUILD_DIR/$NXT_LIB_STATIC:	\$(NXT_LIB_OBJS)
700Sigor@sysoev.ru	$NXT_STATIC_LINK $NXT_BUILD_DIR/$NXT_LIB_STATIC \\
710Sigor@sysoev.ru		\$(NXT_LIB_OBJS)
720Sigor@sysoev.ru
730Sigor@sysoev.ruEND
740Sigor@sysoev.ru
750Sigor@sysoev.ru
760Sigor@sysoev.ru# Object files.
770Sigor@sysoev.ru
78246Sigor@sysoev.rufor nxt_src in $NXT_LIB_SRCS $NXT_TEST_SRCS
790Sigor@sysoev.rudo
80*396Smax.romanov@nginx.com    nxt_obj=${nxt_src%.c}.o
81*396Smax.romanov@nginx.com    nxt_dep=${nxt_src%.c}.dep
82*396Smax.romanov@nginx.com    nxt_dep_flags=`nxt_gen_dep_flags`
83*396Smax.romanov@nginx.com    nxt_dep_post=`nxt_gen_dep_post`
840Sigor@sysoev.ru    cat << END >> $NXT_MAKEFILE
850Sigor@sysoev.ru
86*396Smax.romanov@nginx.com$NXT_BUILD_DIR/$nxt_obj: $nxt_src
870Sigor@sysoev.ru	\$(CC) -c \$(CFLAGS) \$(NXT_LIB_INCS) $NXT_LIB_AUX_CFLAGS \\
880Sigor@sysoev.ru	-o $NXT_BUILD_DIR/$nxt_obj \\
89*396Smax.romanov@nginx.com	$nxt_dep_flags \\
900Sigor@sysoev.ru	$nxt_src
91*396Smax.romanov@nginx.com	$nxt_dep_post
92*396Smax.romanov@nginx.com
93*396Smax.romanov@nginx.com-include $NXT_BUILD_DIR/$nxt_dep
94*396Smax.romanov@nginx.com
950Sigor@sysoev.ruEND
960Sigor@sysoev.ru
970Sigor@sysoev.rudone
980Sigor@sysoev.ru
990Sigor@sysoev.ru$echo >> $NXT_MAKEFILE
1000Sigor@sysoev.ru
1010Sigor@sysoev.ru
102246Sigor@sysoev.ru# Test object files list.
1030Sigor@sysoev.ru
104246Sigor@sysoev.ru$echo "NXT_TEST_OBJS = \\" >> $NXT_MAKEFILE
1050Sigor@sysoev.ru
106246Sigor@sysoev.rufor nxt_src in $NXT_TEST_SRCS
1070Sigor@sysoev.rudo
108*396Smax.romanov@nginx.com    nxt_obj=${nxt_src%.c}.o
1090Sigor@sysoev.ru    $echo "	$NXT_BUILD_DIR/$nxt_obj \\" >> $NXT_MAKEFILE
1100Sigor@sysoev.rudone
1110Sigor@sysoev.ru
1120Sigor@sysoev.ru
113246Sigor@sysoev.ru# Test executables.
1140Sigor@sysoev.ru
1150Sigor@sysoev.rucat << END >> $NXT_MAKEFILE
1160Sigor@sysoev.ru
117246Sigor@sysoev.ru$NXT_BUILD_DIR/tests: \$(NXT_TEST_OBJS) \\
118*396Smax.romanov@nginx.com			$NXT_BUILD_DIR/$NXT_LIB_STATIC
119246Sigor@sysoev.ru	\$(NXT_EXEC_LINK) -o $NXT_BUILD_DIR/tests \\
120246Sigor@sysoev.ru		\$(CFLAGS) \$(NXT_TEST_OBJS) \\
1210Sigor@sysoev.ru		$NXT_BUILD_DIR/$NXT_LIB_STATIC \\
1220Sigor@sysoev.ru		$NXT_LD_OPT $NXT_LIBM $NXT_LIBS $NXT_LIB_AUX_LIBS
1230Sigor@sysoev.ru
1240Sigor@sysoev.ru$NXT_BUILD_DIR/utf8_file_name_test: $NXT_LIB_UTF8_FILE_NAME_TEST_SRCS \\
125*396Smax.romanov@nginx.com			$NXT_BUILD_DIR/$NXT_LIB_STATIC
1260Sigor@sysoev.ru	\$(CC) \$(CFLAGS) \$(NXT_LIB_INCS) $NXT_LIB_AUX_CFLAGS \\
1270Sigor@sysoev.ru		-o $NXT_BUILD_DIR/utf8_file_name_test \\
1280Sigor@sysoev.ru		$NXT_LIB_UTF8_FILE_NAME_TEST_SRCS \\
1290Sigor@sysoev.ru		$NXT_BUILD_DIR/$NXT_LIB_STATIC \\
1300Sigor@sysoev.ru		$NXT_LD_OPT $NXT_LIBM $NXT_LIBS
1310Sigor@sysoev.ru
1320Sigor@sysoev.ruEND
1330Sigor@sysoev.ru
1340Sigor@sysoev.ru
1350Sigor@sysoev.ruNXT_MAKE_INCS="src $NXT_BUILD_DIR"
1360Sigor@sysoev.ruNXT_MAKE_SRCS="$NXT_SRCS"
1370Sigor@sysoev.ru
1380Sigor@sysoev.ru
1390Sigor@sysoev.ru# The include pathes list.
1400Sigor@sysoev.ru
1410Sigor@sysoev.ru$echo -n "NXT_INCS =" >> $NXT_MAKEFILE
1420Sigor@sysoev.ru
1430Sigor@sysoev.rufor nxt_inc in $NXT_MAKE_INCS
1440Sigor@sysoev.rudo
1450Sigor@sysoev.ru    $echo -n " -I $nxt_inc" >> $NXT_MAKEFILE
1460Sigor@sysoev.rudone
1470Sigor@sysoev.ru
1480Sigor@sysoev.ru$echo >> $NXT_MAKEFILE
1490Sigor@sysoev.ru$echo >> $NXT_MAKEFILE
1500Sigor@sysoev.ru
1510Sigor@sysoev.ru
1520Sigor@sysoev.ru# Object files list.
1530Sigor@sysoev.ru
1540Sigor@sysoev.ru$echo "NXT_OBJS = \\" >> $NXT_MAKEFILE
1550Sigor@sysoev.ru
156216Sigor@sysoev.rufor nxt_src in $NXT_MAKE_SRCS
1570Sigor@sysoev.rudo
158*396Smax.romanov@nginx.com    nxt_obj=${nxt_src%.c}.o
1590Sigor@sysoev.ru    $echo "	$NXT_BUILD_DIR/$nxt_obj \\" >> $NXT_MAKEFILE
1600Sigor@sysoev.rudone
1610Sigor@sysoev.ru
1620Sigor@sysoev.ru$echo >> $NXT_MAKEFILE
1630Sigor@sysoev.ru
1640Sigor@sysoev.ru
165259Sigor@sysoev.ru# unit executable.
1660Sigor@sysoev.ru
1670Sigor@sysoev.rucat << END >> $NXT_MAKEFILE
1680Sigor@sysoev.ru
169265Smax.romanov@nginx.com$NXT_BUILD_DIR/$NXT_DAEMON:	$NXT_BUILD_DIR/$NXT_LIB_STATIC \\
1700Sigor@sysoev.ru				\$(NXT_OBJS)
171265Smax.romanov@nginx.com	\$(NXT_EXEC_LINK) -o $NXT_BUILD_DIR/$NXT_DAEMON \$(CFLAGS) \\
1720Sigor@sysoev.ru		\$(NXT_OBJS) $NXT_BUILD_DIR/$NXT_LIB_STATIC \\
1730Sigor@sysoev.ru		$NXT_LIBM $NXT_LIBS $NXT_LIB_AUX_LIBS
1740Sigor@sysoev.ru
1750Sigor@sysoev.ruEND
1760Sigor@sysoev.ru
1770Sigor@sysoev.ru
178259Sigor@sysoev.ru# unit object files.
1790Sigor@sysoev.ru
1800Sigor@sysoev.rufor nxt_src in $NXT_MAKE_SRCS
1810Sigor@sysoev.rudo
182*396Smax.romanov@nginx.com    nxt_obj=${nxt_src%.c}.o
183*396Smax.romanov@nginx.com    nxt_dep=${nxt_src%.c}.dep
184*396Smax.romanov@nginx.com    nxt_dep_flags=`nxt_gen_dep_flags`
185*396Smax.romanov@nginx.com    nxt_dep_post=`nxt_gen_dep_post`
1860Sigor@sysoev.ru    cat << END >> $NXT_MAKEFILE
1870Sigor@sysoev.ru
188*396Smax.romanov@nginx.com$NXT_BUILD_DIR/$nxt_obj:	$nxt_src
1890Sigor@sysoev.ru	\$(CC) -c \$(CFLAGS) \$(NXT_INCS) \\
1900Sigor@sysoev.ru		$NXT_LIB_AUX_CFLAGS \\
1910Sigor@sysoev.ru		-o $NXT_BUILD_DIR/$nxt_obj \\
192*396Smax.romanov@nginx.com		$nxt_dep_flags \\
1930Sigor@sysoev.ru		$nxt_src
194*396Smax.romanov@nginx.com	$nxt_dep_post
195*396Smax.romanov@nginx.com
196*396Smax.romanov@nginx.com-include $NXT_BUILD_DIR/$nxt_dep
197*396Smax.romanov@nginx.com
1980Sigor@sysoev.ruEND
1990Sigor@sysoev.ru
2000Sigor@sysoev.rudone
2010Sigor@sysoev.ru
2020Sigor@sysoev.ru
203265Smax.romanov@nginx.com# install
204265Smax.romanov@nginx.com
205265Smax.romanov@nginx.comcat << END >> $NXT_MAKEFILE
206265Smax.romanov@nginx.com
207265Smax.romanov@nginx.com.PHONY: install ${NXT_DAEMON}-install
208265Smax.romanov@nginx.com
209265Smax.romanov@nginx.cominstall: ${NXT_DAEMON}-install
210265Smax.romanov@nginx.com
211265Smax.romanov@nginx.com${NXT_DAEMON}-install: $NXT_DAEMON
212265Smax.romanov@nginx.com	install -d \$(DESTDIR)$NXT_SBINDIR
213265Smax.romanov@nginx.com	install -p $NXT_BUILD_DIR/$NXT_DAEMON \$(DESTDIR)$NXT_SBINDIR/
214331Sigor@sysoev.ru	install -d \$(DESTDIR)$NXT_STATE
215265Smax.romanov@nginx.com
216265Smax.romanov@nginx.com
217265Smax.romanov@nginx.com.PHONY: uninstall ${NXT_DAEMON}-uninstall
218265Smax.romanov@nginx.com
219265Smax.romanov@nginx.comuninstall: ${NXT_DAEMON}-uninstall
220265Smax.romanov@nginx.com
221265Smax.romanov@nginx.com${NXT_DAEMON}-uninstall:
222265Smax.romanov@nginx.com	rm -f \$(DESTDIR)$NXT_SBINDIR/$NXT_DAEMON
223265Smax.romanov@nginx.com	@rmdir -p \$(DESTDIR)$NXT_SBINDIR 2>/dev/null || true
224265Smax.romanov@nginx.com
225265Smax.romanov@nginx.comEND
226265Smax.romanov@nginx.com
227376Sigor@sysoev.runxt_version=`grep NXT_VERSION src/nxt_main.h | sed -e 's/.*"\(.*\)".*/\1/'`
228265Smax.romanov@nginx.com
2290Sigor@sysoev.ru# Makefile.
2300Sigor@sysoev.ru# *.dSYM is MacOSX Clang debug information.
2310Sigor@sysoev.ru
2320Sigor@sysoev.rucat << END > Makefile
2330Sigor@sysoev.ru
234376Sigor@sysoev.ruNXT_VERSION =	$nxt_version
235287Sigor@sysoev.ru
236191Smax.romanov@nginx.cominclude $NXT_MAKEFILE
2370Sigor@sysoev.ru
238246Sigor@sysoev.ru.PHONY:		tests
239246Sigor@sysoev.rutests:		$NXT_BUILD_DIR/tests $NXT_BUILD_DIR/utf8_file_name_test
2400Sigor@sysoev.ru
241304Smax.romanov@nginx.com.PHONY: clean
2420Sigor@sysoev.ruclean:
243216Sigor@sysoev.ru		rm -rf $NXT_BUILD_DIR *.dSYM Makefile
2440Sigor@sysoev.ru
245304Smax.romanov@nginx.com.PHONY: dist
246287Sigor@sysoev.rudist:
247287Sigor@sysoev.ru		rm -f unit-\$(NXT_VERSION).tar.gz
248287Sigor@sysoev.ru		mkdir unit-\$(NXT_VERSION)
249333Sigor@sysoev.ru		cp -rp LICENSE NOTICE CHANGES README \\
250287Sigor@sysoev.ru			configure auto src test \\
251287Sigor@sysoev.ru			unit-\$(NXT_VERSION)
252287Sigor@sysoev.ru		tar czf unit-\$(NXT_VERSION).tar.gz unit-\$(NXT_VERSION)
253287Sigor@sysoev.ru		rm -rf unit-\$(NXT_VERSION)
254287Sigor@sysoev.ru
2550Sigor@sysoev.ruEND
256