Puppy In-House Development
- Iguleder
- Posts: 2026
- Joined: Tue 11 Aug 2009, 09:36
- Location: Israel, somewhere in the beautiful desert
- Contact:
The only thing that builds fine with today's kernel, musl and GCC is tinyxlib, but any variant of X I've tried (XFree86, early X.Org kdrive versions) doesn't.
I've wrote some proof-of-concept display server that draws rectangles on the screen through a framebuffer device - if I get it to work well, I'll try to port a stripped-down GTK 1 to it.
By the way, I added a faster, hash-based cache to the kernel module tools, so they're a lot faster now.
I've wrote some proof-of-concept display server that draws rectangles on the screen through a framebuffer device - if I get it to work well, I'll try to port a stripped-down GTK 1 to it.
By the way, I added a faster, hash-based cache to the kernel module tools, so they're a lot faster now.
[url=http://dimakrasner.com/]My homepage[/url]
[url=https://github.com/dimkr]My GitHub profile[/url]
[url=https://github.com/dimkr]My GitHub profile[/url]
I just compiled Xfbdev from tinyXserver source, and it's working nicely.Iguleder wrote:The only thing that builds fine with today's kernel, musl and GCC is tinyxlib, but any variant of X I've tried (XFree86, early X.Org kdrive versions) doesn't.
Note, though, that you will need to edit standard_definitions.mk if you are cross-compiling: the standard setup for tinyxlib installs to /usr, and tinyxserver expects the libc and tinyxlib headers to be in /usr/include.
To build Xvesa may require a little editing; I don't think musl includes <sys/io.h> or <sys/vm86.h>, but only the macros are needed.
goingnut's makefile doesn't handle building just Xfbdev that well; try running "make -i" or commenting out every line that mentions vesa.
Hmmm...somehow I'm reminded of NanoX/Microwindows...I've wrote some proof-of-concept display server that draws rectangles on the screen through a framebuffer device - if I get it to work well, I'll try to port a stripped-down GTK 1 to it.
Self-hosted built-from-scratch musl+busybox+gcc. Linux 3.0 kernel, but that's probably not relevant.Iguleder wrote:What distro are you building on?
(Yes, self-hosted can really make things simpler.)
But you'll need the kernel headers installed in your target's includedir.
Tell me a couple things and I should be able to get a build-system patch:
-prefix for musl on the host
-I assume all the libs and headers get installed in the same directory on the host?
(for example, use /opt/musl as prefix for everything and install as you go)
- technosaurus
- Posts: 4853
- Joined: Mon 19 May 2008, 01:24
- Location: Blue Springs, MO
- Contact:
I highly recommend netsurf's nsfb as a starting point because it is small and has xcb (not X11) wayland and linux framebuffer backends (and some others - SDL, ram, and some other framebuffer)Iguleder wrote:I've wrote some proof-of-concept display server that draws rectangles on the screen through a framebuffer device - if I get it to work well, I'll try to port a stripped-down GTK 1 to it.
By the way, I added a faster, hash-based cache to the kernel module tools, so they're a lot faster now.
For the kernel modules, finit_module syscall (added in 3.8 ) is quite convenient and was extremely fast with my flat modules experiment (all modules in 1 directory /lib/modules/X.X.X) It worked well with the normal module tree as well, but not as fast as the flat style.
Check out my [url=https://github.com/technosaurus]github repositories[/url]. I may eventually get around to updating my [url=http://bashismal.blogspot.com]blogspot[/url].
I see you are using ${SYSROOT} as the target root directory, and headers go in the usual place.
This should get the cross-compiling part working:
That doesn't take care of it building the vesa stuff; but you should find removing that from the makefile pretty easy.
This should get the cross-compiling part working:
Code: Select all
cd tinyxlib
sed -e 's_/usr_${SYSROOT}/usr_g' standard_definitions.mk >newdefs.mk
cp newdefs.mk standard_definitions.mk
cd ../tiny-Xserver-0.03
sed -e 's_\(^CC\)=_#\1_g' -e 's_\(/usr\)_${SYSROOT}\1_g' standard_definitions.mk >newdefs.mk
cp newdefs.mk standard_definitions.mk
- Iguleder
- Posts: 2026
- Joined: Tue 11 Aug 2009, 09:36
- Location: Israel, somewhere in the beautiful desert
- Contact:
tinyxlib builds just fine, but tinyxserver doesn't. Here's what I get, under Debian Wheezy, x86_64.cd render; make
make[1]: Entering directory `/root/Downloads/tinyxserver-master/render'
ar cr librender.a glyph.o miglyph.o miindex.o mipict.o mirect.o picture.o render.o
make[1]: Leaving directory `/root/Downloads/tinyxserver-master/render'
cd dix; make
make[1]: Entering directory `/root/Downloads/tinyxserver-master/dix'
make[1]: `libdix.a' is up to date.
make[1]: Leaving directory `/root/Downloads/tinyxserver-master/dix'
cd os; make
make[1]: Entering directory `/root/Downloads/tinyxserver-master/os'
ar cr libos.a WaitFor.o access.o connection.o io.o osinit.o utils.o auth.o mitauth.o secauth.o xdmcp.o decompress.o transport.o
make[1]: Leaving directory `/root/Downloads/tinyxserver-master/os'
cd mi; make
make[1]: Entering directory `/root/Downloads/tinyxserver-master/mi'
ar cr libmi.a cbrt.o miarc.o mibank.o mibitblt.o mibstore.o miclipn.o micmap.o micursor.o midash.o midispcur.o mieq.o miexpose.o mifillarc.o mifillrct.o mifpolycon.o migc.o miglblt.o miinitext.o mioverlay.o mipointer.o mipoly.o mipolycon.o mipolygen.o mipolypnt.o mipolyrect.o mipolyseg.o mipolytext.o mipolyutil.o mipushpxl.o miregion.o miscrinit.o mispans.o misprite.o mivaltree.o miwideline.o miwindow.o mizerarc.o mizerclip.o mizerline.o
make[1]: Leaving directory `/root/Downloads/tinyxserver-master/mi'
cd Xext; make
make[1]: Entering directory `/root/Downloads/tinyxserver-master/Xext'
ar cr libext.a bigreq.o mbuf.o saver.o xf86dga2.o xtest.o cup.o mbufpx.o xf86dga.o xvdisp.o mitmisc.o shm.o xf86misc.o xvmain.o dpmsstubs.o sleepuntil.o xf86vmode.o xvmc.o EVI.o sync.o xprint.o xvmod.o fontcache.o xcmisc.o xtest1dd.o mbufbf.o sampleEVI.o xf86bigfont.o xtest1di.o
make[1]: Leaving directory `/root/Downloads/tinyxserver-master/Xext'
cd Xext/extmod; make
make[1]: Entering directory `/root/Downloads/tinyxserver-master/Xext/extmod'
make[1]: `libextmod.a' is up to date.
make[1]: Leaving directory `/root/Downloads/tinyxserver-master/Xext/extmod'
cd XTrap; make
make[1]: Entering directory `/root/Downloads/tinyxserver-master/XTrap'
ar cr libxtrap.a xf86XTrapModule.o xtrapddmi.o xtrapdi.o xtrapdiswp.o xtrapditbl.o
make[1]: Leaving directory `/root/Downloads/tinyxserver-master/XTrap'
cd hw/kdrive; make
make[1]: Entering directory `/root/Downloads/tinyxserver-master/hw/kdrive'
ar cr libkdrive.a kaa.o kasync.o kcmap.o kcolor.o kcurscol.o kdrive.o kinfo.o kinput.o kmap.o kmode.o knoop.o kpict.o kshadow.o ktest.o kxv.o vga.o
make[1]: Leaving directory `/root/Downloads/tinyxserver-master/hw/kdrive'
cd hw/kdrive/linux; make
make[1]: Entering directory `/root/Downloads/tinyxserver-master/hw/kdrive/linux'
ar cr liblinux.a agp.o bus.o keyboard.o linux.o mouse.o ms.o ps2.o
make[1]: Leaving directory `/root/Downloads/tinyxserver-master/hw/kdrive/linux'
cd fb; make
make[1]: Entering directory `/root/Downloads/tinyxserver-master/fb'
/root/Downloads/sysroot/bin/musl-gcc -I../include -I../mi -I../fb -I../hw/kdrive -I../render -I../Xext -pipe -Os -Wall -D_BSD_SOURCE -D_GNU_SOURCE -D__KERNEL_STRICT_NAMES -fno-strength-reduce -nodefaultlibs -fno-strict-aliasing -ffunction-sections -fdata-sections -I/opt/musl/include -I. -DNOERROR -D__i386__ -Dlinux -D_POSIX_SOURCE -D_BSD_SOURCE -DTOSHIBA_SMM -D_SVID_SOURCE -D_GNU_SOURCE -DX_LOCALE -DKDRIVESERVER -DGCCUSESGAS -DDDXOSINIT -DNOFONTSERVERACCESS -DNDEBUG -DNARROWPROTO -DPIXPRIV -DFUNCPROTO=15 -DCOMPILEDDEFAULTFONTPATH=\"/usr/share/fonts/X11/misc/\" -DRGB_DB=\"/usr/share/X11/rgb\" -D_POSIX_C_SOURCE=2 -DMITSHM -DRENDER -DXCMISC -DXV -DUSE_RGB_TXT -D__KERNEL_STRICT_NAMES -c -o fbblt.o fbblt.c
fbblt.c: In function ‘fbBlt’:
fbblt.c:136:7: error: duplicate case value
fbblt.c:136:7: error: previously used here
fbblt.c:136:7: error: duplicate case value
fbblt.c:136:7: error: previously used here
fbblt.c:144:7: error: duplicate case value
fbblt.c:144:7: error: previously used here
fbblt.c:144:7: error: duplicate case value
fbblt.c:144:7: error: previously used here
fbblt.c:260:7: error: duplicate case value
fbblt.c:260:7: error: previously used here
fbblt.c:260:7: error: duplicate case value
fbblt.c:260:7: error: previously used here
fbblt.c:272:7: error: duplicate case value
fbblt.c:272:7: error: previously used here
fbblt.c:272:7: error: duplicate case value
fbblt.c:272:7: error: previously used here
make[1]: *** [fbblt.o] Error 1
make[1]: Leaving directory `/root/Downloads/tinyxserver-master/fb'
make: *** [all] Error 2
I've been trying to figure out why this happens for hours - I tried to evaluate all those macros and found no duplicate values so far.
EDIT: this doesn't happen when I pass "-m32" to GCC. It's some 64-bit incompatibility.
[url=http://dimakrasner.com/]My homepage[/url]
[url=https://github.com/dimkr]My GitHub profile[/url]
[url=https://github.com/dimkr]My GitHub profile[/url]
- technosaurus
- Posts: 4853
- Joined: Mon 19 May 2008, 01:24
- Location: Blue Springs, MO
- Contact:
In the future, you can comment out all of the #includes that are of no concern and then preprocess the file with gcc -E ... to evaluate the macros. It would be nice to fix it for 64bit (and xfbdev for arm, mips,..) I am interested in porting xfbdev to the BSD framebuffer and using mfsBSD to bootstrap a totally unencumbered stray pup.
Does anyone happen to know any substantial app that works on both the Linux and BSD framebuffers?
Does anyone happen to know any substantial app that works on both the Linux and BSD framebuffers?
Check out my [url=https://github.com/technosaurus]github repositories[/url]. I may eventually get around to updating my [url=http://bashismal.blogspot.com]blogspot[/url].
- technosaurus
- Posts: 4853
- Joined: Mon 19 May 2008, 01:24
- Location: Blue Springs, MO
- Contact:
does:provide anything helpful?
Code: Select all
gcc -m32 -E ... > m32res;gcc -m64 -E ... > m64res; diff -u m32res m64res
Check out my [url=https://github.com/technosaurus]github repositories[/url]. I may eventually get around to updating my [url=http://bashismal.blogspot.com]blogspot[/url].
- technosaurus
- Posts: 4853
- Joined: Mon 19 May 2008, 01:24
- Location: Blue Springs, MO
- Contact:
The tiny Xvesa is patched to give black screen.
I have XFree86-4.8.0 building Xvesa, Xfbdev and XFree86 with uclibc. I have attached the background patch and my build script. Some external functions are missing but you will get the picture.
The Xvesa/Xfbdev is 930K static linked - the XFree86 is 8.8Mb.
20131104: Removed files as not relevant
I have XFree86-4.8.0 building Xvesa, Xfbdev and XFree86 with uclibc. I have attached the background patch and my build script. Some external functions are missing but you will get the picture.
The Xvesa/Xfbdev is 930K static linked - the XFree86 is 8.8Mb.
20131104: Removed files as not relevant
Last edited by goingnuts on Mon 04 Nov 2013, 18:51, edited 1 time in total.
http://www.murga-linux.com/puppy/viewto ... 532#730532
Goingnuts writes
Goingnuts writes
Posted: Mon Oct 14, 2013 Post subject:
Link to present tiny-Xserver-0.03 source
https://www.dropbox.com/s/ndamatph1sci8 ... .03.tar.gz
I trust somebody correct me if I got the link wrong
I use Google Search on Puppy Forum
not an ideal solution though
not an ideal solution though
- technosaurus
- Posts: 4853
- Joined: Mon 19 May 2008, 01:24
- Location: Blue Springs, MO
- Contact:
on x86 the code expands to:
gcc -I../include -E fbblt.c >fbblt.E
holy crap, what a mess of unwieldy macros
gcc -I../include -E fbblt.c >fbblt.E
Code: Select all
typedef CARD32 FbBits; //this is platform dependent
...
case (sizeof (FbBits) - 3) | (1 << (5 - 3)):... break;
case (sizeof (FbBits) - 3) | (2 << (5 - 3)):... break;
case (sizeof (FbBits) - 2) | (1 << (5 - 3)):... break;
case sizeof (FbBits) - 3: ... (no break, falls through)
case sizeof (FbBits) - 2: ... break;
case sizeof (FbBits) - 1: ... break;
Check out my [url=https://github.com/technosaurus]github repositories[/url]. I may eventually get around to updating my [url=http://bashismal.blogspot.com]blogspot[/url].
- Iguleder
- Posts: 2026
- Joined: Tue 11 Aug 2009, 09:36
- Location: Israel, somewhere in the beautiful desert
- Contact:
I think int32_t and sizeof(int32_t) is the way to go. This code assumes integer types are not padded, which is totally wrong with today's compilers.
I'll try this and report.
EDIT: seems to build just fine. It's still compiling (I'm using an old Atom netbook, since my shiny new laptop HDD burst in flames), so it's going to take a while before I can try this out
EDIT 2: I get a black screen when I run it. Keyboard and mouse don't work and I have to CTRL + ALT + DEL.
I'll try this and report.
EDIT: seems to build just fine. It's still compiling (I'm using an old Atom netbook, since my shiny new laptop HDD burst in flames), so it's going to take a while before I can try this out
EDIT 2: I get a black screen when I run it. Keyboard and mouse don't work and I have to CTRL + ALT + DEL.
[url=http://dimakrasner.com/]My homepage[/url]
[url=https://github.com/dimkr]My GitHub profile[/url]
[url=https://github.com/dimkr]My GitHub profile[/url]