Index: tools/xcw/bin/helenos-bld-config
===================================================================
--- tools/xcw/bin/helenos-bld-config	(revision a1d636ec8b8f1091eb71c899c2f28a556977f034)
+++ tools/xcw/bin/helenos-bld-config	(revision a1d636ec8b8f1091eb71c899c2f28a556977f034)
@@ -0,0 +1,60 @@
+#!/bin/bash
+#
+# Copyright (c) 2015 Jiri Svoboda
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# - Redistributions of source code must retain the above copyright
+#   notice, this list of conditions and the following disclaimer.
+# - Redistributions in binary form must reproduce the above copyright
+#   notice, this list of conditions and the following disclaimer in the
+#   documentation and/or other materials provided with the distribution.
+# - The name of the author may not be used to endorse or promote products
+#   derived from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+# Get build configration information
+# HelenOS Cross Compiler Wrapper (XCW)
+# Facilitate cross-compiling external software to HelenOS
+#
+
+SRC_ROOT="$(dirname "$0")/../../.."
+MAKEFILE_COMMON="$SRC_ROOT"/Makefile.common
+MAKEFILE_CONFIG="$SRC_ROOT"/Makefile.config
+
+# Extract simple 'name = value' variable definition from Makefile
+function extract_field
+{
+	field_name="$1"
+	file_name="$2"
+
+	sed -n "s/^$field_name = \\(.*\\)$/\\1/p" "$file_name"
+}
+
+case ".$1" in
+(.--cc) extract_field "CC" "$MAKEFILE_COMMON";;
+(.--ld) extract_field "LD" "$MAKEFILE_COMMON";;
+(.--uarch) extract_field "UARCH" "$MAKEFILE_CONFIG";;
+(.--endian)
+	UARCH=`extract_field "UARCH" "$MAKEFILE_CONFIG"`
+	ENDIAN=`extract_field "ENDIANESS" "$SRC_ROOT/uspace/lib/c/arch/$UARCH/Makefile.common"`
+	echo "__${ENDIAN}__"
+	;;
+(*)
+	echo "Unknown option $1" >&2
+	echo "Usage: helenos-pkg-config {--cc|--ld|--uarch|--endian}" >&2
+	exit 1;;
+esac
Index: tools/xcw/bin/helenos-cc
===================================================================
--- tools/xcw/bin/helenos-cc	(revision a1d636ec8b8f1091eb71c899c2f28a556977f034)
+++ tools/xcw/bin/helenos-cc	(revision a1d636ec8b8f1091eb71c899c2f28a556977f034)
@@ -0,0 +1,50 @@
+#!/bin/bash
+#
+# Copyright (c) 2015 Jiri Svoboda
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# - Redistributions of source code must retain the above copyright
+#   notice, this list of conditions and the following disclaimer.
+# - Redistributions in binary form must reproduce the above copyright
+#   notice, this list of conditions and the following disclaimer in the
+#   documentation and/or other materials provided with the distribution.
+# - The name of the author may not be used to endorse or promote products
+#   derived from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+# C Compiler (cc) wrapper
+# HelenOS Cross Compiler Wrapper (XCW)
+# Facilitate cross-compiling external software to HelenOS
+#
+
+XCW="$(dirname "$0")"
+SRC_ROOT="$XCW/../../.."
+UARCH="$("$XCW"/helenos-bld-config --uarch)"
+CC="$("$XCW"/helenos-bld-config --cc)"
+ENDIAN="$("$XCW"/helenos-bld-config --endian)"
+
+echo helenos-cc "$@"
+"$CC" \
+    -O3 -fexec-charset=UTF-8 -fwide-exec-charset=UTF-32LE -finput-charset=UTF-8 \
+    -ffreestanding -fno-builtin -nostdlib -nostdinc \
+    -Wall -Wextra -Wno-clobbered -Wno-unused-parameter -Wmissing-prototypes \
+    -std=gnu99 -Werror-implicit-function-declaration -Wwrite-strings -ggdb \
+    -fno-omit-frame-pointer \
+    -D "$ENDIAN" \
+    -I"$SRC_ROOT"/uspace/lib/c/include \
+    -I"$SRC_ROOT"/abi/include \
+    -I"$SRC_ROOT"/uspace/lib/c/arch/"$UARCH"/include "$@"
Index: tools/xcw/bin/helenos-ld
===================================================================
--- tools/xcw/bin/helenos-ld	(revision a1d636ec8b8f1091eb71c899c2f28a556977f034)
+++ tools/xcw/bin/helenos-ld	(revision a1d636ec8b8f1091eb71c899c2f28a556977f034)
@@ -0,0 +1,43 @@
+#!/bin/bash
+#
+# Copyright (c) 2015 Jiri Svoboda
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# - Redistributions of source code must retain the above copyright
+#   notice, this list of conditions and the following disclaimer.
+# - Redistributions in binary form must reproduce the above copyright
+#   notice, this list of conditions and the following disclaimer in the
+#   documentation and/or other materials provided with the distribution.
+# - The name of the author may not be used to endorse or promote products
+#   derived from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+# Link editor (ld) wrapper
+# HelenOS Cross Compiler Wrapper (XCW)
+# Facilitate cross-compiling external software to HelenOS
+#
+
+XCW="$(dirname "$0")"
+SRC_ROOT="$XCW/../../.."
+UARCH="$("$XCW"/helenos-bld-config --uarch)"
+LD="$("$XCW"/helenos-bld-config --ld)"
+
+echo helenos-ld "$@"
+"$LD" \
+    -n -T "$SRC_ROOT"/uspace/lib/c/arch/"$UARCH"/_link.ld \
+    "$@" \
+    "$SRC_ROOT"/uspace/lib/c/libc.a
Index: tools/xcw/bin/helenos-pkg-config
===================================================================
--- tools/xcw/bin/helenos-pkg-config	(revision a1d636ec8b8f1091eb71c899c2f28a556977f034)
+++ tools/xcw/bin/helenos-pkg-config	(revision a1d636ec8b8f1091eb71c899c2f28a556977f034)
@@ -0,0 +1,85 @@
+#!/bin/bash
+#
+# Copyright (c) 2015 Jiri Svoboda
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# - Redistributions of source code must retain the above copyright
+#   notice, this list of conditions and the following disclaimer.
+# - Redistributions in binary form must reproduce the above copyright
+#   notice, this list of conditions and the following disclaimer in the
+#   documentation and/or other materials provided with the distribution.
+# - The name of the author may not be used to endorse or promote products
+#   derived from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+# pkg-config-like tool for HelenOS libraries
+# HelenOS Cross Compiler Wrapper (XCW)
+# Facilitate cross-compiling external software to HelenOS
+#
+
+XCW="$(dirname "$0")"
+SRC_ROOT="$XCW/../../.."
+UARCH="$("$XCW"/helenos-bld-config --uarch)"
+
+libmath_cflags="-I$SRC_ROOT/uspace/lib/math/include\
+    -I$SRC_ROOT/uspace/lib/math/arch/$UARCH/include"
+libmath_libs="$SRC_ROOT/uspace/lib/math/libmath.a"
+
+libgui_cflags="-I$SRC_ROOT/uspace/lib/gui"
+libgui_libs="$SRC_ROOT/uspace/lib/gui/libgui.a"
+
+libdraw_cflags="-I$SRC_ROOT/uspace/lib/draw"
+libdraw_libs="$SRC_ROOT/uspace/lib/draw/libdraw.a \
+    $SRC_ROOT/uspace/lib/softrend/libsoftrend.a"
+
+action=none
+pkg=
+
+while [ ".$1" != . ] ; do
+	case ".$1" in
+	(.--cflags) action=cflags;;
+	(.--libs) action=libs;;
+	(.-*) echo "Uknwown option $1" >&2; exit 1;;
+	(.*)
+	    case "$1" in
+	    (libgui) ;;
+	    (libdraw) ;;
+	    (libmath) ;;
+	    (*) echo "Unknown package $1" >&2; exit 1;;
+	    esac
+
+	    echo "$pkg" | grep -w "$1" >/dev/null 2>&1
+	    if [ $? -ne 0 ] ; then
+		    pkg="$pkg $1"
+	    fi;;
+	esac
+	shift 1
+done
+
+if [ ."$pkg" = . ]; then
+	echo "Package name(s) required." >&2
+	exit 1
+fi
+
+for p in $pkg ; do
+	case "$action" in
+	(cflags) eval "printf ' %s' \$${p}_cflags";;
+	(libs) eval "printf ' %s' \$${p}_libs";;
+	esac
+done
+
+echo
Index: tools/xcw/demo/Makefile
===================================================================
--- tools/xcw/demo/Makefile	(revision a1d636ec8b8f1091eb71c899c2f28a556977f034)
+++ tools/xcw/demo/Makefile	(revision a1d636ec8b8f1091eb71c899c2f28a556977f034)
@@ -0,0 +1,61 @@
+#
+# Copyright (c) 2015 Jiri Svoboda
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# - Redistributions of source code must retain the above copyright
+#   notice, this list of conditions and the following disclaimer.
+# - Redistributions in binary form must reproduce the above copyright
+#   notice, this list of conditions and the following disclaimer in the
+#   documentation and/or other materials provided with the distribution.
+# - The name of the author may not be used to endorse or promote products
+#   derived from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+# Example cross-build for HelenOS using XCW (HelenOS Cross Compiler Wrapper)
+# This allows an external (cross-platform) application to be compiled for
+# HelenOS by changing the compiler/linker helenos-cc/helenos-ld and adding
+# platform-specific support. To configure use of HelenOS libraries one can use
+# helenos-pkg-config. The HelenOS source tree containing XCW must be configured
+# and build for XCW to work as a cross compiler.
+#
+# Example commands to build this demo:
+#
+#    cd <helenos-source-dir>
+#    make distclean && make -j 4 PROFILE=amd64
+#    cd <helenos-source-dir>/tools/xcw/demo
+#    export PATH=$PATH:<helenos-source-dir>/tools/xcw/bin
+#    make
+#
+
+CC = helenos-cc
+LD = helenos-ld
+CFLAGS = -std=gnu99 -Wall `helenos-pkg-config --cflags libgui libdraw libmath`
+LIBS = `helenos-pkg-config --libs libgui libdraw libmath`
+output = viewer
+objects = viewer.o
+
+default: $(output)
+all: $(output)
+
+clean:
+	rm -f $(output) $(objects)
+
+$(output): $(objects)
+	$(LD) -o $@ $^ $(LIBS)
+
+%.o: %.c
+	$(CC) -c $(CFLAGS) -o $@ $<
Index: tools/xcw/demo/viewer.c
===================================================================
--- tools/xcw/demo/viewer.c	(revision a1d636ec8b8f1091eb71c899c2f28a556977f034)
+++ tools/xcw/demo/viewer.c	(revision a1d636ec8b8f1091eb71c899c2f28a556977f034)
@@ -0,0 +1,1 @@
+../../../uspace/app/viewer/viewer.c
