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)