dnl Process this file with autoconf to produce a configure script. AC_INIT(src/main.c) dnl Create a configuration header AM_CONFIG_HEADER(config.h) dnl Initialize automake stuff AM_INIT_AUTOMAKE(ng-spice-rework,14) dnl --enable-ansi : try to force --ansi option to the compiler AC_ARG_ENABLE(ansi, [ --enable-ansi Force --ansi option for compilation]) dnl --disable-debug : remove -g and -Wall option to the compiler AC_ARG_ENABLE(debug, [ --enable-debug Add -g option for compilation (default)]) dnl --enable-checker : add --with-checker-debug option to the compiler AC_ARG_ENABLE(checker, [ --enable-checkergcc Option for compilation with checkergcc]) dnl --enable-bypass : define BYPASS for the code AC_ARG_ENABLE(nobypass, [ --enable-nobypass Don't bypass recalculations of slowly changing variables]) dnl --enable-predictor : define PREDICTOR for the code AC_ARG_ENABLE(predictor, [ --enable-predictor Enables a predictor method for convergence]) dnl --enable-sense2 : define HAVE_SENSE2 for the code AC_ARG_ENABLE(sense2, [ --enable-sense2 Use spice2 sensitivity analysis]) dnl --enable-intnoise : define INT_NOISE for the code AC_ARG_ENABLE(intnoise, [ --enable-intnoise Enables noise integration in noise analysis]) dnl --enable-smoketest : a smoketest AC_ARG_ENABLE(smoketest, [ --enable-smoketest Enables smoketest compile]) dnl --enable-experimental : define EXPERIMENTAL_CODE for the code AC_ARG_ENABLE(experimental, [ --enable-experimental Enables some experimental code]) dnl --have-ekv: define HAVE_EKV in the code. This is for EKV model support AC_ARG_ENABLE(ekv, [ --enable-ekv Enable ekv model *not in standard distribution*]) dnl Enable maintainer commands only if requested AM_MAINTAINER_MODE dnl Work on compiler options according to system: dnl Set default CFLAG - only use -Wall if we have gcc AC_PROG_CC if test "x$GCC" = "xyes"; then CFLAGS="$CFLAGS -Wall " fi if test "$enable_debug" = "no"; then AC_MSG_WARN(Removing debugging option!) CFLAGS=" " fi dnl Not sure that this will work.... if test "$with_checkergcc" = "yes"; then CC="checkergcc" fi dnl Checks for ANSI-C header files. AC_HEADER_STDC if test "$enable_ansi" = "yes"; then AM_PROG_CC_STDC if test ! "$am_cv_prog_cc_stdc"="yes"; then AC_MSG_WARN(Failed to find Ansi flag!) fi fi if test "$enable_smoketest" = "yes"; then dnl CFLAGS="$CFLAGS -Werror" CFLAGS="$CFLAGS -pedantic -W -Wmissing-prototypes" CFLAGS="$CFLAGS -Wstrict-prototypes -Wtraditional" CFLAGS="$CFLAGS -Wconversion -Wshadow -Wpointer-arith" CFLAGS="$CFLAGS -Wcast-qual -Wcast-align -Wwrite-strings" CFLAGS="$CFLAGS -Waggregate-return -fshort-enums -fno-common" CFLAGS="$CFLAGS -Wnested-externs -Dinline= -g -O4" fi dnl Chech system we're on , and tune accordingly AC_CANONICAL_HOST dnl Checks for programs AC_LIBTOOL_DLOPEN AM_PROG_LIBTOOL dnl Checks for X11 header files and libraries - X11 support can be disabled dnl by passing the '--without-x' option to configure: AC_PATH_X AC_PATH_XTRA dnl Checks for X libraries - if X11 wasn't found then don't make following dnl tests and compile without X11 support - otherwise, check if the following dnl libraries are present (error if they are not) if test ! "$no_x" = "yes" ; then X_LIBS="$X_LIBS -lX11 -lXt" AC_CHECK_LIB(Xext, XShmAttach,X_LIBS="$X_LIBS -lXext",AC_MSG_ERROR(Couldn't find Xext librairies), $X_LIBS $X_EXTRA_LIBS) AC_CHECK_LIB(Xaw,main,X_LIBS="$X_LIBS -lXaw",AC_MSG_ERROR(Couldn't find Xaw librairies),$X_LIBS $X_EXTRA_LIBS) AC_CHECK_LIB(Xmu,main,X_LIBS="$X_LIBS -lXmu",AC_MSG_ERROR(Couldn't find Xmu librairies), $X_LIBS $X_EXTRA_LIBS) fi dnl Check for a few typdefs: AC_TYPE_PID_T AC_TYPE_SIGNAL dnl Check for a few libraries and headers: dnl Look for ncurses first, then termcap AC_SEARCH_LIBS(tputs,ncurses termcap,AC_DEFINE(HAVE_TERMCAP), AC_MSG_ERROR(Found neither ncurses or termcap)) AC_HEADER_DIRENT AC_CHECK_HEADERS(ctype.h unistd.h pwd.h fcntl.h string.h) AC_HEADER_SYS_WAIT AC_HEADER_STAT dnl Check time and ressources headers and functions: AC_HEADER_TIME AC_STRUCT_TM AC_STRUCT_TIMEZONE AC_CHECK_FUNCS(localtime) AC_CHECK_FUNCS(gettimeofday time ftime , break) AC_CHECK_FUNCS(getrusage utimes, break) AC_CHECK_FUNCS(getrlimit ulimit, break) dnl Look for termios first (posix) AC_CHECK_HEADERS(termios.h termio.h sgtty.h , break) AC_CHECK_FUNCS(isatty) dnl Check for a few functions: AC_FUNC_VFORK AC_CHECK_FUNCS(access bcopy qsort dup2 popen) AC_CHECK_FUNCS(strchr index , break) AC_CHECK_FUNCS(getcwd getwd , break) AC_MSG_RESULT(Checking mathematical features of the system:) dnl Look for math library: AC_CHECK_LIB(m,sqrt) AC_CHECK_HEADERS(float.h limits.h values.h) dnl Check for a few mathematical functions: AC_CHECK_FUNCS(erfc logb scalb scalbn asinh acosh atanh) AC_MSG_RESULT(Checking for the presence of the Garbage Collector:) dnl Check for the garbage collector: AC_CHECK_LIB(gc,GC_malloc,AC_DEFINE(HAVE_LIBGC) LIBS="$LIBS -lgc") AC_MSG_RESULT(Checking for the asprintf function:) dnl Check for the asprintf function: AC_CHECK_FUNC(asprintf) AC_MSG_RESULT(Checking for getopt:) dnl Check for getopt function and if not found uses a local copy: AC_CHECK_FUNC(getopt, GETOPTSRC="", GETOPTSRC= "getopt.h getopt.c getopt1.c") AC_SUBST(GETOPTSRC) AC_MSG_RESULT(Checking for readline library:) dnl Check for the readline library AC_CHECK_LIB(readline, AC_DEFINE(HAVE_GNUREADLINE) LIBS="$LIBS -lreadline") # Expand the prefix variable (this is really annoying!) if eval "test x$prefix = xNONE"; then dprefix=$ac_default_prefix else dprefix=$prefix fi AC_DEFINE_UNQUOTED(NGSPICEBINDIR, "`echo $dprefix/bin`" ) AC_DEFINE_UNQUOTED(NGSPICEDATADIR, "`echo $dprefix/share/ng-spice-rework`" ) AC_DEFINE_UNQUOTED(NGSPICEBUILDDATE, "`date`" ) # Recapitulate settings: AC_MSG_RESULT(Settings which were chosen:) if test "$enable_sense2" = "yes"; then AC_DEFINE(WANT_SENSE2) AC_MSG_RESULT(Spice2 sensitivity analysis enabled) fi if test "$enable_nobypass" = "yes"; then AC_DEFINE(NOBYPASS) AC_MSG_RESULT(NOBYPASS option enabled) fi if test "$enable_predictor" = "yes"; then AC_DEFINE(PREDICTOR) AC_MSG_RESULT(PREDICTOR algorithm enabled) fi if test "$enable_intnoise" = "yes"; then AC_DEFINE(INT_NOISE) AC_MSG_RESULT(Noise integration enabled) fi if test "$enable_experimental" = "yes"; then AC_DEFINE(EXPERIMENTAL_CODE) AC_MSG_RESULT(EXPERIMENTAL_CODE enabled) fi if test "$enable_ekv" = "yes"; then AC_DEFINE(HAVE_EKV) AC_MSG_RESULT(Model EKV included) EKVDIR=ekv fi AC_OUTPUT( \ Makefile \ doc/Makefile \ man/Makefile \ man/man1/Makefile \ src/Makefile \ src/spicelib/Makefile \ src/spicelib/analysis/Makefile \ src/spicelib/devices/Makefile \ src/spicelib/devices/asrc/Makefile \ src/spicelib/devices/bjt/Makefile \ src/spicelib/devices/bjt2/Makefile \ src/spicelib/devices/bsim1/Makefile \ src/spicelib/devices/bsim2/Makefile \ src/spicelib/devices/bsim3v1/Makefile \ src/spicelib/devices/bsim3/Makefile \ src/spicelib/devices/bsim4/Makefile \ src/spicelib/devices/bsim3v2/Makefile \ src/spicelib/devices/bsim3soi_pd/Makefile \ src/spicelib/devices/bsim3soi_fd/Makefile \ src/spicelib/devices/bsim3soi_dd/Makefile \ src/spicelib/devices/cap/Makefile \ src/spicelib/devices/cccs/Makefile \ src/spicelib/devices/ccvs/Makefile \ src/spicelib/devices/csw/Makefile \ src/spicelib/devices/dio/Makefile \ src/spicelib/devices/dio/Makefile \ src/spicelib/devices/ind/Makefile \ src/spicelib/devices/isrc/Makefile \ src/spicelib/devices/hfet1/Makefile \ src/spicelib/devices/hfet2/Makefile \ src/spicelib/devices/jfet/Makefile \ src/spicelib/devices/jfet2/Makefile \ src/spicelib/devices/ltra/Makefile \ src/spicelib/devices/mes/Makefile \ src/spicelib/devices/mesa/Makefile \ src/spicelib/devices/mos1/Makefile \ src/spicelib/devices/mos2/Makefile \ src/spicelib/devices/mos3/Makefile \ src/spicelib/devices/mos6/Makefile \ src/spicelib/devices/mos9/Makefile \ src/spicelib/devices/res/Makefile \ src/spicelib/devices/soi3/Makefile \ src/spicelib/devices/sw/Makefile \ src/spicelib/devices/tra/Makefile \ src/spicelib/devices/urc/Makefile \ src/spicelib/devices/vccs/Makefile \ src/spicelib/devices/vcvs/Makefile \ src/spicelib/devices/vsrc/Makefile \ src/spicelib/parser/Makefile \ src/frontend/Makefile \ src/frontend/help/Makefile \ src/frontend/parser/Makefile \ src/frontend/plotting/Makefile \ src/include/Makefile \ src/maths/Makefile \ src/maths/cmaths/Makefile \ src/maths/ni/Makefile \ src/maths/deriv/Makefile \ src/maths/poly/Makefile \ src/maths/sparse/Makefile \ src/misc/Makefile \ tests/Makefile \ tests/filters/Makefile \ tests/polezero/Makefile \ tests/resistance/Makefile \ tests/bsim3soipd/Makefile \ tests/bsim3soifd/Makefile \ tests/bsim3soidd/Makefile \ tests/bsim4/Makefile )