All File in undroid/
Not logged in

Files in directory /undroid in any check-in

undroidwish - AndroWish sans the borg, a project just for pun.

This directory contains various build scripts (UN*X shell) for generating
single-file Tcl/Tk binaries using bits and pieces of the AndroWish source tree:

	script				result	undroidwish.exe for win64	undroidwish.exe for win32	undroidwish for 64bit linux (x86_64)	undroidwish for 32bit linux (i586)	undroidwish for generic linux (e.g. arm)	undroidwish for linux incl. Wayland
				video driver (*experimental*)	undroidwish for Haiku (*very experimental*)	undroidwish for FreeBSD	undroidwish for OpenIndiana Hipster	undroidwish for MacOSX (*experimental*)	undroidwish for OpenBSD	undroidwish for linux with KMSDRM
				video driver only (*experimental*)		vanilla{tclsh,wish}.exe for win64		vanilla{tclsh,wish}.exe for win32	vanilla{tclsh,wish} for 64bit linux (x86_64)	vanilla{tclsh,wish} for 32bit linux (i586)	vanilla{tclsh,wish} for generic linux (e.g. arm)	vanilla{tclsh,wish} for FreeBSD	vanilla{tclsh,wish} for OpenIndiana Hipster	vanilla{tclsh,wish} for OpenBSD		vanilla{tclsh,wish} for MacOSX (Cocoa)

The undroidwish variant uses the SDL2 backend, the vanilla variant
the native one (i.e. X11 on POSIX, Win32/GDI on Windows, Cocoa on MacOS).

The generic undroidwish variant tries to detect a Raspberry Pi build
environment and can produce a binary which runs in the console using
the RPI SDL video driver, i.e. does not require an X server (tested
on Raspbian/Debian 9).

The builds for Windows are designed for cross compilation on a Linux
(or other POSIX) development system using a MinGW cross toolchain
targeting Win32 or Win64. During this build a working Wine emulation
is required (thus the best suited development platform is a recent
Linux, e.g. Debian, CentOS, or Fedora).

The experimental Wayland variant gets built with both an X11 and a Wayland
video driver plus the KMSDRM video driver, if possible. The former driver
is the default. In order to run with the Wayland driver, the environment
must have the variable WAYLAND_DISPLAY defined or alternatively
SDL_VIDEODRIVER set to "wayland". The build is currently verified on
Fedora 28/29, Debian 9, and CentOS 7.5. The undroidwish root window on
Wayland has no decorations and can be moved and/or resized (-sdlresizable
required) with the hot keys Alt-F7 and Alt-F8.

The experimental KMSDRM variant gets built with the KMSDRM video
driver only which gives a similar configuration as with the RPI
video driver. It requires working Linux kernel mode setting support
and modern graphics hardware. It allows to run an undroidwish from
the console in frame buffer mode. On most modern Linuxen this requires
the user to be in the video and input groups. An emergency exit is
provided with the Control-Alt-Backspace hot key. Since 2018-03-26
it includes OpenGL support for the Canvas3D and Tkzinc widgets
which still may have problems depending on the GPU hardware.

Refer to the individual script for build requirements. The general pattern
for invocation is

  <full-name-of-script-within-AndroWish-source-tree> ?<action>?

where <action> (default is "build") carries out the following:

"init"		initialize current directory from AndroWishs source tree
"sync"		sync with AndroWish source tree
"clean"		run "make clean" in subdirectories
"distclean"	run "make distclean" in subdirectories
"build"		build everything
"ebuild"	like "build" but fully embeds the zipfs into the binary
		(see notes below)

i.e. the "init" action should be carried out in a new empty directory
outside the AndroWish source tree, all others in that directory which got
populated by the "init" action. The disk space needed for a full build per
platform is 700 to 900 MByte on a Linux development system.

The build process compiles and links Tcl and Tk plus support libraries
plus extensions and collects everything into a staging area from where
a zip archive is produced which becomes part of the final executable(s).

For the "build" action this zip archive is simply appended at the end of
the binary (wish or tclsh) from where it can be mounted as a zipfs on
program startup.

The "ebuild" action is available for the three major platforms Linux,
Windows, and MacOSX. In contrast to "build" it adds the zip archive
in the link phase of wish and tclsh and thus produces an immutable
binary which cannot recreate itself with altered contents of the zipfs.

On Debian GNU/Linux and derivates, these packages should be present for
building (more may be required):


Or in the words of dzach from the ticket

  sudo apt install \
    build-essential cmake nasm libx11-dev libgl1-mesa-dev libcairo2-dev \
    libdbus-1-dev libaugeas-dev libasound2-dev libglu1-mesa-dev libffi-dev \
    texinfo libfuse-dev

For a Raspberry Pi with a generic touchscreen, one might also need:

  xrandr-dev xcb-xinput-dev

On MacOSX these homebrew packages are needed for building (more may be