Implement workaround for flex --header-file option
[emu8051.git] / configure.ac
index bfa92d6..0308b48 100644 (file)
@@ -1,26 +1,56 @@
 # configure.ac -- Process this file with autoconf to produce configure
 
 dnl Initialization stuff.
-AC_INIT([emu8051], [1.1.2], [hugo@hugovil.com], [emu8051],
-       [http://www.hugovil.com/fr/emu8051/])
+AC_INIT([emu8051], [2.0.1], [hugo@hugovil.com], [emu8051],
+       [http://www.hugovil.com/emu8051/])
 AC_CONFIG_AUX_DIR([build-aux])
-AC_CONFIG_SRCDIR(src/cpu8051.c)
-AM_CONFIG_HEADER(config.h:config-h.in)
-dnl Checking if the NEWS file has been updated to reflect the current version.
-AM_INIT_AUTOMAKE(check-news)
+AC_CONFIG_MACRO_DIR([m4])
+AC_CONFIG_SRCDIR(src/common/cpu8051.c)
+
+dnl -Wno-extra-portability:
+dnl   To get rid of message:
+dnl     linking libraries using a non-POSIX archiver requires 'AM_PROG_AR'...
+dnl -Wall:
+dnl   Ask automake to turn on all warnings (not a gcc flag)
+AM_INIT_AUTOMAKE([no-define gnits dist-bzip2 color-tests
+                  -Wall -Wno-extra-portability])
 AM_SILENT_RULES([yes])
+AM_CONFIG_HEADER(config.h:config-h.in)
 
 dnl Testing the C compiler.
-AM_PROG_CC_C_O
 AC_LANG_C
 
+dnl Testing for libtool support.
+AM_PROG_LIBTOOL
+
+AC_ARG_WITH([readline],
+            [AS_HELP_STRING([--without-readline], [disable support for readline])],
+            [],
+            [with_readline=yes])
+
+LIBREADLINE=
+    AS_IF([test "x$with_readline" != xno],
+         [AC_CHECK_LIB([readline], [main],
+              [AC_SUBST([LIBREADLINE], ["-lreadline"])
+               AC_DEFINE([HAVE_LIBREADLINE], [1],
+                         [Define if you have libreadline])
+              ],
+              [AC_MSG_FAILURE(
+                  [readline test failed (--without-readline to disable)])],
+              []
+)])
+
+dnl Testing for Lex/Yacc
+AM_PROG_LEX
+AC_PROG_YACC
+
 dnl Checking for typedefs, structures, and compiler characteristics.
 AC_C_CONST
 AC_TYPE_PID_T
 AC_TYPE_SIZE_T
 
-dnl Basic CFLAGS values
-CFLAGS="${CFLAGS} -Wall"
+dnl Basic warning CFLAGS values
+WARNINGCFLAGS="-Wall -Wextra -Wformat -Wformat-security"
 
 PKG_CHECK_MODULES(GLIB, [glib-2.0 >= 2.26.0])
 AC_SUBST(GLIB_CFLAGS)
@@ -33,11 +63,14 @@ AC_ARG_ENABLE(gui,
 AC_MSG_CHECKING([whether to build GUI])
 if test x$ac_cv_enable_gui = xyes; then
        AC_MSG_RESULT(yes)
-        PKG_CHECK_MODULES(GTK, gtk+-2.0 >= 2.4.0, CFLAGS="${CFLAGS} -DGDK_PIXBUF_DISABLE_DEPRECATED -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED", dnl
+        PKG_CHECK_MODULES(GTK, gtk+-2.0 >= 2.4.0, [], dnl
         ac_cv_enable_gui=no)
 
        if test x$ac_cv_enable_gui = xyes; then
            AC_DEFINE([HAVE_GTK],1,[Set to 1 to enable GTK+ support for building GUI.])
+
+           GTK_CFLAGS="${GTK_CFLAGS} -DGDK_PIXBUF_DISABLE_DEPRECATED -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
+
             AC_SUBST(GTK_CFLAGS)
             AC_SUBST(GTK_LIBS)
        fi
@@ -47,30 +80,58 @@ fi
 
 AM_CONDITIONAL([USE_GTK], [test x${ac_cv_enable_gui} = xyes])
 
-AC_SUBST(CFLAGS)
-AC_SUBST(LIBS)
-AC_SUBST(ac_aux_dir)
+dnl Try to locate valid 8051 assembler to generate test files (.hex)
+run_tests=no
 
-dnl Creating output file(s)
-AC_OUTPUT(Makefile src/Makefile data/Makefile doc/Makefile)
+AC_CHECK_PROG(AS504_CHECK,as504,yes)
+if test x"$AS504_CHECK" = x"yes" ; then
+    run_tests=yes
 
-echo \
-"---------------------------------------------------------------------------
-Configuration:
+    dnl Check if as504 has been patched to support option -O:
+    dnl See http://www.hugovil.com/repository/hvlinux/patches/as504-add-output-file-option.patch
+    AS504HV_CHECK=no
+    if as504 2>&1 | grep -q Ooutfile; then
+        AS504HV_CHECK=yes
+    fi
+fi
+
+AC_CHECK_PROG(ASEM51_CHECK,asem,yes)
+if test x"$ASEM51_CHECK" = x"yes" ; then
+    run_tests=yes
+fi
+
+if test x"$run_tests" != x"yes" ; then
+    AC_MSG_WARN([Please install as504 (http://www.vanwal.nl/as504/) or ASEM-51 (http://plit.de/asem-51) to run test suite.])
+fi
 
-  Install path:        ${prefix}
-  Compiler:            ${CC}
-  Compiler flags:      ${CFLAGS}
-  Linker flags:        ${LIBS}"
+AM_CONDITIONAL([RUN_TESTS],[test x"$run_tests" = x"yes"])
+AM_CONDITIONAL([USE_AS504HV],[test x"$AS504HV_CHECK" = x"yes"])
+AM_CONDITIONAL([USE_AS504],[test x"$AS504_CHECK" = x"yes"])
+AM_CONDITIONAL([USE_AS51],[test x"$ASEM51_CHECK" = x"yes"])
 
-echo -n "  Build GUI:           "
-if test x"${ac_cv_enable_gui}" = xyes; then
-  echo "yes"
+dnl zlib required for its crc32 function
+ac_have_zlib=no
+
+PKG_CHECK_MODULES([zlib], [zlib > 1.2.1],
+                 [AC_CHECK_LIB([z], [crc32],
+                               [ac_have_zlib=yes],
+                               [ac_have_zlib=no])])
+
+if test x"$ac_have_zlib" = x"yes" ; then
+    ZLIB_LIBS='-lz'
+    AC_SUBST(ZLIB_LIBS)
 else
-  echo "no"
+    AC_MSG_ERROR([Please install zlib and zlib-devel packages])
 fi
 
-echo \
-"
-  See config.h for further configuration information.
----------------------------------------------------------------------------"
+AC_SUBST(WARNINGCFLAGS)
+AC_SUBST(ac_aux_dir)
+
+dnl Creating output file(s)
+AC_OUTPUT(Makefile
+    src/common/Makefile
+    src/cli/Makefile
+    src/gtk/Makefile
+    data/Makefile
+    doc/Makefile
+    tests/Makefile)