diff --git a/lib/c/2014/Makefile b/lib/c/2014/Makefile
index b18a9e469ed7c24e8c845138c5adb2db856ae180..0b0d0ee3cfd33b38962cf5e231efdd572e31c8a4 100644
--- a/lib/c/2014/Makefile
+++ b/lib/c/2014/Makefile
@@ -2,10 +2,10 @@
 VERSION=2014
 LIBVERSION=2014
 
-include ../os_compat.mk
-
 ALL_DEPS=../liblabcomm$(LIBVERSION).a ../liblabcomm$(LIBVERSION).so
 
+include ../os_compat.mk
+
 # TODO: Support for Codesourcery ARM toolchain.
 
 OBJS=labcomm$(VERSION).o \
diff --git a/lib/c/2014/labcomm2014_compat_vxworks.h b/lib/c/2014/labcomm2014_compat_vxworks.h
index ab32a5025c28d3a51c551f234291441ee9ebf7df..94b161f19b77cc29f67e20b0c8257081617df033 100644
--- a/lib/c/2014/labcomm2014_compat_vxworks.h
+++ b/lib/c/2014/labcomm2014_compat_vxworks.h
@@ -10,6 +10,7 @@
 #include <types.h>
 #include <timers.h>
 #include <stdio.h>
+#include <limits.h>
 #include <private/stdioP.h>
 
 #ifdef __INT64_MAX__
diff --git a/lib/c/os_compat.mk b/lib/c/os_compat.mk
index 505c7a2f930b639e22f140698b62cb1ab12d9a8a..5f5bbf28cc1fb07de635f5394a0c2b74c604bd94 100644
--- a/lib/c/os_compat.mk
+++ b/lib/c/os_compat.mk
@@ -3,41 +3,28 @@ UNAME_S=$(shell uname -s)
 VERSION=2014
 LIBVERSION=2014
 
-ifeq ($(UNAME_S),Linux)
-  CC=$(CROSS_COMPILE)gcc
-  LD=$(CROSS_COMPILE)gcc
-  CFLAGS=-std=c99 -g -Wall -Werror -O3  -I.
-  CFLAGS_TEST=$(CFLAGS) -Itest
-  LDFLAGS=-L..
-  LDLIBS=-llabcomm$(LIBVERSION) -lrt
+CC=$(CROSS_COMPILE)gcc
+LD=$(CROSS_COMPILE)gcc
+CFLAGS=-std=c99 -g -Wall -Werror -O3  -I.
+CFLAGS_TEST=$(CFLAGS) -Itest -DVERSION=$(VERSION)
+LDFLAGS=-L..
+LDLIBS=-llabcomm$(LIBVERSION)
+
+ifeq ($(CROSS_COMPILE),i586-wrs-vxworks-)
+  ALL_DEPS:=$(filter-out %.so, $(ALL_DEPS)) # PIC is only supported for RTPs
+  CFLAGS:=$(CFLAGS) -DLABCOMM_COMPAT=\"labcomm$(VERSION)_compat_vxworks.h\"
+else ifeq ($(UNAME_S),Linux)
+  LDLIBS+=-lrt
   MAKESHARED=gcc -o $1 -shared -Wl,-soname,$2 $3 -lc -lrt
 else ifeq ($(UNAME_S),Darwin)
-  #CC=$(CROSS_COMPILE)clang
-  #LD=$(CROSS_COMPILE)ld
-  CC=$(CROSS_COMPILE)gcc
-  LD=$(CROSS_COMPILE)gcc
-  CFLAGS=-g -Wall -Werror -O3  -I. -Itest \
-	 -DLABCOMM_COMPAT=\"labcomm$(VERSION)_compat_osx.h\" \
-	 -DLABCOMM_OS_DARWIN=1 \
-	 -Wno-unused-function
-#	 -Wno-tautological-compare
-  CFLAGS+=-std=c99
-  LDFLAGS=-L..
-  LDLIBS=-llabcomm$(LIBVERSION)
+  CFLAGS+=-DLABCOMM_COMPAT=\"labcomm$(VERSION)_compat_osx.h\" \
+	  -DLABCOMM_OS_DARWIN=1 \
+	  -Wno-unused-function
   MAKESHARED=clang -o $1 -shared -Wl,-install_name,$2 $3 -lc
 else ifneq ($(findstring CYGWIN,$(UNAME_S)),)
-  CC=$(CROSS_COMPILE)gcc
-  LD=$(CROSS_COMPILE)ld
-  CFLAGS=-std=c99 -g -Wall -Werror -O3  -I.
-  LDFLAGS=-L..
-  LDLIBS=-llabcomm$(LIBVERSION) -lrt
-  ALL_DEPS:=$(filter-out %.so.1, $(ALL_DEPS)) # No -fPIC supported in windows?
+  LDLIBS+=-lrt
+  ALL_DEPS:=$(filter-out %.so, $(ALL_DEPS)) # No -fPIC supported in windows?
 else
   $(error Unknown system $(UNAME_S))
 endif
-CFLAGS_TEST=$(CFLAGS) -Itest -DVERSION=$(VERSION)
 
-ifeq ($(CROSS_COMPILE),i586-wrs-vxworks-)
-  ALL_DEPS:=$(filter-out %.so.1, $(ALL_DEPS)) # PIC is only supported for RTPs
-  CFLAGS:=$(CFLAGS) -DLABCOMM_COMPAT=\"labcomm_compat_vxworks.h\"
-endif
diff --git a/packaging/.gitignore b/packaging/.gitignore
index f73a06a537d57c357f8017e7e94d6ce760036400..0f566f5289718341319789172bcd50842750c827 100644
--- a/packaging/.gitignore
+++ b/packaging/.gitignore
@@ -1,2 +1,2 @@
-labcomm2014-*.src.rpm
+*labcomm2014-*.src.rpm
 rpmbuild
diff --git a/packaging/make_srpm b/packaging/make_srpm
index ef2dced94616eba28395d25e3447c9735f9ed5c8..97e7298bae54c8f6366d13502f5ba4ce50499583 100755
--- a/packaging/make_srpm
+++ b/packaging/make_srpm
@@ -9,7 +9,7 @@ Summary:   LabComm communication protocol
 License:   GPLv3
 
 # https://gitlab.control.lth.se/anders_blomdell/labcomm/repository/archive.tar.gz?__COMMIT__
-Source0:  labcomm.__DESCRIBE__.tar.gz
+Source0:  labcomm__DESCRIBE__.tar.gz
 
 BuildRequires: gcc
 BuildRequires: ant
@@ -17,6 +17,8 @@ BuildRequires: java
 BuildRequires: java-devel
 BuildRequires: mono-core
 BuildRequires: python2-devel
+# valgrind needed for %check
+BuildRequires: valgrind
 
 %description
 LabComm communication protocol
@@ -28,7 +30,6 @@ Requires: %{name} = %{version}-%{release}
 %description devel
 LabComm communication protocol
 
-%
 %prep
 %setup -q -c -a 0
 
@@ -72,6 +73,9 @@ install -m u=r,g=r,o=r lib/csharp/labcomm2014.dll ${RPM_BUILD_ROOT}/usr/lib
 install -d ${RPM_BUILD_ROOT}/%{python2_sitelib}/labcomm2014
 install lib/python/labcomm2014/* ${RPM_BUILD_ROOT}/%{python2_sitelib}/labcomm2014
 
+%check
+make test
+
 %files
 %defattr (-, root, root)
 %exclude /usr/lib/debug
@@ -88,6 +92,54 @@ install lib/python/labcomm2014/* ${RPM_BUILD_ROOT}/%{python2_sitelib}/labcomm201
 EOF
 }
 
+cross_spec() {
+cat << 'EOF'
+%define _libdir __LIBDIR__
+%define _includedir __INCLUDEDIR__
+# No debug package for cross-compiled library
+%global debug_package %{nil} 
+
+Name:      __CROSS_COMPILE__-labcomm__SUFFIX__
+Version:   __VERSION__
+Release:   1
+Summary:   LabComm communication protocol
+License:   GPLv3
+
+# https://gitlab.control.lth.se/anders_blomdell/labcomm/repository/archive.tar.gz?__COMMIT__
+Source0:  labcomm__DESCRIBE__.tar.gz
+
+BuildRequires: __CROSS_COMPILE__-gcc
+
+%description
+LabComm communication protocol
+
+%prep
+%setup -q -c -a 0
+
+%build
+pwd
+cd lib/c/__SUFFIX__
+WIND_BASE=__WIND_BASE__ \
+    make CROSS_COMPILE=__CROSS_COMPILE__-
+
+%install
+# 
+# C 
+#
+install -d ${RPM_BUILD_ROOT}/%{_libdir}
+install lib/c/liblabcomm2014.a ${RPM_BUILD_ROOT}/%{_libdir}/
+install -d ${RPM_BUILD_ROOT}/%{_includedir}/labcomm
+install lib/c/2014/*h ${RPM_BUILD_ROOT}/%{_includedir}/labcomm
+
+
+%files
+%defattr (-, root, root)
+%_libdir/
+%_includedir/
+
+EOF
+}
+
 # Create a suitable directory for rpmbuild
 rm -rf rpmbuild
 mkdir -p rpmbuild/BUILD
@@ -97,22 +149,54 @@ mkdir -p rpmbuild/SRPMS
 mkdir -p rpmbuild/SOURCES
 rm -rf rpmbuild/SOURCES/*
 
-# Create spec and .tar.gz
+# Define useful variables from git version
 DESCRIBE=$(git describe | sed -e 's/^v\(.*\)/\1/')
 SUFFIX=$(echo ${DESCRIBE} | sed -e 's/^\([^.]*\)[.].*$/\1/g')
 VERSION=$(echo ${DESCRIBE} | sed -e 's/^[^.]*[.]\(.*\)/\1/g;s/-/./g')
 COMMIT=$(git rev-parse HEAD)
+
+# Create .tar.gz
+(
+    cd $(git rev-parse --show-toplevel)
+    git archive --format tar HEAD
+) > rpmbuild/SOURCES/labcomm${DESCRIBE}.tar.gz
+
+# Create spec and .src.rpm
 (
     spec | \
         sed -e "s/__SUFFIX__/${SUFFIX}/g" | \
         sed -e "s/__VERSION__/${VERSION}/g" | \
         sed -e "s/__DESCRIBE__/${DESCRIBE}/g" | \
-        sed -e "s/__COMMIT__/${COMMIT}/g" \
-) > rpmbuild/SPECS/labcomm.spec
-(
-    cd $(git rev-parse --show-toplevel)
-    git archive --format tar HEAD
-) > rpmbuild/SOURCES/labcomm.${DESCRIBE}.tar.gz
+        sed -e "s/__COMMIT__/${COMMIT}/g"
+) > rpmbuild/SPECS/labcomm${SUFFIX}-${VERSION}.spec
 rpmbuild --define "_topdir $(pwd)/rpmbuild" \
-         -bs rpmbuild/SPECS/labcomm.spec 2>&1 | sed -e 's|rpmbuild/SRPMS/||g'
+         -bs rpmbuild/SPECS/labcomm${SUFFIX}-${VERSION}.spec 2>&1 \
+    | sed -e 's|rpmbuild/SRPMS/||g'
+
+# Create cross compilation spec and .src.rpm
+(cat << 'EOF'
+i586-wrs-vxworks /opt/robot/include/vxworks/5.5.1/ 
+EOF
+) | while read C_C W_B ; do
+    L_D=/usr/${C_C}/lib
+    I_D=/usr/${C_C}/include
+    echo "CROSS_COMPILE=${C_C}"
+    echo "LIBDIR=${L_D}"
+    echo "INCLUDEDIR=${L_D}"
+    echo "WIND_BASE=${W_B}"
+    (set -x
+        cross_spec \
+            | sed -e "s|__SUFFIX__|${SUFFIX}|g" \
+            | sed -e "s|__VERSION__|${VERSION}|g" \
+            | sed -e "s|__DESCRIBE__|${DESCRIBE}|g" \
+            | sed -e "s|__COMMIT__|${COMMIT}|g" \
+            | sed -e "s|__CROSS_COMPILE__|${C_C}|g" \
+            | sed -e "s|__WIND_BASE__|${W_B}|g" \
+            | sed -e "s|__LIBDIR__|${L_D}|g" \
+            | sed -e "s|__INCLUDEDIR__|${I_D}|g" 
+    ) > rpmbuild/SPECS/${C_C}-labcomm${SUFFIX}-${VERSION}.spec
+    rpmbuild --define "_topdir $(pwd)/rpmbuild" \
+             -bs rpmbuild/SPECS/${C_C}-labcomm${SUFFIX}-${VERSION}.spec 2>&1 \
+        | sed -e 's|rpmbuild/SRPMS/||g'
+done
 mv rpmbuild/SRPMS/* .