================================================================================
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

build-undroidwish-win64.sh	undroidwish.exe for win64
build-undroidwish-win32.sh	undroidwish.exe for win32
build-undroidwish-linux64.sh	undroidwish for 64bit linux (x86_64)
build-undroidwish-linux32.sh	undroidwish for 32bit linux (i586)
build-undroidwish-generic.sh	undroidwish for generic linux (e.g. arm)
build-undroidwish-wayland.sh	undroidwish for linux incl. Wayland
				video driver (*very experimental*)
build-undroidwish-haiku.sh	undroidwish for Haiku (*very experimental*)
build-undroidwish-freebsd.sh	undroidwish for FreeBSD
build-undroidwish-illumos.sh	undroidwish for OpenIndiana Hipster
build-undroidwish-macosx.sh	undroidwish for MacOSX (*experimental*)
build-undroidwish-openbsd.sh	undroidwish for OpenBSD
build-undroidwish-kmsdrm.sh	undroidwish for linux with KMSDRM
				video driver only (*very experimental*)

build-vanilla-win64.sh		vanilla{tclsh,wish}.exe for win64
build-vanilla-win32.sh		vanilla{tclsh,wish}.exe for win32
build-vanilla-linux64.sh	vanilla{tclsh,wish} for 64bit linux (x86_64)
build-vanilla-linux32.sh	vanilla{tclsh,wish} for 32bit linux (i586)
build-vanilla-generic.sh	vanilla{tclsh,wish} for generic linux (e.g. arm)
build-vanilla-freebsd.sh	vanilla{tclsh,wish} for FreeBSD
build-vanilla-illumos.sh	vanilla{tclsh,wish} for OpenIndiana Hipster
build-vanilla-openbsd.sh	vanilla{tclsh,wish} for OpenBSD
build-vanilla-macosx.sh		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

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.

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

    bc
    libasound2-dev
    libaugeas-dev
    libcairo2-dev
    libdbus-1-dev
    libfontconfig1-dev
    libfreetype6-dev
    libgbm-dev
    libgl1-mesa-dev
    libglu1-mesa-dev
    libibus-1.0-dev
    libusb-dev
    libudev-dev
    libtool
    libx11-dev
    libxext-dev
    libxft-dev
    libxrender-dev
    nasm
    texinfo
    zip
    zlib1g-dev

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

    augeas
    dbus
    libusb
    nasm
    pkgconfig

