blob: 3a8e63cd569008ac667cf1b2544c434bc561f0c8 [file] [log] [blame]
*******************************************
dnl *** Initialize automake and set version ***
dnl *******************************************
AC_PREREQ(2.53)
AC_INIT(openwsman, 2.4.4)
AC_CONFIG_SRCDIR(src/server/wsmand.c)
AC_CANONICAL_HOST
AC_CONFIG_MACRO_DIR([m4])
dnl Package version information
PACKAGE=openwsman
OPENWSMAN_MAJOR=2
OPENWSMAN_MINOR=3
OPENWSMAN_PATCH=6
OPENWSMAN_VERSION=${OPENWSMAN_MAJOR}.${OPENWSMAN_MINOR}.${OPENWSMAN_PATCH}
OPENWSMAN_PLUGIN_API_MAJOR=2
OPENWSMAN_PLUGIN_API_MINOR=2
OPENWSMAN_PLUGIN_API_VERSION=${OPENWSMAN_PLUGIN_API_MAJOR}.${OPENWSMAN_PLUGIN_API_MINOR}
AM_INIT_AUTOMAKE(${PACKAGE}, ${OPENWSMAN_VERSION})
AM_CONFIG_HEADER(wsman_config.h)
AM_MAINTAINER_MODE
AC_PROG_MAKE_SET
AC_PROG_CXX
WSMAN_PKG=wsman
WSMAN_CLIENT_PKG=${WSMAN_PKG}_client
WSMAN_CLIENT_TRANSPORT_PKG=${WSMAN_PKG}_curl_client_transport
WSMAN_CLIENTPP_PKG=${WSMAN_PKG}_clientpp
WSMAN_SERVER_PKG=${WSMAN_PKG}_server
AC_SUBST(WSMAN_UTILS_PKG)
AC_SUBST(WSMAN_CLIENT_PKG)
AC_SUBST(WSMAN_CLIENT_TRANSPORT_PKG)
AC_SUBST(WSMAN_CLIENTPP_PKG)
AC_SUBST(WSMAN_SERVER_PKG)
AC_SUBST(WSMAN_PKG)
case "$host" in
*-*-solaris*)
solaris="yes"
;;
*)
;;
esac
dnl ***************************
dnl *** Set debugging flags ***
dnl ***************************
# Declare --enable-* args and collect ac_help strings
AC_ARG_ENABLE(debug, --enable-debug turn on debugging)
# Set the debug flags
if test "x$enable_debug" = "xyes"; then
test "$cflags_set" = set || CFLAGS="$CFLAGS -g"
fi
# Set the debug flags
if test "x$enable_debug" = "xyes"; then
AC_DEFINE(WSMAN_DEBUG_VERBOSE, 1, [Defined if verbose debug logging is requested])
fi
eventing_default=yes
AC_ARG_ENABLE(eventing,
[ --enable-eventing=[no/yes] turn on WS-Eventing [default=yes]],,
enable_eventing=$eventing_default)
if test "x$enable_eventing" = "xyes"; then
AC_DEFINE(ENABLE_EVENTING_SUPPORT, 1, [Defined if WS-Eventing wanted])
fi
AM_CONDITIONAL(ENABLE_EVENTING_SUPPORT, test "x$enable_eventing" = "xyes")
dnl copied from openwbem :)
use_pam=0
AC_ARG_ENABLE(pam,
AC_HELP_STRING(--disable-pam,disable pam integration))
if test "$enable_pam" != no; then
use_pam=1
AC_CHECK_HEADERS(pam/pam_misc.h pam/pam_appl.h, true, use_pam=0)
if test x$use_pam = x0; then
AC_CHECK_HEADERS(security/pam_misc.h security/pam_appl.h,
use_pam=1, use_pam=0)
fi
if test x$use_pam = x1; then
AC_DEFINE([HAVE_PAM], [1], [Defined if pam support is available])
PAM_LIB="-lpam"
else
AC_MSG_WARN(*** No PAM headers found! The PAM authentication module ***)
AC_MSG_WARN(*** will not be built. The config file defaults to ***)
AC_MSG_WARN(*** using PAM authentication. ***)
AC_MSG_WARN(*** You must edit the config file and use a different ***)
AC_MSG_WARN(*** authentication module or else the daemon won't start***)
fi
fi
AC_SUBST(PAM_LIB)
AM_CONDITIONAL(USE_PAM, test x$use_pam = x1)
dnl ***************************
dnl *** Checks for programs ***
dnl ***************************
AC_PROG_CC
AM_PROG_CC_STDC
AC_PROG_INSTALL
# Initialize libtool
AM_PROG_LIBTOOL
# This isn't a program, but it doesn't fit anywhere else...
AC_FUNC_ALLOCA
AC_CHECK_FUNCS(strtok_r \
getpid \
strsep \
gettimeofday \
unlink \
syslog \
sleep \
fnmatch \
timegm \
daemon \
va_copy \
memmove \
bcopy \
gmtime_r
)
AC_CHECK_FUNC(socket, , AC_CHECK_LIB(socket, socket))
AC_CHECK_FUNC(gethostbyname, , AC_CHECK_LIB(nsl, gethostbyname))
AC_CHECK_FUNCS(inet_pton inet_ntop inet_aton getaddrinfo getnameinfo)
#
# We do the IPv6 compilation checking after libtool so that we can put
# the right suffix on the files.
#
AC_MSG_CHECKING(for IPv6 structures)
AC_TRY_COMPILE([
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>],
[struct sockaddr_in6 sin6; return (0);],
[AC_MSG_RESULT(yes)
found_ipv6=yes],
[AC_MSG_RESULT(no)
found_ipv6=no])
if test "$soup_cv_ipv6" != "no"; then
AC_DEFINE(HAVE_IPV6, 1, [Defined if you have IPV6 support])
AC_SUBST(HAVE_IPV6)
fi
# check for ssize_t
AC_CHECK_TYPE(ssize_t, int)
# Set STDC_HEADERS
AC_HEADER_STDC
AC_CHECK_HEADERS([inttypes.h stdlib.h])
AC_CHECK_HEADERS([net/if.h net/if_dl.h])
AC_CHECK_HEADERS([sys/ioctl.h sys/sockio.h])
AC_CHECK_HEADERS([crypt.h sys/ioctl.h dirent.h])
AC_CHECK_HEADERS([vararg.h stdarg.h pthread.h])
AC_CHECK_HEADERS([unistd.h sys/types.h sys/sendfile.h sys/signal.h])
AC_CHECK_HEADERS([ctype.h sys/resource.h sys/socket.h sys/select.h])
AC_CHECK_HEADERS([netinet/in.h], [], [],
[#if HAVE_SYS_TYPES_H
# include <sys/types.h>
#endif
])
AC_HEADER_TIME
dnl Checks for types
AC_CHECK_TYPES([sa_family_t, in_port_t, in_addr_t], , ,
[
#if HAVE_SYS_TYPES_H
# include <sys/types.h>
#endif
#if HAVE_SYS_SOCKET_H
# include <sys/socket.h>
#endif
#if HAVE_NETINET_IN_H
# include <netinet/in.h>
#endif
#if HAVE_ARPA_NAMESER_H
# include <arpa/nameser.h>
#endif
])
AC_CHECK_SIZEOF(short)
AC_CHECK_SIZEOF(int)
AC_CHECK_SIZEOF(long)
AC_CHECK_SIZEOF(long long)
SIZEOF_SHORT=$ac_cv_sizeof_short
SIZEOF_INT=$ac_cv_sizeof_int
SIZEOF_LONG=$ac_cv_sizeof_long
SIZEOF_LONG_LONG=$ac_cv_sizeof_long_long
AC_SUBST(SIZEOF_SHORT)
AC_SUBST(SIZEOF_INT)
AC_SUBST(SIZEOF_LONG)
AC_SUBST(SIZEOF_LONG_LONG)
AC_CHECK_FUNCS(srandom)
AC_CHECK_MEMBER(struct sockaddr.sa_len,
AC_DEFINE_UNQUOTED(HAVE_SA_LEN,
1,
[Define if struct sockaddr contains sa_len]),,
[#include <sys/typesDD.h>
#include <sys/socket.h>])
dnl *********************************
dnl *** Networking library checks ***
dnl *********************************
PKG_CHECK_MODULES(XML, libxml-2.0) AC_SUBST(XML_CFLAGS) AC_SUBST(XML_LIBS)
AC_PATH_PROG(CURL_CONFIG, curl-config, no)
if test "$CURL_CONFIG" = "no" ; then
AC_MSG_ERROR([the curl-config script installed by libcurl could not be found. libcurl is required for tests.])
fi
CURL_CFLAGS=`sh $CURL_CONFIG --cflags`
CURL_LIBS=`sh $CURL_CONFIG --libs`
AC_SUBST(CURL_CFLAGS)
AC_SUBST(CURL_LIBS)
dnl Need libcurl version 7.12.0 or higher
CURLSTRVERSION="`sh $CURL_CONFIG --version`"
CURLNVERSION=`echo $CURLSTRVERSION | $SED -e 's/[[^0-9]]/ /g' | $AWK '{print ($1*10000) + ($2*100) + $3}'`
if test "$CURLNVERSION" -lt 71200 ; then
AC_MSG_ERROR([
Openwsman requires libcurl version 7.12.00 or higher, and you
are running "$CURLSTRVERSION". You may be able to install a newer
version via your operating system update facility, or you can
retrieve it from:
http://curl.haxx.se/
and install it directly.]
)
exit
fi
dnl [ curl-Bugs-1924441 ] SSL callback option with NSS-linked libcurl
dnl CURLOPT_SSL_CTX_FUNCTION is defined, but does not work on e.g. Fedora
if test -f "/etc/fedora-release"; then
CFLAGS="$CFLAGS -DNO_SSL_CALLBACK"
fi
#
# IPv6
#
AC_ARG_ENABLE(ipv6,
[ --enable-ipv6 enable IPv6 support [default=disable]])
case "$enable_ipv6" in
yes)
if test "$found_ipv6" = "no"; then
AC_MSG_WARN([No IPv6 support detected in system, disabling IPv6.])
else
AC_DEFINE([ENABLE_IPV6],1,[Define if you want IPV6 support])
AC_SUBST(ENABLE_IPV6)
fi
;;
no)
;;
esac
examples_default=no
AC_ARG_WITH(examples,
[ --with-examples=[no/yes] build examples [default=no]],,
with_examples=$examples_default)
AM_CONDITIONAL(BUILD_EXAMPLES, test "x$with_examples" = "xyes")
tests_default=no
AC_ARG_WITH(tests,
[ --with-tests=[no/yes] build tests [default=no]],,
with_tests=$tests_default)
AM_CONDITIONAL(BUILD_TESTS, test "x$with_tests" = "xyes")
java_default=no
AC_ARG_ENABLE(java,
[ --enable-java=[no/yes] build java bindings [default=no]],,
enable_java=$java_default)
if test "x$enable_java" = "xyes"; then
AC_PROG_SWIG(1.3.30)
AC_CHECK_PROG(JAVA_COMPILER,javac,yes)
fi
AM_CONDITIONAL(BUILD_JAVA, test "x$enable_java" = "xyes")
python_default=no
AC_ARG_ENABLE(python,
[ --enable-python=[no/yes] build python bindings [default=no]],,
enable_python=$python_default)
if test "x$enable_python" = "xyes"; then
AM_PATH_PYTHON
AC_PROG_SWIG(1.3.30)
AC_CHECK_PROG(PYTHON_CONFIG,python-config,yes)
if test "$PYTHON_CONFIG" = "yes" ; then
PYTHON_CFLAGS=`python-config --cflags`
PYTHON_LIBS=`python-config --libs`
AC_SUBST(PYTHON_CFLAGS)
AC_SUBST(PYTHON_LIBS)
else
PYTHON_VERSION=`python -c "import sys; print sys.version[[:3]]"`
PYTHON_CFLAGS="-I/usr/include/python$PYTHON_VERSION"
PYTHON_LIBS="-lpython$PYTHON_VERSION"
fi
fi
AM_CONDITIONAL(BUILD_PYTHON, test "x$enable_python" = "xyes")
ruby_default=no
AC_ARG_ENABLE(ruby,
[ --enable-ruby=[no/yes] build Ruby bindings [default=no]],,
enable_ruby=$ruby_default)
if test "x$enable_ruby" = "xyes"; then
AC_PROG_SWIG(1.3.17)
dnl Check for Ruby, taken from http://vim.svn.sourceforge.net
AC_SUBST(vi_cv_path_ruby)
AC_PATH_PROG(vi_cv_path_ruby, ruby)
if test "X$vi_cv_path_ruby" != "X"; then
AC_MSG_CHECKING(Ruby version)
if `$vi_cv_path_ruby -e '(VERSION rescue RUBY_VERSION) >= "1.6.0" or exit 1'` >/dev/null 2>/dev/null; then
AC_MSG_RESULT(OK)
AC_MSG_CHECKING(Ruby header files)
rubyhdrdir=`$vi_cv_path_ruby -r mkmf -e 'print Config::CONFIG[["archdir"]] || $hdrdir'` 2>/dev/null
if test "X$rubyhdrdir" != "X"; then
AC_MSG_RESULT($rubyhdrdir)
RUBY_CFLAGS="$CFLAGS -I$rubyhdrdir"
rubylibs=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LIBS"]]'`
if test "X$rubylibs" != "X"; then
RUBY_LIBS="$rubylibs"
fi
librubyarg=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["LIBRUBYARG"]])'`
if test -f "$rubyhdrdir/$librubyarg"; then
librubyarg="$rubyhdrdir/$librubyarg"
else
rubylibdir=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["libdir"]])'`
if test -f "$rubylibdir/$librubyarg"; then
librubyarg="$rubylibdir/$librubyarg"
elif test "$librubyarg" = "libruby.a"; then
dnl required on Mac OS 10.3 where libruby.a doesn't exist
librubyarg="-lruby"
else
librubyarg=`$vi_cv_path_ruby -r rbconfig -e "print '$librubyarg'.gsub(/-L\./,%'-L#{Config.expand(Config::CONFIG[\"libdir\"])}')"`
fi
fi
if test "X$librubyarg" != "X"; then
RUBY_LIBS="$librubyarg $RUBY_LIBS"
fi
rubyldflags=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LDFLAGS"]]'`
if test "X$rubyldflags" != "X"; then
RUBY_LDFLAGS="$rubyldflags $LDFLAGS"
fi
else
AC_MSG_WARN(not found - disabling Ruby; Try installing ruby-devel)
fi
else
AC_MSG_WARN(too old; need Ruby version 1.6.0 or later)
fi
fi
fi
AM_CONDITIONAL(BUILD_RUBY, test "x$enable_ruby" = "xyes")
java_default=no
AC_ARG_ENABLE(java,
[ --enable-java=[no/yes] build Java bindings [default=no]],,
enable_java=$java_default)
if test "x$enable_java" = "xyes"; then
AC_PROG_SWIG(1.3.17)
fi
AM_CONDITIONAL(BUILD_JAVA, test "x$enable_java" = "xyes")
perl_default=no
AC_ARG_ENABLE(perl,
[ --enable-perl=[no/yes] build Perl bindings [default=no]],,
enable_perl=$perl_default)
AM_CONDITIONAL(BUILD_PERL, test "x$enable_perl" = "xyes")
if test "x$enable_perl" = "xyes"; then
AC_PROG_SWIG(1.3.17)
AC_MSG_CHECKING(Perl configuration)
PERLCCFLAGS=`perl -MConfig -e 'print $Config{ccflags}'`
PERLCOREDIR=`perl -MConfig -e 'print $Config{archlib}."/CORE"'`
PERLVENDORARCHDIR=`perl -MConfig -e 'print $Config{installvendorarch}'`
PERLVENDORLIBDIR=`perl -MConfig -e 'print $Config{installvendorlib}'`
PERLLDFLAGS=`perl -MConfig -e 'print $Config{ccdlflags}'`
AC_MSG_RESULT($PERLVENDORARCHDIR)
AC_SUBST(PERLCCFLAGS)
AC_SUBST(PERLCOREDIR)
AC_SUBST(PERLVENDORARCHDIR)
AC_SUBST(PERLVENDORLIBDIR)
AC_SUBST(PERLLDFLAGS)
fi
AC_ARG_ENABLE(ssl, [ --enable-ssl Turn on Secure Sockets Layer support [default=yes]],,
enable_ssl=auto)
if test "$enable_ssl" != "no"; then
PKG_CHECK_MODULES(OPENSSL, openssl , have_ssl="yes", have_ssl="no")
AC_SUBST(OPENSSL_CFLAGS)
AC_SUBST(OPENSSL_LIBS)
if test "$have_ssl" != "yes"; then
if test "$enable_ssl" = "auto"; then
AC_MSG_WARN(Disabling SSL support);
enable_ssl=no;
else
AC_MSG_ERROR(Could not configure SSL support);
fi
fi
fi
if test "$enable_ssl" != "no"; then
AC_DEFINE(HAVE_SSL, 1, [Defined if you have SSL support])
fi
AM_CONDITIONAL(USE_OPENSSL, test "x$enable_ssl" != "xno")
AH_TEMPLATE(HAVE_LIBCRYPT, [libcrypt library present])
AC_CHECK_FUNCS([crypt], HAVE_LIBC_CRYPT="true")
if test -z "$HAVE_LIBC_CRYPT"; then
AC_CHECK_LIB(crypt, crypt,
CRYPT_LIBS="-lcrypt"
[AC_DEFINE(HAVE_LIBCRYPT)], ,)
fi
AC_SUBST(CRYPT_LIBS)
dnl
dnl Use built-in UUID generation if on Solaris
dnl
if test x"$solaris" = x"yes" ; then
LDFLAGS="$LDFLAGS -luuid"
fi
if test "$prefix" = "NONE"; then
prefix=$ac_default_prefix;
fi
SYSCONFDIR_TMP="`eval echo $sysconfdir`"
AC_DEFINE_UNQUOTED([DEFAULT_CONFIG_FILE], ["${SYSCONFDIR_TMP}/openwsman/openwsman.conf"] , [Default config file])
AC_DEFINE_UNQUOTED([DEFAULT_CLIENT_CONFIG_FILE], ["${SYSCONFDIR_TMP}/openwsman/openwsman_client.conf"] , [Default client config file])
SYSCONFDIR=${sysconfdir}/openwsman
test x"$localstatedir" = x"" && localstatedir=/var
dnl Subst PACKAGE_PLUGIN_DIR.
packagesubscriptiondir="${localstatedir}"/lib/${PACKAGE}/subscriptions
PACKAGE_SUBSCRIPTION_DIR="${packagesubscriptiondir}"
AC_SUBST(PACKAGE_SUBSCRIPTION_DIR)
dnl Subst PACKAGE_PLUGIN_DIR.
packageplugindir=$libdir/${PACKAGE}/plugins
PACKAGE_PLUGIN_DIR="${packageplugindir}"
AC_SUBST(PACKAGE_PLUGIN_DIR)
dnl Subst PACKAGE_AUTH_DIR.
packageauthdir=$libdir/${PACKAGE}/authenticators
PACKAGE_AUTH_DIR="${packageauthdir}"
AC_SUBST(PACKAGE_AUTH_DIR)
AC_SUBST(PACKAGE)
AC_SUBST(OPENWSMAN_VERSION)
AC_SUBST(OPENWSMAN_MAJOR)
AC_SUBST(OPENWSMAN_MINOR)
AC_SUBST(OPENWSMAN_PATCH)
AC_SUBST(OPENWSMAN_PLUGIN_API_MINOR)
AC_SUBST(OPENWSMAN_PLUGIN_API_MAJOR)
AC_SUBST(OPENWSMAN_PLUGIN_API_VERSION)
AC_DEFINE_UNQUOTED(OPENWSMAN_PLUGIN_API_VERSION,
["$OPENWSMAN_PLUGIN_API_VERSION"],
[Plugin API version])
PACKAGE_BUILDTS=`"/bin/date" "+%Y%m%d%H%M"`
AC_DEFINE_UNQUOTED(PACKAGE_BUILDTS, ["$PACKAGE_BUILDTS"], [Build timestamp])
AC_CHECK_LIB([cmpisfcc], [cmciConnect], [have_sfcc="yes"],[have_sfcc="no"])
AM_CONDITIONAL(BUILD_LIBCIM, test "$have_sfcc" = "yes" )
have_cunit=no
AC_CHECK_HEADERS([CUnit/Basic.h], have_cunit="yes" )
AM_CONDITIONAL(BUILD_CUNIT_TESTS, test "$have_cunit" = "yes")
AC_ARG_ENABLE(server,
AC_HELP_STRING(--disable-server,disable server))
OWMAN_DISABLE_SERVER=0
if test "$enable_server" = no; then
OWMAN_DISABLE_SERVER=1
fi
AM_CONDITIONAL(DISABLE_SERVER, test x$OWMAN_DISABLE_SERVER = x1)
AC_ARG_ENABLE(plugins,
AC_HELP_STRING(--disable-plugins,disable plugins))
OWMAN_DISABLE_PLUGINS=0
if test "$enable_plugins" = no; then
OWMAN_DISABLE_PLUGINS=1
fi
AM_CONDITIONAL(DISABLE_PLUGINS, test x$OWMAN_DISABLE_PLUGINS = x1)
AC_ARG_ENABLE(more-warnings,
[ --disable-more-warnings Inhibit compiler warnings],
set_more_warnings=no)
if test "$GCC" = "yes" -a "$set_more_warnings" != "no"; then
CFLAGS="$CFLAGS \
-Wall -Wstrict-prototypes -Wmissing-declarations \
-Wmissing-prototypes -Wnested-externs -Wpointer-arith \
-Wunused -Werror"
fi
dnl *************************
dnl *** Output Everything ***
dnl *************************
AC_SUBST(SYSCONFDIR)
AC_CONFIG_FILES([
openwsman.pc
openwsman++.pc
openwsman-server.pc
package/openwsman.spec])
AC_OUTPUT([
Doxyfile
Makefile
src/Makefile
src/server/Makefile
src/lib/Makefile
src/plugins/Makefile
src/plugins/cim/Makefile
src/plugins/identify/Makefile
src/plugins/wsman/Makefile
src/plugins/wsman/test/Makefile
src/authenticators/Makefile
src/authenticators/file/Makefile
src/authenticators/pam/Makefile
src/cpp/Makefile
include/Makefile
include/cim/Makefile
include/u/Makefile
doc/Makefile
doc/specs/Makefile
etc/Makefile
etc/owsmangencert.sh
etc/init/Makefile
etc/init/openwsmand.sh
tests/Makefile
tests/client/Makefile
tests/epr/Makefile
tests/filter/Makefile
tests/xml/Makefile
examples/Makefile
bindings/Makefile
bindings/version.i
bindings/python/Makefile
bindings/python/tests/Makefile
bindings/ruby/Makefile
bindings/ruby/tests/Makefile
bindings/ruby/openwsman/Makefile
bindings/java/Makefile
bindings/java/tests/Makefile
bindings/perl/Makefile
bindings/perl/tests/Makefile
])
if test "x$enable_ruby" = "xyes" -o "x$enable_python" = "xyes" -o "x$enable_perl" = "xyes"; then
if test "$set_more_warnings" != "no"; then
AC_MSG_WARN(*** Consider setting --disable-more-warnings else bindings will likely fail to build ***)
fi
fi
AC_OUTPUT
echo =================================================================
echo -e "Configuration Features:\n"
echo -e "build plugins"\\t\\t\\t"${enable_plugins:-yes}"
echo -e "build server"\\t\\t\\t"${enable_server:-yes}"
echo -e "debug"\\t\\t\\t\\t"${enable_debug:-no}"
echo -e "eventing"\\t\\t\\t"${enable_eventing:-yes}"
echo -e "examples"\\t\\t\\t"${with_examples:-no}"
echo -e "IPv6"\\t\\t\\t\\t"${enable_ipv6:-no}"
echo -e "java binding"\\t\\t\\t"${enable_java:-no}"
echo -e "PAM authentication"\\t\\t"${enable_pam:-yes}"
echo -e "python binding"\\t\\t\\t"${enable_python:-no}"
echo -e "perl binding"\\t\\t\\t"${enable_perl:-no}"
echo -e "ruby binding"\\t\\t\\t"${enable_ruby:-no}"
echo -e "ssl"\\t\\t\\t\\t"${enable_ssl:-yes}"
echo -e "tests"\\t\\t\\t\\t"${with_tests:-no}"
echo =================================================================
echo
echo "openwsman configuration complete. you may now run 'make'"
echo