1 dnl *****************************************************************************
2 dnl FILE IDENTIFICATION
4 dnl Purpose: Top-level routines of CTSim program
5 dnl Programmer: Kevin Rosenberg
6 dnl Date Started: July 2000
8 dnl This is part of the CTSim program
9 dnl Copyright (c) 1983-2009 Kevin Rosenberg
11 dnl This program is free software; you can redistribute it and/or modify
12 dnl it under the terms of the GNU General Public License (version 2) as
13 dnl published by the Free Software Foundation.
15 dnl This program is distributed in the hope that it will be useful,
16 dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
17 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 dnl GNU General Public License for more details.
20 dnl You should have received a copy of the GNU General Public License
21 dnl along with this program; if not, write to the Free Software
22 dnl Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
23 dnl****************************************************************************/
25 dnl Process this file with autoconf to produce a configure script.
27 dnl Must reset CDPATH so that bash's cd does not print to stdout
31 AC_CONFIG_SRCDIR([src/ctsim.cpp])
33 AM_INIT_AUTOMAKE(ctsim,5.1.2)
34 AM_CONFIG_HEADER(config.h)
36 dnl Checks for programs.
46 AC_PATH_PROG(wxconfig,wx-config)
48 dnl Check for C operation
51 AC_CHECK_SIZEOF(short, 2)
52 AC_CHECK_SIZEOF(int, 4)
53 AC_CHECK_SIZEOF(long, 4)
54 AC_CHECK_SIZEOF(float, 4)
55 AC_CHECK_SIZEOF(double, 8)
57 dnl Add define templates
59 dnl Checks for libraries.
60 AC_CHECK_LIB(z, deflate, [ zlib="true" ], [ zlib="false" ; AC_MSG_WARN([zlib missing. Will need zlib for PNG support])])
62 AC_CHECK_LIB(curses, main, [curses=true], [curses=false])
63 AC_CHECK_LIB(ncurses, main, [ncurses=true], [ncurses=false])
64 AC_CHECK_LIB(readline, main, [readline=true;
65 AC_DEFINE([HAVE_READLINE],1,[Readline library])],
66 [readline=false], [-lcurses])
68 AC_CHECK_LIB(gtk-x11-2.0, main, [hasx11gtk2=true], [])
69 if test "x$hasx11gtk2" = "x" ; then
70 AC_MSG_NOTICE([Does not have X11 GTK2])
71 AC_DEFUN([AM_PATH_GLIB_2_0], [])
72 AC_DEFUN([AM_PATH_GTK_2_0], [])
74 if test "$hasx11gtk2" = "true" ; then
75 AM_PATH_GLIB_2_0(2.0.0,,AC_MSG_ERROR(You should get glib 2.0.0 or better.))
76 AM_PATH_GTK_2_0(2.0.0,havegtk_am=yes,havegtk_am=no)
77 CFLAGS="${CFLAGS} ${g76GTK_CFLAGS} ${GLIB_CFLAGS}"
80 AC_CHECK_LIB(wx_gtk2u_core-2.8, main, [wxwin=true; wx_gtk=true; AC_DEFINE(HAVE_WXWINDOWS,1,[wxwindows library])], [], [-L/usr/lib64 -L/usr/lib ${GTK_LIBS} ${GLIB_LIBS} ])
81 AC_CHECK_LIB(wx_mac_core-2.8, main, [wxwin=true; wx_mac=true; AC_DEFINE(HAVE_WXWINDOWS,1,[wxwindows library])])
82 AC_CHECK_LIB(fftw3, fftw_malloc, [fftw=true; AC_DEFINE(HAVE_FFTW,1,[FFTW library])], [fftw=false], [-L/usr/lib64 -L/usr/lib])
83 AC_CHECK_LIB(GL, main, [libgl=true], [libgl=false], [-L/usr/X11R6/lib -L/usr/X11R6/lib64])
84 AC_CHECK_LIB(pthread, main, [pthread=true], [pthread=false])
86 if test "$zlib" = "true" ; then
87 AC_CHECK_LIB(png, main, [png=true ; AC_DEFINE(HAVE_PNG,1,[PNG library])], [png=false], [-L/opt/local/lib -lz -lm])
90 dnl Checks for header files.
92 AC_CHECK_HEADERS(fcntl.h unistd.h getopt.h sys/fcntl.h setjmp.h stdarg.h stddef.h sys/types.h sys/stat.h string.h ctype.h math.h stdio.h netinet/in.h inttypes.h sys/param.h stdint.h stdlib.h assert.h sys/time.h sys/resource.h sys/time.h readline.h readline/readline.h)
94 dnl Checks for typedefs, structures, and compiler characteristics.
100 dnl Checks for library functions.
102 AC_CHECK_FUNCS(strtod strtol snprintf htonl usleep vsprintf vsnprintf basename setjmp setpriority time gettimeofday getenv)
103 AC_CHECK_FUNC(basename)
104 AC_CHECK_FUNC(setjmp)
105 AC_CHECK_FUNC(setpriority)
107 AC_CHECK_FUNC(gettimeofday)
108 AC_CHECK_FUNC(getopt, [ getopt=true ], [ getopt=false ])
110 if test "${OSTYPE}" = "cygwin" ; then
113 AC_CHECK_FUNC(getopt_long, [ getopt_long=true ], [ getopt_long=false ])
116 if test "${getopt_long}" = "false" ; then
117 my_includes="$my_includes -I../getopt"
118 AC_DEFINE(HAVE_GETOPT_LONG,1,[getopt_long library])
119 ctlibs_base="$ctlibs_base -lgetopt"
120 LDFLAGS="$LDFLAGS -L../getopt"
123 AM_CONDITIONAL(INCLUDED_GETOPT_LONG, test "$GETOPTLONG"="1")
125 if test "${readline}" = "true" ; then
126 ctlibs_base="$ctlibs_base -lreadline"
127 if test "${ncurses}" = "true"; then
128 ctlibs_base="$ctlibs_base -lncurses"
129 elif test "${curses}" = "true"; then
130 ctlibs_base="$ctlibs_base -lcurses"
134 dnl Check for debug mode
135 AC_MSG_CHECKING([debug])
137 [ --enable-debug Turn on debugging],
138 [case "${enableval}" in
145 *) AC_MSG_RESULT([bad value ${enableval} for --enable-debug])
148 [debug=false; AC_MSG_RESULT(no)])
149 AM_CONDITIONAL(DEBUG, test "$debug" = "true")
151 if test "$datadir" != "" ; then
152 CPPFLAGS="$CPPFLAGS -DDATADIR=\"\\\"$datadir\\\"\""
154 dnl CFLAGS="$CFLAGS -I/usr/local/include"
155 dnl LDFLAGS="$LDFLAGS -L/usr/local/lib"
157 if test "$debug" = "true" ; then
158 CFLAGS="$CFLAGS -g -O0 -DDEBUG"
159 AC_DEFINE(DEBUG,1,[turn on debugging])
161 CFLAGS="$CFLAGS -O2 -DNDEBUG -fomit-frame-pointer"
162 AC_DEFINE(NDEBUG,1,[no debugging])
165 if test "${pthread}" = "true" ; then
166 dnl CFLAGS="$CFLAGS -D_REENTRANT"
167 AC_DEFINE(HAVE_WXTHREADS,1,[have wxthreads library])
170 AC_MSG_CHECKING(sstream)
171 if [ test -f /usr/include/sstream || test -f /usr/include/g++/sstream ||
172 test -f /usr/include/g++-2/sstream || test -f /usr/include/g++-3/sstream ||
173 test -f /usr/include/gcc/darwin/3.1/g++-v3/sstream ]; then
174 AC_DEFINE(HAVE_SSTREAM,1,[sstream header])
181 CFLAGS="$CFLAGS -Wall"
182 AC_MSG_CHECKING(whether to enable verbose warnings)
183 AC_ARG_ENABLE(verbose-warnings,
184 [ --enable-verbose-warnings
185 Enable verbose compiler warnings.],
186 [ case "$enableval" in
189 CFLAGS="$CFLAGS -W -Wshadow -Wpointer-arith -Wbad-function-cast -Wcast-align -Wwrite-strings -Waggregate-return -Wmissing-prototypes -Wstrict-prototypes -pedantic -Wredundant-decls"
194 esac ], AC_MSG_RESULT(no)
197 AC_MSG_CHECKING(static executables)
198 AC_ARG_ENABLE(static,
200 Enable static executables.],
201 [ case "$enableval" in
204 CFLAGS="$CFLAGS --static"
209 esac ], AC_MSG_RESULT(no)
214 [ --with-lam[=PATH] Set path of LAM MPI ],
215 [ if test "$withval" != "no" ; then
220 if test "$withval" != "no" ; then
221 if test "$prefix" != "NONE" ; then
222 trylamdir="$trylamdir $prefix"
225 AC_MSG_CHECKING([for LAM MPI installation])
226 for testlamdir in "." $trylamdir /usr/local /usr/local/lam /usr /usr/lam /opt /opt/lam ; do
227 if test -x "$testlamdir/bin/hcp" ; then
228 if test "$testlamdir" != "/usr"; then
229 LDFLAGS="$LDFLAGS -L$testlamdir/lib"
230 CFLAGS="$CFLAGS -I$testlamdir/include"
232 CFLAGS="$CFLAGS -I$testlamdir/include/mpi2c++"
240 AC_MSG_RESULT($lamdir)
248 [ --with-ctn[=PATH] Set path of CTN DICOM library ],
249 [ if test "$withval" != "no" ; then
254 if test "$withval" == "no" -o "$withval" == "NONE" ; then
255 AC_MSG_CHECKING([for CTN DICOM installation])
256 AC_MSG_RESULT([disabled])
258 AC_MSG_CHECKING([for CTN DICOM installation])
259 for testctndir in $tryctndir/lib /usr/local/lib /usr/local/ctn/lib /usr/lib /usr/ctn/lib /usr/lib/ctn /opt/ctn/lib ; do
260 if test -f "$testctndir/libctn.a" ; then
261 LDFLAGS="$LDFLAGS -L$testctndir"
266 for testctndir in $tryctndir/include /usr/local/include /usr/local/ctn/include /usr/include /usr/include/ctn /usr/ctn/include /opt/ctn/include ; do
267 if test -f "$testctndir/ctn_os.h" ; then
268 CFLAGS="$CFLAGS -I$testctndir"
273 if test "$ctnlib" == "true" -a "$ctninclude" == "true" ; then
275 AC_DEFINE(HAVE_CTN_DICOM,1,[ctn dicom library])
283 AC_MSG_CHECKING([for CPU specification])
285 [ --with-mcpu[=CPU] Set name of CPU for gcc -mcpu])
287 if test "$withval" == "no" -o "$withval" == "yes" -o "$withval" == ""; then
290 AC_MSG_RESULT([$withval])
291 CFLAGS="$CFLAGS -mcpu=$withval"
294 AC_MSG_CHECKING([for web access])
295 dnl Set cgi-bin directory
296 AC_ARG_WITH(cgibin-dir, [ --with-cgibin-dir=PATH Set path of CGI binaries directory ],
297 [ cgibindir=$withval ; AC_SUBST(cgibindir) ] )
299 AC_ARG_WITH(cgibin-url, [ --with-cgibin-url=PATH Set URL path of CGI binaries ],
300 [ cgibinurl=$withval ; AC_SUBST(cgibinurl) ] )
302 AC_ARG_WITH(webdata-dir, [ --with-webdata-dir=PATH Set path of webdata],
303 [ webdatadir=$withval ; AC_SUBST(webdatadir) ] )
305 AC_ARG_WITH(webdata-url, [ --with-webdata-url=PATH Set URL path of webdata],
306 [ webdataurl=$withval ; AC_SUBST(webdataurl) ] )
308 AC_ARG_WITH(html-dir, [ --with-html-dir=PATH Set directory of html files],
309 [ html_%dir=$withval ; AC_SUBST(htmldir) ] )
311 if test "x$cgibindir" != "x" -o "x$cgibinurl" != "x" ; then
312 cgiprograms="ctsim.cgi ctsim.conf"
313 AC_SUBST(cgiprograms)
316 if test "x$html_dir" = "x" ; then
317 htmldata=simulate.html
320 AM_CONDITIONAL(USE_HTML, test "x$html_dir" = "x")
322 if test "x$cgibindir" != "x" -o "x$cgibinurl" != "x" -o "x$webdatadir" != "x" -o "x$webdataurl" != "x" -o "x$html_dir" != "x" ; then
326 if test "x$cgibindir" = "x" ; then
327 AC_MSG_ERROR([--with-cgibin-dir not set for web access])
328 elif test "x$cgibinurl" = "x" ; then
329 AC_MSG_ERROR([--with-cgibin-url not set for web access])
330 elif test "x$webdatadir" = "x" ; then
331 AC_MSG_ERROR([--with-webdata-dir not set for web access])
332 elif test "x$webdataurl" = "x" ; then
333 AC_MSG_ERROR([--with-webdata-url not set for web access])
334 elif test "x$html_dir" = "x" ; then
335 AC_MSG_ERROR([--with-html-dir not set for web access])
341 AM_CONDITIONAL(USE_LAM, test "x$lamdir" != "x")
345 dnl Following five are concatenated together into a linker specification.
347 AC_SUBST(X_TOOLKIT_LIBS)
349 AC_SUBST(X_BASIC_LIBS)
350 AC_SUBST(X_EXTRA_LIBS)
352 dnl Our Makefile.am files test the automake variable NO_X to determine
353 dnl whether X should be supported.
354 AM_CONDITIONAL(NO_X, test "x$with_x" = "xno")
356 my_includes="$my_includes -I../include -I.. -I/usr/local/include"
357 AC_SUBST(my_includes)
359 LDFLAGS="$LDFLAGS -L/usr/local/lib"
361 AC_MSG_CHECKING([for X])
362 if test "$with_x" != "no" && test "$wxwin" = "true"; then
363 AC_DEFINE(HAVE_X11,1,[X11 system])
364 LDFLAGS="$LDFLAGS -L../libctgraphics -L/usr/X11R6/lib -L/usr/X11R6/lib64"
365 my_includes="$my_includes -I/usr/X11R6/include"
366 ctlib_graphics="$ctlibs_base -lctgraphics"
368 ctlib_graphics="$ctlib_graphics $X_BASIC_LIBS $X_TOOLKIT_LIBS"
369 if test "$libgl" = "true" ; then
370 # Removed "-lglut" for Mac OS X compilation
371 ctlib_graphics="$ctlib_graphics -lGL -lGLU"
372 if test "$wxwin" = "true" ; then
374 if test "$debug" = "true"; then
377 if test "x$wx_gtk" != "x" ; then
378 ctlib_graphics="$ctlib_graphics `$wxconfig $wxdebug --version=2.8 --libs std,gl` ${GTK_LIBS} ${GLIB_LIBS}"
379 elif test "x$wx_mac" != "x" ; then
380 ctlib_graphics="$ctlib_graphics `$wxconfig $wxdebug --version=2.8 --libs std,gl`"
384 if test "$wxwin" = "true" ; then
385 AC_DEFINE(HAVE_SGP,1,[use sgp library])
391 AM_CONDITIONAL(HAVE_SGP, test "$wxwin" = "true")
393 if test "$png" = "true" ; then
394 ctlibs_tools="$ctlibs_tools -lpng"
396 if test "$zlib" = "true" ; then
397 ctlibs_tools="$ctlibs_tools -lz"
399 if test "$fftw" = "true" ; then
400 ctlibs_tools="$ctlibs_tools -lfftw3"
402 if test "$ctn" = "true"; then
403 ctlibs_tools="$ctlibs_tools -lctn"
406 dnl Check for dmalloc
407 AC_CHECK_LIB(dmallocxx, main, [dmallocxx=true], [dmallocxx=false])
408 AC_MSG_CHECKING([for enable-dmalloc])
409 AC_ARG_ENABLE(dmalloc,
410 [ --enable-dmalloc Use dmalloc memory allocation],
411 [case "${enableval}" in
418 *) AC_MSG_RESULT([bad value ${enableval} for --enable-dmalloc])
421 [usedmalloc=false; AC_MSG_RESULT(no)])
423 if test "$dmallocxx" = "true" -a "$usedmalloc" = "true" ; then
424 ctlibs_tools="$ctlibs_tools -ldmallocxx"
425 AC_DEFINE(HAVE_DMALLOC,1,[dmalloc library])
426 AC_MSG_RESULT(Using dmalloc)
430 AC_CHECK_LIB(efence, main, [efence=true], [efence=false])
431 AC_MSG_CHECKING([for enable-efence])
432 AC_ARG_ENABLE(efence,
433 [ --enable-efence Use ElectricFence memory allocation],
434 [case "${enableval}" in
441 *) AC_MSG_RESULT([bad value ${enableval} for --enable-efence])
444 [useefence=false; AC_MSG_RESULT(no)])
446 if test "$efence" = "true" -a "$useefence" = "true" ; then
447 ctlibs_tools="$ctlibs_tools -lefence"
448 AC_DEFINE(HAVE_EFENCE,1,[efence library])
449 AC_MSG_RESULT(Using efence)
452 if test "$wxwin" = "true" ; then
453 if test "$wx_gtk" = "true" -o "$wx_mac" = "true" ; then
454 wxcflags=`$wxconfig $wxdebug --cxxflags --version=2.8`
455 #wxlibs=`$wxconfig --libs`
457 wxcflags="-D__WXMSW__ -D__WIN32__ -D__GNUWIN32__"
458 wxlibs="-lwx -lglui -ljpeg -lxpm -lzlib -ltiff"
460 CFLAGS="$CFLAGS -I../include $wxcflags"
461 ctlib_graphics="$ctlib_graphics $wxlibs"
465 AM_CONDITIONAL(HAVE_WXWINDOWS, test "$wxwin"="true")
467 dnl Setting projet libraries and includes
468 LDFLAGS="$LDFLAGS -L../libctsupport -L../libctsim"
469 ctlibs="$ctlibs_base -lctsim $ctlib_graphics -lctsupport $ctlibs_tools"
472 if test "x$lamdir" != "x" ; then
473 lamprograms="ctsimtext-lam"
474 AC_SUBST(lamprograms)
481 AC_CONFIG_FILES([Makefile libctgraphics/Makefile libctsupport/Makefile libctsim/Makefile man/Makefile cgi-bin/ctsim.cgi cgi-bin/Makefile html/simulate.html html/Makefile include/Makefile getopt/Makefile tools/sample-ctsim.sh cgi-bin/ctsim.conf tools/Makefile src/Makefile helical/Makefile helical/sample-helical.sh])