6e16d7ac5b
This makes the build tree more organized, which is good for adding new stuff. Now, it's useful for example for adding manual pages in man3/, but it may be useful in the future for example for extending the build system to run linters (e.g., clang-tidy(1), Clang analyzer, ...) on the C source code. Previously, the build tree was quite flat, and looked like this (after `./configure && make`): $ tree -I src build build ├── Makefile ├── autoconf.data ├── autoconf.err ├── echo ├── libnxt.a ├── nxt_auto_config.h ├── nxt_version.h ├── unitd └── unitd.8 1 directory, 9 files And after this patch, it looks like this: $ tree -I src build build ├── Makefile ├── autoconf.data ├── autoconf.err ├── bin │ └── echo ├── include │ ├── nxt_auto_config.h │ └── nxt_version.h ├── lib │ ├── libnxt.a │ └── unit │ └── modules ├── sbin │ └── unitd ├── share │ └── man │ └── man8 │ └── unitd.8 └── var ├── lib │ └── unit ├── log │ └── unit └── run └── unit 17 directories, 9 files It also solves one issue introduced in5a37171f73
("Added default values for pathnames."). Before that commit, it was possible to run unitd from the build system (`./build/unitd`). Now, since it expects files in a very specific location, that has been broken. By having a directory structure that mirrors the installation, it's possible to trick it to believe it's installed, and run it from there: $ ./configure --prefix=./build $ make $ ./build/sbin/unitd Fixes:5a37171f73
("Added default values for pathnames.") Reported-by: Liam Crilly <liam@nginx.com> Reviewed-by: Konstantin Pavlov <thresh@nginx.com> Reviewed-by: Andrew Clayton <a.clayton@nginx.com> Cc: Andrei Zeliankou <zelenkov@nginx.com> Cc: Zhidao Hong <z.hong@f5.com> Signed-off-by: Alejandro Colomar <alx@nginx.com>
181 lines
3.3 KiB
Bash
Executable file
181 lines
3.3 KiB
Bash
Executable file
#!/bin/sh
|
|
|
|
# Copyright (C) Igor Sysoev
|
|
# Copyright (C) NGINX, Inc.
|
|
|
|
|
|
# Disable localized program messages.
|
|
LC_ALL=C
|
|
export LC_ALL
|
|
|
|
# Stop on error exit status.
|
|
set -e
|
|
|
|
# Stop on uninitialized variable.
|
|
set -u
|
|
|
|
# Initialize variables with null values if they are not defined.
|
|
CFLAGS=${CFLAGS=}
|
|
NXT_TEST_CFLAGS=${NXT_TEST_CFLAGS=}
|
|
NXT_TEST_LIBS=${NXT_TEST_LIBS=}
|
|
|
|
NXT_BUILD_DIR=${NXT_BUILD_DIR:-build}
|
|
|
|
NXT_AUTOTEST=$NXT_BUILD_DIR/autotest
|
|
NXT_AUTOCONF_ERR=$NXT_BUILD_DIR/autoconf.err
|
|
NXT_AUTOCONF_DATA=$NXT_BUILD_DIR/autoconf.data
|
|
NXT_AUTO_CONFIG_H=$NXT_BUILD_DIR/include/nxt_auto_config.h
|
|
NXT_VERSION_H=$NXT_BUILD_DIR/include/nxt_version.h
|
|
NXT_MAKEFILE=$NXT_BUILD_DIR/Makefile
|
|
|
|
CC=${CC:-cc}
|
|
|
|
NXT_DAEMON=unitd
|
|
NXT_USER="nobody"
|
|
NXT_GROUP=
|
|
|
|
nxt_module=${1:-""}
|
|
|
|
case $nxt_module in
|
|
""|--*)
|
|
;;
|
|
|
|
unit)
|
|
shift
|
|
;;
|
|
|
|
*)
|
|
. auto/modules/conf
|
|
exit 0
|
|
;;
|
|
esac
|
|
|
|
|
|
. ./version
|
|
. auto/os/test
|
|
. auto/options
|
|
|
|
mkdir -p $NXT_BUILD_DIR
|
|
mkdir -p $NXT_BUILD_DIR/bin
|
|
mkdir -p $NXT_BUILD_DIR/include
|
|
mkdir -p $NXT_BUILD_DIR/lib
|
|
mkdir -p $NXT_BUILD_DIR/lib/unit/modules
|
|
mkdir -p $NXT_BUILD_DIR/sbin
|
|
mkdir -p $NXT_BUILD_DIR/share/man/man8
|
|
mkdir -p $NXT_BUILD_DIR/src
|
|
mkdir -p $NXT_BUILD_DIR/src/test
|
|
mkdir -p $NXT_BUILD_DIR/var/lib/unit
|
|
mkdir -p $NXT_BUILD_DIR/var/log/unit
|
|
mkdir -p $NXT_BUILD_DIR/var/run/unit
|
|
|
|
|
|
> $NXT_AUTOCONF_ERR
|
|
> $NXT_AUTO_CONFIG_H
|
|
|
|
. auto/cc/test
|
|
|
|
|
|
cat << END >> $NXT_AUTO_CONFIG_H
|
|
|
|
#define NXT_CONFIGURE_OPTIONS "$NXT_CONFIGURE_OPTIONS"
|
|
#define NXT_SYSTEM_VERSION "$NXT_SYSTEM $NXT_SYSTEM_VERSION $NXT_SYSTEM_PLATFORM"
|
|
#define NXT_COMPILER_VERSION "$NXT_CC_VERSION"
|
|
|
|
#define NXT_PID "$NXT_PID"
|
|
#define NXT_LOG "$NXT_LOG"
|
|
#define NXT_MODULESDIR "$NXT_MODULESDIR"
|
|
#define NXT_STATEDIR "$NXT_STATEDIR"
|
|
#define NXT_TMPDIR "$NXT_TMPDIR"
|
|
|
|
#define NXT_CONTROL_SOCK "$NXT_CONTROL"
|
|
|
|
#define NXT_USER "$NXT_USER"
|
|
#define NXT_GROUP "$NXT_GROUP"
|
|
|
|
END
|
|
|
|
|
|
if [ $echo = echo ]; then
|
|
# Build a portable "echo" program that supports only "-n" option.
|
|
# This also tests C compiler ability to create executables.
|
|
. auto/echo/build
|
|
fi
|
|
|
|
|
|
nxt_have=NXT_UNIX . auto/have
|
|
|
|
if [ $NXT_UNIX_DOMAIN = YES ]; then
|
|
nxt_have=NXT_HAVE_UNIX_DOMAIN . auto/have
|
|
fi
|
|
|
|
NXT_LIBRT=
|
|
|
|
. auto/endian
|
|
. auto/types
|
|
. auto/clang
|
|
. auto/atomic
|
|
. auto/malloc
|
|
. auto/mmap
|
|
. auto/shmem
|
|
. auto/time
|
|
. auto/threads
|
|
. auto/events
|
|
. auto/sockets
|
|
. auto/sendfile
|
|
. auto/files
|
|
. auto/unix
|
|
. auto/os/conf
|
|
. auto/ssltls
|
|
|
|
if [ $NXT_REGEX = YES ]; then
|
|
. auto/pcre
|
|
fi
|
|
|
|
. auto/cgroup
|
|
. auto/isolation
|
|
. auto/capability
|
|
|
|
|
|
case "$NXT_SYSTEM_PLATFORM" in
|
|
i386 | amd64 | x86_64)
|
|
nxt_have=NXT_HAVE_NONALIGNED . auto/have
|
|
;;
|
|
esac
|
|
|
|
|
|
if [ $NXT_DEBUG = YES ]; then
|
|
nxt_debug=1
|
|
else
|
|
nxt_debug=0
|
|
fi
|
|
|
|
cat << END >> $NXT_AUTO_CONFIG_H
|
|
|
|
#ifndef NXT_DEBUG
|
|
#define NXT_DEBUG $nxt_debug
|
|
#endif
|
|
|
|
#define NXT_SHM_PREFIX "$NXT_SHM_PREFIX"
|
|
|
|
END
|
|
|
|
. auto/test_build
|
|
. auto/sources
|
|
. auto/save
|
|
|
|
# LOOK
|
|
|
|
NXT_LIB_AUX_CFLAGS="$NXT_OPENSSL_CFLAGS $NXT_GNUTLS_CFLAGS \\
|
|
$NXT_CYASSL_CFLAGS $NXT_POLARSSL_CFLAGS \\
|
|
$NXT_PCRE_CFLAGS"
|
|
|
|
NXT_LIB_AUX_LIBS="$NXT_OPENSSL_LIBS $NXT_GNUTLS_LIBS \\
|
|
$NXT_CYASSL_LIBS $NXT_POLARSSL_LIBS \\
|
|
$NXT_PCRE_LIB"
|
|
|
|
if [ $NXT_NJS != NO ]; then
|
|
. auto/njs
|
|
fi
|
|
|
|
. auto/make
|
|
. auto/summary
|