Project import
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..8ef692e
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,122 @@
+#
+#    Copyright (c) 2010-2015 Nest, Inc.
+#    All rights reserved.
+#
+#    This document is the property of Nest. It is considered
+#    confidential and proprietary information.
+#
+#    This document may not be reproduced or transmitted in any form,
+#    in whole or in part, without the express written permission of
+#    Nest.
+#
+#    Description:
+#      This file is the make file for Userspace Read Copy Update
+#      library (liburcu).
+#
+
+BuildConfigSpecialized	:= No
+BuildProductSpecialized	:= No
+
+include pre.mak
+
+PackageName		:= userspace-rcu
+
+PackageExtension	:= tar.bz2
+PackageSeparator	:= -
+
+PackagePatchArgs	:= -p1
+
+PackageArchive		:= $(PackageName).$(PackageExtension)
+PackageSourceDir	:= $(PackageName)$(PackageSeparator)$(PackageVersion)
+
+PackageBuildMakefile	= $(call GenerateBuildPaths,Makefile)
+
+CleanPaths		+= $(PackageLicenseFile)
+
+all: $(PackageDefaultGoal)
+
+# Generate the package license contents.
+
+$(PackageSourceDir)/LICENSE: source
+
+$(PackageLicenseFile): $(PackageSourceDir)/LICENSE
+	$(copy-result)
+
+# Extract the source from the archive and apply patches, if any.
+
+$(PackageSourceDir): $(PackageArchive) $(PackagePatchPaths)
+	$(expand-and-patch-package)
+
+# Prepare the sources.
+
+.PHONY: source
+source: | $(PackageSourceDir)
+
+# Patch the sources, if necessary.
+
+.PHONY: patch
+patch: source
+
+# Generate the package build makefile.
+
+$(PackageBuildMakefile): | $(PackageSourceDir) $(BuildDirectory) $(ResultDirectory)
+	$(Verbose)cd $(BuildDirectory) && \
+	$(CURDIR)/$(PackageSourceDir)/configure \
+	CC="$(CC)" CXX="$(CXX)" AR=$(AR) NM=$(NM) RANLIB=$(RANLIB) STRIP=$(STRIP) \
+	INSTALL="$(INSTALL) $(INSTALLFLAGS)" \
+	CFLAGS="$(call ToolAssertMachineFlag,arch=armv7-a)" \
+	--build=$(HostTuple) \
+	--host=$(TargetTuple) \
+	--target=$(TargetTuple) \
+	--prefix=/usr \
+	--sysconfdir=/etc \
+	--localstatedir=/var \
+	ac_cv_func_malloc_0_nonnull=yes \
+	--disable-static
+
+# Configure the source for building.
+
+.PHONY: configure
+configure: source $(PackageBuildMakefile)
+
+# Build the source.
+#
+# We have to unset MAKEFLAGS since they confuse the package build otherwise.
+
+.PHONY: build
+build: configure
+	$(Verbose)unset MAKEFLAGS && \
+	$(MAKE) $(JOBSFLAG) -C $(BuildDirectory) all
+
+# Stage the build to a temporary installation area.
+#
+# We have to unset MAKEFLAGS since they confuse the package build otherwise.
+#
+# We explictly remove 'libfoo.la' because some packages that depend on
+# these libraries use libtool. If libtool finds a 'libfoo.la' file for
+# a library, it uses the value of 'libdir=<dir>' it finds. In our
+# case, since '--prefix=/usr' this value is '/usr/lib'. It then
+# resolves '-lfoo'. In a cross-compilation environment, this is likely
+# to be neither the right architecture nor the right version to link
+# against. In short, we lose.
+#
+# We could also handle this by removing DESTDIR and setting the prefix
+# to $(ResultDirectory); however, that results in libtool hard-coding
+# $(ResultDirectory) as the RPATH in the linked executables which is
+# NOT what we want either. We lose again.
+#
+# By removing the '*.la' file, we win by ensuring neither a misdirected
+# link nor an RPATH.
+
+.PHONY: stage
+stage: build | $(ResultDirectory)
+	$(Verbose)unset MAKEFLAGS && \
+	$(MAKE) $(JOBSFLAG) -C $(BuildDirectory) DESTDIR=$(ResultDirectory) install
+	$(Verbose)$(RM) $(RMFLAGS) $(call GenerateResultPaths,,$(addprefix usr/lib/,liburcu-bp.la liburcu-cds.la liburcu.la liburcu-common.la liburcu-mb.la liburcu-qsbr.la liburcu-signal.la))
+
+clean:
+	$(Verbose)$(RM) $(RMFLAGS) -r $(PackageSourceDir)
+	$(Verbose)$(RM) $(RMFLAGS) -r $(BuildDirectory)
+	$(Verbose)$(RM) $(RMFLAGS) -r $(ResultDirectory)
+
+include post.mak
diff --git a/userspace-rcu.patches/userspace-rcu-50.description b/userspace-rcu.patches/userspace-rcu-50.description
new file mode 100644
index 0000000..7728cf7
--- /dev/null
+++ b/userspace-rcu.patches/userspace-rcu-50.description
@@ -0,0 +1 @@
+The new Poky 4.8.2 toolchain has fix (https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=204665) in it. So removing the checks from urcu.
diff --git a/userspace-rcu.patches/userspace-rcu-50.patch b/userspace-rcu.patches/userspace-rcu-50.patch
new file mode 100644
index 0000000..01df074
--- /dev/null
+++ b/userspace-rcu.patches/userspace-rcu-50.patch
@@ -0,0 +1,27 @@
+diff -aruN a/urcu/compiler.h b/urcu/compiler.h
+--- a/urcu/compiler.h	2015-08-27 13:16:02.181943077 -0700
++++ b/urcu/compiler.h	2015-08-27 13:16:45.781409041 -0700
+@@ -108,23 +108,4 @@
+ 
+ #define CAA_ARRAY_SIZE(x)	(sizeof(x) / sizeof((x)[0]))
+ 
+-/*
+- * Don't allow compiling with buggy compiler.
+- */
+-
+-#ifdef __GNUC__
+-# define URCU_GCC_VERSION	(__GNUC__ * 10000 \
+-				+ __GNUC_MINOR__ * 100 \
+-				+ __GNUC_PATCHLEVEL__)
+-
+-/*
+- * http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58854
+- */
+-# ifdef __ARMEL__
+-#  if URCU_GCC_VERSION >= 40800 && URCU_GCC_VERSION <= 40802
+-#   error Your gcc version produces clobbered frame accesses
+-#  endif
+-# endif
+-#endif
+-
+ #endif /* _URCU_COMPILER_H */
diff --git a/userspace-rcu.tar.bz2 b/userspace-rcu.tar.bz2
new file mode 100644
index 0000000..90fc64e
--- /dev/null
+++ b/userspace-rcu.tar.bz2
Binary files differ
diff --git a/userspace-rcu.url b/userspace-rcu.url
new file mode 100644
index 0000000..ff29217
--- /dev/null
+++ b/userspace-rcu.url
@@ -0,0 +1 @@
+http://lttng.org/files/urcu/userspace-rcu-0.8.7.tar.bz2
diff --git a/userspace-rcu.version b/userspace-rcu.version
new file mode 100644
index 0000000..1e9b46b
--- /dev/null
+++ b/userspace-rcu.version
@@ -0,0 +1 @@
+0.8.7