autoconf; exec ./configure $@ dnl dnl Process this file with autoconf to produce a configure script dnl dnl Embed in generated ./configure script the following CVS info: AC_REVISION($Revision: 1.1.1.7 $)dnl dnl Setup autoconf AC_PREREQ(2.53) AC_INIT(RT, [3.6.4], [rt-bugs@bestpractical.com]) AC_CONFIG_SRCDIR([lib/RT.pm.in]) dnl Extract RT version number components AC_SUBST([rt_version_major], m4_bregexp(AC_PACKAGE_VERSION,[^\(\w+\)\.\(\w+\)\(\.\(\w+\)\)?],[\1])) AC_SUBST([rt_version_minor], m4_bregexp(AC_PACKAGE_VERSION,[^\(\w+\)\.\(\w+\)\(\.\(\w+\)\)?],[\2])) AC_SUBST([rt_version_patch], m4_bregexp(AC_PACKAGE_VERSION,[^\(\w+\)\.\(\w+\)\(\.\(\w+\)\)?],[\4])) test "x$rt_version_major" = 'x' && rt_version_major=0 test "x$rt_version_minor" = 'x' && rt_version_minor=0 test "x$rt_version_patch" = 'x' && rt_version_patch=0 dnl Check for programs AC_PROG_INSTALL AC_PROG_AWK AC_ARG_VAR([PERL],[Perl interpreter command]) AC_PATH_PROG([PERL], [perl], [not found]) if test "$PERL" = 'not found'; then AC_MSG_ERROR([cannot use $PACKAGE_NAME without perl]) fi dnl SPEED_BIN AC_ARG_WITH(speedycgi, AC_HELP_STRING([--with-speedycgi=/path/to/speedy], [path to your speedycgi binary, if it exists]), SPEEDY_BIN=$withval, SPEEDY_BIN=/usr/local/bin/speedy) AC_SUBST(SPEEDY_BIN) dnl Defaults paths for installation AC_PREFIX_DEFAULT([/opt/rt3]) RT_ENABLE_LAYOUT # ACRT_USER_EXISTS( users, variable, default ) # - users is a list of users [www apache www-docs] # from highest to lowest priority to high priority (i.e. first match) # - variable is what you set with the result # AC_DEFUN([ACRT_USER_GUESS], [ $2=$3 for x in $1; do AC_MSG_CHECKING([if user $x exists]) AS_IF([ $PERL -e"exit( defined getpwnam('$x') ? 0 : 1)" ], [ AC_MSG_RESULT([found]); $2=$x ; break], [ AC_MSG_RESULT([not found]) ]) done ]) AC_DEFUN([ACRT_GROUP_GUESS], [ $2=$3 for x in $1; do AC_MSG_CHECKING([if group $x exists]) AS_IF([ $PERL -e"exit( defined getgrnam('$x') ? 0 : 1)" ], [ AC_MSG_RESULT([found]); $2=$x ; break], [ AC_MSG_RESULT([not found]) ]) done ]) dnl BIN_OWNER AC_ARG_WITH(bin-owner, AC_HELP_STRING([--with-bin-owner=OWNER], [user that will own RT binaries (default root)]), BIN_OWNER=$withval, BIN_OWNER=root) AC_SUBST(BIN_OWNER) dnl LIBS_OWNER AC_ARG_WITH(libs-owner, AC_HELP_STRING([--with-libs-owner=OWNER], [user that will own RT libraries (default root)]), LIBS_OWNER=$withval, LIBS_OWNER=root) AC_SUBST(LIBS_OWNER) dnl LIBS_GROUP AC_ARG_WITH(libs-group, AC_HELP_STRING([--with-libs-group=GROUP], [group that will own RT binaries (default bin)]), LIBS_GROUP=$withval, LIBS_GROUP=bin) AC_SUBST(LIBS_GROUP) dnl DB_TYPE AC_ARG_WITH(db-type, AC_HELP_STRING([--with-db-type=TYPE], [sort of database RT will use (default: mysql) (mysql, Pg, Oracle, Informix and SQLite are valid)]), DB_TYPE=$withval, DB_TYPE=mysql) if test "$DB_TYPE" != 'mysql' -a "$DB_TYPE" != 'Pg' -a "$DB_TYPE" != 'SQLite' -a "$DB_TYPE" != 'Oracle' -a "$DB_TYPE" != 'Informix' -a "$DB_TYPE" != 'Sybase' ; then AC_MSG_ERROR([Only Oracle, Informix, Pg, mysql and SQLite are valid db types]) fi AC_SUBST(DB_TYPE) dnl DATABASE_ENV_PREF if test "$DB_TYPE" = 'Oracle'; then test "x$ORACLE_HOME" = 'x' && AC_MSG_ERROR([Please declare the ORACLE_HOME environment variable]) DATABASE_ENV_PREF="\$ENV{'ORACLE_HOME'} = '$ORACLE_HOME';" fi dnl DATABASE_ENV_PREF if test "$DB_TYPE" = 'Sybase'; then test "x$SYBASE" = 'x' && AC_MSG_ERROR([Please declare the SYBASE_HOME environment variable]) DATABASE_ENV_PREF="\$ENV{'SYBASE'} = '$SYBASE';" fi AC_SUBST(DATABASE_ENV_PREF) dnl DB_HOST AC_ARG_WITH(db-host, AC_HELP_STRING([--with-db-host=HOSTNAME], [FQDN of database server (default: localhost)]), DB_HOST=$withval, DB_HOST=localhost) AC_SUBST(DB_HOST) dnl DB_PORT AC_ARG_WITH(db-port, AC_HELP_STRING([--with-db-port=PORT], [port on which the database listens on]), DB_PORT=$withval, DB_PORT=) AC_SUBST(DB_PORT) dnl DB_RT_HOST AC_ARG_WITH(db-rt-host, AC_HELP_STRING([--with-db-rt-host=HOSTNAME], [FQDN of RT server which talks to the database server (default: localhost)]), DB_RT_HOST=$withval, DB_RT_HOST=localhost) AC_SUBST(DB_RT_HOST) dnl DB_DATABASE_ADMIN AC_ARG_WITH(db-dba, AC_HELP_STRING([--with-db-dba=DBA], [name of database administrator (default: root)]), DB_DBA=$withval, DB_DBA=root) AC_SUBST(DB_DBA) dnl DB_DATABASE AC_ARG_WITH(db-database, AC_HELP_STRING([--with-db-database=DBNAME], [name of the database to use (default: rt3)]), DB_DATABASE=$withval, DB_DATABASE=rt3) AC_SUBST(DB_DATABASE) dnl DB_RT_USER AC_ARG_WITH(db-rt-user, AC_HELP_STRING([--with-db-rt-user=DBUSER], [name of database user (default: rt_user)]), DB_RT_USER=$withval, DB_RT_USER=rt_user) AC_SUBST(DB_RT_USER) dnl DB_RT_PASS AC_ARG_WITH(db-rt-pass, AC_HELP_STRING([--with-db-rt-pass=PASSWORD], [password for database user (default: rt_pass)]), DB_RT_PASS=$withval, DB_RT_PASS=rt_pass) AC_SUBST(DB_RT_PASS) dnl WEB_USER AC_ARG_WITH(web-user, AC_HELP_STRING([--with-web-user=USER], [user the web server runs as (default: www)]), WEB_USER=$withval, ACRT_USER_GUESS([www www-data apache httpd nobody],[WEB_USER],[www]) ) AC_SUBST(WEB_USER) dnl WEB_GROUP AC_ARG_WITH(web-group, AC_HELP_STRING([--with-web-group=GROUP], [group the web server runs as (default: www)]), WEB_GROUP=$withval, ACRT_GROUP_GUESS([www www-data apache httpd nogroup nobody],[WEB_GROUP], [www])) AC_SUBST(WEB_GROUP) dnl RTGROUP AC_ARG_WITH(rt-group, AC_HELP_STRING([--with-rt-group=GROUP], [group to own all files (default: rt)]), RTGROUP=$withval, ACRT_GROUP_GUESS([rt3 rt $WEB_GROUP],[RTGROUP], [rt])) AC_SUBST(RTGROUP) dnl INSTALL AS ME # XXX TODO: The command below to figure out the group brokenly relies on # output order (and "id -gn" doesn't work on all platforms). my_group=$(groups|cut -f1 -d' ') my_user=${USER:-$LOGNAME} AC_ARG_WITH(my-user-group, AC_HELP_STRING([--with-my-user-group], [set all users and groups to current user/group]), RTGROUP=$my_group BIN_OWNER=$my_user LIBS_OWNER=$my_user LIBS_GROUP=$my_group WEB_USER=$my_user WEB_GROUP=$my_group) # Test for valid database names AS_IF([ test "$DB_TYPE" == "mysql" ], [ AC_MSG_CHECKING([if database name is valid]) AS_IF([ echo $DB_DATABASE | $AWK '/-/ { exit 1 }' ], [ AC_MSG_RESULT([yes]) ], [ AC_MSG_ERROR([no. database name ($DB_DATABASE) contains '-' which is not valid for mysql]) ] ) ] ) dnl Set the value of apachectl AC_ARG_WITH(apachectl, AC_HELP_STRING([--with-apachectl], [instruct RT where to find your apachectl]), APACHECTL=$withval, APACHECTL=`which apachectl`) AC_SUBST(APACHECTL) dnl RT's standalone pure perl server AC_ARG_WITH(devel-mode, AC_HELP_STRING([--with-standalone], [Install modules for pure perl standalone server]), RT_STANDALONE="1", RT_STANDALONE="0") AC_SUBST(RT_STANDALONE) dnl RT's "maintainer mode" AC_ARG_WITH(devel-mode, AC_HELP_STRING([--with-devel-mode], [Turn on development aids that might hurt you in production]), RT_DEVEL_MODE="1", RT_DEVEL_MODE="0") AC_SUBST(RT_DEVEL_MODE) dnl This section maps the variable names this script 'natively' generates dnl to their existing names. They should be removed from here as the .in dnl files are changed to use the new names. dnl version numbers AC_SUBST(RT_VERSION_MAJOR, ${rt_version_major}) AC_SUBST(RT_VERSION_MINOR, ${rt_version_minor}) AC_SUBST(RT_VERSION_PATCH, ${rt_version_patch}) dnl layout paths AC_SUBST([RT_PATH], ${exp_prefix}) AC_SUBST([RT_DOC_PATH], ${exp_manualdir}) AC_SUBST([RT_LOCAL_PATH], ${exp_customdir}) AC_SUBST([RT_LIB_PATH], ${exp_libdir}) AC_SUBST([RT_ETC_PATH], ${exp_sysconfdir}) AC_SUBST([CONFIG_FILE_PATH], ${exp_sysconfdir}) AC_SUBST([RT_BIN_PATH], ${exp_bindir}) AC_SUBST([RT_SBIN_PATH], ${exp_sbindir}) AC_SUBST([RT_VAR_PATH], ${exp_localstatedir}) AC_SUBST([RT_MAN_PATH], ${exp_mandir}) AC_SUBST([MASON_DATA_PATH], ${exp_masonstatedir}) AC_SUBST([MASON_SESSION_PATH], ${exp_sessionstatedir}) AC_SUBST([MASON_HTML_PATH], ${exp_htmldir}) AC_SUBST([LOCAL_ETC_PATH], ${exp_custometcdir}) AC_SUBST([MASON_LOCAL_HTML_PATH], ${exp_customhtmldir}) AC_SUBST([LOCAL_LEXICON_PATH], ${exp_customlexdir}) AC_SUBST([LOCAL_LIB_PATH], ${exp_customlibdir}) AC_SUBST([DESTDIR], ${exp_prefix}) AC_SUBST([RT_LOG_PATH], ${exp_logfiledir}) dnl Configure the output files, and generate them. dnl Binaries that should be +x AC_CONFIG_FILES([ sbin/rt-dump-database sbin/rt-setup-database sbin/rt-test-dependencies bin/mason_handler.fcgi bin/mason_handler.scgi bin/standalone_httpd bin/rt-crontool bin/rt-mailgate bin/rt], [chmod ug+x $ac_file] ) dnl All other generated files AC_CONFIG_FILES([ Makefile etc/RT_Config.pm lib/RT.pm bin/mason_handler.svc bin/webmux.pl], ) AC_OUTPUT