source: libcaca/trunk/configure.ac @ 524

Last change on this file since 524 was 524, checked in by Sam Hocevar, 15 years ago

A new low-level text management library (canvas for ultrafast compositing

of unicode letters) is now separated from the higher level rendering and I/O
(that is, libcaca). This commit totally breaks the API, but once everything
is polished I will think about source-level backward compatibility. Most
drivers are broken, but X11 still sorta works.

The new design is much more object-oriented and allows having several

active renderers at the same time, changing renderers on the fly, and more
important, having no renderer at all (useful for converters, or when you
want to do your own renderer).

And in case you are still wondering, the libcucul acronym has "Unicode"

because I want to support at least a subset of Unicode. There are awesome
glyphs in it, including the ones inherited from Codepage 437 such as
"gray 25%" that are used in DOS and Win32 ANSI art.

  • Property svn:keywords set to Id
File size: 7.9 KB
Line 
1# $Id: configure.ac 524 2006-03-05 18:43:13Z sam $
2
3AC_INIT(src/caca.c)
4
5AC_PREREQ(2.50)
6AC_CONFIG_AUX_DIR(autotools)
7AC_CANONICAL_SYSTEM
8
9AM_INIT_AUTOMAKE(libcaca, 0.9)
10AM_CONFIG_HEADER(config.h)
11
12AM_PROG_CC_C_O
13AC_PROG_CPP
14
15AC_LIBTOOL_WIN32_DLL
16AM_PROG_LIBTOOL
17
18AC_C_CONST
19AC_C_INLINE
20AC_TYPE_SIGNAL
21
22dnl AC_PROG_EGREP only exists in autoconf 2.54+, so we use AC_EGREP_CPP right
23dnl now otherwise it might be set in an obscure if statement.
24AC_EGREP_CPP(foo, foo)
25
26dnl output driver features
27AC_ARG_ENABLE(slang,
28  [  --enable-slang          slang graphics support (autodetected)])
29AC_ARG_ENABLE(ncurses,
30  [  --enable-ncurses        ncurses graphics support (autodetected)])
31AC_ARG_ENABLE(win32,
32  [  --enable-win32          Windows console support (autodetected)])
33AC_ARG_ENABLE(conio,
34  [  --enable-conio          DOS conio.h graphics support (autodetected)])
35AC_ARG_ENABLE(x11,
36  [  --enable-x11            X11 support (autodetected)])
37AC_ARG_ENABLE(gl,
38  [  --enable-gl             OpenGL support (autodetected)])
39AC_ARG_ENABLE(null,
40  [  --enable-null           Null driver support (autodetected)])
41
42dnl example programs features
43AC_ARG_ENABLE(imlib2,
44  [  --enable-imlib2         Imlib2 graphics support (default enabled)])
45
46dnl conditional builds
47AC_ARG_ENABLE(doc,
48  [  --enable-doc            build documentation (needs doxygen and LaTeX)])
49
50AC_CHECK_HEADERS(signal.h sys/ioctl.h sys/time.h inttypes.h endian.h unistd.h)
51AC_CHECK_FUNCS(signal ioctl vsnprintf getenv putenv strcasecmp)
52AC_CHECK_FUNCS(usleep gettimeofday)
53
54AC_MSG_CHECKING(for Sleep)
55AC_TRY_COMPILE([#include <windows.h>],[Sleep(42);],
56 [AC_MSG_RESULT(yes)
57  AC_DEFINE(HAVE_SLEEP, 1, [Define if you have Windows' Sleep])],
58 [AC_MSG_RESULT(no)])
59AC_CHECK_LIB(m, sin, MATH_LIBS="${MATH_LIBS} -lm")
60
61CACA_DRIVERS=""
62
63if test "${enable_conio}" != "no"; then
64  ac_cv_my_have_conio="no"
65  AC_CHECK_HEADERS(conio.h,
66   [AC_MSG_CHECKING(for ScreenUpdate in pc.h)
67    AC_EGREP_HEADER(ScreenUpdate, pc.h,
68     [ac_cv_my_have_conio="yes"
69      AC_MSG_RESULT(yes)
70      AC_DEFINE(SCREENUPDATE_IN_PC_H, 1,
71                Define if <pc.h> defines ScreenUpdate.)
72      AC_DEFINE(USE_CONIO, 1, Define to activate the conio.h backend driver)
73      CACA_DRIVERS="${CACA_DRIVERS} conio"],
74     [AC_MSG_RESULT(no)])])
75  if test "${ac_cv_my_have_conio}" = "no" -a "${enable_conio}" = "yes"; then
76    AC_MSG_ERROR([cannot find conio.h])
77  fi
78fi
79
80if test "${enable_win32}" != "no"; then
81  ac_cv_my_have_win32="no"
82  AC_CHECK_HEADERS(windows.h,
83   [AC_MSG_CHECKING(for AllocConsole in windows.h)
84    AC_EGREP_HEADER(AllocConsole, windows.h,
85     [ac_cv_my_have_win32="yes"
86      AC_MSG_RESULT(yes)
87      AC_DEFINE(ALLOCCONSOLE_IN_WINDOWS_H, 1,
88                Define if <windows.h> defines AllocConsole.)
89      AC_DEFINE(USE_WIN32, 1, Define to activate the win32 backend driver)
90      CACA_DRIVERS="${CACA_DRIVERS} win32"],
91     [AC_MSG_RESULT(no)])])
92  if test "${ac_cv_my_have_win32}" = "no" -a "${enable_win32}" = "yes"; then
93    AC_MSG_ERROR([cannot find win32 console development files])
94  fi
95fi
96
97if test "${enable_slang}" != "no"; then
98  ac_cv_my_have_slang="no"
99  AC_CHECK_HEADERS(slang.h slang/slang.h,
100   [AC_CHECK_LIB(slang, SLkp_init,
101     [ac_cv_my_have_slang="yes"
102      AC_DEFINE(USE_SLANG, 1, Define to activate the slang backend driver)
103      CPPFLAGS="${CPPFLAGS} -DOPTIMISE_SLANG_PALETTE=1"
104      CACA_LIBS="${CACA_LIBS} -lslang"
105      CACA_DRIVERS="${CACA_DRIVERS} slang"])])
106  if test "${ac_cv_my_have_slang}" = "no" -a "${enable_slang}" = "yes"; then
107    AC_MSG_ERROR([cannot find slang development files])
108  fi
109fi
110
111if test "${enable_x11}" != "no"; then
112  AC_PATH_X
113  AC_CHECK_LIB(X11, XOpenDisplay,
114   [ac_cv_my_have_x11="yes"
115    if test -n "${x_includes}"; then X_CFLAGS="-I${x_includes}"; fi
116    if test -n "${x_libraries}"; then X_LIBS="-lX11 -L${x_libraries}"; fi
117    AC_DEFINE(USE_X11, 1, Define to activate the X11 backend driver)
118    CPPFLAGS="${CPPFLAGS} ${X_CFLAGS}"
119    CACA_LIBS="${CACA_LIBS} ${X_LIBS}"
120    CACA_DRIVERS="${CACA_DRIVERS} x11"],
121   [ac_cv_my_have_x11="no"],
122   [[-lXt -L${x_libraries}]])
123  AC_CHECK_HEADERS(X11/XKBlib.h)
124  if test "${ac_cv_my_have_x11}" != "yes" -a "${enable_x11}" = "yes"; then
125    AC_MSG_ERROR([cannot find X11 development files])
126  fi
127fi
128
129if test "${enable_gl}" != "no"; then
130  ac_cv_my_have_gl="no"
131  AC_CHECK_HEADERS(GL/gl.h GL/glut.h,
132   [AC_CHECK_LIB(glut, glutMainLoopEvent,
133     [ac_cv_my_have_gl="yes"
134      AC_DEFINE(USE_GL, 1, Define to activate the OpenGL backend driver)
135      CACA_LIBS="${CACA_LIBS} -lGL -lglut"
136      CACA_DRIVERS="${CACA_DRIVERS} gl"])])
137  if test "${ac_cv_my_have_gl}" = "no" -a "${enable_gl}" = "yes"; then
138    AC_MSG_ERROR([cannot find OpenGL+FreeGLUT development files])
139  fi
140fi
141
142if test "${enable_null}" != "no"; then
143  ac_cv_my_have_null="yes"
144  AC_DEFINE(USE_NULL, 1, Define to activate the Null backend driver)
145  CACA_DRIVERS="${CACA_DRIVERS} null"
146fi
147
148if test "${enable_ncurses}" != "no"; then
149  ac_cv_my_have_ncurses="no"
150  AC_CHECK_HEADERS(curses.h ncurses.h,
151   [AC_CHECK_LIB(ncurses, initscr,
152     [ac_cv_my_have_ncurses="yes"
153      AC_DEFINE(USE_NCURSES, 1, Define to activate the ncurses backend driver)
154      CACA_LIBS="${CACA_LIBS} -lncurses"
155      CACA_DRIVERS="${CACA_DRIVERS} ncurses"
156      dnl  Check for resizeterm or resize_term
157      SAVED_LIBS="${LIBS}"
158      LIBS="${LIBS} -lncurses"
159      AC_CHECK_FUNCS(resizeterm resize_term)
160      LIBS="${SAVED_LIBS}"])])
161  if test "${ac_cv_my_have_ncurses}" = "no" -a "${enable_ncurses}" = "yes"; then
162    AC_MSG_ERROR([cannot find ncurses development files])
163  fi
164fi
165
166AC_MSG_CHECKING(valid output drivers)
167if test -z "${CACA_DRIVERS}"; then
168  AC_MSG_RESULT(no)
169  AC_MSG_ERROR([no output drivers were selected!])
170else
171  AC_MSG_RESULT([${CACA_DRIVERS}])
172fi
173
174AC_SUBST(MATH_LIBS)
175AC_SUBST(CACA_LIBS)
176AC_SUBST(CUCUL_LIBS)
177
178# Optimizations
179CFLAGS="${CFLAGS} -g -O2 -fno-strength-reduce -fomit-frame-pointer"
180# Code qui fait des warnings == code de porc == deux baffes dans ta gueule
181# [Jylam] Removed -Wshadow in order to avoid ncurses/gl conflict
182# (Comme quoi on est pas les seuls porcs)
183CFLAGS="${CFLAGS} -Wall -Wpointer-arith -Wcast-align -Wcast-qual -Wstrict-prototypes -Waggregate-return -Wmissing-prototypes -Wnested-externs -Wsign-compare"
184
185# Build the PIC library?
186case "${target_os}" in
187  *mingw32* | *cygwin* | *djgpp*)
188    NEED_PIC=false
189    ;;
190  *)
191    NEED_PIC=:
192    ;;
193esac
194AM_CONDITIONAL(NEED_PIC, ${NEED_PIC})
195
196# Use Imlib2?
197ac_cv_my_have_imlib2="no"
198save_CPPFLAGS="${CPPFLAGS}"
199if test "${enable_imlib2}" != "no"; then
200  AC_PATH_PROG(IMLIB2_CONFIG, imlib2-config, no)
201  if test "${IMLIB2_CONFIG}" != "no"; then
202    CPPFLAGS="${CPPFLAGS} `imlib2-config --cflags` -DX_DISPLAY_MISSING=1"
203  fi
204  AC_CHECK_HEADERS(Imlib2.h,
205    ac_cv_my_have_imlib2="yes",
206   [ac_cv_my_have_imlib2="no"
207    AC_MSG_ERROR([[cannot find Imlib2 development files. Without Imlib2, cacaview will only open BMP files; if this is really what you want, re-run configure with '--disable-imlib2'.]])])
208  CPPFLAGS="${save_CPPFLAGS}"
209fi
210AM_CONDITIONAL(USE_IMLIB2, test "${ac_cv_my_have_imlib2}" = "yes")
211
212# Build documentation?
213DOXYGEN="no"
214LATEX="no"
215if test "${enable_doc}" != "no"; then
216  AC_PATH_PROG(DOXYGEN, doxygen, no)
217  if test "${DOXYGEN}" = "no"; then
218    AC_MSG_ERROR([[cannot find doxygen, which is needed to build the libcaca documentation; if this is really what you want, re-run configure with '--disable-doc'.]])
219  fi
220
221  # Build LaTeX documentation?
222  AC_PATH_PROG(LATEX, latex, no)
223  AC_PATH_PROG(DVIPS, dvips, no)
224  if test "${DVIPS}" = "no"; then
225    LATEX="no"
226  fi
227  AC_MSG_CHECKING(for a4wide.sty)
228  if test -f /usr/share/texmf/tex/latex/misc/a4wide.sty; then
229    AC_MSG_RESULT(yes)
230  else
231    LATEX="no"
232    AC_MSG_RESULT(no)
233  fi
234fi
235AM_CONDITIONAL(BUILD_DOCUMENTATION, test "${DOXYGEN}" != "no")
236AM_CONDITIONAL(USE_LATEX, test "${LATEX}" != "no")
237
238AC_CONFIG_FILES([
239  Makefile
240  src/Makefile
241  examples/Makefile
242  test/Makefile
243  doc/Makefile
244  doc/doxygen.cfg
245  autotools/Makefile
246  debian/Makefile
247  msvc/Makefile
248])
249AC_CONFIG_FILES([caca-config], [chmod 0755 caca-config])
250AC_OUTPUT
251
Note: See TracBrowser for help on using the repository browser.