File List
Not logged in

Files of check-in [775400ee76] in directory undroid   [history]


================================================================================
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 (*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 (*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 window manager 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 supplementary 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):

    automake
    bc
    cmake
    libasound2-dev
    libaugeas-dev
    libavahi-compat-libdnssd-dev
    libcairo2-dev
    libdbus-1-dev
    libfontconfig1-dev
    libfreetype6-dev
    libfuse-dev
    libgbm-dev
    libgl1-mesa-dev
    libglu1-mesa-dev
    libibus-1.0-dev
    libncursesw5-dev
    libusb-dev
    libudev-dev
    libtool
    libwebkit2gtk-4.0-dev
    libx11-dev
    libxext-dev
    libxft-dev
    libxrender-dev
    nasm
    opencv or opencv4	(optional)
    rsync
    texinfo
    xutils-dev
    zip
    zlib1g-dev

Or in the words of dzach from the ticket
https://www.androwish.org/home/info/5612bd96cec6c4a1

    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 libavahi-compat-libdnssd-dev libncursesw5-dev \
      rsync zip automake xutils-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
required):

    augeas
    cmake
    dbus
    ffmpeg
    libusb
    nasm
    pkgconfig
    opencv4		(optional)