diff --git a/Makefile b/Makefile index 519baa28d1..6cb6da1e23 100644 --- a/Makefile +++ b/Makefile @@ -3,6 +3,7 @@ AR = ar LD = ld EXECUTABLE = factor +CONSOLE_EXECUTABLE = factor_console VERSION = 0.92 IMAGE = factor.image @@ -138,9 +139,16 @@ zlib1.dll: winnt-x86-32: freetype6.dll zlib1.dll $(MAKE) $(EXECUTABLE) CONFIG=vm/Config.windows.nt.x86.32 + $(MAKE) $(CONSOLE_EXECUTABLE) CONFIG=vm/Config.windows.nt.x86.32 + $(MAKE) winnt-finish winnt-x86-64: $(MAKE) $(EXECUTABLE) CONFIG=vm/Config.windows.nt.x86.64 + $(MAKE) $(CONSOLE_EXECUTABLE) CONFIG=vm/Config.windows.nt.x86.64 + $(MAKE) winnt-finish + +winnt-finish: + cp misc/factor-cygwin.sh factor wince-arm: $(MAKE) $(EXECUTABLE) CONFIG=vm/Config.windows.ce.arm @@ -161,6 +169,11 @@ factor: $(DLL_OBJS) $(EXE_OBJS) $(CC) $(LIBS) $(LIBPATH) -L. $(LINK_WITH_ENGINE) \ $(CFLAGS) -o $@$(EXE_SUFFIX)$(EXE_EXTENSION) $(EXE_OBJS) +factor_console: $(DLL_OBJS) $(EXE_OBJS) + $(LINKER) $(ENGINE) $(DLL_OBJS) + $(CC) $(LIBS) $(LIBPATH) -L. $(LINK_WITH_ENGINE) \ + $(CFLAGS) $(CFLAGS_CONSOLE) -o $(EXECUTABLE)$(EXE_SUFFIX)$(CONSOLE_EXE_EXTENSION) $(EXE_OBJS) + clean: rm -f vm/*.o rm -f factor*.dll libfactor.{a,so,dylib} diff --git a/basis/windows/kernel32/kernel32.factor b/basis/windows/kernel32/kernel32.factor index 731efa9b25..f14f0fb65f 100755 --- a/basis/windows/kernel32/kernel32.factor +++ b/basis/windows/kernel32/kernel32.factor @@ -792,7 +792,7 @@ LIBRARY: kernel32 ! FUNCTION: AddRefActCtx ! FUNCTION: AddVectoredExceptionHandler ! FUNCTION: AllocateUserPhysicalPages -! FUNCTION: AllocConsole +FUNCTION: BOOL AllocConsole ( ) ; ! FUNCTION: AreFileApisANSI ! FUNCTION: AssignProcessToJobObject ! FUNCTION: AttachConsole @@ -1111,7 +1111,7 @@ FUNCTION: BOOL FindVolumeMountPointClose ( HANDLE hFindVolumeMountPoint ) ; ! FUNCTION: FoldStringW ! FUNCTION: FormatMessageA ! FUNCTION: FormatMessageW -! FUNCTION: FreeConsole +FUNCTION: BOOL FreeConsole ( ) ; ! FUNCTION: FreeEnvironmentStringsA FUNCTION: BOOL FreeEnvironmentStringsW ( LPTCH lpszEnvironmentBlock ) ; ALIAS: FreeEnvironmentStrings FreeEnvironmentStringsW diff --git a/misc/factor-cygwin.sh b/misc/factor-cygwin.sh new file mode 100755 index 0000000000..b3a3375919 --- /dev/null +++ b/misc/factor-cygwin.sh @@ -0,0 +1,2 @@ +#! /bin/sh +./factor.com "$@" diff --git a/vm/Config.windows b/vm/Config.windows index 41eca86b5c..63aa396e06 100644 --- a/vm/Config.windows +++ b/vm/Config.windows @@ -2,6 +2,7 @@ CFLAGS += -DWINDOWS -mno-cygwin LIBS = -lm PLAF_DLL_OBJS += vm/os-windows.o EXE_EXTENSION=.exe +CONSOLE_EXE_EXTENSION=.com DLL_EXTENSION=.dll LINKER = $(CC) -shared -mno-cygwin -o LINK_WITH_ENGINE = -l$(DLL_PREFIX)factor$(DLL_SUFFIX) diff --git a/vm/Config.windows.nt b/vm/Config.windows.nt index 4c6279bf8f..de28ba64ba 100644 --- a/vm/Config.windows.nt +++ b/vm/Config.windows.nt @@ -4,5 +4,6 @@ DLL_SUFFIX= PLAF_DLL_OBJS += vm/os-windows-nt.o PLAF_EXE_OBJS += vm/resources.o PLAF_EXE_OBJS += vm/main-windows-nt.o -#CFLAGS += -mwindows +CFLAGS += -mwindows +CFLAGS_CONSOLE += -mconsole include vm/Config.windows diff --git a/vm/os-windows-nt.c b/vm/os-windows-nt.c index f982abfb1b..bcddd0b140 100755 --- a/vm/os-windows-nt.c +++ b/vm/os-windows-nt.c @@ -54,14 +54,4 @@ void c_to_factor_toplevel(CELL quot) void open_console(void) { - /* - // Do this: http://www.cygwin.com/ml/cygwin/2007-11/msg00432.html - if(console_open) - return; - - if(AttachConsole(ATTACH_PARENT_PROCESS) || AllocConsole()) - { - console_open = true; - } - */ } diff --git a/vm/os-windows-nt.h b/vm/os-windows-nt.h index 1b680befad..4e047b497c 100755 --- a/vm/os-windows-nt.h +++ b/vm/os-windows-nt.h @@ -18,5 +18,4 @@ typedef char F_SYMBOL; void c_to_factor_toplevel(CELL quot); long exception_handler(PEXCEPTION_POINTERS pe); -bool console_open; void open_console(void);