configure.in 8.43 KB
Newer Older
1
# $Id$
Chris Allegretta's avatar
Chris Allegretta committed
2
3
dnl Process this file with autoconf to produce a configure script.
AC_INIT(nano.c)
Chris Allegretta's avatar
Chris Allegretta committed
4
AM_INIT_AUTOMAKE(nano, 1.1.0-cvs)
Chris Allegretta's avatar
Chris Allegretta committed
5
AM_CONFIG_HEADER(config.h:config.h.in)
6
ALL_LINGUAS="es de fr it id fi hu ca cs gl uk ru sv no"
Chris Allegretta's avatar
Chris Allegretta committed
7
8
9
10
11
12
13

dnl Checks for programs.
AC_PROG_CC
AC_ISC_POSIX

dnl Checks for header files.
AC_HEADER_STDC
14
AC_CHECK_HEADERS(fcntl.h unistd.h malloc.h termios.h termio.h limits.h getopt.h regex.h)
Chris Allegretta's avatar
Chris Allegretta committed
15
16
17

dnl options
AC_ARG_ENABLE(tiny,
18
[  --enable-tiny           Disable features for the sake of size
Chris Allegretta's avatar
Chris Allegretta committed
19
20
21
                          (currently disables detailed help and i18n)],
[if test x$enableval = xyes; then
    AC_DEFINE(NANO_SMALL) tiny_support=yes
22
23
24
25
26
    AC_DEFINE(DISABLE_TABCOMP) 
    AC_DEFINE(DISABLE_SPELLER) 
    AC_DEFINE(DISABLE_HELP) 
    AC_DEFINE(DISABLE_JUSTIFY) 
    AC_DEFINE(DISABLE_BROWSER) 
27
    AC_DEFINE(DISABLE_MOUSE) 
Chris Allegretta's avatar
Chris Allegretta committed
28
29
 fi])

30
31
32
33
AC_ARG_ENABLE(extra,
[  --enable-extra          Enable extra (optional) functions, including easter eggs],
[if test x$enableval = xyes; then
    AC_DEFINE(NANO_EXTRA) extra_support=yes
34
    AC_DEFINE(ENABLE_MULTIBUFFER) multibuffer_support=yes
35
36
 fi])

37
38
AC_ARG_ENABLE(multibuffer,
[  --enable-multibuffer    Enable use of file loading on insertion, and switching between loaded files; this is disabled if --enable-tiny is used],
39
[if test x$enableval = xyes && test x$tiny_support != xyes; then
40
    AC_DEFINE(ENABLE_MULTIBUFFER) multibuffer_support=yes
41
42
 fi])

43
44
45
46
47
48
AC_ARG_ENABLE(nanorc,
[  --enable-nanorc         Enable use of .nanorc file],
[if test x$enableval = xyes; then
    AC_DEFINE(ENABLE_NANORC) nanorc_support=yes
 fi])

49
AC_ARG_ENABLE(color,
50
[  --enable-color          Enable color and syntax highlighting],
51
52
53
[if test x$enableval = xyes; then
    AC_DEFINE(ENABLE_NANORC) nanorc_support=yes
    AC_DEFINE(ENABLE_COLOR) color_support=yes
54
55
56
57
58
59
60
61
    AC_MSG_WARN([

***********************************************************************
*** WARNING: Color support is currently BROKEN.  Don't expect it to ***
*** work AT ALL until more is implemented.                          ***
***********************************************************************
])
fi])
62

63
AC_ARG_ENABLE(tabcomp,
64
[  --disable-tabcomp       Disable tab completion code for a smaller binary],
65
66
67
68
 [if test x$enableval != xyes; then
    AC_DEFINE(DISABLE_TABCOMP) 
 fi])

69
70
71
72
73
74
AC_ARG_ENABLE(justify,
[  --disable-justify       Disable justify/unjustify function],
 [if test x$enableval != xyes; then
    AC_DEFINE(DISABLE_JUSTIFY) 
 fi])

75
AC_ARG_ENABLE(speller,
76
[  --disable-speller       Disable spell checker function],
77
 [if test x$enableval != xyes; then
78
    AC_DEFINE(DISABLE_SPELLER) 
79
80
 fi])

81
AC_ARG_ENABLE(help,
82
[  --disable-help          Disable help function (^G)],
83
84
85
86
 [if test x$enableval != xyes; then
    AC_DEFINE(DISABLE_HELP) 
 fi])

Chris Allegretta's avatar
Chris Allegretta committed
87
AC_ARG_ENABLE(browser,
88
[  --disable-browser       Disable mini file browser],
89
90
 [if test x$enableval != xyes; then
    AC_DEFINE(DISABLE_BROWSER)
Chris Allegretta's avatar
Chris Allegretta committed
91
92
 fi])

93
AC_ARG_ENABLE(wrapping,
94
[  --disable-wrapping      Disable all wrapping of text (and -w flag)],
95
96
97
98
 [if test x$enableval != xyes; then
    AC_DEFINE(DISABLE_WRAPPING)
 fi])

99
AC_ARG_ENABLE(mouse,
100
[  --disable-mouse         Disable mouse support (and -m flag)],
101
102
103
104
 [if test x$enableval != xyes; then
    AC_DEFINE(DISABLE_MOUSE)
 fi])

105
AC_MSG_CHECKING([whether to use slang])
Chris Allegretta's avatar
Chris Allegretta committed
106
107
108
109
110
111
112
113
114
115
CURSES_LIB_NAME=""
AC_ARG_WITH(slang,
[  --with-slang[=DIR]      Use the slang library instead of curses],
[    case "$with_slang" in
    no)
	AC_MSG_RESULT(no)
	;;
    *)
	AC_MSG_RESULT(yes)

116
117
118
119
120
	if test "$with_slang" != "yes"; then
	    # Add additional search path
	    LDFLAGS="-L$with_slang/lib $LDFLAGS"
	    CPPFLAGS="-I$with_slang/include $CPPFLAGS"
	fi
Chris Allegretta's avatar
Chris Allegretta committed
121
122

	AC_CHECK_HEADER(slcurses.h,
123
	    AC_MSG_CHECKING([for SLtt_initialize in -lslang])
124
125
	    _libs=$LIBS
	    LIBS="$LIBS -lslang"
126
127
128
129
	    AC_TRY_RUN([
#include <stdio.h>
#include <slcurses.h>
int main () { SLtt_initialize (NULL); return 0; }],
130
		[AC_MSG_RESULT(yes)
131
132
133
134
135
136
137
138
		AC_DEFINE(USE_SLANG)
		slang_support=yes
		if test "$with_slang" != "yes"; then
		    CURSES_LIB="-L${with_slang}/lib -lslang"
		else
		    CURSES_LIB="-lslang"
		fi
		CURSES_LIB_NAME=slang], [
139
140
141
		AC_MSG_RESULT(no)
		# We might need the term library
		for termlib in ncurses curses termcap terminfo termlib; do
142
		    AC_CHECK_LIB([${termlib}], tputs, [tcap="-l$termlib"])
143
144
145
		    test -n "$tcap" && break
		done

146
		AC_MSG_CHECKING([for SLtt_initialize in -lslang $tcap])
147
		LIBS="$LIBS $tcap"
148
149
150
151
		AC_TRY_RUN([
#include <stdio.h>
#include <slcurses.h>
int main () { SLtt_initialize (NULL); return 0; }],
152
153
154
155
156
157
158
159
160
161
162
		    [AC_MSG_RESULT(yes)
		    AC_DEFINE(USE_SLANG)
		    slang_support=yes
		    if test "$with_slang" != "yes"; then
			CURSES_LIB="-L${with_slang}/lib -lslang $tcap"
		    else
			CURSES_LIB="-lslang $tcap"
		    fi
		    CURSES_LIB_NAME=slang], [
		    AC_MSG_RESULT(no)
		    # We might need the math library
163
		    AC_MSG_CHECKING([for SLtt_initialize in -lslang $tcap -lm])
164
		    LIBS="$LIBS -lm"
165
166
167
168
		    AC_TRY_RUN([
#include <stdio.h>
#include <slcurses.h>
int main () { SLtt_initialize (NULL); return 0; }],
169
170
171
172
173
174
175
176
177
			[AC_MSG_RESULT(yes)
			AC_DEFINE(USE_SLANG)
			slang_support=yes
			if test "$with_slang" != "yes"; then
			    CURSES_LIB="-L${with_slang}/lib -lslang $tcap -lm"
			else
			    CURSES_LIB="-lslang $tcap -lm"
			fi
			CURSES_LIB_NAME=slang],
178
179
180
181
			[AC_MSG_RESULT(no)],
AC_MSG_WARN([*** Can not use slang when cross-compiling]))],
AC_MSG_WARN([*** Can not use slang when cross-compiling]))], 
AC_MSG_WARN([*** Can not use slang when cross-compiling])),
Chris Allegretta's avatar
Chris Allegretta committed
182
183
184
185
186
187
188
	    AC_MSG_ERROR([
*** The header file slcurses.h was not found. If you wish to use
*** slang support this header file is required. Please either
*** install a version of slang that includes the slcurses.h file or
*** do not call the configure script with --with-slang
]))

189
190
	test "${_libs+set}" = "set" && LIBS=$_libs

191
192
193
	if test "$with_slang" != "yes"; then
	    LDFLAGS=${_ldflags}
	fi
Chris Allegretta's avatar
Chris Allegretta committed
194
	;;
195
    esac], [AC_MSG_RESULT(no)])
Chris Allegretta's avatar
Chris Allegretta committed
196
197
198
199
200
201

dnl Checks for functions
AC_CHECK_FUNCS(snprintf vsnprintf)
if test "x$ac_cv_func_snprintf" = "xno" -o "xac_cv_func_vsnprintf" = "xno"
then
	AM_PATH_GLIB(1.2.4,,
202
	    [AC_MSG_ERROR([
Chris Allegretta's avatar
Chris Allegretta committed
203
204
*** snprintf() and/or vsnprintf() not found.  GLIB not found either.
*** You need both snprintf() and vsnprintf().  Alternatively you can
205
*** install the GLIB library which can be found at ftp://ftp.gtk.org/.])],
Chris Allegretta's avatar
Chris Allegretta committed
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
	    glib)
	glib_cflags=`$GLIB_CONFIG --cflags glib`
	glib_libs=`$GLIB_CONFIG --libs glib`
fi

dnl Checks for typedefs, structures, and compiler characteristics.

dnl Checks for library functions.
AC_TYPE_SIGNAL
AC_FUNC_VPRINTF
AC_CHECK_FUNCS(getopt_long)

dnl Checks for libraries.


if eval "test x$CURSES_LIB_NAME = x"
then
    AC_CHECK_HEADERS(curses.h ncurses.h)
224
    AC_CHECK_LIB(ncurses, tgetent, [CURSES_LIB="-lncurses" CURSES_LIB_NAME=ncurses])
Chris Allegretta's avatar
Chris Allegretta committed
225
226
227
228
fi

if eval "test x$CURSES_LIB_NAME = x"
then
229
    AC_CHECK_LIB(curses, tgetent, [CURSES_LIB="-lcurses" CURSES_LIB_NAME=curses])
Chris Allegretta's avatar
Chris Allegretta committed
230
231
fi

Chris Allegretta's avatar
Chris Allegretta committed
232
233
234
# Fallback for PDCurses and less useful curses libs...
if eval "test x$CURSES_LIB_NAME = x"
then
235
    AC_CHECK_LIB(curses, initscr, [CURSES_LIB="-lcurses" CURSES_LIB_NAME=curses])
Chris Allegretta's avatar
Chris Allegretta committed
236
237
fi

Chris Allegretta's avatar
Chris Allegretta committed
238
239
if eval "test x$CURSES_LIB_NAME = x"
then
240
    AC_CHECK_LIB(termcap, tgetent, [CURSES_LIB="-ltermcap" CURSES_LIB_NAME=termcap])
Chris Allegretta's avatar
Chris Allegretta committed
241
242
243
244
245
246
247
248
249
fi

if eval "test x$CURSES_LIB_NAME = x"
then
    AC_MSG_WARN([
*** No termcap lib available, consider getting the official ncurses
*** distribution from ftp://ftp.gnu.org/pub/gnu/ncurses if you get
*** errors compiling nano.])
else
250
    AC_MSG_RESULT([Using $CURSES_LIB_NAME as the termcap library])
Chris Allegretta's avatar
Chris Allegretta committed
251
252
253
fi


254
AC_CHECK_LIB([$CURSES_LIB_NAME], use_default_colors, [AC_DEFINE(HAVE_USE_DEFAULT_COLORS)])
255
if test x$slang_support != xyes; then
256
    AC_CHECK_LIB([$CURSES_LIB_NAME], wresize, [AC_DEFINE(HAVE_WRESIZE)])
257
    AC_CHECK_LIB([$CURSES_LIB_NAME], resizeterm, [AC_DEFINE(HAVE_RESIZETERM)])
Chris Allegretta's avatar
Chris Allegretta committed
258

259
    # Taken from aumix (can't tell form the variable name?)
260
    AC_CACHE_CHECK([for private member _use_keypad in WINDOW],
261
262
    aumix_cv_struct_window_usekeypad,
    [AC_TRY_COMPILE([#ifdef HAVE_NCURSES_H
263
264
265
266
#include <ncurses.h>
#else
#include <curses.h>
#endif], [WINDOW w; w._use_keypad;],
267
    aumix_cv_struct_window_usekeypad=yes, aumix_cv_struct_window_usekeypad=no)])
268
    
269
270
271
    if test $aumix_cv_struct_window_usekeypad = yes; then
	AC_DEFINE(HAVE_USEKEYPAD)
    fi
272
273
fi

Chris Allegretta's avatar
Chris Allegretta committed
274
275
276
dnl Parse any configure options

LIBS="$LIBS $CURSES_LIB"
Chris Allegretta's avatar
Chris Allegretta committed
277

Chris Allegretta's avatar
Chris Allegretta committed
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
AC_ARG_ENABLE(debug, [  --enable-debug          Enable debugging (def disabled)],)

AC_SUBST(CURSES_LIB)

if test "x$glib_cflags" != "x"
then
	CFLAGS="$CFLAGS $glib_cflags"
fi
if test "x$glib_libs" != "x"
then
	LDFLAGS="$LDFLAGS $glib_libs"
fi

dnl i18n stuff - pretty incomplete for now
AM_GNU_GETTEXT

AC_OUTPUT([Makefile intl/Makefile po/Makefile.in])