[-- Attachment #1: Type: text/plain, Size: 390 bytes --] Hi, This gets drawterm to compile and not segfault under x86_64 mingw-w64. Tested on Wine and MSYS2. I noticed that the win32-386 and posix-386 directories are nearly the same (some asm preprocessor metarule in the win32-386 Makefile?), so I used posix-amd64 for libmachdep.a instead of making a new directory. I'll leave keeping or removing win32-386/ up to discussion. Thanks, Amavect [-- Attachment #2.1: Type: text/plain, Size: 337 bytes --] from postmaster@9front: The following attachment had content that we can't prove to be harmless. To avoid possible automatic execution, we changed the content headers. The original header was: Content-Type: text/x-patch Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=0001-get-64-bit-windows-to-work.patch [-- Attachment #2.2: 0001-get-64-bit-windows-to-work.patch.suspect --] [-- Type: application/octet-stream, Size: 2021 bytes --] From e96ba525c4a5ff82fabfddd8e4e42f6b675e0949 Mon Sep 17 00:00:00 2001 From: Amavect <amavect@gmail.com> Date: Fri, 6 May 2022 20:59:22 -0500 Subject: [PATCH] get 64-bit windows to work --- Make.win64 | 32 ++++++++++++++++++++++++++++++++ gui-win32/screen.c | 4 ++-- include/9windows.h | 2 +- 3 files changed, 35 insertions(+), 3 deletions(-) create mode 100644 Make.win64 diff --git a/Make.win64 b/Make.win64 new file mode 100644 index 0000000..1232bc4 --- /dev/null +++ b/Make.win64 @@ -0,0 +1,32 @@ +# Windows via mingw-w64 +# MING=mingw32- is necessary if you're cross-compiling +# on another platform. Otherwise the binaries are just +# named gcc, etc. + +AUDIO=win32 +MING=x86_64-w64-mingw32- +#MING= +AR=$(MING)ar +CC=$(MING)gcc +AS=$(MING)as +RANLIB=$(MING)ranlib +WINDRES=$(MING)windres +CFLAGS=-Wall -Wno-missing-braces -I$(ROOT)/include -I$(ROOT) -I$(ROOT)/kern -c -DWINDOWS -DUNICODE -O2 +O=o +FS=fs-win32 +IP=win32 +OS=win32 +GUI=win32 +LDADD=-lgdi32 -lws2_32 -lwinmm -mwindows +TARG=drawterm.exe +XOFILES=glenda-t.$O + +all: default + +# for root +libmachdep.a: + (cd posix-amd64; make) + +glenda-t.$O: glenda-t.rc glenda-t.ico + $(WINDRES) -i glenda-t.rc -o glenda-t.o + diff --git a/gui-win32/screen.c b/gui-win32/screen.c index 3790417..81c9fe6 100644 --- a/gui-win32/screen.c +++ b/gui-win32/screen.c @@ -532,7 +532,7 @@ setcursor(void) free(and); free(xor); - PostMessage(window, WM_SETCURSOR, (int)window, 0); + PostMessage(window, WM_SETCURSOR, (WPARAM)window, 0); } void @@ -543,7 +543,7 @@ cursorarrow(void) hcursor = 0; } SetCursor(LoadCursor(0, IDC_ARROW)); - PostMessage(window, WM_SETCURSOR, (int)window, 0); + PostMessage(window, WM_SETCURSOR, (WPARAM)window, 0); } diff --git a/include/9windows.h b/include/9windows.h index e779475..e65e955 100644 --- a/include/9windows.h +++ b/include/9windows.h @@ -18,4 +18,4 @@ typedef __int64 p9_vlong; typedef unsigned __int64 p9_uvlong; -typedef unsigned uintptr; +typedef uintptr_t uintptr; -- 2.36.0
On Fri, 6 May 2022 21:13:00 -0500
Amavect <amavect@gmail.com> wrote:
> This gets drawterm to compile and not segfault under x86_64 mingw-w64.
> Tested on Wine and MSYS2.
Pinging this again.
Thanks,
Amavect
Quoth Amavect <amavect@gmail.com>:
> On Fri, 6 May 2022 21:13:00 -0500
> Amavect <amavect@gmail.com> wrote:
>
> > This gets drawterm to compile and not segfault under x86_64 mingw-w64.
> > Tested on Wine and MSYS2.
>
> Pinging this again.
>
> Thanks,
> Amavect
Anyone with windows mind reporting back? if not, I'm going to commmit
on Monday.
If you give me a day time I can try on windows 11. sirjofri
Quoth sirjofri <sirjofri+ml-9front@sirjofri.de>:
> If you give me a day time I can try on windows 11.
>
> sirjofri
Sounds good -- I'll commit when I hear back, thanks!
Hello, reporting back! (Irc is fine, but people can't follow that easily, so here are my results:) I installed cygwin and everything gcc that made sense, including the gcc package and mingw-gcc. I didn't install any 32bit compilers as far as I can tell. The installation target was my work windows 11 PC. Using CONF=win64 compiled without any issues. It used x86_64-w64-mingw32-gcc for compiling. I verified the binary is 64-bit, and not 32-bit. Starting works fine like I'd expect from a drawterm application. No issues at runtime so far. However, Make.win64 mentions that I can set MING to nothing when not cross-compiling since it would just use gcc then. I tried it, but it failed at some #include (I think it was direct.h). It is possible that it uses the "other" gcc version I installed on cygwin which tries to find libraries that aren't installed. In the end, mingw works fine and is also what the Readme states. I suggest adjusting the comment in the Make.win64 to prevent confusion and then publish it. P.S. nice to have some 64-bit drawterm. I'd love to have it as a download at drawterm.9front.org. sirjofri
Quoth sirjofri <sirjofri+ml-9front@sirjofri.de>:
> Hello, reporting back!
>
> (Irc is fine, but people can't follow that easily, so here are my
> results:)
>
> I installed cygwin and everything gcc that made sense, including the gcc
> package and mingw-gcc. I didn't install any 32bit compilers as far as I
> can tell. The installation target was my work windows 11 PC.
>
> Using CONF=win64 compiled without any issues. It used
> x86_64-w64-mingw32-gcc for compiling. I verified the binary is 64-bit,
> and not 32-bit. Starting works fine like I'd expect from a drawterm
> application. No issues at runtime so far.
>
> However, Make.win64 mentions that I can set MING to nothing when not
> cross-compiling since it would just use gcc then. I tried it, but it
> failed at some #include (I think it was direct.h). It is possible that it
> uses the "other" gcc version I installed on cygwin which tries to find
> libraries that aren't installed.
>
> In the end, mingw works fine and is also what the Readme states. I
> suggest adjusting the comment in the Make.win64 to prevent confusion and
> then publish it.
>
> P.S. nice to have some 64-bit drawterm. I'd love to have it as a download
> at drawterm.9front.org.
>
> sirjofri
pushed, thanks!
If someone wants to have the 64-bit drawterm version before release, you can (temporarily) download it from my server 😉 https://sirjofri.de/oat/tmp/drawterm.exe (It's a stripped version) sirjofri
On Sun, 15 May 2022 15:44:42 +0000 (UTC)
sirjofri <sirjofri+ml-9front@sirjofri.de> wrote:
> However, Make.win64 mentions that I can set MING to nothing when not
> cross-compiling since it would just use gcc then. I tried it, but it
> failed at some #include (I think it was direct.h). It is possible
> that it uses the "other" gcc version I installed on cygwin which
> tries to find libraries that aren't installed.
MSYS2's mingw64 environment requires the MING prefix to be empty
due to some programs (like windres) not having a prefix.
gcc and $(MING)gcc are aliases in that environment.
(MSYS2 is basically Cygwin but with pacman.)
Cygwin's unprefixed gcc targets its posix emulation dll,
so you'd always want to use the prefix to cross-compile.
It might also be missing parts of the win32 api.
Different gccs can have different default include directories.
It's confusing.
Thanks,
Amavect