# passenger-config is run with the 'ruby' command in $PATH, even when natively packaged,
# so we check whether 'ruby' is correctly in $PATH.
if ! ruby -v >/dev/null 2>/dev/null; then
    echo '*** ERROR: Cannot find the "ruby" command in $PATH. Please fix your $PATH. You can learn more about $PATH at: https://www.phusionpassenger.com/library/indepth/environment_variables.html#the-path-environment-variable'
    echo '*** Do you think that you set $PATH correctly, and you happen to be using sudo or rvmsudo? Read this: https://www.phusionpassenger.com/library/indepth/environment_variables.html#environment-variables-and-sudo'
    exit 1
fi

## Magic comment: begin bootstrap ##
# Warning: this magic section will be replaced during packaging by the script in dev/install_scripts_bootstrap_code.rb,
# so keep its purpose purely for finding the passenger-config that belongs to this Phusion Passenger installation.
PATH="$ngx_addon_dir/../../bin:$PATH"
export PATH

PASSENGER_CONFIG=${PASSENGER_CONFIG:-passenger-config}
BUILD_DIRECTIVE="nginx"
COMPILE_CHECK_DIRECTIVE="--compiled"

if [ "$ngx_module_link" = DYNAMIC ]; then
    BUILD_DIRECTIVE="nginx:as_dynamic_module"
    COMPILE_CHECK_DIRECTIVE="--nginx-dynamic-compiled"
fi

# N.B. the compile check only looks at whether the common library objects are compiled and it assumes that
# their presence indicates a good build was performed. If other essential files were manually deleted the
# rake $BUILD_DIRECTIVE task (or rake clean) can be run manually to repair/reset the build.
if test "x$PASSENGER_LIBS" = "x" && ! $PASSENGER_CONFIG $COMPILE_CHECK_DIRECTIVE; then
    echo "*** The Phusion Passenger support files are not yet compiled. Compiling them for you... ***"
    old_dir=`pwd`
    if ! cd $ngx_addon_dir; then
        exit 1
    fi
    TRACE_DIRECTIVE=""
    if test "x$TRACE" = "x1"; then
        TRACE_DIRECTIVE="--trace"
    fi
    echo "*** Running 'rake $TRACE_DIRECTIVE $BUILD_DIRECTIVE CACHING=false' in $ngx_addon_dir... ***"
    if ! rake $TRACE_DIRECTIVE $BUILD_DIRECTIVE CACHING=false; then
        exit 1
    fi
    cd "$old_dir"
    echo "*** Phusion Passenger support files have been successfully compiled. ***"
fi
## Magic comment: end bootstrap ##

if test "x$PASSENGER_INCLUDEDIR" = "x"; then
    PASSENGER_INCLUDEDIR=`$PASSENGER_CONFIG --includedir`
fi

LINK_DIRECTIVE="--nginx-libs"
if [ "$ngx_module_link" = DYNAMIC ]; then
    LINK_DIRECTIVE="--nginx-dynamic-libs"
fi
if test "x$PASSENGER_LIBS" = "x"; then
    PASSENGER_LIBS=`$PASSENGER_CONFIG $LINK_DIRECTIVE`
fi

PASSENGER_MODULE_INCS="$PASSENGER_INCLUDEDIR"
PASSENGER_MODULE_DEPS="${ngx_addon_dir}/Configuration.h \
    ${ngx_addon_dir}/ConfigurationCommands.c \
    ${ngx_addon_dir}/CreateLocationConfig.c \
    ${ngx_addon_dir}/MergeLocationConfig.c \
    ${ngx_addon_dir}/CacheLocationConfig.c \
    ${ngx_addon_dir}/ContentHandler.h \
    ${ngx_addon_dir}/StaticContentHandler.h \
    ${ngx_addon_dir}/ngx_http_passenger_module.h \
    ${PASSENGER_INCLUDEDIR}/cxx_supportlib/Constants.h \
    ${PASSENGER_INCLUDEDIR}/cxx_supportlib/WatchdogLauncher.h \
    ${PASSENGER_INCLUDEDIR}/cxx_supportlib/AppTypes.h"
PASSENGER_MODULE_SRCS="${ngx_addon_dir}/ngx_http_passenger_module.c \
    ${ngx_addon_dir}/Configuration.c \
    ${ngx_addon_dir}/ContentHandler.c \
    ${ngx_addon_dir}/StaticContentHandler.c"
PASSENGER_MODULE_LIBS="$PASSENGER_LIBS -lstdc++ -lpthread"


ngx_feature="Math library"
ngx_feature_name=
ngx_feature_run=no
ngx_feature_incs="#include <math.h>"
ngx_feature_path=
ngx_feature_libs="-lm"
ngx_feature_test="pow(1, 2)"
. auto/feature
if [ $ngx_found = yes ]; then
    PASSENGER_MODULE_LIBS="$PASSENGER_MODULE_LIBS -lm"
fi

ngx_feature="POSIX realtime library"
ngx_feature_name=
ngx_feature_run=no
ngx_feature_incs=
ngx_feature_path=
ngx_feature_libs="-lrt"
ngx_feature_test=
. auto/feature
if [ $ngx_found = yes ]; then
    PASSENGER_MODULE_LIBS="$PASSENGER_MODULE_LIBS -lrt"
fi


nginx_version=`grep 'NGINX_VERSION ' src/core/nginx.h | awk '{ print $3 }' | sed 's/"//g' | head -n1`

nginx_major_version=`echo "$nginx_version" | cut -d . -f 1`
have=PASSENGER_NGINX_MAJOR_VERSION value="$nginx_major_version"
. auto/define

nginx_minor_version=`echo "$nginx_version" | cut -d . -f 2`
have=PASSENGER_NGINX_MINOR_VERSION value="$nginx_minor_version"
. auto/define

nginx_micro_version=`echo "$nginx_version" | cut -d . -f 3`
have=PASSENGER_NGINX_MICRO_VERSION value="$nginx_micro_version"
. auto/define


ngx_addon_name=ngx_http_passenger_module

if test -n "$ngx_module_link"; then
    ngx_module_type=HTTP
    ngx_module_name=ngx_http_passenger_module
    ngx_module_incs="$PASSENGER_MODULE_INCS"
    ngx_module_deps="$PASSENGER_MODULE_DEPS"
    ngx_module_srcs="$PASSENGER_MODULE_SRCS"
    ngx_module_libs="$PASSENGER_MODULE_LIBS"

    . auto/module
else
    HTTP_MODULES="$HTTP_MODULES ngx_http_passenger_module"
    NGX_ADDON_SRCS="$NGX_ADDON_SRCS $PASSENGER_MODULE_SRCS"
    NGX_ADDON_DEPS="$NGX_ADDON_DEPS $PASSENGER_MODULE_DEPS"
    CORE_INCS="$CORE_INCS $PASSENGER_MODULE_INCS"
    CORE_LIBS="$CORE_LIBS $PASSENGER_MODULE_LIBS"
fi
