xref: /unit/auto/make (revision 304)
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
60Sigor@sysoev.ru
70Sigor@sysoev.ru$echo "creating $NXT_MAKEFILE"
80Sigor@sysoev.ru
90Sigor@sysoev.rumkdir -p $NXT_BUILD_DIR/src \
100Sigor@sysoev.ru         $NXT_BUILD_DIR/test
110Sigor@sysoev.ru
120Sigor@sysoev.ru
130Sigor@sysoev.rucat << END > $NXT_MAKEFILE
140Sigor@sysoev.ru
150Sigor@sysoev.ruCC =			$CC
160Sigor@sysoev.ru
173Sigor@sysoev.ruCFLAGS = 		$NXT_CFLAGS $NXT_CC_OPT $CFLAGS
180Sigor@sysoev.ru
190Sigor@sysoev.ruNXT_EXEC_LINK =		$NXT_EXEC_LINK $NXT_LD_OPT
200Sigor@sysoev.ruNXT_SHARED_LOCAL_LINK =	$NXT_SHARED_LOCAL_LINK $NXT_LD_OPT
210Sigor@sysoev.ruNXT_MODULE_LINK =	$NXT_MODULE_LINK $NXT_LD_OPT
220Sigor@sysoev.ru
23265Smax.romanov@nginx.com.PHONY: $NXT_DAEMON
24265Smax.romanov@nginx.com$NXT_DAEMON: $NXT_BUILD_DIR/$NXT_DAEMON
25216Sigor@sysoev.ru
26265Smax.romanov@nginx.comall: $NXT_DAEMON
27216Sigor@sysoev.ru
280Sigor@sysoev.ruEND
290Sigor@sysoev.ru
300Sigor@sysoev.ru
310Sigor@sysoev.ru# The include paths list.
320Sigor@sysoev.ru
330Sigor@sysoev.ru$echo -n "NXT_LIB_INCS =" >> $NXT_MAKEFILE
340Sigor@sysoev.ru
350Sigor@sysoev.rufor nxt_inc in src $NXT_BUILD_DIR
360Sigor@sysoev.rudo
370Sigor@sysoev.ru    $echo -n " -I $nxt_inc" >> $NXT_MAKEFILE
380Sigor@sysoev.rudone
390Sigor@sysoev.ru
400Sigor@sysoev.ru$echo >> $NXT_MAKEFILE
410Sigor@sysoev.ru$echo >> $NXT_MAKEFILE
420Sigor@sysoev.ru
430Sigor@sysoev.ru
440Sigor@sysoev.ru# The include files dependences list.
450Sigor@sysoev.ru
460Sigor@sysoev.ru$echo "NXT_LIB_DEPS = \\" >> $NXT_MAKEFILE
470Sigor@sysoev.ru
48246Sigor@sysoev.rufor nxt_dep in $NXT_LIB_DEPS $NXT_TEST_DEPS $NXT_AUTO_CONFIG_H
490Sigor@sysoev.rudo
500Sigor@sysoev.ru    $echo "	$nxt_dep \\" >> $NXT_MAKEFILE
510Sigor@sysoev.rudone
520Sigor@sysoev.ru
530Sigor@sysoev.ru$echo >> $NXT_MAKEFILE
540Sigor@sysoev.ru$echo >> $NXT_MAKEFILE
550Sigor@sysoev.ru
560Sigor@sysoev.ru
570Sigor@sysoev.ru# Library object files list.
580Sigor@sysoev.ru
590Sigor@sysoev.ru$echo "NXT_LIB_OBJS = \\" >> $NXT_MAKEFILE
600Sigor@sysoev.ru
610Sigor@sysoev.rufor nxt_src in $NXT_LIB_SRCS
620Sigor@sysoev.rudo
630Sigor@sysoev.ru    nxt_obj=`$echo $nxt_src | sed -e "s/\.c$/\.o/"`
640Sigor@sysoev.ru    $echo "	$NXT_BUILD_DIR/$nxt_obj \\" >> $NXT_MAKEFILE
650Sigor@sysoev.rudone
660Sigor@sysoev.ru
670Sigor@sysoev.ru$echo >> $NXT_MAKEFILE
680Sigor@sysoev.ru
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
850Sigor@sysoev.ruEND
860Sigor@sysoev.ru
870Sigor@sysoev.ru
880Sigor@sysoev.ru# Object files.
890Sigor@sysoev.ru
90246Sigor@sysoev.rufor nxt_src in $NXT_LIB_SRCS $NXT_TEST_SRCS
910Sigor@sysoev.rudo
920Sigor@sysoev.ru    nxt_obj=`$echo $nxt_src | sed -e "s/\.c$/\.o/"`
930Sigor@sysoev.ru    cat << END >> $NXT_MAKEFILE
940Sigor@sysoev.ru
950Sigor@sysoev.ru$NXT_BUILD_DIR/$nxt_obj: $nxt_src \$(NXT_LIB_DEPS)
960Sigor@sysoev.ru	\$(CC) -c \$(CFLAGS) \$(NXT_LIB_INCS) $NXT_LIB_AUX_CFLAGS \\
970Sigor@sysoev.ru	-o $NXT_BUILD_DIR/$nxt_obj \\
980Sigor@sysoev.ru	$nxt_src
990Sigor@sysoev.ruEND
1000Sigor@sysoev.ru
1010Sigor@sysoev.rudone
1020Sigor@sysoev.ru
1030Sigor@sysoev.ru$echo >> $NXT_MAKEFILE
1040Sigor@sysoev.ru
1050Sigor@sysoev.ru
106246Sigor@sysoev.ru# Test object files list.
1070Sigor@sysoev.ru
108246Sigor@sysoev.ru$echo "NXT_TEST_OBJS = \\" >> $NXT_MAKEFILE
1090Sigor@sysoev.ru
110246Sigor@sysoev.rufor nxt_src in $NXT_TEST_SRCS
1110Sigor@sysoev.rudo
1120Sigor@sysoev.ru    nxt_obj=`$echo $nxt_src | sed -e "s/\.c$/\.o/"`
1130Sigor@sysoev.ru    $echo "	$NXT_BUILD_DIR/$nxt_obj \\" >> $NXT_MAKEFILE
1140Sigor@sysoev.rudone
1150Sigor@sysoev.ru
1160Sigor@sysoev.ru
117246Sigor@sysoev.ru# Test executables.
1180Sigor@sysoev.ru
1190Sigor@sysoev.rucat << END >> $NXT_MAKEFILE
1200Sigor@sysoev.ru
121246Sigor@sysoev.ru$NXT_BUILD_DIR/tests: \$(NXT_TEST_OBJS) \\
1220Sigor@sysoev.ru			$NXT_BUILD_DIR/$NXT_LIB_STATIC \$(NXT_LIB_DEPS)
123246Sigor@sysoev.ru	\$(NXT_EXEC_LINK) -o $NXT_BUILD_DIR/tests \\
124246Sigor@sysoev.ru		\$(CFLAGS) \$(NXT_TEST_OBJS) \\
1250Sigor@sysoev.ru		$NXT_BUILD_DIR/$NXT_LIB_STATIC \\
1260Sigor@sysoev.ru		$NXT_LD_OPT $NXT_LIBM $NXT_LIBS $NXT_LIB_AUX_LIBS
1270Sigor@sysoev.ru
1280Sigor@sysoev.ru$NXT_BUILD_DIR/utf8_file_name_test: $NXT_LIB_UTF8_FILE_NAME_TEST_SRCS \\
1290Sigor@sysoev.ru			$NXT_BUILD_DIR/$NXT_LIB_STATIC \$(NXT_LIB_DEPS)
1300Sigor@sysoev.ru	\$(CC) \$(CFLAGS) \$(NXT_LIB_INCS) $NXT_LIB_AUX_CFLAGS \\
1310Sigor@sysoev.ru		-o $NXT_BUILD_DIR/utf8_file_name_test \\
1320Sigor@sysoev.ru		$NXT_LIB_UTF8_FILE_NAME_TEST_SRCS \\
1330Sigor@sysoev.ru		$NXT_BUILD_DIR/$NXT_LIB_STATIC \\
1340Sigor@sysoev.ru		$NXT_LD_OPT $NXT_LIBM $NXT_LIBS
1350Sigor@sysoev.ru
1360Sigor@sysoev.ruEND
1370Sigor@sysoev.ru
1380Sigor@sysoev.ru
1390Sigor@sysoev.ruNXT_MAKE_INCS="src $NXT_BUILD_DIR"
1400Sigor@sysoev.ruNXT_MAKE_DEPS="\$(NXT_LIB_DEPS) $NXT_DEPS"
1410Sigor@sysoev.ruNXT_MAKE_SRCS="$NXT_SRCS"
1420Sigor@sysoev.ru
1430Sigor@sysoev.ru
1440Sigor@sysoev.ru# The include pathes list.
1450Sigor@sysoev.ru
1460Sigor@sysoev.ru$echo -n "NXT_INCS =" >> $NXT_MAKEFILE
1470Sigor@sysoev.ru
1480Sigor@sysoev.rufor nxt_inc in $NXT_MAKE_INCS
1490Sigor@sysoev.rudo
1500Sigor@sysoev.ru    $echo -n " -I $nxt_inc" >> $NXT_MAKEFILE
1510Sigor@sysoev.rudone
1520Sigor@sysoev.ru
1530Sigor@sysoev.ru$echo >> $NXT_MAKEFILE
1540Sigor@sysoev.ru$echo >> $NXT_MAKEFILE
1550Sigor@sysoev.ru
1560Sigor@sysoev.ru
1570Sigor@sysoev.ru# The include files dependences list.
1580Sigor@sysoev.ru
1590Sigor@sysoev.ru$echo "NXT_DEPS = \\" >> $NXT_MAKEFILE
1600Sigor@sysoev.ru
1610Sigor@sysoev.rufor nxt_dep in $NXT_MAKE_DEPS
1620Sigor@sysoev.rudo
1630Sigor@sysoev.ru    $echo "	$nxt_dep \\" >> $NXT_MAKEFILE
1640Sigor@sysoev.rudone
1650Sigor@sysoev.ru
1660Sigor@sysoev.ru$echo >> $NXT_MAKEFILE
1670Sigor@sysoev.ru$echo >> $NXT_MAKEFILE
1680Sigor@sysoev.ru
1690Sigor@sysoev.ru
1700Sigor@sysoev.ru# Object files list.
1710Sigor@sysoev.ru
1720Sigor@sysoev.ru$echo "NXT_OBJS = \\" >> $NXT_MAKEFILE
1730Sigor@sysoev.ru
174216Sigor@sysoev.rufor nxt_src in $NXT_MAKE_SRCS
1750Sigor@sysoev.rudo
1760Sigor@sysoev.ru    nxt_obj=`$echo $nxt_src | sed -e "s/\.c$/\.o/"`
1770Sigor@sysoev.ru    $echo "	$NXT_BUILD_DIR/$nxt_obj \\" >> $NXT_MAKEFILE
1780Sigor@sysoev.rudone
1790Sigor@sysoev.ru
1800Sigor@sysoev.ru$echo >> $NXT_MAKEFILE
1810Sigor@sysoev.ru
1820Sigor@sysoev.ru
183259Sigor@sysoev.ru# unit executable.
1840Sigor@sysoev.ru
1850Sigor@sysoev.rucat << END >> $NXT_MAKEFILE
1860Sigor@sysoev.ru
187265Smax.romanov@nginx.com$NXT_BUILD_DIR/$NXT_DAEMON:	$NXT_BUILD_DIR/$NXT_LIB_STATIC \\
1880Sigor@sysoev.ru				\$(NXT_OBJS)
189265Smax.romanov@nginx.com	\$(NXT_EXEC_LINK) -o $NXT_BUILD_DIR/$NXT_DAEMON \$(CFLAGS) \\
1900Sigor@sysoev.ru		\$(NXT_OBJS) $NXT_BUILD_DIR/$NXT_LIB_STATIC \\
1910Sigor@sysoev.ru		$NXT_LIBM $NXT_LIBS $NXT_LIB_AUX_LIBS
1920Sigor@sysoev.ru
1930Sigor@sysoev.ruEND
1940Sigor@sysoev.ru
1950Sigor@sysoev.ru
196259Sigor@sysoev.ru# unit object files.
1970Sigor@sysoev.ru
1980Sigor@sysoev.rufor nxt_src in $NXT_MAKE_SRCS
1990Sigor@sysoev.rudo
2000Sigor@sysoev.ru    nxt_obj=`$echo $nxt_src | sed -e "s/\.c$/\.o/"`
2010Sigor@sysoev.ru    cat << END >> $NXT_MAKEFILE
2020Sigor@sysoev.ru
2030Sigor@sysoev.ru$NXT_BUILD_DIR/$nxt_obj:	$nxt_src \$(NXT_DEPS)
2040Sigor@sysoev.ru	\$(CC) -c \$(CFLAGS) \$(NXT_INCS) \\
2050Sigor@sysoev.ru		$NXT_LIB_AUX_CFLAGS \\
2060Sigor@sysoev.ru		-o $NXT_BUILD_DIR/$nxt_obj \\
2070Sigor@sysoev.ru		$nxt_src
2080Sigor@sysoev.ruEND
2090Sigor@sysoev.ru
2100Sigor@sysoev.rudone
2110Sigor@sysoev.ru
2120Sigor@sysoev.ru
213265Smax.romanov@nginx.com# install
214265Smax.romanov@nginx.com
215265Smax.romanov@nginx.comcat << END >> $NXT_MAKEFILE
216265Smax.romanov@nginx.com
217265Smax.romanov@nginx.com.PHONY: install ${NXT_DAEMON}-install
218265Smax.romanov@nginx.com
219265Smax.romanov@nginx.cominstall: ${NXT_DAEMON}-install
220265Smax.romanov@nginx.com
221265Smax.romanov@nginx.com${NXT_DAEMON}-install: $NXT_DAEMON
222265Smax.romanov@nginx.com	install -d \$(DESTDIR)$NXT_SBINDIR
223265Smax.romanov@nginx.com	install -p $NXT_BUILD_DIR/$NXT_DAEMON \$(DESTDIR)$NXT_SBINDIR/
224265Smax.romanov@nginx.com
225265Smax.romanov@nginx.com
226265Smax.romanov@nginx.com.PHONY: uninstall ${NXT_DAEMON}-uninstall
227265Smax.romanov@nginx.com
228265Smax.romanov@nginx.comuninstall: ${NXT_DAEMON}-uninstall
229265Smax.romanov@nginx.com
230265Smax.romanov@nginx.com${NXT_DAEMON}-uninstall:
231265Smax.romanov@nginx.com	rm -f \$(DESTDIR)$NXT_SBINDIR/$NXT_DAEMON
232265Smax.romanov@nginx.com	@rmdir -p \$(DESTDIR)$NXT_SBINDIR 2>/dev/null || true
233265Smax.romanov@nginx.com
234265Smax.romanov@nginx.comEND
235265Smax.romanov@nginx.com
236265Smax.romanov@nginx.com
2370Sigor@sysoev.ru# Makefile.
2380Sigor@sysoev.ru# *.dSYM is MacOSX Clang debug information.
2390Sigor@sysoev.ru
2400Sigor@sysoev.rucat << END > Makefile
2410Sigor@sysoev.ru
242287Sigor@sysoev.ruNXT_VERSION =	0.1
243287Sigor@sysoev.ru
244191Smax.romanov@nginx.cominclude $NXT_MAKEFILE
2450Sigor@sysoev.ru
246246Sigor@sysoev.ru.PHONY:		tests
247246Sigor@sysoev.rutests:		$NXT_BUILD_DIR/tests $NXT_BUILD_DIR/utf8_file_name_test
2480Sigor@sysoev.ru
249*304Smax.romanov@nginx.com.PHONY: clean
2500Sigor@sysoev.ruclean:
251216Sigor@sysoev.ru		rm -rf $NXT_BUILD_DIR *.dSYM Makefile
2520Sigor@sysoev.ru
253*304Smax.romanov@nginx.com.PHONY: dist
254287Sigor@sysoev.rudist:
255287Sigor@sysoev.ru		rm -f unit-\$(NXT_VERSION).tar.gz
256287Sigor@sysoev.ru		mkdir unit-\$(NXT_VERSION)
257287Sigor@sysoev.ru		cp -rp LICENSE NOTICE CHANGES README.md \\
258287Sigor@sysoev.ru			configure auto src test \\
259287Sigor@sysoev.ru			unit-\$(NXT_VERSION)
260287Sigor@sysoev.ru		tar czf unit-\$(NXT_VERSION).tar.gz unit-\$(NXT_VERSION)
261287Sigor@sysoev.ru		rm -rf unit-\$(NXT_VERSION)
262287Sigor@sysoev.ru
2630Sigor@sysoev.ruEND
264