make RAM big enough for tinibios
[fw/sdcc] / configure.in
index 0469622c43723fb14a98f1ab746c42481fb4e628..c848ab71c805ff596197934acab001a5ba7b0752 100755 (executable)
@@ -16,6 +16,9 @@ fi
 VERSIONHI=`echo $VERSION|$AWK 'BEGIN {FS="."} {print $1}'`
 VERSIONLO=`echo $VERSION|$AWK 'BEGIN {FS="."} {print $2}'`
 VERSIONP=`echo $VERSION|$AWK 'BEGIN {FS="."} {print $3}'`
+# Assume no special extension
+EXEEXT=`echo $EXEEXT`
+
 AC_MSG_RESULT(${VERSION})
 AC_SUBST(VERSION)
 AC_SUBST(VERSIONHI)
@@ -25,6 +28,7 @@ AC_DEFINE_UNQUOTED(SDCC_VERSION_LO, ${VERSIONLO})
 AC_DEFINE_UNQUOTED(SDCC_VERSION_HI, ${VERSIONHI})
 AC_DEFINE_UNQUOTED(SDCC_VERSION_P, ${VERSIONP})
 AC_DEFINE_UNQUOTED(SDCC_VERSION_STR, "${VERSION}")
+AC_ARG_PROGRAM
 sdcc_cv_version=$VERSION
 sdcc_cv_versionhi=$VERSIONHI
 sdcc_cv_versionlo=$VERSIONLO
@@ -37,12 +41,22 @@ 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(STRIP, strip, strip, :)
 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 +65,8 @@ AC_HEADER_STDC
 AC_CHECK_HEADERS(getopt.h)
 AC_CHECK_HEADERS(unistd.h)
 AC_CHECK_HEADERS(endian.h)
+AC_CHECK_HEADERS(machine/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 +188,147 @@ 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}/sdcc51inc")
-AC_DEFINE_UNQUOTED(SDCC_INCLUDE_DIR, "${sdcc_datadir}/sdcc51inc")
-AC_DEFINE_UNQUOTED(SDCC_LIB_DIR, "${sdcc_datadir}/sdcc51lib")
+
+if test "${includedir}" = "\${prefix}/include"; then
+   AC_DEFINE_UNQUOTED(STANDARD_INCLUDE_DIR, "${sdcc_datadir_tmp}/include")
+   AC_DEFINE_UNQUOTED(SDCC_INCLUDE_DIR, "${sdcc_datadir_tmp}/include")
+else 
+   AC_DEFINE_UNQUOTED(STANDARD_INCLUDE_DIR, "${includedir}")
+   AC_DEFINE_UNQUOTED(SDCC_INCLUDE_DIR, "${includedir}")
+fi
+
+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(STD_xa51_LIB, "xa51")
 
 AC_DEFINE_UNQUOTED(PREFIX, "${prefix}")
-AC_DEFINE_UNQUOTED(DATADIR, "${sdcc_datadir}")
+AC_DEFINE_UNQUOTED(DATADIR, "${sdcc_datadir_tmp}")
 AC_DEFINE_UNQUOTED(SRCDIR, "${config_in}")
 
 
+
+# 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)
+    AC_DEFINE_UNQUOTED(OPT_DISABLE_TININative, 1)
+else
+    echo ds390 >>ports.build
+    AC_DEFINE_UNQUOTED(OPT_DISABLE_DS390, 0)
+    AC_DEFINE_UNQUOTED(OPT_DISABLE_TININative, 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(xa51-port,[  --disable-xa51-port Excludes the XA51 port])
+echo xa51 >>ports.all
+if test "$enable_xa51_port" = "no"; then
+    AC_DEFINE_UNQUOTED(OPT_DISABLE_XA51, 1)
+else
+    echo xa51 >>ports.build
+    AC_DEFINE_UNQUOTED(OPT_DISABLE_XA51, 0)
+fi
+
+AC_ARG_ENABLE(ucsim,[  --disable-ucsim         Disables configuring and building of ucsim])
+OPT_ENABLE_UCSIM=$enable_ucsim
+AC_SUBST(OPT_ENABLE_UCSIM)
+
+AC_ARG_ENABLE(device-lib-build,[  --disable-device-lib-build Disables automatically building device libraries])
+OPT_ENABLE_DEVICE_LIB_BUILD=$enable_device_lib_build
+AC_SUBST(OPT_ENABLE_DEVICE_LIB_BUILD)
+
+AC_ARG_ENABLE(packihx,[  --disable-packihx       Disables building packihx])
+OPT_ENABLE_PACKIHX=$enable_packihx
+AC_SUBST(OPT_ENABLE_PACKIHX)
+
+AC_ARG_ENABLE(libgc,[  --enable-libgc          Use the Bohem memory allocator.  Lower runtime footprint.])
+if test "$enable_libgc" = "yes"; then
+        AC_CHECK_LIB(gc, GC_malloc)
+        OPT_ENABLE_LIBGC=1
+else
+        OPT_ENABLE_LIBGC=0
+fi
+AC_DEFINE_UNQUOTED(OPT_ENABLE_LIBGC, $OPT_ENABLE_LIBGC)
+
+#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(support/cpp2)
+AC_CONFIG_SUBDIRS(packihx)
+AC_CONFIG_SUBDIRS(sim/ucsim)
+# 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
 device/include/Makefile
 device/lib/Makefile
 debugger/mcs51/Makefile