diff --git a/src/configure b/src/configure index 5f664178ef..ccb1bc97c0 100755 --- a/src/configure +++ b/src/configure @@ -726,8 +726,7 @@ ZLIB_INC PNG_A OSKHOME EXTRA_OSK_LIBS -FOREIGN_OBJSLIB_IF_USED -FOREIGN_LIB_IF_USED +FOREIGN_IF_USED FOREIGN_OBJSLIB FOREIGN_CONVENIENCE FOREIGNTARGET @@ -11772,7 +11771,6 @@ LIBS="$LIBS $EXTRALIBS" - mk_needed_dir() @@ -11794,8 +11792,7 @@ if test "${enable_shared}" = "yes" ; then fi FOREIGNTARGET= -FOREIGN_OBJSLIB_IF_USED= -FOREIGN_LIB_IF_USED= +FOREIGN_IF_USED="FOREIGN_NOT_USED" if test -d "${srcdir}/foreign" && test "${enable_foreign}" = "yes" ; then ac_aux_dir= for ac_dir in foreign/gcc "$srcdir"/foreign/gcc ; do @@ -11832,8 +11829,7 @@ ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. makefiles="$makefiles foreign/Makefile" FOREIGNTARGET="foreign-stuff" - FOREIGN_OBJSLIB_IF_USED="\$(FOREIGN_OBJSLIB)" - FOREIGN_LIB_IF_USED="\$(FOREIGN_OBJ) \$(FOREIGN_LIB)" + FOREIGN_IF_USED="FOREIGN_USED" # --disable-multilib is needed to avoid problems when running libffi's # configure script. This thing affects all usages of AC_CONFIG_SUBDIRS, but # other scripts do not use it anyway. @@ -12714,8 +12710,7 @@ ZLIB_INC!$ZLIB_INC$ac_delim PNG_A!$PNG_A$ac_delim OSKHOME!$OSKHOME$ac_delim EXTRA_OSK_LIBS!$EXTRA_OSK_LIBS$ac_delim -FOREIGN_OBJSLIB_IF_USED!$FOREIGN_OBJSLIB_IF_USED$ac_delim -FOREIGN_LIB_IF_USED!$FOREIGN_LIB_IF_USED$ac_delim +FOREIGN_IF_USED!$FOREIGN_IF_USED$ac_delim FOREIGN_OBJSLIB!$FOREIGN_OBJSLIB$ac_delim FOREIGN_CONVENIENCE!$FOREIGN_CONVENIENCE$ac_delim FOREIGNTARGET!$FOREIGNTARGET$ac_delim @@ -12739,7 +12734,7 @@ LIBOBJS!$LIBOBJS$ac_delim LTLIBOBJS!$LTLIBOBJS$ac_delim _ACEOF - if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 38; then + if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 37; then break elif $ac_last_try; then { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 diff --git a/src/mzscheme/Makefile.in b/src/mzscheme/Makefile.in index 2c8bc6857c..4cef59080a 100644 --- a/src/mzscheme/Makefile.in +++ b/src/mzscheme/Makefile.in @@ -115,8 +115,13 @@ mzlibrary: cd src; $(MAKE) all $(MAKE) libmzscheme.@LIBSFX@ -libmzscheme.@LIBSFX@: src/*.@LTO@ @FOREIGN_LIB_IF_USED@ - $(AR) $(ARFLAGS) libmzscheme.@LIBSFX@ src/*.@LTO@ @FOREIGN_OBJSLIB_IF_USED@ @LIBMZSCHEME_DEP@ +FOREIGN_USED_LIB = $(FOREIGN_OBJ) $(FOREIGN_LIB) +FOREIGN_USED_OBJSLIB = $(FOREIGN_OBJSLIB) +FOREIGN_NOT_USED_LIB = +FOREIGN_NOT_USED_OBJSLIB = + +libmzscheme.@LIBSFX@: src/*.@LTO@ $(@FOREIGN_IF_USED@_LIB) + $(AR) $(ARFLAGS) libmzscheme.@LIBSFX@ src/*.@LTO@ $(@FOREIGN_IF_USED@_OBJSLIB) @LIBMZSCHEME_DEP@ $(RANLIB) libmzscheme.@LIBSFX@ # Irix sproc, only diff --git a/src/mzscheme/configure.ac b/src/mzscheme/configure.ac index 70eca5e03d..e08f061127 100644 --- a/src/mzscheme/configure.ac +++ b/src/mzscheme/configure.ac @@ -1321,8 +1321,7 @@ AC_SUBST(PNG_A) AC_SUBST(OSKHOME) AC_SUBST(EXTRA_OSK_LIBS) -AC_SUBST(FOREIGN_OBJSLIB_IF_USED) -AC_SUBST(FOREIGN_LIB_IF_USED) +AC_SUBST(FOREIGN_IF_USED) AC_SUBST(FOREIGN_OBJSLIB) AC_SUBST(FOREIGN_CONVENIENCE) AC_SUBST(FOREIGNTARGET) @@ -1366,15 +1365,13 @@ if test "${enable_shared}" = "yes" ; then fi FOREIGNTARGET= -FOREIGN_OBJSLIB_IF_USED= -FOREIGN_LIB_IF_USED= +FOREIGN_IF_USED="FOREIGN_NOT_USED" if test -d "${srcdir}/foreign" && test "${enable_foreign}" = "yes" ; then AC_CONFIG_AUX_DIR( foreign/gcc ) AC_CONFIG_SUBDIRS( foreign/gcc/libffi ) makefiles="$makefiles foreign/Makefile" FOREIGNTARGET="foreign-stuff" - FOREIGN_OBJSLIB_IF_USED="\$(FOREIGN_OBJSLIB)" - FOREIGN_LIB_IF_USED="\$(FOREIGN_OBJ) \$(FOREIGN_LIB)" + FOREIGN_IF_USED="FOREIGN_USED" # --disable-multilib is needed to avoid problems when running libffi's # configure script. This thing affects all usages of AC_CONFIG_SUBDIRS, but # other scripts do not use it anyway. diff --git a/src/mzscheme/gc2/Makefile.in b/src/mzscheme/gc2/Makefile.in index 2ed8e66af4..590e97b2b6 100644 --- a/src/mzscheme/gc2/Makefile.in +++ b/src/mzscheme/gc2/Makefile.in @@ -31,6 +31,9 @@ XSRCDIR = xsrc XFORM = env XFORM_USE_PRECOMP=$(XSRCDIR)/precomp.h $(XFORM_NOPRECOMP) SRCDIR = $(srcdir)/../src +FOREIGN_USED_OBJ = foreign.@LTO@ +FOREIGN_NOT_USED_OBJ = + OBJS = salloc.@LTO@ \ bignum.@LTO@ \ bool.@LTO@ \ @@ -69,9 +72,12 @@ OBJS = salloc.@LTO@ \ thread.@LTO@ \ type.@LTO@ \ vector.@LTO@ \ - foreign.@LTO@ \ + $(@FOREIGN_IFUSED@_OBJ) \ gc2.@LTO@ +FOREIGN_USED_C = $(XSRCDIR)/foreign.c +FOREIGN_NOT_USED_C = + XSRCS = $(XSRCDIR)/salloc.c \ $(XSRCDIR)/bignum.c \ $(XSRCDIR)/bool.c \ @@ -110,7 +116,7 @@ XSRCS = $(XSRCDIR)/salloc.c \ $(XSRCDIR)/thread.c \ $(XSRCDIR)/type.c \ $(XSRCDIR)/vector.c \ - $(XSRCDIR)/foreign.c \ + $(@FOREIGN_IFUSED@_C) \ $(XSRCDIR)/main.c all: xsrc @@ -307,8 +313,13 @@ FOREIGN_OBJS = ../../foreign/gcc/libffi/src/*.@LTO@ ../../foreign/gcc/libffi/src FOREIGN_LIB = ../../foreign/gcc/libffi/libffi@FOREIGN_CONVENIENCE@.la FOREIGN_OBJSLIB = @FOREIGN_OBJSLIB@ -EXTRA_OBJS_T = ../src/gmp.@LTO@ @FOREIGN_LIB_IF_USED@ -EXTRA_OBJS_L = ../src/gmp.@LTO@ @FOREIGN_OBJSLIB_IF_USED@ +FOREIGN_USED_LIB = $(FOREIGN_OBJ) $(FOREIGN_LIB) +FOREIGN_USED_OBJSLIB = $(FOREIGN_OBJSLIB) +FOREIGN_NOT_USED_LIB = +FOREIGN_NOT_USED_OBJSLIB = + +EXTRA_OBJS_T = ../src/gmp.@LTO@ $(@FOREIGN_IF_USED@_LIB) +EXTRA_OBJS_L = ../src/gmp.@LTO@ $(@FOREIGN_IF_USED@_OBJSLIB) ../libmzscheme3m.@LIBSFX@: $(OBJS) $(EXTRA_OBJS_T) $(AR) $(ARFLAGS) ../libmzscheme3m.@LIBSFX@ $(OBJS) $(EXTRA_OBJS_L) diff --git a/src/mzscheme/src/port.c b/src/mzscheme/src/port.c index ce4f9e5c88..e6e6ede043 100644 --- a/src/mzscheme/src/port.c +++ b/src/mzscheme/src/port.c @@ -293,6 +293,8 @@ Scheme_Object *scheme_redirect_output_port_type; int scheme_force_port_closed; +static int flush_out, flush_err; + #if defined(FILES_HAVE_FDS) static int external_event_fd, put_external_event_fd, event_fd_set; #endif @@ -536,6 +538,9 @@ scheme_init_port (Scheme_Env *env) #endif ); + flush_out = SCHEME_TRUEP(scheme_terminal_port_p(1, &scheme_orig_stdout_port)); + flush_err = SCHEME_TRUEP(scheme_terminal_port_p(1, &scheme_orig_stderr_port)); + #ifdef MZ_FDS scheme_add_atexit_closer(flush_if_output_fds); /* Note: other threads might continue to write even after @@ -3290,8 +3295,10 @@ force_close_output_port(Scheme_Object *port) void scheme_flush_orig_outputs(void) { /* Flush original output ports: */ - scheme_flush_output(scheme_orig_stdout_port); - scheme_flush_output(scheme_orig_stderr_port); + if (flush_out) + scheme_flush_output(scheme_orig_stdout_port); + if (flush_err) + scheme_flush_output(scheme_orig_stderr_port); } void scheme_flush_output(Scheme_Object *o)