Initial revision
[gpiv.git] / macros / curses.m4
blob3dd4ffaa4c5dce921fcdb04d13469145dfb122bc
1 dnl Curses detection: Munged from Midnight Commander's configure.in
2 dnl
3 dnl What it does:
4 dnl =============
5 dnl
6 dnl - Determine which version of curses is installed on your system
7 dnl   and set the -I/-L/-l compiler entries and add a few preprocessor
8 dnl   symbols 
9 dnl - Do an AC_SUBST on the CURSES_INCLUDEDIR and CURSES_LIBS so that
10 dnl   @CURSES_INCLUDEDIR@ and @CURSES_LIBS@ will be available in
11 dnl   Makefile.in's
12 dnl - Modify the following configure variables (these are the only
13 dnl   curses.m4 variables you can access from within configure.in)
14 dnl   CURSES_INCLUDEDIR - contains -I's and possibly -DRENAMED_CURSES if
15 dnl                       an ncurses.h that's been renamed to curses.h
16 dnl                       is found.
17 dnl   CURSES_LIBS       - sets -L and -l's appropriately
18 dnl   CFLAGS            - if --with-sco, add -D_SVID3 
19 dnl   has_curses        - exports result of tests to rest of configure
20 dnl
21 dnl Usage:
22 dnl ======
23 dnl 1) Add lines indicated below to acconfig.h
24 dnl 2) call AC_CHECK_CURSES after AC_PROG_CC in your configure.in
25 dnl 3) Instead of #include <curses.h> you should use the following to
26 dnl    properly locate ncurses or curses header file
27 dnl
28 dnl    #if defined(USE_NCURSES) && !defined(RENAMED_NCURSES)
29 dnl    #include <ncurses.h>
30 dnl    #else
31 dnl    #include <curses.h>
32 dnl    #endif
33 dnl
34 dnl 4) Make sure to add @CURSES_INCLUDEDIR@ to your preprocessor flags
35 dnl 5) Make sure to add @CURSES_LIBS@ to your linker flags or LIBS
36 dnl
37 dnl Notes with automake:
38 dnl - call AM_CONDITIONAL(HAS_CURSES, test "$has_curses" = true) from
39 dnl   configure.in
40 dnl - your Makefile.am can look something like this
41 dnl   -----------------------------------------------
42 dnl   INCLUDES= blah blah blah $(CURSES_INCLUDEDIR) 
43 dnl   if HAS_CURSES
44 dnl   CURSES_TARGETS=name_of_curses_prog
45 dnl   endif
46 dnl   bin_PROGRAMS = other_programs $(CURSES_TARGETS)
47 dnl   other_programs_SOURCES = blah blah blah
48 dnl   name_of_curses_prog_SOURCES = blah blah blah
49 dnl   other_programs_LDADD = blah
50 dnl   name_of_curses_prog_LDADD = blah $(CURSES_LIBS)
51 dnl   -----------------------------------------------
52 dnl
53 dnl
54 dnl The following lines should be added to acconfig.h:
55 dnl ==================================================
56 dnl
57 dnl /*=== Curses version detection defines ===*/
58 dnl /* Found some version of curses that we're going to use */
59 dnl #undef HAS_CURSES
60 dnl    
61 dnl /* Use SunOS SysV curses? */
62 dnl #undef USE_SUNOS_CURSES
63 dnl 
64 dnl /* Use old BSD curses - not used right now */
65 dnl #undef USE_BSD_CURSES
66 dnl 
67 dnl /* Use SystemV curses? */
68 dnl #undef USE_SYSV_CURSES
69 dnl 
70 dnl /* Use Ncurses? */
71 dnl #undef USE_NCURSES
72 dnl 
73 dnl /* If you Curses does not have color define this one */
74 dnl #undef NO_COLOR_CURSES
75 dnl 
76 dnl /* Define if you want to turn on SCO-specific code */
77 dnl #undef SCO_FLAVOR
78 dnl 
79 dnl /* Set to reflect version of ncurses *
80 dnl  *   0 = version 1.*
81 dnl  *   1 = version 1.9.9g
82 dnl  *   2 = version 4.0/4.1 */
83 dnl #undef NCURSES_970530
84 dnl
85 dnl /*=== End new stuff for acconfig.h ===*/
86 dnl 
89 AC_DEFUN(AC_CHECK_CURSES,[
90         search_ncurses=true
91         screen_manager=""
92         has_curses=false
94         CFLAGS=${CFLAGS--O}
96         AC_SUBST(CURSES_LIBS)
97         AC_SUBST(CURSES_INCLUDEDIR)
99         AC_ARG_WITH(sco,
100           [  --with-sco              Use this to turn on SCO-specific code],[
101           if test x$withval = xyes; then
102                 AC_DEFINE(SCO_FLAVOR)
103                 CFLAGS="$CFLAGS -D_SVID3"
104           fi
105         ])
107         AC_ARG_WITH(sunos-curses,
108           [  --with-sunos-curses     Used to force SunOS 4.x curses],[
109           if test x$withval = xyes; then
110                 AC_USE_SUNOS_CURSES
111           fi
112         ])
114         AC_ARG_WITH(osf1-curses,
115           [  --with-osf1-curses      Used to force OSF/1 curses],[
116           if test x$withval = xyes; then
117                 AC_USE_OSF1_CURSES
118           fi
119         ])
121         AC_ARG_WITH(vcurses,
122           [  --with-vcurses[=incdir] Used to force SysV curses],
123           if test x$withval != xyes; then
124                 CURSES_INCLUDEDIR="-I$withval"
125           fi
126           AC_USE_SYSV_CURSES
127         )
129         AC_ARG_WITH(ncurses,
130           [  --with-ncurses[=dir]  Compile with ncurses/locate base dir],
131           if test x$withval = xno ; then
132                 search_ncurses=false
133           elif test x$withval != xyes ; then
134                 CURSES_LIBS="$LIBS -L$withval/lib -lncurses"
135                 CURSES_INCLUDEDIR="-I$withval/include"
136                 search_ncurses=false
137                 screen_manager="ncurses"
138                 AC_DEFINE(USE_NCURSES)
139                 AC_DEFINE(HAS_CURSES)
140                 has_curses=true
141           fi
142         )
144         if $search_ncurses
145         then
146                 AC_SEARCH_NCURSES()
147         fi
153 AC_DEFUN(AC_USE_SUNOS_CURSES, [
154         search_ncurses=false
155         screen_manager="SunOS 4.x /usr/5include curses"
156         AC_MSG_RESULT(Using SunOS 4.x /usr/5include curses)
157         AC_DEFINE(USE_SUNOS_CURSES)
158         AC_DEFINE(HAS_CURSES)
159         has_curses=true
160         AC_DEFINE(NO_COLOR_CURSES)
161         AC_DEFINE(USE_SYSV_CURSES)
162         CURSES_INCLUDEDIR="-I/usr/5include"
163         CURSES_LIBS="/usr/5lib/libcurses.a /usr/5lib/libtermcap.a"
164         AC_MSG_RESULT(Please note that some screen refreshs may fail)
167 AC_DEFUN(AC_USE_OSF1_CURSES, [
168        AC_MSG_RESULT(Using OSF1 curses)
169        search_ncurses=false
170        screen_manager="OSF1 curses"
171        AC_DEFINE(HAS_CURSES)
172        has_curses=true
173        AC_DEFINE(NO_COLOR_CURSES)
174        AC_DEFINE(USE_SYSV_CURSES)
175        CURSES_LIBS="-lcurses"
178 AC_DEFUN(AC_USE_SYSV_CURSES, [
179         AC_MSG_RESULT(Using SysV curses)
180         AC_DEFINE(HAS_CURSES)
181         has_curses=true
182         AC_DEFINE(USE_SYSV_CURSES)
183         search_ncurses=false
184         screen_manager="SysV/curses"
185         CURSES_LIBS="-lcurses"
188 dnl AC_ARG_WITH(bsd-curses,
189 dnl [--with-bsd-curses         Used to compile with bsd curses, not very fancy],
190 dnl     search_ncurses=false
191 dnl     screen_manager="Ultrix/cursesX"
192 dnl     if test $system = ULTRIX
193 dnl     then
194 dnl         THIS_CURSES=cursesX
195 dnl        else
196 dnl         THIS_CURSES=curses
197 dnl     fi
199 dnl     CURSES_LIBS="-l$THIS_CURSES -ltermcap"
200 dnl     AC_DEFINE(HAS_CURSES)
201 dnl     has_curses=true
202 dnl     AC_DEFINE(USE_BSD_CURSES)
203 dnl     AC_MSG_RESULT(Please note that some screen refreshs may fail)
204 dnl     AC_WARN(Use of the bsdcurses extension has some)
205 dnl     AC_WARN(display/input problems.)
206 dnl     AC_WARN(Reconsider using xcurses)
207 dnl)
209         
211 dnl Parameters: directory filename cureses_LIBS curses_INCLUDEDIR nicename
213 AC_DEFUN(AC_NCURSES, [
214     if $search_ncurses
215     then
216         if test -f $1/$2
217         then
218             AC_MSG_RESULT(Found ncurses on $1/$2)
219             CURSES_LIBS="$3"
220             CURSES_INCLUDEDIR="$4"
221             search_ncurses=false
222             screen_manager=$5
223             AC_DEFINE(HAS_CURSES)
224             has_curses=true
225             AC_DEFINE(USE_NCURSES)
226         fi
227     fi
230 AC_DEFUN(AC_SEARCH_NCURSES, [
231     AC_CHECKING("location of ncurses.h file")
233     AC_NCURSES(/usr/include, ncurses.h, -lncurses,, "ncurses on /usr/include")
234     AC_NCURSES(/usr/include/ncurses, ncurses.h, -lncurses, -I/usr/include/ncurses, "ncurses on /usr/include/ncurses")
235     AC_NCURSES(/usr/local/include, ncurses.h, -L/usr/local/lib -lncurses, -I/usr/local/include, "ncurses on /usr/local")
236     AC_NCURSES(/usr/local/include/ncurses, ncurses.h, -L/usr/local/lib -L/usr/local/lib/ncurses -lncurses, -I/usr/local/include/ncurses, "ncurses on /usr/local/include/ncurses")
238     AC_NCURSES(/usr/local/include/ncurses, curses.h, -L/usr/local/lib -lncurses, -I/usr/local/include/ncurses -DRENAMED_NCURSES, "renamed ncurses on /usr/local/.../ncurses")
240     AC_NCURSES(/usr/include/ncurses, curses.h, -lncurses, -I/usr/include/ncurses -DRENAMED_NCURSES, "renamed ncurses on /usr/include/ncurses")
242     dnl
243     dnl We couldn't find ncurses, try SysV curses
244     dnl
245     if $search_ncurses 
246     then
247         AC_EGREP_HEADER(init_color, /usr/include/curses.h,
248             AC_USE_SYSV_CURSES)
249         AC_EGREP_CPP(USE_NCURSES,[
250 #include <curses.h>
251 #ifdef __NCURSES_H
252 #undef USE_NCURSES
253 USE_NCURSES
254 #endif
256         CURSES_INCLUDEDIR="$CURSES_INCLUDEDIR -DRENAMED_NCURSES"
257         AC_DEFINE(HAS_CURSES)
258         has_curses=true
259         AC_DEFINE(USE_NCURSES)
260         search_ncurses=false
261         screen_manager="ncurses installed as curses"
263     fi
265     dnl
266     dnl Try SunOS 4.x /usr/5{lib,include} ncurses
267     dnl The flags USE_SUNOS_CURSES, USE_BSD_CURSES and BUGGY_CURSES
268     dnl should be replaced by a more fine grained selection routine
269     dnl
270     if $search_ncurses
271     then
272         if test -f /usr/5include/curses.h
273         then
274             AC_USE_SUNOS_CURSES
275         fi
276     else
277         # check for ncurses version, to properly ifdef mouse-fix
278         AC_MSG_CHECKING(for ncurses version)
279         ncurses_version=unknown
280 cat > conftest.$ac_ext <<EOF
281 [#]line __oline__ "configure"
282 #include "confdefs.h"
283 #ifdef RENAMED_NCURSES
284 #include <curses.h>
285 #else
286 #include <ncurses.h>
287 #endif
288 #undef VERSION
289 VERSION:NCURSES_VERSION
291         if (eval "$ac_cpp conftest.$ac_ext") 2>&AC_FD_CC |
292   egrep "VERSION:" >conftest.out 2>&1; then
293 changequote(,)dnl
294             ncurses_version=`cat conftest.out|sed -e 's/^[^"]*"//' -e 's/".*//'`
295 changequote([,])dnl
296         fi
297         rm -rf conftest*
298         AC_MSG_RESULT($ncurses_version)
299         case "$ncurses_version" in
300 changequote(,)dnl
301         4.[01])
302 changequote([,])dnl
303             AC_DEFINE(NCURSES_970530,2)
304             ;;
305         1.9.9g)
306             AC_DEFINE(NCURSES_970530,1)
307             ;;
308         1*)
309             AC_DEFINE(NCURSES_970530,0)
310             ;;
311         esac
312     fi