beautified --disable-*-port options
[fw/sdcc] / configure.in
index 1a9b0b9581b02b79c3e5295867549e6f48753717..78100ce26ae73c22a78d8bb1cd3ee7c77799eb45 100755 (executable)
@@ -37,12 +37,21 @@ AC_PROG_CXX
 AC_PROG_CPP
 AC_PROG_INSTALL
 AC_PROG_RANLIB
-AC_PROG_YACC(bison, :)
 AC_PROG_LEX(flex, :)
+AC_CHECK_PROG(YACC, bison, bison -y, :)
 AC_CHECK_PROG(AUTOCONF, autoconf, autoconf, :)
 AC_CHECK_PROG(AS, as, as, :)
 AC_CHECK_PROG(CP, cp, cp, :)
 
+AC_DEFUN(SDCC_REQUIRE_PROG, 
+[if test "$1" = ":"; then
+  AC_MSG_ERROR([Cannot find required program $2.])
+ fi
+])
+
+SDCC_REQUIRE_PROG($YACC, bison)
+SDCC_REQUIRE_PROG($LEX, lex)
+
 AC_LANG_C
 
 # Checking for header files.
@@ -51,6 +60,7 @@ AC_HEADER_STDC
 AC_CHECK_HEADERS(getopt.h)
 AC_CHECK_HEADERS(unistd.h)
 AC_CHECK_HEADERS(endian.h)
+AC_CHECK_HEADERS(malloc.h)
 AC_CHECK_HEADERS(sys/isa_defs.h)
 AC_CHECK_HEADERS(sys/socket.h)
 AC_HEADER_DIRENT
@@ -172,32 +182,124 @@ if test "${prefix}" = "NONE"; then
 fi
 
 config_in=`pwd`
+sdcc_datadir=${datadir}/sdcc
+AC_SUBST(sdcc_datadir)
+
+# For some unknown reason, putting this assignment in a subshell
+# like this causes the rvalue to be fully substituted. We need this
+# for the defines below to generate the right thing. We keep this
+# separate from the substituted sdcc_datadir because we want the
+# latter for makefiles.
 if test "${datadir}" = "\${prefix}/share"; then
-  sdcc_datadir=${prefix}/share
+    sdcc_datadir_tmp=${prefix}/share/sdcc
 else
-  sdcc_datadir=${datadir}
+    sdcc_datadir_tmp=${datadir}/sdcc
 fi
-AC_DEFINE_UNQUOTED(STANDARD_INCLUDE_DIR, "${sdcc_datadir}/include")
-AC_DEFINE_UNQUOTED(SDCC_INCLUDE_DIR, "${sdcc_datadir}/include")
-AC_DEFINE_UNQUOTED(SDCC_LIB_DIR, "${sdcc_datadir}/lib")
+
+
+AC_DEFINE_UNQUOTED(STANDARD_INCLUDE_DIR, "${sdcc_datadir_tmp}/include")
+AC_DEFINE_UNQUOTED(SDCC_INCLUDE_DIR, "${sdcc_datadir_tmp}/include")
+AC_DEFINE_UNQUOTED(SDCC_LIB_DIR, "${sdcc_datadir_tmp}/lib")
 AC_DEFINE_UNQUOTED(STD_LIB, "libsdcc")
 AC_DEFINE_UNQUOTED(STD_INT_LIB, "libint")
 AC_DEFINE_UNQUOTED(STD_LONG_LIB, "liblong")
 AC_DEFINE_UNQUOTED(STD_FP_LIB, "libfloat")
+AC_DEFINE_UNQUOTED(STD_DS390_LIB, "libds390")
 
 AC_DEFINE_UNQUOTED(PREFIX, "${prefix}")
-AC_DEFINE_UNQUOTED(DATADIR, "${sdcc_datadir}")
+AC_DEFINE_UNQUOTED(DATADIR, "${sdcc_datadir_tmp}")
 AC_DEFINE_UNQUOTED(SRCDIR, "${config_in}")
 
-# mlh: dont compile libgc if it's available locally
-AC_CHECK_LIB(gc,GC_malloc,HAVE_LIBGC=1)
-AC_SUBST(HAVE_LIBGC)
+
+
+# Now handle the port selection
+rm -f ports.all ports.build
+AC_ARG_ENABLE(mcs51-port,[  --disable-mcs51-port    Excludes the Intel mcs51 port])
+echo mcs51 >>ports.all
+if test "$enable_mcs51_port" = "no"; then
+    AC_DEFINE_UNQUOTED(OPT_DISABLE_MCS51, 1)
+else
+    echo mcs51 >>ports.build
+    AC_DEFINE_UNQUOTED(OPT_DISABLE_MCS51, 0)
+fi
+
+AC_ARG_ENABLE(gbz80-port,[  --disable-gbz80-port    Excludes the Gameboy gbz80 port])
+echo z80 >>ports.all
+if test "$enable_gbz80_port" = "no"; then
+    AC_DEFINE_UNQUOTED(OPT_DISABLE_GBZ80, 1)
+else
+    echo z80 >>ports.build
+    AC_DEFINE_UNQUOTED(OPT_DISABLE_GBZ80, 0)
+fi
+
+AC_ARG_ENABLE(z80-port,[  --disable-z80-port      Excludes the z80 port])
+echo z80 >>ports.all
+if test "$enable_z80_port" = "no"; then
+    AC_DEFINE_UNQUOTED(OPT_DISABLE_Z80, 1)
+else
+    echo z80 >>ports.build
+    AC_DEFINE_UNQUOTED(OPT_DISABLE_Z80, 0)
+fi
+
+AC_ARG_ENABLE(avr-port,[  --disable-avr-port      Excludes the AVR port])
+echo avr >>ports.all
+if test "$enable_avr_port" = "no"; then
+    AC_DEFINE_UNQUOTED(OPT_DISABLE_AVR, 1)
+else
+    echo avr >>ports.build
+    AC_DEFINE_UNQUOTED(OPT_DISABLE_AVR, 0)
+fi
+
+AC_ARG_ENABLE(ds390-port,[  --disable-ds390-port    Excludes the DS390 port])
+echo ds390 >>ports.all
+if test "$enable_ds390_port" = "no"; then
+    AC_DEFINE_UNQUOTED(OPT_DISABLE_DS390, 1)
+else
+    echo ds390 >>ports.build
+    AC_DEFINE_UNQUOTED(OPT_DISABLE_DS390, 0)
+fi
+
+AC_ARG_ENABLE(pic-port,[  --disable-pic-port      Excludes the PIC port])
+echo pic >>ports.all
+if test "$enable_pic_port" = "no"; then
+    AC_DEFINE_UNQUOTED(OPT_DISABLE_PIC, 1)
+else
+    echo pic >>ports.build
+    AC_DEFINE_UNQUOTED(OPT_DISABLE_PIC, 0)
+fi
+
+AC_ARG_ENABLE(i186-port,[  --disable-i186-port     Excludes the I186 port])
+echo izt >>ports.all
+if test "$enable_i186_port" = "no"; then
+    AC_DEFINE_UNQUOTED(OPT_DISABLE_I186, 1)
+else
+    echo izt >>ports.build
+    AC_DEFINE_UNQUOTED(OPT_DISABLE_I186, 0)
+fi
+
+AC_ARG_ENABLE(tlcs900h-port,[  --disable-tlcs900h-port Excludes the TLCS900H port])
+echo izt >>ports.all
+if test "$enable_tlcs900h_port" = "no"; then
+    AC_DEFINE_UNQUOTED(OPT_DISABLE_TLCS900H, 1)
+else
+    echo izt >>ports.build
+    AC_DEFINE_UNQUOTED(OPT_DISABLE_TLCS900H, 0)
+fi
+
+#remove duplicates
+cat ports.all | uniq >ports
+mv ports ports.all
+cat ports.build | uniq >ports
+mv ports ports.build
 
 # Generating output files
 # ===========================================================================
-AC_CONFIG_SUBDIRS(sim/mcs51)
+AC_CONFIG_SUBDIRS(sim/ucsim)
+AC_CONFIG_SUBDIRS(packihx)
+# MLH: removed as the rules are already in Makefile.common
+#as/z80/Makefile
+#link/z80/Makefile
 AC_OUTPUT(main.mk:main_in.mk
-support/gc/Makefile
 src/Makefile
 as/mcs51/Makefile
 support/cpp/Makefile