summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
Diffstat (limited to 'docs')
-rw-r--r--docs/PACKAGING-GTK15
-rw-r--r--docs/UnimplementedJavascript.md17
-rw-r--r--docs/env.sh398
-rw-r--r--docs/quick-start.md24
4 files changed, 279 insertions, 175 deletions
diff --git a/docs/PACKAGING-GTK b/docs/PACKAGING-GTK
index 4eab25b96..b81bc6162 100644
--- a/docs/PACKAGING-GTK
+++ b/docs/PACKAGING-GTK
@@ -64,18 +64,19 @@
===================
You may also want to change NetSurf's user agent string to include the
- name of your distribution. The user agent string is build by a function
+ name of your distribution. The user agent string is built by a function
kept in utils/useragent.c - you'll want to change the macro called
NETSURF_UA_FORMAT_STRING. It's processed via sprintf, so keep that in
- mind when changing it. The first two printf parameters are major and minor
- version numbers, the second two are OS name (uname -s) and architecture
- (uname -m). You might want change this to something like:
+ mind when changing it. The first format parameter is the OS name (uname -s)
+ and the remainder are major and minor version numbers. You might want
+ to change this to something like:
- "NetSurf/%d.%d (%s; %s; Debian GNU/Linux)"
+ "Mozilla/5.0 (%s; Debian GNU/Linux) NetSurf/%d.%d"
- or similar. Please don't be tempted to mention Mozilla or similar - let's
- let that lie die.
+ or similar.
+ Note that the "Mozilla/5.0" prefix is a requirement to enable modern
+ web standards on many websites. It should not be removed or modified.
Home page URL
===============
diff --git a/docs/UnimplementedJavascript.md b/docs/UnimplementedJavascript.md
index 4a2f02e3f..0d21dc852 100644
--- a/docs/UnimplementedJavascript.md
+++ b/docs/UnimplementedJavascript.md
@@ -170,7 +170,6 @@ getter | Element::namespaceURI(string);
getter | Element::prefix(string);
getter | Element::localName(string);
getter | Element::tagName(string);
-getter | Element::classList(user);
getter | Element::outerHTML(string);
setter | Element::outerHTML(string);
getter | Element::children(user);
@@ -597,10 +596,6 @@ method | CanvasRenderingContext2D::arcTo();
method | CanvasRenderingContext2D::rect();
method | CanvasRenderingContext2D::arc();
method | CanvasRenderingContext2D::ellipse();
-getter | CanvasRenderingContext2D::width(unsigned long);
-setter | CanvasRenderingContext2D::width(unsigned long);
-getter | CanvasRenderingContext2D::height(unsigned long);
-setter | CanvasRenderingContext2D::height(unsigned long);
getter | CanvasRenderingContext2D::currentTransform(user);
setter | CanvasRenderingContext2D::currentTransform(user);
getter | CanvasRenderingContext2D::globalAlpha(double);
@@ -647,8 +642,6 @@ method | HTMLCanvasElement::setContext();
method | HTMLCanvasElement::transferControlToProxy();
method | HTMLCanvasElement::toDataURL();
method | HTMLCanvasElement::toBlob();
-setter | HTMLCanvasElement::width(unsigned long);
-setter | HTMLCanvasElement::height(unsigned long);
getter | HTMLTemplateElement::content(user);
getter | HTMLScriptElement::async(boolean);
setter | HTMLScriptElement::async(boolean);
@@ -1344,14 +1337,6 @@ method | HTMLAllCollection::namedItem();
getter | HTMLAllCollection::length(unsigned long);
method | XMLSerializer::serializeToString();
method | DOMParser::parseFromString();
-method | DOMTokenList::item();
-method | DOMTokenList::contains();
-method | DOMTokenList::add();
-method | DOMTokenList::remove();
-method | DOMTokenList::toggle();
-getter | DOMTokenList::length(unsigned long);
-getter | DOMSettableTokenList::value(string);
-setter | DOMSettableTokenList::value(string);
method | NodeFilter::acceptNode();
method | TreeWalker::parentNode();
method | TreeWalker::firstChild();
@@ -1560,5 +1545,5 @@ method | EventListener::handleEvent();
method | CustomEvent::initCustomEvent();
getter | CustomEvent::detail(any);
- 1554 unimplemented bindings
+ 1539 unimplemented bindings
diff --git a/docs/env.sh b/docs/env.sh
index 690822036..1f0c200b7 100644
--- a/docs/env.sh
+++ b/docs/env.sh
@@ -4,7 +4,7 @@
#
# NetSurf Library, tool and browser development support script
#
-# Copyright 2013-2017 Vincent Sanders <vince@netsurf-browser.org>
+# Copyright 2013-2024 Vincent Sanders <vince@netsurf-browser.org>
# Released under the MIT Licence
#
# This script allows NetSurf and its libraries to be built without
@@ -16,6 +16,8 @@
# HOST sets the target architecture for library builds
# BUILD sets the building machines architecture
# TARGET_WORKSPACE is the workspace directory to keep the sandboxes
+# TARGET_TOOLKIT controls development package installs
+# can be unset or one of framebuffer, gtk2, gtk3, qt6
#
# The use of HOST and BUILD here is directly comprable to the GCC
# usage as described at:
@@ -26,18 +28,12 @@
# OS Package installation
###############################################################################
-# deb packages for dpkg based systems
-NS_DEV_DEB="build-essential pkg-config git gperf libcurl3-dev libpng-dev libjpeg-dev"
-NS_TOOL_DEB="flex bison libhtml-parser-perl"
-if [ "x${NETSURF_GTK_MAJOR}" = "x3" ]; then
- NS_GTK_DEB="libgtk-3-dev librsvg2-dev"
-else
- NS_GTK_DEB="libgtk2.0-dev librsvg2-dev"
-fi
+# deb packages for dpkg based systems
# apt get commandline to install necessary dev packages
-ns-apt-get-install()
+ns_apt_get_install()
{
+ NS_DEV_DEB="build-essential pkg-config git gperf libcurl3-dev libexpat1-dev libpng-dev libjpeg-dev"
LIBCURL_OPENSSL_CONFLICTS="$(/usr/bin/apt-cache show libcurl4-openssl-dev | grep Conflicts | grep -o libssl1.0-dev)"
if [ "x${LIBCURL_OPENSSL_CONFLICTS}" != "x" ]; then
NS_DEV_DEB="${NS_DEV_DEB} libssl-dev"
@@ -46,123 +42,186 @@ ns-apt-get-install()
else
NS_DEV_DEB="${NS_DEV_DEB} libssl-dev"
fi
- sudo apt-get install $(echo ${NS_DEV_DEB} ${NS_TOOL_DEB} ${NS_GTK_DEB})
+
+ NS_TOOL_DEB="flex bison libhtml-parser-perl"
+
+ case "${TARGET_TOOLKIT}" in
+ gtk2)
+ NS_TK_DEB="libgtk2.0-dev librsvg2-dev"
+ ;;
+ gtk3)
+ NS_TK_DEB="libgtk-3-dev librsvg2-dev"
+ ;;
+ qt6)
+ NS_TK_DEB="qt6-base-dev-tools qt6-base-dev"
+ ;;
+ framebuffer)
+ NS_TK_DEB="libfreetype-dev libsdl1.2-compat-dev libxcb-util-dev libxcb-icccm4-dev libxcb-image0-dev libxcb-keysyms1-dev"
+ ;;
+ *)
+ NS_TK_DEB=""
+ ;;
+ esac
+
+ sudo apt-get install --no-install-recommends $(echo ${NS_DEV_DEB} ${NS_TOOL_DEB} ${NS_TK_DEB})
}
# packages for yum installer RPM based systems (tested on fedora 20)
-NS_DEV_YUM_RPM="git gcc pkgconfig expat-devel openssl-devel gperf libcurl-devel perl-Digest-MD5-File libjpeg-devel libpng-devel"
-NS_TOOL_YUM_RPM="flex bison"
-if [ "x${NETSURF_GTK_MAJOR}" = "x3" ]; then
- NS_GTK_YUM_RPM="gtk3-devel librsvg2-devel"
-else
- NS_GTK_YUM_RPM="gtk2-devel librsvg2-devel"
-fi
-
# yum commandline to install necessary dev packages
-ns-yum-install()
+ns_yum_install()
{
- sudo yum -y install $(echo ${NS_DEV_YUM_RPM} ${NS_TOOL_YUM_RPM} ${NS_GTK_YUM_RPM})
+ NS_DEV_YUM_RPM="git gcc pkgconfig expat-devel openssl-devel gperf libcurl-devel perl-Digest-MD5-File libjpeg-devel libpng-devel"
+
+ NS_TOOL_YUM_RPM="flex bison"
+
+ case "${TARGET_TOOLKIT}" in
+ gtk2)
+ NS_TK_YUM_RPM="gtk2-devel librsvg2-devel"
+ ;;
+ gtk3)
+ NS_TK_YUM_RPM="gtk3-devel librsvg2-devel"
+ ;;
+ *)
+ NS_TK_YUM_RPM=""
+ ;;
+ esac
+
+ sudo yum -y install $(echo ${NS_DEV_YUM_RPM} ${NS_TOOL_YUM_RPM} ${NS_TK_YUM_RPM})
}
# packages for dnf installer RPM based systems (tested on fedora 25)
-NS_DEV_DNF_RPM="java-1.8.0-openjdk-headless gcc clang pkgconfig libcurl-devel libjpeg-devel expat-devel libpng-devel openssl-devel gperf perl-HTML-Parser"
-NS_TOOL_DNF_RPM="git flex bison ccache screen"
-if [ "x${NETSURF_GTK_MAJOR}" = "x3" ]; then
- NS_GTK_DNF_RPM="gtk3-devel"
-else
- NS_GTK_DNF_RPM="gtk2-devel"
-fi
-
# dnf commandline to install necessary dev packages
-ns-dnf-install()
+ns_dnf_install()
{
- sudo dnf install $(echo ${NS_DEV_DNF_RPM} ${NS_TOOL_DNF_RPM} ${NS_GTK_DNF_RPM})
+ NS_DEV_DNF_RPM="java-1.8.0-openjdk-headless gcc clang pkgconfig libcurl-devel libjpeg-devel expat-devel libpng-devel openssl-devel gperf perl-HTML-Parser"
+
+ NS_TOOL_DNF_RPM="git flex bison ccache screen"
+
+ case "${TARGET_TOOLKIT}" in
+ gtk2)
+ NS_TK_DNF_RPM="gtk2-devel"
+ ;;
+ gtk3)
+ NS_TK_DNF_RPM="gtk3-devel"
+ ;;
+ *)
+ NS_TK_DNF_RPM=""
+ ;;
+ esac
+
+ sudo dnf install $(echo ${NS_DEV_DNF_RPM} ${NS_TOOL_DNF_RPM} ${NS_TK_DNF_RPM})
}
# packages for zypper installer RPM based systems (tested on openSUSE leap 42)
-NS_DEV_ZYP_RPM="java-1_8_0-openjdk-headless gcc clang pkgconfig libcurl-devel libjpeg-devel libexpat-devel libpng-devel openssl-devel gperf perl-HTML-Parser"
-NS_TOOL_ZYP_RPM="git flex bison gperf ccache screen"
-if [ "x${NETSURF_GTK_MAJOR}" = "x3" ]; then
- NS_GTK_ZYP_RPM="gtk3-devel"
-else
- NS_GTK_ZYP_RPM="gtk2-devel"
-fi
-
# zypper commandline to install necessary dev packages
-ns-zypper-install()
+ns_zypper_install()
{
- sudo zypper install -y $(echo ${NS_DEV_ZYP_RPM} ${NS_TOOL_ZYP_RPM} ${NS_GTK_ZYP_RPM})
+ NS_DEV_ZYP_RPM="java-1_8_0-openjdk-headless gcc clang pkgconfig libcurl-devel libjpeg-devel libexpat-devel libpng-devel openssl-devel gperf perl-HTML-Parser"
+
+ NS_TOOL_ZYP_RPM="git flex bison gperf ccache screen"
+
+ case "${TARGET_TOOLKIT}" in
+ gtk2)
+ NS_TK_ZYP_RPM="gtk2-devel"
+ ;;
+ gtk3)
+ NS_TK_ZYP_RPM="gtk3-devel"
+ ;;
+ *)
+ NS_TK_ZYP_RPM=""
+ ;;
+ esac
+
+ sudo zypper install -y $(echo ${NS_DEV_ZYP_RPM} ${NS_TOOL_ZYP_RPM} ${NS_TK_ZYP_RPM})
}
# Packages for Haiku install
-
-# Haiku secondary arch suffix:
-# empty for primary (gcc2 on x86) or "_x86" for gcc4 secondary.
-HA=_x86
-
-NS_DEV_HPKG="devel:libcurl${HA} devel:libpng${HA} devel:libjpeg${HA} devel:libcrypto${HA} devel:libiconv${HA} devel:libexpat${HA} cmd:pkg_config${HA} cmd:gperf html_parser"
-
# pkgman commandline to install necessary dev packages
-ns-pkgman-install()
+ns_pkgman_install()
{
+ # Haiku secondary arch suffix:
+ # empty for primary (gcc2 on x86) or "_x86" for gcc4 secondary.
+ HA=_x86
+
+ NS_DEV_HPKG="devel:libcurl${HA} devel:libpng${HA} devel:libjpeg${HA} devel:libcrypto${HA} devel:libiconv${HA} devel:libexpat${HA} cmd:pkg_config${HA} cmd:gperf html_parser"
+
pkgman install $(echo ${NS_DEV_HPKG})
}
# MAC OS X
-NS_DEV_MACPORT="git expat openssl curl libjpeg-turbo libpng"
-
-ns-macport-install()
+ns_macport_install()
{
+ NS_DEV_MACPORT="git expat openssl curl libjpeg-turbo libpng"
+
PATH=/opt/local/bin:/opt/local/sbin:$PATH sudo /opt/local/bin/port install $(echo ${NS_DEV_MACPORT})
}
# packages for FreeBSD install
-NS_DEV_FREEBSDPKG="gmake curl"
-
# FreeBSD package install
-ns-freebsdpkg-install()
+ns_freebsdpkg_install()
{
+ NS_DEV_FREEBSDPKG="gmake curl"
pkg install $(echo ${NS_DEV_FREEBSDPKG})
}
# generic for help text
-NS_DEV_GEN="git, gcc, pkgconfig, expat library, openssl library, libcurl, perl, perl MD5 digest, libjpeg library, libpng library"
-NS_TOOL_GEN="flex tool, bison tool"
-if [ "x${NETSURF_GTK_MAJOR}" = "x3" ]; then
- NS_GTK_GEN="gtk+ 3 toolkit library, librsvg2 library"
-else
- NS_GTK_GEN="gtk+ 2 toolkit library, librsvg2 library"
-fi
+ns_generic_install()
+{
+ NS_DEV_GEN="git, gcc, pkgconfig, expat library, openssl library, libcurl, perl, perl MD5 digest, libjpeg library, libpng library"
+
+ NS_TOOL_GEN="flex tool, bison tool"
+
+ case "${TARGET_TOOLKIT}" in
+ gtk2)
+ NS_TK_GEN="gtk+ 2 toolkit library, librsvg2 library"
+ ;;
+ gtk3)
+ NS_TK_GEN="gtk+ 3 toolkit library, librsvg2 library"
+ ;;
+ qt6)
+ NS_TK_GEN="qt6 toolkit dev library"
+ ;;
+ framebuffer)
+ NS_TK_GEN="freetype2 dev library, SDL 1.2 compatible library"
+ ;;
+ *)
+ NS_TK_DEB=""
+ ;;
+ esac
+
+ echo "Unable to determine OS packaging system in use."
+ echo "Please ensure development packages are installed for:"
+ echo ${NS_DEV_GEN}"," ${NS_TOOL_GEN}"," ${NS_TK_GEN}
+}
-# Generic OS package install
+
+# OS package install
# looks for package managers and tries to use them if present
ns-package-install()
{
if [ -x "/usr/bin/zypper" ]; then
- ns-zypper-install
+ ns_zypper_install
elif [ -x "/usr/bin/apt-get" ]; then
- ns-apt-get-install
+ ns_apt_get_install
elif [ -x "/usr/bin/dnf" ]; then
- ns-dnf-install
+ ns_dnf_install
elif [ -x "/usr/bin/yum" ]; then
- ns-yum-install
+ ns_yum_install
elif [ -x "/bin/pkgman" ]; then
- ns-pkgman-install
+ ns_pkgman_install
elif [ -x "/opt/local/bin/port" ]; then
- ns-macport-install
+ ns_macport_install
elif [ -x "/usr/sbin/pkg" ]; then
- ns-freebsdpkg-install
+ ns_freebsdpkg_install
else
- echo "Unable to determine OS packaging system in use."
- echo "Please ensure development packages are installed for:"
- echo ${NS_DEV_GEN}"," ${NS_TOOL_GEN}"," ${NS_GTK_GEN}
+ ns_generic_install
fi
}
@@ -170,38 +229,33 @@ ns-package-install()
# Setup environment
###############################################################################
-# find which command used to find everything else on path
-if [ -x /usr/bin/which ]; then
- WHICH_CMD=/usr/bin/which
-else
- WHICH_CMD=/bin/which
-fi
-
# environment parameters
# The system doing the building
if [ "x${BUILD}" = "x" ]; then
- BUILD_CC=$(${WHICH_CMD} cc)
+ BUILD_CC=$(command -v cc)
if [ $? -eq 0 ];then
- BUILD=$(cc -dumpmachine)
+ BUILD=$(${BUILD_CC} -dumpmachine)
else
echo "Unable to locate a compiler. Perhaps run ns-package-install"
return 1
fi
fi
-# Get the host build if unset
+# work out the host compiler to use
if [ "x${HOST}" = "x" ]; then
+ # no host ABI set so host is the same as build unless a target ABI is set
if [ "x${TARGET_ABI}" = "x" ]; then
HOST=${BUILD}
else
HOST=${TARGET_ABI}
fi
else
+ # attempt to find host tools with the specificed ABI
HOST_CC_LIST="/opt/netsurf/${HOST}/cross/bin/${HOST}-cc /opt/netsurf/${HOST}/cross/bin/${HOST}-gcc ${HOST}-cc ${HOST}-gcc"
for HOST_CC_V in $(echo ${HOST_CC_LIST});do
- HOST_CC=$(${WHICH_CMD} ${HOST_CC_V})
- if [ "x${HOST_CC}" != "x" ];then
+ HOST_CC=$(command -v ${HOST_CC_V})
+ if [ $? -eq 0 ];then
break
fi
done
@@ -236,10 +290,20 @@ if [ "x${USE_CPUS}" = "x" ]; then
USE_CPUS="-j${NCPUS}"
fi
-# The GTK version to build for (either 2 or 3 currently)
-if [ "x${NETSURF_GTK_MAJOR}" = "x" ]; then
- NETSURF_GTK_MAJOR=2
-fi
+# Setup GTK major version if required (either 2 or 3 currently)
+case "${TARGET_TOOLKIT}" in
+ gtk2)
+ NETSURF_GTK_MAJOR=2
+ ;;
+ gtk3)
+ NETSURF_GTK_MAJOR=3
+ ;;
+ *)
+ if [ "x${NETSURF_GTK_MAJOR}" = "x" ]; then
+ NETSURF_GTK_MAJOR=2
+ fi
+ ;;
+esac
# report to user
echo "BUILD=${BUILD}"
@@ -263,64 +327,81 @@ NS_GIT="git://git.netsurf-browser.org"
# Buildsystem: everything depends on this
NS_BUILDSYSTEM="buildsystem"
-# internal libraries all frontends require (order is important)
-NS_INTERNAL_LIBS="libwapcaplet libparserutils libhubbub libdom libcss libnsgif libnsbmp libutf8proc libnsutils libnspsl libnslog"
-
-# The browser itself
-NS_BROWSER="netsurf"
+NS_TOOLS=""
+NS_FRONTEND_LIBS=""
+BUILD_TARGET="${TARGET:-netsurf}"
-# add target specific libraries
-case "${HOST}" in
- i586-pc-haiku)
- # tools required to build the browser for haiku (beos)
- NS_TOOLS="nsgenbind"
- # libraries required for the haiku target abi
- NS_FRONTEND_LIBS="libsvgtiny"
+case "$BUILD_TARGET" in
+ libhubbub)
+ NS_INTERNAL_LIBS="libparserutils"
;;
- *arwin*)
- # tools required to build the browser for OS X
- NS_TOOLS=""
- # libraries required for the Darwin target abi
- NS_FRONTEND_LIBS="libsvgtiny libnsfb"
- ;;
- arm-unknown-riscos)
- # tools required to build the browser for RISC OS
- NS_TOOLS="nsgenbind"
- # libraries required for the risc os target abi
- NS_FRONTEND_LIBS="libsvgtiny librufl libpencil librosprite"
- ;;
- *-atari-mint)
- # tools required to build the browser for atari
- NS_TOOLS=""
- # libraries required for the atari frontend
- NS_FRONTEND_LIBS=""
- ;;
- ppc-amigaos)
- # default tools required to build the browser
- NS_TOOLS="nsgenbind"
- # default additional internal libraries
- NS_FRONTEND_LIBS="libsvgtiny"
- ;;
- m68k-unknown-amigaos)
- # default tools required to build the browser
- NS_TOOLS="nsgenbind"
- # default additional internal libraries
- NS_FRONTEND_LIBS="libsvgtiny"
+
+ libdom)
+ NS_INTERNAL_LIBS="libwapcaplet libparserutils libhubbub"
;;
- *-unknown-freebsd*)
- # tools required to build the browser for freebsd
- NS_TOOLS=""
- # libraries required for the freebsd frontend
- NS_FRONTEND_LIBS=""
- # select gnu make
- MAKE=gmake
+
+ libcss)
+ NS_INTERNAL_LIBS="libwapcaplet libparserutils"
;;
- *)
- # default tools required to build the browser
- NS_TOOLS="nsgenbind"
- # default additional internal libraries
- NS_FRONTEND_LIBS="libsvgtiny libnsfb"
+
+ netsurf)
+ # internal libraries all frontends require (order is important)
+ NS_INTERNAL_LIBS="libwapcaplet libparserutils libhubbub libdom libcss libnsgif libnsbmp libutf8proc libnsutils libnspsl libnslog"
+
+ # add target specific libraries
+ case "${HOST}" in
+ i586-pc-haiku)
+ # tools required to build the browser for haiku (beos)
+ NS_TOOLS="nsgenbind"
+ # libraries required for the haiku target abi
+ NS_FRONTEND_LIBS="libsvgtiny"
+ ;;
+ *arwin*)
+ # tools required to build the browser for OS X
+ NS_TOOLS=""
+ # libraries required for the Darwin target abi
+ NS_FRONTEND_LIBS="libsvgtiny libnsfb"
+ ;;
+ arm-unknown-riscos|arm-riscos-gnueabi*)
+ # tools required to build the browser for RISC OS
+ NS_TOOLS="nsgenbind"
+ # libraries required for the risc os target abi
+ NS_FRONTEND_LIBS="libsvgtiny librufl libpencil librosprite"
+ ;;
+ *-atari-mint)
+ # tools required to build the browser for atari
+ NS_TOOLS=""
+ # libraries required for the atari frontend
+ NS_FRONTEND_LIBS=""
+ ;;
+ ppc-amigaos)
+ # default tools required to build the browser
+ NS_TOOLS="nsgenbind"
+ # default additional internal libraries
+ NS_FRONTEND_LIBS="libsvgtiny"
+ ;;
+ m68k-unknown-amigaos)
+ # default tools required to build the browser
+ NS_TOOLS="nsgenbind"
+ # default additional internal libraries
+ NS_FRONTEND_LIBS="libsvgtiny"
+ ;;
+ *-unknown-freebsd*)
+ # tools required to build the browser for freebsd
+ NS_TOOLS=""
+ # libraries required for the freebsd frontend
+ NS_FRONTEND_LIBS=""
+ # select gnu make
+ MAKE=gmake
+ ;;
+ *)
+ # default tools required to build the browser
+ NS_TOOLS="nsgenbind"
+ # default additional internal libraries
+ NS_FRONTEND_LIBS="libsvgtiny libnsfb"
+ ;;
+ esac
;;
esac
@@ -331,7 +412,7 @@ export MAKE
# git pull in all repos parameters are passed to git pull
ns-pull()
{
- for REPO in $(echo ${NS_BUILDSYSTEM} ${NS_INTERNAL_LIBS} ${NS_FRONTEND_LIBS} ${NS_TOOLS} ${NS_BROWSER}) ; do
+ for REPO in $(echo ${NS_BUILDSYSTEM} ${NS_INTERNAL_LIBS} ${NS_FRONTEND_LIBS} ${NS_TOOLS} ${BUILD_TARGET}) ; do
echo -n " GIT: Pulling ${REPO}: "
if [ -f "${TARGET_WORKSPACE}/${REPO}/.git/config" ]; then
(cd ${TARGET_WORKSPACE}/${REPO} && git pull $*; )
@@ -344,19 +425,42 @@ ns-pull()
# clone all repositories
ns-clone()
{
+ SHALLOW=""
+ SKIP=""
+ while [ $# -gt 0 ]
+ do
+ case "$1" in
+ -d | --deps-only) SKIP="${BUILD_TARGET}"
+ shift
+ ;;
+ -s | --shallow) SHALLOW="--depth 1"
+ shift
+ ;;
+ -*) echo "Error: Unknown option: $1" >&2
+ exit 1
+ ;;
+ *) # No more options
+ break
+ ;;
+ esac
+ done
+
mkdir -p ${TARGET_WORKSPACE}
- for REPO in $(echo ${NS_BUILDSYSTEM} ${NS_INTERNAL_LIBS} ${NS_FRONTEND_LIBS} ${NS_RISCOS_LIBS} ${NS_TOOLS} ${NS_BROWSER}) ; do
+ for REPO in $(echo ${NS_BUILDSYSTEM} ${NS_INTERNAL_LIBS} ${NS_FRONTEND_LIBS} ${NS_RISCOS_LIBS} ${NS_TOOLS} ${BUILD_TARGET}) ; do
+ [ "x${REPO}" != "x${SKIP}" ] || continue
echo -n " GIT: Cloning ${REPO}: "
if [ -f ${TARGET_WORKSPACE}/${REPO}/.git/config ]; then
echo "Repository already present"
else
- (cd ${TARGET_WORKSPACE} && git clone ${NS_GIT}/${REPO}.git; )
+ (cd ${TARGET_WORKSPACE} && git clone ${SHALLOW} ${NS_GIT}/${REPO}.git; )
fi
done
# put current env.sh in place in workspace
- if [ ! -f "${TARGET_WORKSPACE}/env.sh" -a -f ${TARGET_WORKSPACE}/${NS_BROWSER}/docs/env.sh ]; then
- cp ${TARGET_WORKSPACE}/${NS_BROWSER}/docs/env.sh ${TARGET_WORKSPACE}/env.sh
+ if [ "x$NS_BROWSER" = "x" ]; then
+ if [ ! -f "${TARGET_WORKSPACE}/env.sh" -a -f ${TARGET_WORKSPACE}/${NS_BROWSER}/docs/env.sh ]; then
+ cp ${TARGET_WORKSPACE}/${NS_BROWSER}/docs/env.sh ${TARGET_WORKSPACE}/env.sh
+ fi
fi
}
diff --git a/docs/quick-start.md b/docs/quick-start.md
index 449b956a3..c10d5a25a 100644
--- a/docs/quick-start.md
+++ b/docs/quick-start.md
@@ -1,7 +1,7 @@
Quick Build Steps for NetSurf
=============================
-Last Updated: 21st January 2020
+Last Updated: 28th May 2024
This document provides steps for building NetSurf.
@@ -30,15 +30,29 @@ Grab a temporary env.sh
Install any packages you need
-----------------------------
-Installs all packages required to build NetSurf and the NetSurf project
-libraries.
+The package install helper installs all packages required to build NetSurf
+ and the NetSurf project libraries. By *default* no libraries for a graphical
+ toolkit are installed.
$ ns-package-install
+If NetSurf is to be built to target a graphical toolkit the development
+ packages for that toolkit can be installed by setting the TARGET_TOOLKIT
+ variable to one of framebuffer, gtk2, gtk3 or qt6
+
+ $ TARGET_TOOLKIT=qt6 ns-package-install
+
If your package manager is not supported, you will have to install third
party packages manually.
+Update the environment settings after package installation
+----------------------------------------------------------
+
+ $ unset HOST
+ $ source env.sh
+
+
Get the NetSurf project source code from Git
--------------------------------------------
@@ -50,8 +64,8 @@ Local copies may be easily obtained with the ns-clone command.
$ ns-clone
-Build and install our project libraries
----------------------------------------
+Build and install NetSurf project libraries
+-------------------------------------------
Updates NetSurf project library sources to latest, builds and installs them.