charges and time are not measured in megabytes
[freeside.git] / rt / configure.ac
1 autoconf; exec ./configure $@
2 dnl
3 dnl Process this file with autoconf to produce a configure script
4 dnl
5 dnl Embed in generated ./configure script the following CVS info:
6 AC_REVISION($Revision: 1.1.1.6 $)dnl
7
8 dnl Setup autoconf
9 AC_PREREQ(2.53)
10 AC_INIT(RT, [3.4.5], [rt-bugs@fsck.com])
11 AC_CONFIG_SRCDIR([lib/RT.pm.in])
12
13 dnl Extract RT version number components
14 AC_SUBST([rt_version_major],
15         m4_bregexp(AC_PACKAGE_VERSION,[^\(\w+\)\.\(\w+\)\(\.\(\w+\)\)?],[\1]))
16 AC_SUBST([rt_version_minor],
17         m4_bregexp(AC_PACKAGE_VERSION,[^\(\w+\)\.\(\w+\)\(\.\(\w+\)\)?],[\2]))
18 AC_SUBST([rt_version_patch],
19         m4_bregexp(AC_PACKAGE_VERSION,[^\(\w+\)\.\(\w+\)\(\.\(\w+\)\)?],[\4]))
20 test "x$rt_version_major" = 'x' && rt_version_major=0
21 test "x$rt_version_minor" = 'x' && rt_version_minor=0
22 test "x$rt_version_patch" = 'x' && rt_version_patch=0
23
24 dnl Check for programs
25 AC_PROG_INSTALL
26 AC_PROG_AWK
27 AC_ARG_VAR([PERL],[Perl interpreter command])
28 AC_PATH_PROG([PERL], [perl], [not found])
29 if test "$PERL" = 'not found'; then
30         AC_MSG_ERROR([cannot use $PACKAGE_NAME without perl])
31 fi
32
33
34 dnl SPEED_BIN
35 AC_ARG_WITH(speedycgi,
36             AC_HELP_STRING([--with-speedycgi=/path/to/speedy],
37                            [path to your speedycgi binary, if it exists]),
38             SPEEDY_BIN=$withval,
39             SPEEDY_BIN=/usr/local/bin/speedy) 
40 AC_SUBST(SPEEDY_BIN)
41
42
43 dnl Defaults paths for installation
44 AC_PREFIX_DEFAULT([/opt/rt3])
45 RT_ENABLE_LAYOUT
46
47
48 # ACRT_USER_EXISTS( users, variable, default )
49 # - users is a list of users [www apache www-docs]
50 #    from highest to lowest priority to high priority (i.e. first match)
51 # - variable is what you set with the result
52 #
53
54 AC_DEFUN([ACRT_USER_GUESS],
55  [ 
56    $2=$3
57    for x in $1; do
58     AC_MSG_CHECKING([if user $x exists]) 
59      AS_IF([ $PERL -e"exit( defined getpwnam('$x') ? 0 : 1)" ],
60            [ AC_MSG_RESULT([found]); $2=$x ; break],
61            [ AC_MSG_RESULT([not found]) ])
62    done
63   ])
64 AC_DEFUN([ACRT_GROUP_GUESS],
65  [ 
66    $2=$3
67    for x in $1; do
68     AC_MSG_CHECKING([if group $x exists]) 
69      AS_IF([ $PERL -e"exit( defined getgrnam('$x') ? 0 : 1)" ],
70            [ AC_MSG_RESULT([found]); $2=$x ; break],
71            [ AC_MSG_RESULT([not found]) ])
72    done
73   ])
74
75 dnl BIN_OWNER
76 AC_ARG_WITH(bin-owner,
77             AC_HELP_STRING([--with-bin-owner=OWNER],
78                            [user that will own RT binaries (default root)]),
79             BIN_OWNER=$withval,
80             BIN_OWNER=root)
81 AC_SUBST(BIN_OWNER)
82
83 dnl LIBS_OWNER
84 AC_ARG_WITH(libs-owner,
85             AC_HELP_STRING([--with-libs-owner=OWNER],
86                            [user that will own RT libraries (default root)]),
87             LIBS_OWNER=$withval,
88             LIBS_OWNER=root)
89 AC_SUBST(LIBS_OWNER)
90
91 dnl LIBS_GROUP
92 AC_ARG_WITH(libs-group,
93             AC_HELP_STRING([--with-libs-group=GROUP],
94                            [group that will own RT binaries (default bin)]),
95             LIBS_GROUP=$withval,
96             LIBS_GROUP=bin)
97 AC_SUBST(LIBS_GROUP)
98
99 dnl DB_TYPE
100 AC_ARG_WITH(db-type,
101             AC_HELP_STRING([--with-db-type=TYPE],
102                            [sort of database RT will use (default: mysql) (mysql, Pg, Oracle, Informix and SQLite are valid)]), 
103             DB_TYPE=$withval,
104             DB_TYPE=mysql)
105 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
106         AC_MSG_ERROR([Only Oracle, Informix, Pg, mysql and SQLite are valid db types])
107 fi
108 AC_SUBST(DB_TYPE)
109
110 dnl DATABASE_ENV_PREF
111 if test "$DB_TYPE" = 'Oracle'; then
112         test "x$ORACLE_HOME" = 'x' && AC_MSG_ERROR([Please declare the ORACLE_HOME environment variable])
113         DATABASE_ENV_PREF="\$ENV{'ORACLE_HOME'} = '$ORACLE_HOME';"
114 fi
115
116 dnl DATABASE_ENV_PREF
117 if test "$DB_TYPE" = 'Sybase'; then
118         test "x$SYBASE" = 'x' && AC_MSG_ERROR([Please declare the SYBASE_HOME environment variable])
119         DATABASE_ENV_PREF="\$ENV{'SYBASE'} = '$SYBASE';"
120 fi
121 AC_SUBST(DATABASE_ENV_PREF)
122
123 dnl DB_HOST
124 AC_ARG_WITH(db-host,
125             AC_HELP_STRING([--with-db-host=HOSTNAME],
126                            [FQDN of database server (default: localhost)]),
127             DB_HOST=$withval,
128             DB_HOST=localhost)
129 AC_SUBST(DB_HOST)
130
131 dnl DB_PORT
132 AC_ARG_WITH(db-port,
133             AC_HELP_STRING([--with-db-port=PORT],
134                            [port on which the database listens on]),
135             DB_PORT=$withval,
136             DB_PORT=)
137 AC_SUBST(DB_PORT)
138
139 dnl DB_RT_HOST
140 AC_ARG_WITH(db-rt-host,
141             AC_HELP_STRING([--with-db-rt-host=HOSTNAME],
142                            [FQDN of RT server which talks to the database server (default: localhost)]),
143             DB_RT_HOST=$withval,
144             DB_RT_HOST=localhost)
145 AC_SUBST(DB_RT_HOST)
146
147 dnl DB_DATABASE_ADMIN
148 AC_ARG_WITH(db-dba,
149             AC_HELP_STRING([--with-db-dba=DBA],
150                            [name of database administrator (default: root)]),
151             DB_DBA=$withval,
152             DB_DBA=root)
153 AC_SUBST(DB_DBA)
154
155 dnl DB_DATABASE
156 AC_ARG_WITH(db-database,
157             AC_HELP_STRING([--with-db-database=DBNAME],
158                            [name of the database to use (default: rt3)]),
159             DB_DATABASE=$withval,
160             DB_DATABASE=rt3)
161 AC_SUBST(DB_DATABASE)
162
163 dnl DB_RT_USER
164 AC_ARG_WITH(db-rt-user,
165             AC_HELP_STRING([--with-db-rt-user=DBUSER],
166                            [name of database user (default: rt_user)]),
167             DB_RT_USER=$withval,
168             DB_RT_USER=rt_user)
169 AC_SUBST(DB_RT_USER)
170
171 dnl DB_RT_PASS
172 AC_ARG_WITH(db-rt-pass,
173             AC_HELP_STRING([--with-db-rt-pass=PASSWORD],
174                            [password for database user (default: rt_pass)]),
175             DB_RT_PASS=$withval,
176             DB_RT_PASS=rt_pass)
177 AC_SUBST(DB_RT_PASS)
178
179 dnl WEB_USER
180 AC_ARG_WITH(web-user,
181             AC_HELP_STRING([--with-web-user=USER],
182                            [user the web server runs as (default: www)]),
183             WEB_USER=$withval,
184             ACRT_USER_GUESS([www www-data apache httpd nobody],[WEB_USER],[www])
185 )
186 AC_SUBST(WEB_USER)
187
188 dnl WEB_GROUP
189 AC_ARG_WITH(web-group,
190             AC_HELP_STRING([--with-web-group=GROUP],
191                            [group the web server runs as (default: www)]),
192             WEB_GROUP=$withval,
193             ACRT_GROUP_GUESS([www www-data apache httpd nogroup nobody],[WEB_GROUP], [www]))
194 AC_SUBST(WEB_GROUP)
195
196 dnl RTGROUP
197 AC_ARG_WITH(rt-group,
198             AC_HELP_STRING([--with-rt-group=GROUP],
199                            [group to own all files (default: rt)]),
200             RTGROUP=$withval,
201             ACRT_GROUP_GUESS([rt3 rt $WEB_GROUP],[RTGROUP], [rt]))
202 AC_SUBST(RTGROUP)
203
204 dnl INSTALL AS ME
205 my_group=$(groups|cut -f1 -d' ')
206 my_user=${USER:-$LOGNAME}
207 AC_ARG_WITH(my-user-group,
208             AC_HELP_STRING([--with-my-user-group],
209                            [set all users and groups to current user/group]),
210             RTGROUP=$my_group
211             BIN_OWNER=$my_user
212             LIBS_OWNER=$my_user
213             LIBS_GROUP=$my_group
214             WEB_USER=$my_user
215             WEB_GROUP=$my_group)
216
217 # Test for valid database names
218 AS_IF([ test "$DB_TYPE" == "mysql" ],
219       [ AC_MSG_CHECKING([if database name is valid])
220           AS_IF([ echo $DB_DATABASE | $AWK '/-/ { exit 1 }' ],
221                 [ AC_MSG_RESULT([yes]) ],
222                 [ AC_MSG_ERROR([no.  database name ($DB_DATABASE) contains '-' which is not valid for mysql]) ]
223                )
224       ]
225      )
226
227
228 dnl Set the value of apachectl
229 AC_ARG_WITH(apachectl,
230             AC_HELP_STRING([--with-apachectl],
231                            [instruct RT where to find your apachectl]),
232
233             APACHECTL=$withval, 
234             APACHECTL=`which apachectl`)
235 AC_SUBST(APACHECTL)
236
237 dnl RT's "maintainer mode"
238 AC_ARG_WITH(devel-mode,
239             AC_HELP_STRING([--with-devel-mode],
240                            [Turn on development aids that might hurt you in production]),
241
242             RT_DEVEL_MODE="1", 
243             RT_DEVEL_MODE="0")
244 AC_SUBST(RT_DEVEL_MODE)
245 dnl This section maps the variable names this script 'natively' generates
246 dnl to their existing names. They should be removed from here as the .in
247 dnl files are changed to use the new names.
248
249 dnl version numbers
250 AC_SUBST(RT_VERSION_MAJOR,              ${rt_version_major})
251 AC_SUBST(RT_VERSION_MINOR,              ${rt_version_minor})
252 AC_SUBST(RT_VERSION_PATCH,              ${rt_version_patch})
253
254 dnl layout paths
255 AC_SUBST([RT_PATH],                     ${exp_prefix})
256 AC_SUBST([RT_DOC_PATH],                 ${exp_manualdir})
257 AC_SUBST([RT_LOCAL_PATH],               ${exp_customdir})
258 AC_SUBST([RT_LIB_PATH],                 ${exp_libdir})
259 AC_SUBST([RT_ETC_PATH],                 ${exp_sysconfdir})
260 AC_SUBST([CONFIG_FILE_PATH],            ${exp_sysconfdir})
261 AC_SUBST([RT_BIN_PATH],                 ${exp_bindir})
262 AC_SUBST([RT_SBIN_PATH],                ${exp_sbindir})
263 AC_SUBST([RT_VAR_PATH],                 ${exp_localstatedir})
264 AC_SUBST([RT_MAN_PATH],                 ${exp_mandir})
265 AC_SUBST([MASON_DATA_PATH],             ${exp_masonstatedir})
266 AC_SUBST([MASON_SESSION_PATH],          ${exp_sessionstatedir})
267 AC_SUBST([MASON_HTML_PATH],             ${exp_htmldir})
268 AC_SUBST([LOCAL_ETC_PATH],              ${exp_custometcdir})
269 AC_SUBST([MASON_LOCAL_HTML_PATH],       ${exp_customhtmldir})
270 AC_SUBST([LOCAL_LEXICON_PATH],          ${exp_customlexdir})
271 AC_SUBST([LOCAL_LIB_PATH],              ${exp_customlibdir})
272 AC_SUBST([DESTDIR],                     ${exp_prefix})
273 AC_SUBST([RT_LOG_PATH],                 ${exp_logfiledir})
274
275 dnl Configure the output files, and generate them.
276
277 dnl Binaries that should be +x
278 AC_CONFIG_FILES([
279                  sbin/rt-dump-database
280                  sbin/rt-setup-database
281                  sbin/rt-test-dependencies
282                  bin/mason_handler.fcgi
283                  bin/mason_handler.scgi
284                  bin/standalone_httpd
285                  bin/rt-crontool
286                  bin/rt-mailgate
287                  bin/rt],
288                 [chmod ug+x $ac_file]
289                )
290
291 dnl All other generated files
292 AC_CONFIG_FILES([
293                  Makefile
294                  etc/RT_Config.pm
295                  lib/RT.pm
296                  bin/mason_handler.svc
297                  bin/webmux.pl],
298                )
299 AC_OUTPUT