Re: Generated Headers - Quite the Can of Worms
Vin Shelton <[email protected]>
| Newsgroups | gmane.emacs.xemacs.beta |
|---|---|
| Message-ID | <CACeGjnXM6YssX0NpNAyUFEH2V-CwOfrS6cQ_5GGAMJUFSc+NoA@mail.gmail.com> |
Hi, Henry! Thanks for your efforts on this. I have copied xemacs-beta on my reply. On Sun, Mar 29, 2015 at 9:52 PM, Henry S. Thompson <[email protected]> wrote: > OK, small progress. Using VS6: > > Adding the following to syswindows.h at around line 605, in the > _non_-CYGWIN_HEADERS branch > > typedef int WINBOOL; > typedef intptr_t LONG_PTR; > typedef uintptr_t ULONG_PTR; > typedef uintptr_t DWORD_PTR; > /* #define PCIDLIST_ABSOLUTE_ARRAY LPCITEMIDLIST * > typedef const PCIDLIST_ABSOLUTE *PCIDLIST_ABSOLUTE_ARRAY;* */ > typedef LPCITEMIDLIST PCIDLIST_ABSOLUTE; > > allows several of the -msw.c files to compile. > > More similar work is required, I think. > > Oops: the last typedef above is wrong - I read the commented-lines above > that backwards! Thanks for making sure the native Windows build continues to work. I appreciate your taking the lead on this, because I haven't made any substantive progress on this over the weekend. Here are a few comments: 1. I have checked in the configure changes, so please make your next patchsets based off of current version control. Please split your patchset into two patches: one containing the w32api refactoring / unicode regeneration and a second one containing the 64-bit (DEVICE_TYPE_) changes. 2. Back when I was looking at updating the unicode definitions, I had a slightly different regexp in lib-sr/make-mswin-unicode.pl: my $rettype_re = "(SHSTDAPI_\\(${tok_ch}+${ws_re}\\*?\\)|${tok_ch}" . "[A-Za-z_0-9 \t\n\r\f]*?${tok_ch})"; I think this regexp is a little more restrictive than the one you used, but I'm not sure that it makes a difference. 3. Here are my current definitions for the syswindows.h block: #else /* !CYGWIN_HEADERS */ #define W32API_VER(major,minor) 0 #define W32API_INSTALLED_VER 0 /* Some types that show up in Cygwin headers but not in Visual Studio headers, and cause problems if we used Cygwin headers to generate intl-auto-encap-win32.[ch]. */ typedef LPCVOID PCVOID; typedef int WINBOOL; typedef intptr_t LONG_PTR; typedef uintptr_t ULONG_PTR; typedef uintptr_t DWORD_PTR; typedef ITEMIDLIST ITEMIDLIST_ABSOLUTE; typedef ITEMIDLIST_ABSOLUTE *PIDLIST_ABSOLUTE; typedef const ITEMIDLIST_ABSOLUTE *PCIDLIST_ABSOLUTE; /* Defined in w32api/winuser.h */ #define GCLP_MENUNAME (-8) #define GCLP_HBRBACKGROUND (-10) #define GCLP_HCURSOR (-12) #define GCLP_HICON (-14) #define GCLP_HMODULE (-16) #define GCLP_WNDPROC (-24) #define GCLP_HICONSM (-34) #define GWLP_USERDATA (-21) #define GWLP_WNDPROC (-4) #define GWLP_HINSTANCE (-6) #define GWLP_HWNDPARENT (-8) #define GWLP_USERDATA (-21) #define GWLP_ID (-12) #define DWL_MSGRESULT 0 #define DWL_DLGPROC 4 #define DWL_USER 8 #ifdef _WIN64 #undef DWL_MSGRESULT #undef DWL_DLGPROC #undef DWL_USER #endif #define DWLP_MSGRESULT 0 #define DWLP_DLGPROC DWLP_MSGRESULT + sizeof(LRESULT) #define DWLP_USER DWLP_DLGPROC + sizeof(DLGPROC) #endif /* CYGWIN_HEADERS */ Not all of these definitions are necessary, but I think it's probably best to include the entire GCLP/GWLP definition block. Thanks for digging in on this. -Vin