unit/auto/make

251 lines
4.8 KiB
Text
Raw Normal View History

2017-01-17 17:00:00 +00:00
# Copyright (C) Igor Sysoev
# Copyright (C) Valentin V. Bartenev
# Copyright (C) NGINX, Inc.
. auto/cc/deps
2017-01-17 17:00:00 +00:00
$echo "creating $NXT_MAKEFILE"
mkdir -p $NXT_BUILD_DIR/src \
$NXT_BUILD_DIR/src/test
2017-01-17 17:00:00 +00:00
cat << END > $NXT_MAKEFILE
CC = $CC
CFLAGS = $NXT_CFLAGS $NXT_CC_OPT $CFLAGS
2017-01-17 17:00:00 +00:00
NXT_EXEC_LINK = $NXT_EXEC_LINK $NXT_LD_OPT
NXT_SHARED_LOCAL_LINK = $NXT_SHARED_LOCAL_LINK $NXT_LD_OPT
2017-11-29 15:49:08 +00:00
NXT_MODULE_LINK = $NXT_MODULE_LINK
2017-01-17 17:00:00 +00:00
all: $NXT_DAEMON
.PHONY: $NXT_DAEMON
$NXT_DAEMON: $NXT_BUILD_DIR/$NXT_DAEMON
2017-01-17 17:00:00 +00:00
END
# The include paths list.
$echo -n "NXT_LIB_INCS =" >> $NXT_MAKEFILE
for nxt_inc in src $NXT_BUILD_DIR
do
$echo -n " -I $nxt_inc" >> $NXT_MAKEFILE
done
$echo >> $NXT_MAKEFILE
$echo >> $NXT_MAKEFILE
# Library object files list.
$echo "NXT_LIB_OBJS = \\" >> $NXT_MAKEFILE
for nxt_src in $NXT_LIB_SRCS
do
nxt_obj=${nxt_src%.c}.o
2017-01-17 17:00:00 +00:00
$echo " $NXT_BUILD_DIR/$nxt_obj \\" >> $NXT_MAKEFILE
done
$echo >> $NXT_MAKEFILE
# Shared and static library.
cat << END >> $NXT_MAKEFILE
libnxt: $NXT_BUILD_DIR/$NXT_LIB_SHARED $NXT_BUILD_DIR/$NXT_LIB_STATIC
$NXT_BUILD_DIR/$NXT_LIB_SHARED: \$(NXT_LIB_OBJS)
\$(NXT_SHARED_LOCAL_LINK) -o $NXT_BUILD_DIR/$NXT_LIB_SHARED \\
\$(NXT_LIB_OBJS) \\
$NXT_LIBM $NXT_LIBS $NXT_LIB_AUX_LIBS
$NXT_BUILD_DIR/$NXT_LIB_STATIC: \$(NXT_LIB_OBJS)
$NXT_STATIC_LINK $NXT_BUILD_DIR/$NXT_LIB_STATIC \\
\$(NXT_LIB_OBJS)
END
# Object files.
for nxt_src in $NXT_LIB_SRCS $NXT_TEST_SRCS
2017-01-17 17:00:00 +00:00
do
nxt_obj=${nxt_src%.c}.o
nxt_dep=${nxt_src%.c}.dep
nxt_dep_flags=`nxt_gen_dep_flags`
nxt_dep_post=`nxt_gen_dep_post`
2017-01-17 17:00:00 +00:00
cat << END >> $NXT_MAKEFILE
$NXT_BUILD_DIR/$nxt_obj: $nxt_src
2017-01-17 17:00:00 +00:00
\$(CC) -c \$(CFLAGS) \$(NXT_LIB_INCS) $NXT_LIB_AUX_CFLAGS \\
-o $NXT_BUILD_DIR/$nxt_obj \\
$nxt_dep_flags \\
2017-01-17 17:00:00 +00:00
$nxt_src
$nxt_dep_post
-include $NXT_BUILD_DIR/$nxt_dep
2017-01-17 17:00:00 +00:00
END
done
$echo >> $NXT_MAKEFILE
# Test object files list.
2017-01-17 17:00:00 +00:00
$echo "NXT_TEST_OBJS = \\" >> $NXT_MAKEFILE
2017-01-17 17:00:00 +00:00
for nxt_src in $NXT_TEST_SRCS
2017-01-17 17:00:00 +00:00
do
nxt_obj=${nxt_src%.c}.o
2017-01-17 17:00:00 +00:00
$echo " $NXT_BUILD_DIR/$nxt_obj \\" >> $NXT_MAKEFILE
done
# Test executables.
2017-01-17 17:00:00 +00:00
cat << END >> $NXT_MAKEFILE
$NXT_BUILD_DIR/tests: \$(NXT_TEST_OBJS) \\
$NXT_BUILD_DIR/$NXT_LIB_STATIC
\$(NXT_EXEC_LINK) -o $NXT_BUILD_DIR/tests \\
\$(CFLAGS) \$(NXT_TEST_OBJS) \\
2017-01-17 17:00:00 +00:00
$NXT_BUILD_DIR/$NXT_LIB_STATIC \\
$NXT_LD_OPT $NXT_LIBM $NXT_LIBS $NXT_LIB_AUX_LIBS
$NXT_BUILD_DIR/utf8_file_name_test: $NXT_LIB_UTF8_FILE_NAME_TEST_SRCS \\
$NXT_BUILD_DIR/$NXT_LIB_STATIC
2017-01-17 17:00:00 +00:00
\$(CC) \$(CFLAGS) \$(NXT_LIB_INCS) $NXT_LIB_AUX_CFLAGS \\
-o $NXT_BUILD_DIR/utf8_file_name_test \\
$NXT_LIB_UTF8_FILE_NAME_TEST_SRCS \\
$NXT_BUILD_DIR/$NXT_LIB_STATIC \\
$NXT_LD_OPT $NXT_LIBM $NXT_LIBS
END
NXT_MAKE_INCS="src $NXT_BUILD_DIR"
NXT_MAKE_SRCS="$NXT_SRCS"
# The include pathes list.
$echo -n "NXT_INCS =" >> $NXT_MAKEFILE
for nxt_inc in $NXT_MAKE_INCS
do
$echo -n " -I $nxt_inc" >> $NXT_MAKEFILE
done
$echo >> $NXT_MAKEFILE
$echo >> $NXT_MAKEFILE
# Object files list.
$echo "NXT_OBJS = \\" >> $NXT_MAKEFILE
for nxt_src in $NXT_MAKE_SRCS
2017-01-17 17:00:00 +00:00
do
nxt_obj=${nxt_src%.c}.o
2017-01-17 17:00:00 +00:00
$echo " $NXT_BUILD_DIR/$nxt_obj \\" >> $NXT_MAKEFILE
done
$echo >> $NXT_MAKEFILE
2017-08-30 21:42:16 +00:00
# unit executable.
2017-01-17 17:00:00 +00:00
cat << END >> $NXT_MAKEFILE
$NXT_BUILD_DIR/$NXT_DAEMON: $NXT_BUILD_DIR/$NXT_LIB_STATIC \\
2017-01-17 17:00:00 +00:00
\$(NXT_OBJS)
\$(NXT_EXEC_LINK) -o $NXT_BUILD_DIR/$NXT_DAEMON \$(CFLAGS) \\
2017-01-17 17:00:00 +00:00
\$(NXT_OBJS) $NXT_BUILD_DIR/$NXT_LIB_STATIC \\
$NXT_LIBM $NXT_LIBS $NXT_LIB_AUX_LIBS
END
2017-08-30 21:42:16 +00:00
# unit object files.
2017-01-17 17:00:00 +00:00
for nxt_src in $NXT_MAKE_SRCS
do
nxt_obj=${nxt_src%.c}.o
nxt_dep=${nxt_src%.c}.dep
nxt_dep_flags=`nxt_gen_dep_flags`
nxt_dep_post=`nxt_gen_dep_post`
2017-01-17 17:00:00 +00:00
cat << END >> $NXT_MAKEFILE
$NXT_BUILD_DIR/$nxt_obj: $nxt_src
2017-01-17 17:00:00 +00:00
\$(CC) -c \$(CFLAGS) \$(NXT_INCS) \\
$NXT_LIB_AUX_CFLAGS \\
-o $NXT_BUILD_DIR/$nxt_obj \\
$nxt_dep_flags \\
2017-01-17 17:00:00 +00:00
$nxt_src
$nxt_dep_post
-include $NXT_BUILD_DIR/$nxt_dep
2017-01-17 17:00:00 +00:00
END
done
# install
cat << END >> $NXT_MAKEFILE
.PHONY: install ${NXT_DAEMON}-install install-check
install: ${NXT_DAEMON}-install
install-check:
@test -n "\$(DESTDIR)$NXT_PREFIX" \\
|| (echo; \\
echo "error: to make install you need either"; \\
echo " to configure --prefix option"; \\
echo " or to set DESTDIR environment variable."; \\
echo; \\
exit 1)
${NXT_DAEMON}-install: $NXT_DAEMON install-check
install -d \$(DESTDIR)$NXT_SBINDIR
install -p $NXT_BUILD_DIR/$NXT_DAEMON \$(DESTDIR)$NXT_SBINDIR/
install -d \$(DESTDIR)$NXT_STATE
.PHONY: uninstall ${NXT_DAEMON}-uninstall
uninstall: ${NXT_DAEMON}-uninstall
${NXT_DAEMON}-uninstall:
rm -f \$(DESTDIR)$NXT_SBINDIR/$NXT_DAEMON
@rmdir -p \$(DESTDIR)$NXT_SBINDIR 2>/dev/null || true
END
2017-01-17 17:00:00 +00:00
# Makefile.
# *.dSYM is MacOSX Clang debug information.
cat << END > Makefile
include $NXT_MAKEFILE
.PHONY: tests
tests: $NXT_BUILD_DIR/tests $NXT_BUILD_DIR/utf8_file_name_test
2017-01-17 17:00:00 +00:00
.PHONY: clean
2017-01-17 17:00:00 +00:00
clean:
rm -rf $NXT_BUILD_DIR *.dSYM Makefile
2017-01-17 17:00:00 +00:00
END