608e09e9de
This also eliminates expressions that incompatible with BSD make, thus fixing installation of Node.js module on FreeBSD (broken by dace60fc4926).
335 lines
7.2 KiB
Text
335 lines
7.2 KiB
Text
|
|
# Copyright (C) Igor Sysoev
|
|
# Copyright (C) Valentin V. Bartenev
|
|
# Copyright (C) NGINX, Inc.
|
|
|
|
. auto/cc/deps
|
|
|
|
$echo "creating $NXT_MAKEFILE"
|
|
|
|
mkdir -p $NXT_BUILD_DIR/src \
|
|
$NXT_BUILD_DIR/src/test
|
|
|
|
|
|
cat << END > $NXT_MAKEFILE
|
|
|
|
CC = $CC
|
|
|
|
CFLAGS = $NXT_CFLAGS $NXT_CC_OPT $CFLAGS
|
|
|
|
NXT_EXEC_LINK = $NXT_EXEC_LINK $NXT_LD_OPT
|
|
NXT_SHARED_LOCAL_LINK = $NXT_SHARED_LOCAL_LINK $NXT_LD_OPT
|
|
NXT_MODULE_LINK = $NXT_MODULE_LINK
|
|
|
|
all: $NXT_DAEMON
|
|
|
|
.PHONY: $NXT_DAEMON
|
|
$NXT_DAEMON: $NXT_BUILD_DIR/$NXT_DAEMON
|
|
|
|
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
|
|
$echo " $NXT_BUILD_DIR/$nxt_obj \\" >> $NXT_MAKEFILE
|
|
done
|
|
|
|
$echo >> $NXT_MAKEFILE
|
|
|
|
$echo "NXT_LIB_UNIT_OBJS = \\" >> $NXT_MAKEFILE
|
|
$echo " $NXT_BUILD_DIR/src/nxt_lvlhsh.o \\" >> $NXT_MAKEFILE
|
|
$echo " $NXT_BUILD_DIR/src/nxt_murmur_hash.o \\" >> $NXT_MAKEFILE
|
|
|
|
for nxt_src in $NXT_LIB_UNIT_SRCS
|
|
do
|
|
nxt_obj=${nxt_src%.c}.o
|
|
$echo " $NXT_BUILD_DIR/$nxt_obj \\" >> $NXT_MAKEFILE
|
|
done
|
|
|
|
$echo >> $NXT_MAKEFILE
|
|
|
|
|
|
# The version file.
|
|
|
|
cat << END >> $NXT_MAKEFILE
|
|
|
|
include version
|
|
|
|
$NXT_VERSION_H: version
|
|
$echo '#define NXT_VERSION "\$(NXT_VERSION)"' > $NXT_VERSION_H
|
|
$echo '#define NXT_VERNUM \$(NXT_VERNUM)' >> $NXT_VERSION_H
|
|
|
|
$NXT_BUILD_DIR/src/nxt_unit.o: $NXT_VERSION_H
|
|
$NXT_BUILD_DIR/src/nxt_lib.o: $NXT_VERSION_H
|
|
|
|
END
|
|
|
|
|
|
# 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)
|
|
|
|
$NXT_BUILD_DIR/$NXT_LIB_UNIT_STATIC: \$(NXT_LIB_UNIT_OBJS)
|
|
$NXT_STATIC_LINK $NXT_BUILD_DIR/$NXT_LIB_UNIT_STATIC \\
|
|
\$(NXT_LIB_UNIT_OBJS)
|
|
|
|
END
|
|
|
|
|
|
# Object files.
|
|
|
|
for nxt_src in $NXT_LIB_SRCS $NXT_TEST_SRCS $NXT_LIB_UNIT_SRCS \
|
|
src/test/nxt_unit_app_test.c
|
|
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`
|
|
cat << END >> $NXT_MAKEFILE
|
|
|
|
$NXT_BUILD_DIR/$nxt_obj: $nxt_src
|
|
\$(CC) -c \$(CFLAGS) \$(NXT_LIB_INCS) $NXT_LIB_AUX_CFLAGS \\
|
|
-o $NXT_BUILD_DIR/$nxt_obj \\
|
|
$nxt_dep_flags \\
|
|
$nxt_src
|
|
$nxt_dep_post
|
|
|
|
-include $NXT_BUILD_DIR/$nxt_dep
|
|
|
|
END
|
|
|
|
done
|
|
|
|
$echo >> $NXT_MAKEFILE
|
|
|
|
|
|
if [ $NXT_TESTS = YES ]; then
|
|
|
|
# Test object files list.
|
|
|
|
$echo "NXT_TEST_OBJS = \\" >> $NXT_MAKEFILE
|
|
|
|
for nxt_src in $NXT_TEST_SRCS
|
|
do
|
|
nxt_obj=${nxt_src%.c}.o
|
|
$echo " $NXT_BUILD_DIR/$nxt_obj \\" >> $NXT_MAKEFILE
|
|
done
|
|
|
|
# Test executables.
|
|
|
|
cat << END >> $NXT_MAKEFILE
|
|
|
|
.PHONY: tests
|
|
tests: $NXT_BUILD_DIR/tests $NXT_BUILD_DIR/utf8_file_name_test \\
|
|
$NXT_BUILD_DIR/unit_app_test
|
|
|
|
$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) \\
|
|
$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
|
|
\$(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 $NXT_LIB_AUX_LIBS
|
|
|
|
$NXT_BUILD_DIR/unit_app_test: $NXT_BUILD_DIR/src/test/nxt_unit_app_test.o \\
|
|
$NXT_BUILD_DIR/$NXT_LIB_UNIT_STATIC
|
|
\$(NXT_EXEC_LINK) -o $NXT_BUILD_DIR/unit_app_test \\
|
|
\$(CFLAGS) $NXT_BUILD_DIR/src/test/nxt_unit_app_test.o \\
|
|
$NXT_BUILD_DIR/$NXT_LIB_UNIT_STATIC \\
|
|
$NXT_LD_OPT $NXT_LIBM $NXT_LIBS $NXT_LIB_AUX_LIBS
|
|
|
|
END
|
|
|
|
else
|
|
|
|
cat << END >> $NXT_MAKEFILE
|
|
|
|
.PHONY: tests
|
|
tests:
|
|
@(echo; \\
|
|
echo "error: to make tests you need to configure --tests option."; \\
|
|
echo; \\
|
|
exit 1)
|
|
|
|
END
|
|
|
|
fi
|
|
|
|
|
|
NXT_MAKE_INCS="src $NXT_BUILD_DIR"
|
|
NXT_MAKE_SRCS="$NXT_SRCS"
|
|
|
|
|
|
# The include paths 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
|
|
do
|
|
nxt_obj=${nxt_src%.c}.o
|
|
$echo " $NXT_BUILD_DIR/$nxt_obj \\" >> $NXT_MAKEFILE
|
|
done
|
|
|
|
$echo >> $NXT_MAKEFILE
|
|
|
|
|
|
# unit executable.
|
|
|
|
cat << END >> $NXT_MAKEFILE
|
|
|
|
$NXT_BUILD_DIR/$NXT_DAEMON: $NXT_BUILD_DIR/$NXT_LIB_STATIC \\
|
|
\$(NXT_OBJS)
|
|
\$(NXT_EXEC_LINK) -o $NXT_BUILD_DIR/$NXT_DAEMON \$(CFLAGS) \\
|
|
\$(NXT_OBJS) $NXT_BUILD_DIR/$NXT_LIB_STATIC \\
|
|
$NXT_LIBM $NXT_LIBS $NXT_LIB_AUX_LIBS
|
|
|
|
END
|
|
|
|
|
|
# unit object files.
|
|
|
|
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`
|
|
cat << END >> $NXT_MAKEFILE
|
|
|
|
$NXT_BUILD_DIR/$nxt_obj: $nxt_src
|
|
\$(CC) -c \$(CFLAGS) \$(NXT_INCS) \\
|
|
$NXT_LIB_AUX_CFLAGS \\
|
|
-o $NXT_BUILD_DIR/$nxt_obj \\
|
|
$nxt_dep_flags \\
|
|
$nxt_src
|
|
$nxt_dep_post
|
|
|
|
-include $NXT_BUILD_DIR/$nxt_dep
|
|
|
|
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
|
|
|
|
cat << END >> $NXT_MAKEFILE
|
|
|
|
.PHONY: libunit-install libunit-uninstall
|
|
|
|
libunit-install: $NXT_BUILD_DIR/$NXT_LIB_UNIT_STATIC
|
|
install -d \$(DESTDIR)$NXT_LIBDIR
|
|
install -p -m u=rw,go=r $NXT_BUILD_DIR/$NXT_LIB_UNIT_STATIC \
|
|
\$(DESTDIR)$NXT_LIBDIR/
|
|
install -d \$(DESTDIR)$NXT_INCDIR
|
|
install -p -m u=rw,go=r src/nxt_unit.h src/nxt_unit_field.h \
|
|
src/nxt_unit_request.h src/nxt_unit_response.h src/nxt_unit_sptr.h \
|
|
src/nxt_unit_typedefs.h $NXT_BUILD_DIR/nxt_version.h \
|
|
\$(DESTDIR)$NXT_INCDIR/
|
|
|
|
libunit-uninstall:
|
|
rm -f \$(DESTDIR)$NXT_LIBDIR/$NXT_LIB_UNIT_STATIC
|
|
@rmdir -p \$(DESTDIR)$NXT_LIBDIR 2>/dev/null || true
|
|
rm -f \$(DESTDIR)$NXT_INCDIR/nxt_unit.h \
|
|
\$(DESTDIR)$NXT_INCDIR/nxt_unit_field.h \
|
|
\$(DESTDIR)$NXT_INCDIR/nxt_unit_request.h \
|
|
\$(DESTDIR)$NXT_INCDIR/nxt_unit_response.h \
|
|
\$(DESTDIR)$NXT_INCDIR/nxt_unit_sptr.h \
|
|
\$(DESTDIR)$NXT_INCDIR/nxt_unit_typedefs.h \
|
|
\$(DESTDIR)$NXT_INCDIR/nxt_version.h
|
|
@rmdir -p \$(DESTDIR)$NXT_INCDIR 2>/dev/null || true
|
|
|
|
END
|
|
|
|
# Makefile.
|
|
# *.dSYM is MacOSX Clang debug information.
|
|
|
|
cat << END > Makefile
|
|
|
|
include $NXT_MAKEFILE
|
|
|
|
.PHONY: clean
|
|
clean:
|
|
rm -rf $NXT_BUILD_DIR *.dSYM Makefile
|
|
|
|
END
|