Author: sip Date: 2006-02-23 19:45:58 +0100 (Thu, 23 Feb 2006) New Revision: 804 Added: crux-2.2/ports/opt/windowmaker/windowmaker-0.92.0-gcc4.patch Modified: crux-2.2/ports/opt/windowmaker/.md5sum crux-2.2/ports/opt/windowmaker/Pkgfile Log: windowmaker: added gcc4 patch Modified: crux-2.2/ports/opt/windowmaker/.md5sum =================================================================== --- crux-2.2/ports/opt/windowmaker/.md5sum 2006-02-23 18:45:10 UTC (rev 803) +++ crux-2.2/ports/opt/windowmaker/.md5sum 2006-02-23 18:45:58 UTC (rev 804) @@ -1 +1,2 @@ aaac5421b686ed2d3e6ab65229c98097 WindowMaker-0.92.0.tar.bz2 +68d8e1b36c5cf4122c754a68d044b9cb windowmaker-0.92.0-gcc4.patch Modified: crux-2.2/ports/opt/windowmaker/Pkgfile =================================================================== --- crux-2.2/ports/opt/windowmaker/Pkgfile 2006-02-23 18:45:10 UTC (rev 803) +++ crux-2.2/ports/opt/windowmaker/Pkgfile 2006-02-23 18:45:58 UTC (rev 804) @@ -5,11 +5,16 @@ name=windowmaker version=0.92.0 -release=1 -source=(ftp://ftp.windowmaker.org/pub/source/release/WindowMaker-$version.tar.bz2) +release=2 +source=(ftp://ftp.windowmaker.org/pub/source/release/WindowMaker-$version.tar.bz2 \ + $name-$version-gcc4.patch) build() { cd WindowMaker-$version + patch -p0 < ../$name-$version-gcc4.patch + aclocal + autoconf + automake -a ./configure --prefix=/usr make make DESTDIR=$PKG install Added: crux-2.2/ports/opt/windowmaker/windowmaker-0.92.0-gcc4.patch =================================================================== --- crux-2.2/ports/opt/windowmaker/windowmaker-0.92.0-gcc4.patch 2006-02-23 18:45:10 UTC (rev 803) +++ crux-2.2/ports/opt/windowmaker/windowmaker-0.92.0-gcc4.patch 2006-02-23 18:45:58 UTC (rev 804) @@ -0,0 +1,141 @@ +--- configure.ac ++++ configure.ac +@@ -197,7 +197,7 @@ + + AC_CACHE_CHECK(whether gcc supports x86 inline asm, + ac_cv_c_inline_asm, +- [AC_TRY_LINK(,[{int x; asm volatile("movl %%eax, %%ebx\n":: ++ [AC_TRY_LINK(,[{int x; asm volatile("movl %%eax, %%ebx\n\t pushal\n\t popal":: + "m" (x),"m" (x),"m" (x),"m" (x),"m" (x),"m" (x), + "m" (x),"m" (x),"m" (x),"m" (x),"m" (x),"m" (x));}], + ac_cv_c_inline_asm=yes, +--- wrlib/x86_specific.c ++++ wrlib/x86_specific.c +@@ -98,15 +98,23 @@ + int height, + int line_offset) + { +- long long rrggbbaa; +- long long pixel; ++ union { ++ long long rrggbbaa; ++ struct {short int rr, gg, bb, aa;} words; ++ } rrggbbaa; ++ ++ union { ++ long long pixel; ++ struct {short int rr, gg, bb, aa;} words; ++ } pixel; ++ + short *tmp_err; + short *tmp_nerr; + int x; + + asm volatile + ( +- "pushal \n\t" ++ "pushl %%ebx \n\t" + + // pack dr, dg and db into mm6 + "movl %7, %%eax \n\t" +@@ -290,7 +298,7 @@ + + ".Enda: \n\t" // THE END + "emms \n\t" +- "popal \n\t" ++ "popl %%ebx \n\t" + : + : + "m" (image), // %0 +@@ -309,17 +317,18 @@ + "m" (width), // %13 + "m" (height), // %14 + "m" (line_offset), // %15 +- "m" (rrggbbaa), // %16 (access to rr) +- "m" ((*((short*)(&rrggbbaa)+1))), // %17 (access to gg) +- "m" ((*((short*)(&rrggbbaa)+2))), // %18 (access to bb) +- "m" ((*((short*)(&rrggbbaa)+3))), // %19 (access to aa) +- "m" (pixel), // %20 (access to pixel.r) +- "m" ((*((short*)(&pixel)+1))), // %21 (access to pixel.g) +- "m" ((*((short*)(&pixel)+2))), // %22 (access to pixel.b) +- "m" ((*((short*)(&pixel)+3))), // %23 (access to pixel.a) ++ "m" (rrggbbaa.rrggbbaa), // %16 (access to rr) ++ "m" (rrggbbaa.words.gg), // %17 (access to gg) ++ "m" (rrggbbaa.words.bb), // %18 (access to bb) ++ "m" (rrggbbaa.words.aa), // %19 (access to aa) ++ "m" (pixel.pixel), // %20 (access to pixel.r) ++ "m" (pixel.words.gg), // %21 (access to pixel.g) ++ "m" (pixel.words.bb), // %22 (access to pixel.b) ++ "m" (pixel.words.aa), // %23 (access to pixel.a) + "m" (tmp_err), // %24 + "m" (tmp_nerr), // %25 + "m" (x) // %26 ++ : "eax", "ecx", "edx", "esi", "edi" + ); + } + +@@ -342,8 +351,15 @@ + int height, + int line_offset) + { +- long long rrggbbaa; +- long long pixel; ++ union { ++ long long rrggbbaa; ++ struct {short int rr, gg, bb, aa;} words; ++ } rrggbbaa; ++ ++ union { ++ long long pixel; ++ struct {short int rr, gg, bb, aa;} words; ++ } pixel; + + short *tmp_err; + short *tmp_nerr; +@@ -354,7 +370,7 @@ + + asm volatile + ( +- "pushal \n\t" ++ "pushl %%ebx \n\t" + + "movl %13, %%eax \n\t" // eax = width + "movl %%eax, %%ebx \n\t" +@@ -424,7 +440,7 @@ + + ".Endc: \n\t" // THE END + "emms \n\t" +- "popal \n\t" ++ "popl %%ebx \n\t" + : + : + "m" (image), // %0 +@@ -443,19 +459,20 @@ + "m" (width), // %13 + "m" (height), // %14 + "m" (line_offset), // %15 +- "m" (rrggbbaa), // %16 (access to rr) +- "m" ((*((short*)(&rrggbbaa)+1))), // %17 (access to gg) +- "m" ((*((short*)(&rrggbbaa)+2))), // %18 (access to bb) +- "m" ((*((short*)(&rrggbbaa)+3))), // %19 (access to aa) +- "m" (pixel), // %20 (access to pixel.r) +- "m" ((*((short*)(&pixel)+1))), // %21 (access to pixel.g) +- "m" ((*((short*)(&pixel)+2))), // %22 (access to pixel.b) +- "m" ((*((short*)(&pixel)+3))), // %23 (access to pixel.a) ++ "m" (rrggbbaa.rrggbbaa), // %16 (access to rr) ++ "m" (rrggbbaa.words.gg), // %17 (access to gg) ++ "m" (rrggbbaa.words.bb), // %18 (access to bb) ++ "m" (rrggbbaa.words.aa), // %19 (access to aa) ++ "m" (pixel.pixel), // %20 (access to pixel.r) ++ "m" (pixel.words.gg), // %21 (access to pixel.g) ++ "m" (pixel.words.bb), // %22 (access to pixel.b) ++ "m" (pixel.words.aa), // %23 (access to pixel.a) + "m" (tmp_err), // %24 + "m" (tmp_nerr), // %25 + "m" (x), // %26 + "m" (w1), // %27 + "m" (w2) // %28 ++ : "eax", "ecx", "edx", "esi", "edi" + ); + } +
participants (1)
-
crux@crux.nu