Hi Gregg,
I couldn't get WINE to compile on sparc at all. Is there anything I am
missing regarding causing it to compile winelib only? Special command
lines for configure? I just used the vanilla "./configure && make depend
&& make".
Shachar
Gregg Mattinson wrote:
>Here's the patches required to get 20020804 compiled on Sparc / Solaris with cc.
>
>License: X11 / LGPL, as usual.
>
>comments.diff:
> - Remove C++ style comments
>
>ddraw.diff:
> - Remove non-static structure initializers
> - Fix initialization order of full_rect structure.
>
>msvcrt.diff:
> - Fix the IX86_ONLY macro. This has been bugging me for a while.
>
>shlwapi_tests.diff:
> - Fix the SHQueryValueEx test so nUsedBuffer is currect.
>
>strings.diff:
> - Removed multi-line string constant from classes.c
>
>utils.diff:
> - cc doesn't support __attribute__(...).
>
>widl.diff:
> - cc doesn't support typeof() in macros, and since the LINK_LAST macro was
>always used with a attr_t type, I replaced it.
>
>Gregg Mattinson
>Co-op Developer
>Sun Microsystems of Canada
>
>
>------------------------------------------------------------------------
>
>Index: dlls/ole32/compobj.c
>===================================================================
>RCS file: /opcom/comp/ws/wine/CVSROOT/wine/dlls/ole32/compobj.c,v
>retrieving revision 1.3
>diff -u -r1.3 compobj.c
>--- /tmp/T03RaGiL Tue Aug 6 13:11:13 2002
>+++ compobj.c Tue Aug 6 13:09:03 2002
>@@ -73,7 +73,7 @@
> */
>
> typedef struct {
>- unsigned char threadingModell; // we use the COINIT flags
>+ unsigned char threadingModell; /* we use the COINIT flags */
> unsigned long threadID;
> long AppartmentLockCount;
> } OleAppartmentData;
>Index: dlls/shell32/shlfolder.c
>===================================================================
>RCS file: /opcom/comp/ws/wine/CVSROOT/wine/dlls/shell32/shlfolder.c,v
>retrieving revision 1.3
>diff -u -r1.3 shlfolder.c
>--- /tmp/T0vHaqLL Tue Aug 6 13:25:08 2002
>+++ shlfolder.c Tue Aug 6 13:22:54 2002
>@@ -381,7 +381,7 @@
> nextpidl2;
> IShellFolder *psf;
>
>- // test for empty pidls
>+ /* test for empty pidls */
> BOOL isEmpty1 = _ILIsDesktop (pidl1);
> BOOL isEmpty2 = _ILIsDesktop (pidl2);
>
>@@ -392,26 +392,26 @@
> if (isEmpty2)
> return 1;
>
>- // test for different types. Sort order is the PT_* constant */
>+ /* test for different types. Sort order is the PT_* constant */
> type1 = _ILGetDataPointer (pidl1)->type;
> type2 = _ILGetDataPointer (pidl2)->type;
> if (type1 != type2)
> return (type1 - type2);
>
>- // test for name of pidl
>+ /* test for name of pidl */
> _ILSimpleGetText (pidl1, szTemp1, MAX_PATH);
> _ILSimpleGetText (pidl2, szTemp2, MAX_PATH);
> nReturn = strcasecmp (szTemp1, szTemp2);
> if (nReturn != 0)
> return nReturn;
>
>- // test of complex pidls
>+ /* test of complex pidls */
> firstpidl = ILCloneFirst (pidl1);
> nextpidl1 = ILGetNext (pidl1);
> nextpidl2 = ILGetNext (pidl2);
>
>- // optimizing: test special cases and bind not deeper
>- // the deeper shellfolder would do the same
>+ /* optimizing: test special cases and bind not deeper */
>+ /* the deeper shellfolder would do the same */
> isEmpty1 = _ILIsDesktop (nextpidl1);
> isEmpty2 = _ILIsDesktop (nextpidl2);
>
>@@ -421,7 +421,7 @@
> nReturn = -1;
> } else if (isEmpty2) {
> nReturn = 1;
>- // optimizing end
>+ /* optimizing end */
> } else if (SUCCEEDED (IShellFolder_BindToObject (iface, firstpidl, NULL, &IID_IShellFolder, (LPVOID *) & psf))) {
> nReturn = IShellFolder_CompareIDs (psf, lParam, nextpidl1, nextpidl2);
> IShellFolder_Release (psf);
>
>
>------------------------------------------------------------------------
>
>Index: dlls/ddraw/dsurface/dib.c
>===================================================================
>RCS file: /opcom/comp/ws/wine/CVSROOT/wine/dlls/ddraw/dsurface/dib.c,v
>retrieving revision 1.3
>diff -u -r1.3 dib.c
>--- /tmp/T0u_aqgL Tue Aug 6 13:08:39 2002
>+++ dib.c Tue Aug 6 13:02:52 2002
>@@ -413,8 +413,13 @@
>
> /* The easy case : the source-less blits.... */
> if (src == NULL) {
>- RECT full_rect = { 0, 0, ddesc.dwHeight, ddesc.dwWidth };
>+ RECT full_rect;
> RECT temp_rect; /* No idea if intersect rect can be the same as one of the source rect */
>+
>+ full_rect.left = 0;
>+ full_rect.top = 0;
>+ full_rect.right = ddesc.dwWidth;
>+ full_rect.bottom = ddesc.dwHeight;
> IntersectRect(&temp_rect, &full_rect, &xdst);
> xdst = temp_rect;
> } else {
>
>
>------------------------------------------------------------------------
>
>Index: dlls/msvcrt/math.c
>===================================================================
>RCS file: /opcom/comp/ws/wine/CVSROOT/wine/dlls/msvcrt/math.c,v
>retrieving revision 1.2
>diff -u -r1.2 math.c
>--- /tmp/T0wHaaWK Tue Aug 6 11:17:53 2002
>+++ math.c Tue Aug 6 10:33:59 2002
>@@ -292,7 +292,7 @@
>
> /* The above cannot be called on non x86 platforms, stub them for linking */
>
>-#define IX86_ONLY(func) double MSVCRT_##func(void) { return 0.0; }
>+#define IX86_ONLY(func) double func(void) { return 0.0; }
>
> IX86_ONLY(_CIacos)
> IX86_ONLY(_CIasin)
>
>
>------------------------------------------------------------------------
>
>Index: dlls/shlwapi/tests/shreg.c
>===================================================================
>RCS file: /opcom/comp/ws/wine/CVSROOT/wine/dlls/shlwapi/tests/shreg.c,v
>retrieving revision 1.2
>diff -u -r1.2 shreg.c
>--- /tmp/T023aGXK Tue Aug 6 11:18:28 2002
>+++ shreg.c Tue Aug 6 10:30:58 2002
>@@ -108,8 +108,8 @@
> /****** SHQueryValueExA ******/
>
> sTestedFunction = "SHQueryValueExA";
>- nUsedBuffer1 = max(strlen(sExpTestpath1)+1, strlen(sTestpath1));
>- nUsedBuffer2 = max(strlen(sExpTestpath2)+1, strlen(sTestpath2));
>+ nUsedBuffer1 = max(strlen(sExpTestpath1)+1, strlen(sTestpath1)+1);
>+ nUsedBuffer2 = max(strlen(sExpTestpath2)+1, strlen(sTestpath2)+1);
> /*
> * Case 1.1 All arguments are NULL
> */
>
>
>------------------------------------------------------------------------
>
>Index: dlls/shell32/classes.c
>===================================================================
>RCS file: /opcom/comp/ws/wine/CVSROOT/wine/dlls/shell32/classes.c,v
>retrieving revision 1.2
>diff -u -r1.2 classes.c
>--- /tmp/T0tfaiIL Tue Aug 6 13:18:33 2002
>+++ classes.c Tue Aug 6 13:16:03 2002
>@@ -65,8 +65,8 @@
>
> RegCloseKey(hkey);
>
>- TRACE("--UE;
>-} %s\n", szFileType );
>+ TRACE("--UE;\n"
>+"} %s\n", szFileType );
>
> return TRUE;
> }
>
>
>------------------------------------------------------------------------
>
>Index: tools/widl/utils.h
>===================================================================
>RCS file: /opcom/comp/ws/wine/CVSROOT/wine/tools/widl/utils.h,v
>retrieving revision 1.1
>diff -u -r1.1 utils.h
>--- /tmp/T0D2a4JL Tue Aug 6 13:22:30 2002
>+++ utils.h Tue Aug 6 11:35:29 2002
>@@ -29,6 +29,10 @@
> void *xrealloc(void *, size_t);
> char *xstrdup(const char *str);
>
>+#ifndef __GNUC__
>+#define __attribute__(X)
>+#endif
>+
> int yyerror(const char *s, ...) __attribute__((format (printf, 1, 2)));
> int yywarning(const char *s, ...) __attribute__((format (printf, 1, 2)));
> void internal_error(const char *file, int line, const char *s, ...) __attribute__((format (printf, 3, 4)));
>Index: tools/wmc/utils.h
>===================================================================
>RCS file: /opcom/comp/ws/wine/CVSROOT/wine/tools/wmc/utils.h,v
>retrieving revision 1.1
>diff -u -r1.1 utils.h
>--- /tmp/T0i7aqKL Tue Aug 6 13:22:30 2002
>+++ utils.h Tue Aug 6 13:20:06 2002
>@@ -31,6 +31,10 @@
> void *xrealloc(void *, size_t);
> char *xstrdup(const char *str);
>
>+#ifndef __GNUC__
>+#define __attribute__(X)
>+#endif
>+
> int yyerror(const char *s, ...) __attribute__((format (printf, 1, 2)));
> int xyyerror(const char *s, ...) __attribute__((format (printf, 1, 2)));
> int yywarning(const char *s, ...) __attribute__((format (printf, 1, 2)));
>Index: tools/wrc/utils.h
>===================================================================
>RCS file: /opcom/comp/ws/wine/CVSROOT/wine/tools/wrc/utils.h,v
>retrieving revision 1.2
>diff -u -r1.2 utils.h
>--- /tmp/T0s_aOKL Tue Aug 6 13:22:31 2002
>+++ utils.h Tue Aug 6 11:35:20 2002
>@@ -31,6 +31,10 @@
> void *xrealloc(void *, size_t);
> char *xstrdup(const char *str);
>
>+#ifndef __GNUC__
>+#define __attribute__(X)
>+#endif
>+
> int yyerror(const char *s, ...) __attribute__((format (printf, 1, 2)));
> int yywarning(const char *s, ...) __attribute__((format (printf, 1, 2)));
> void internal_error(const char *file, int line, const char *s, ...) __attribute__((format (printf, 3, 4)));
>
>
>------------------------------------------------------------------------
>
>Index: tools/widl/widltypes.h
>===================================================================
>RCS file: /opcom/comp/ws/wine/CVSROOT/wine/tools/widl/widltypes.h,v
>retrieving revision 1.1
>diff -u -r1.1 widltypes.h
>--- /tmp/T0fwaaiL Tue Aug 6 13:10:19 2002
>+++ widltypes.h Tue Aug 6 11:40:33 2002
>@@ -36,7 +36,7 @@
> type *l_prev;
>
> #define LINK(x,y) do { x->l_next = y; if (y) y->l_prev = x; } while (0)
>-#define LINK_LAST(x,y) do { if (y) { typeof(x) _c = x; while (_c->l_next) _c = _c->l_next; LINK(_c, y); } } while (0)
>+#define LINK_LAST(x,y) do { if (y) { attr_t *_c = x; while (_c->l_next) _c = _c->l_next; LINK(_c, y); } } while (0)
> #define LINK_SAFE(x,y) do { if (x) LINK_LAST(x,y); else { x = y; } } while (0)
>
> #define INIT_LINK(x) do { x->l_next = NULL; x->l_prev = NULL; } while (0)
>
>