Index: libcfa/src/Makefile.am
===================================================================
--- libcfa/src/Makefile.am	(revision e7231002bcdfdd0362118b8f0aa1cdc1d9a7e312)
+++ libcfa/src/Makefile.am	(revision fd642d2c3aee132ffbce05c2d7092e4dac7fa8d0)
@@ -22,5 +22,5 @@
 
 libdir = ${CFA_LIBDIR}
-lib_LTLIBRARIES = libcfa.la
+lib_LTLIBRARIES = libcfa.la libcfathread.la
 
 VPATH += :../prelude
@@ -41,15 +41,15 @@
 	  containers/maybe.hfa containers/pair.hfa containers/result.hfa containers/vector.hfa
 
-# not all platforms support concurrency, add option do disable it
-headers_nosrc += concurrency/invoke.h
-headers += concurrency/coroutine.hfa concurrency/thread.hfa concurrency/kernel.hfa concurrency/monitor.hfa concurrency/mutex.hfa
-
 libsrc = startup.cfa interpose.cfa bits/debug.cfa assert.cfa exception.c virtual.c heap.cfa ${headers:.hfa=.cfa}
 
 # not all platforms support concurrency, add option do disable it
-libsrc += concurrency/CtxSwitch-@ARCHITECTURE@.S concurrency/alarm.cfa concurrency/invoke.c concurrency/preemption.cfa
+thread_headers_nosrc = concurrency/invoke.h
+thread_headers = concurrency/coroutine.hfa concurrency/thread.hfa concurrency/kernel.hfa concurrency/monitor.hfa concurrency/mutex.hfa
+thread_libsrc = concurrency/CtxSwitch-@ARCHITECTURE@.S concurrency/alarm.cfa concurrency/invoke.c concurrency/preemption.cfa ${thread_headers:.hfa=.cfa}
 else
 headers =
+thread_headers =
 headers_nosrc =
+thread_headers_nosrc =
 libsrc =
 endif
@@ -64,4 +64,7 @@
 $(libobjs) : @CFACC@ @CFACPP@ prelude.cfa
 
+thread_libobjs = $(addsuffix .lo, $(basename $(filter %.cfa,$(thread_libsrc))))
+$(thread_libobjs) : @CFACC@ @CFACPP@ prelude.cfa
+
 
 # .deps inclusion is not done automatically by automake for new languages
@@ -72,4 +75,12 @@
 
 -include $(libdeps)
+
+thread_libdeps = $(join \
+	$(addsuffix $(DEPDIR)/ , $(dir $(thread_libobjs) ) ), \
+	$(notdir ${thread_libobjs:.lo=.Plo}) \
+)
+
+-include $(thread_libdeps)
+
 
 prelude.o : prelude.cfa extras.cf gcc-builtins.cf builtins.cf @CFACC@ @CFACPP@
@@ -85,8 +96,11 @@
 libcfa_la_LDFLAGS = -version-info @CFA_VERSION@
 
+libcfathread_la_SOURCES = ${thread_libsrc}
+libcfathread_la_LDFLAGS = -version-info @CFA_VERSION@
+
 stdhdr = $(shell find $(srcdir)/stdhdr -type f -printf "%p ")
 
 cfa_includedir = $(CFA_INCDIR)
-nobase_cfa_include_HEADERS = ${stdhdr} ${headers} ${headers_nosrc}
+nobase_cfa_include_HEADERS = ${stdhdr} ${headers} ${headers_nosrc} ${thread_headers} ${thread_headers_nosrc}
 
 #----------------------------------------------------------------------------------------------------------------
Index: libcfa/src/Makefile.in
===================================================================
--- libcfa/src/Makefile.in	(revision e7231002bcdfdd0362118b8f0aa1cdc1d9a7e312)
+++ libcfa/src/Makefile.in	(revision fd642d2c3aee132ffbce05c2d7092e4dac7fa8d0)
@@ -142,9 +142,5 @@
 	time.cfa stdlib.cfa common.cfa containers/maybe.cfa \
 	containers/pair.cfa containers/result.cfa \
-	containers/vector.cfa concurrency/coroutine.cfa \
-	concurrency/thread.cfa concurrency/kernel.cfa \
-	concurrency/monitor.cfa concurrency/mutex.cfa \
-	concurrency/CtxSwitch-@ARCHITECTURE@.S concurrency/alarm.cfa \
-	concurrency/invoke.c concurrency/preemption.cfa
+	containers/vector.cfa
 am__dirstamp = $(am__leading_dot)dirstamp
 @BUILDLIB_TRUE@am__objects_1 = fstream.lo iostream.lo iterator.lo \
@@ -152,13 +148,8 @@
 @BUILDLIB_TRUE@	common.lo containers/maybe.lo \
 @BUILDLIB_TRUE@	containers/pair.lo containers/result.lo \
-@BUILDLIB_TRUE@	containers/vector.lo concurrency/coroutine.lo \
-@BUILDLIB_TRUE@	concurrency/thread.lo concurrency/kernel.lo \
-@BUILDLIB_TRUE@	concurrency/monitor.lo concurrency/mutex.lo
+@BUILDLIB_TRUE@	containers/vector.lo
 @BUILDLIB_TRUE@am__objects_2 = startup.lo interpose.lo bits/debug.lo \
 @BUILDLIB_TRUE@	assert.lo exception.lo virtual.lo heap.lo \
-@BUILDLIB_TRUE@	$(am__objects_1) \
-@BUILDLIB_TRUE@	concurrency/CtxSwitch-@ARCHITECTURE@.lo \
-@BUILDLIB_TRUE@	concurrency/alarm.lo concurrency/invoke.lo \
-@BUILDLIB_TRUE@	concurrency/preemption.lo
+@BUILDLIB_TRUE@	$(am__objects_1)
 am_libcfa_la_OBJECTS = prelude.lo $(am__objects_2)
 libcfa_la_OBJECTS = $(am_libcfa_la_OBJECTS)
@@ -170,4 +161,24 @@
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(libcfa_la_LDFLAGS) $(LDFLAGS) -o $@
+libcfathread_la_LIBADD =
+am__libcfathread_la_SOURCES_DIST =  \
+	concurrency/CtxSwitch-@ARCHITECTURE@.S concurrency/alarm.cfa \
+	concurrency/invoke.c concurrency/preemption.cfa \
+	concurrency/coroutine.cfa concurrency/thread.cfa \
+	concurrency/kernel.cfa concurrency/monitor.cfa \
+	concurrency/mutex.cfa
+@BUILDLIB_TRUE@am__objects_3 = concurrency/coroutine.lo \
+@BUILDLIB_TRUE@	concurrency/thread.lo concurrency/kernel.lo \
+@BUILDLIB_TRUE@	concurrency/monitor.lo concurrency/mutex.lo
+@BUILDLIB_TRUE@am__objects_4 =  \
+@BUILDLIB_TRUE@	concurrency/CtxSwitch-@ARCHITECTURE@.lo \
+@BUILDLIB_TRUE@	concurrency/alarm.lo concurrency/invoke.lo \
+@BUILDLIB_TRUE@	concurrency/preemption.lo $(am__objects_3)
+am_libcfathread_la_OBJECTS = $(am__objects_4)
+libcfathread_la_OBJECTS = $(am_libcfathread_la_OBJECTS)
+libcfathread_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(AM_CFLAGS) $(CFLAGS) $(libcfathread_la_LDFLAGS) $(LDFLAGS) \
+	-o $@
 AM_V_P = $(am__v_P_@AM_V@)
 am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
@@ -214,6 +225,7 @@
 am__v_CCLD_0 = @echo "  CCLD    " $@;
 am__v_CCLD_1 = 
-SOURCES = $(libcfa_la_SOURCES)
-DIST_SOURCES = $(am__libcfa_la_SOURCES_DIST)
+SOURCES = $(libcfa_la_SOURCES) $(libcfathread_la_SOURCES)
+DIST_SOURCES = $(am__libcfa_la_SOURCES_DIST) \
+	$(am__libcfathread_la_SOURCES_DIST)
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
@@ -225,9 +237,10 @@
 	limits.hfa rational.hfa time.hfa stdlib.hfa common.hfa \
 	containers/maybe.hfa containers/pair.hfa containers/result.hfa \
-	containers/vector.hfa concurrency/coroutine.hfa \
+	containers/vector.hfa math.hfa gmp.hfa time_t.hfa \
+	bits/align.hfa bits/containers.hfa bits/defs.hfa \
+	bits/debug.hfa bits/locks.hfa concurrency/coroutine.hfa \
 	concurrency/thread.hfa concurrency/kernel.hfa \
-	concurrency/monitor.hfa concurrency/mutex.hfa math.hfa gmp.hfa \
-	time_t.hfa bits/align.hfa bits/containers.hfa bits/defs.hfa \
-	bits/debug.hfa bits/locks.hfa concurrency/invoke.h
+	concurrency/monitor.hfa concurrency/mutex.hfa \
+	concurrency/invoke.h
 HEADERS = $(nobase_cfa_include_HEADERS)
 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
@@ -421,5 +434,5 @@
 am__v_UPP_0 = @echo "  UPP     " $@;
 am__v_UPP_1 = 
-lib_LTLIBRARIES = libcfa.la
+lib_LTLIBRARIES = libcfa.la libcfathread.la
 
 # AM_CFLAGS for all cfa source
@@ -433,27 +446,18 @@
 
 #----------------------------------------------------------------------------------------------------------------
+@BUILDLIB_TRUE@headers_nosrc = math.hfa gmp.hfa time_t.hfa bits/align.hfa bits/containers.hfa bits/defs.hfa bits/debug.hfa bits/locks.hfa
+@BUILDLIB_FALSE@headers = 
+@BUILDLIB_TRUE@headers = fstream.hfa iostream.hfa iterator.hfa limits.hfa rational.hfa time.hfa stdlib.hfa common.hfa \
+@BUILDLIB_TRUE@	  containers/maybe.hfa containers/pair.hfa containers/result.hfa containers/vector.hfa
+
+@BUILDLIB_FALSE@libsrc = 
+@BUILDLIB_TRUE@libsrc = startup.cfa interpose.cfa bits/debug.cfa assert.cfa exception.c virtual.c heap.cfa ${headers:.hfa=.cfa}
+@BUILDLIB_FALSE@thread_headers_nosrc = 
 
 # not all platforms support concurrency, add option do disable it
-@BUILDLIB_TRUE@headers_nosrc = math.hfa gmp.hfa time_t.hfa \
-@BUILDLIB_TRUE@	bits/align.hfa bits/containers.hfa \
-@BUILDLIB_TRUE@	bits/defs.hfa bits/debug.hfa bits/locks.hfa \
-@BUILDLIB_TRUE@	concurrency/invoke.h
-@BUILDLIB_FALSE@headers = 
-@BUILDLIB_TRUE@headers = fstream.hfa iostream.hfa iterator.hfa \
-@BUILDLIB_TRUE@	limits.hfa rational.hfa time.hfa stdlib.hfa \
-@BUILDLIB_TRUE@	common.hfa containers/maybe.hfa \
-@BUILDLIB_TRUE@	containers/pair.hfa containers/result.hfa \
-@BUILDLIB_TRUE@	containers/vector.hfa concurrency/coroutine.hfa \
-@BUILDLIB_TRUE@	concurrency/thread.hfa concurrency/kernel.hfa \
-@BUILDLIB_TRUE@	concurrency/monitor.hfa concurrency/mutex.hfa
-@BUILDLIB_FALSE@libsrc = 
-
-# not all platforms support concurrency, add option do disable it
-@BUILDLIB_TRUE@libsrc = startup.cfa interpose.cfa bits/debug.cfa \
-@BUILDLIB_TRUE@	assert.cfa exception.c virtual.c heap.cfa \
-@BUILDLIB_TRUE@	${headers:.hfa=.cfa} \
-@BUILDLIB_TRUE@	concurrency/CtxSwitch-@ARCHITECTURE@.S \
-@BUILDLIB_TRUE@	concurrency/alarm.cfa concurrency/invoke.c \
-@BUILDLIB_TRUE@	concurrency/preemption.cfa
+@BUILDLIB_TRUE@thread_headers_nosrc = concurrency/invoke.h
+@BUILDLIB_FALSE@thread_headers = 
+@BUILDLIB_TRUE@thread_headers = concurrency/coroutine.hfa concurrency/thread.hfa concurrency/kernel.hfa concurrency/monitor.hfa concurrency/mutex.hfa
+@BUILDLIB_TRUE@thread_libsrc = concurrency/CtxSwitch-@ARCHITECTURE@.S concurrency/alarm.cfa concurrency/invoke.c concurrency/preemption.cfa ${thread_headers:.hfa=.cfa}
 
 #----------------------------------------------------------------------------------------------------------------
@@ -463,4 +467,5 @@
 # add dependency of cfa files
 libobjs = $(addsuffix .lo, $(basename $(filter %.cfa,$(libsrc))))
+thread_libobjs = $(addsuffix .lo, $(basename $(filter %.cfa,$(thread_libsrc))))
 
 # .deps inclusion is not done automatically by automake for new languages
@@ -470,11 +475,18 @@
 )
 
+thread_libdeps = $(join \
+	$(addsuffix $(DEPDIR)/ , $(dir $(thread_libobjs) ) ), \
+	$(notdir ${thread_libobjs:.lo=.Plo}) \
+)
+
 
 #----------------------------------------------------------------------------------------------------------------
 libcfa_la_SOURCES = prelude.cfa ${libsrc}
 libcfa_la_LDFLAGS = -version-info @CFA_VERSION@
+libcfathread_la_SOURCES = ${thread_libsrc}
+libcfathread_la_LDFLAGS = -version-info @CFA_VERSION@
 stdhdr = $(shell find $(srcdir)/stdhdr -type f -printf "%p ")
 cfa_includedir = $(CFA_INCDIR)
-nobase_cfa_include_HEADERS = ${stdhdr} ${headers} ${headers_nosrc}
+nobase_cfa_include_HEADERS = ${stdhdr} ${headers} ${headers_nosrc} ${thread_headers} ${thread_headers_nosrc}
 all: all-am
 
@@ -567,4 +579,7 @@
 containers/vector.lo: containers/$(am__dirstamp) \
 	containers/$(DEPDIR)/$(am__dirstamp)
+
+libcfa.la: $(libcfa_la_OBJECTS) $(libcfa_la_DEPENDENCIES) $(EXTRA_libcfa_la_DEPENDENCIES) 
+	$(AM_V_CCLD)$(libcfa_la_LINK) -rpath $(libdir) $(libcfa_la_OBJECTS) $(libcfa_la_LIBADD) $(LIBS)
 concurrency/$(am__dirstamp):
 	@$(MKDIR_P) concurrency
@@ -573,4 +588,12 @@
 	@$(MKDIR_P) concurrency/$(DEPDIR)
 	@: > concurrency/$(DEPDIR)/$(am__dirstamp)
+concurrency/CtxSwitch-@ARCHITECTURE@.lo: concurrency/$(am__dirstamp) \
+	concurrency/$(DEPDIR)/$(am__dirstamp)
+concurrency/alarm.lo: concurrency/$(am__dirstamp) \
+	concurrency/$(DEPDIR)/$(am__dirstamp)
+concurrency/invoke.lo: concurrency/$(am__dirstamp) \
+	concurrency/$(DEPDIR)/$(am__dirstamp)
+concurrency/preemption.lo: concurrency/$(am__dirstamp) \
+	concurrency/$(DEPDIR)/$(am__dirstamp)
 concurrency/coroutine.lo: concurrency/$(am__dirstamp) \
 	concurrency/$(DEPDIR)/$(am__dirstamp)
@@ -583,15 +606,7 @@
 concurrency/mutex.lo: concurrency/$(am__dirstamp) \
 	concurrency/$(DEPDIR)/$(am__dirstamp)
-concurrency/CtxSwitch-@ARCHITECTURE@.lo: concurrency/$(am__dirstamp) \
-	concurrency/$(DEPDIR)/$(am__dirstamp)
-concurrency/alarm.lo: concurrency/$(am__dirstamp) \
-	concurrency/$(DEPDIR)/$(am__dirstamp)
-concurrency/invoke.lo: concurrency/$(am__dirstamp) \
-	concurrency/$(DEPDIR)/$(am__dirstamp)
-concurrency/preemption.lo: concurrency/$(am__dirstamp) \
-	concurrency/$(DEPDIR)/$(am__dirstamp)
-
-libcfa.la: $(libcfa_la_OBJECTS) $(libcfa_la_DEPENDENCIES) $(EXTRA_libcfa_la_DEPENDENCIES) 
-	$(AM_V_CCLD)$(libcfa_la_LINK) -rpath $(libdir) $(libcfa_la_OBJECTS) $(libcfa_la_LIBADD) $(LIBS)
+
+libcfathread.la: $(libcfathread_la_OBJECTS) $(libcfathread_la_DEPENDENCIES) $(EXTRA_libcfathread_la_DEPENDENCIES) 
+	$(AM_V_CCLD)$(libcfathread_la_LINK) -rpath $(libdir) $(libcfathread_la_OBJECTS) $(libcfathread_la_LIBADD) $(LIBS)
 
 mostlyclean-compile:
@@ -922,6 +937,9 @@
 	$(am__mv) $$depbase.Tpo $$depbase.Plo
 $(libobjs) : @CFACC@ @CFACPP@ prelude.cfa
+$(thread_libobjs) : @CFACC@ @CFACPP@ prelude.cfa
 
 -include $(libdeps)
+
+-include $(thread_libdeps)
 
 prelude.o : prelude.cfa extras.cf gcc-builtins.cf builtins.cf @CFACC@ @CFACPP@
Index: libcfa/src/bits/defs.hfa
===================================================================
--- libcfa/src/bits/defs.hfa	(revision e7231002bcdfdd0362118b8f0aa1cdc1d9a7e312)
+++ libcfa/src/bits/defs.hfa	(revision fd642d2c3aee132ffbce05c2d7092e4dac7fa8d0)
@@ -41,2 +41,8 @@
 }
 #endif
+
+#if defined(__cforall_thread__)
+#define OPTIONAL_THREAD
+#else
+#define OPTIONAL_THREAD __attribute__((weak))
+#endif
Index: libcfa/src/bits/locks.hfa
===================================================================
--- libcfa/src/bits/locks.hfa	(revision e7231002bcdfdd0362118b8f0aa1cdc1d9a7e312)
+++ libcfa/src/bits/locks.hfa	(revision fd642d2c3aee132ffbce05c2d7092e4dac7fa8d0)
@@ -50,6 +50,6 @@
 #ifdef __cforall
 	extern "C" {
-		extern void disable_interrupts();
-		extern void enable_interrupts_noPoll();
+		extern void disable_interrupts() OPTIONAL_THREAD;
+		extern void enable_interrupts_noPoll() OPTIONAL_THREAD;
 
 		#ifdef __CFA_DEBUG__
Index: libcfa/src/concurrency/alarm.cfa
===================================================================
--- libcfa/src/concurrency/alarm.cfa	(revision e7231002bcdfdd0362118b8f0aa1cdc1d9a7e312)
+++ libcfa/src/concurrency/alarm.cfa	(revision fd642d2c3aee132ffbce05c2d7092e4dac7fa8d0)
@@ -13,4 +13,6 @@
 // Update Count     : 67
 //
+
+#define __cforall_thread__
 
 extern "C" {
Index: libcfa/src/concurrency/coroutine.cfa
===================================================================
--- libcfa/src/concurrency/coroutine.cfa	(revision e7231002bcdfdd0362118b8f0aa1cdc1d9a7e312)
+++ libcfa/src/concurrency/coroutine.cfa	(revision fd642d2c3aee132ffbce05c2d7092e4dac7fa8d0)
@@ -13,4 +13,6 @@
 // Update Count     : 9
 //
+
+#define __cforall_thread__
 
 #include "coroutine.hfa"
Index: libcfa/src/concurrency/invoke.c
===================================================================
--- libcfa/src/concurrency/invoke.c	(revision e7231002bcdfdd0362118b8f0aa1cdc1d9a7e312)
+++ libcfa/src/concurrency/invoke.c	(revision fd642d2c3aee132ffbce05c2d7092e4dac7fa8d0)
@@ -13,4 +13,6 @@
 // Update Count     : 5
 //
+
+#define __cforall_thread__
 
 #include <stdbool.h>
@@ -31,5 +33,5 @@
 extern void __finish_creation( struct thread_desc * );
 extern void __leave_thread_monitor( struct thread_desc * this );
-extern void disable_interrupts();
+extern void disable_interrupts() OPTIONAL_THREAD;
 extern void enable_interrupts( __cfaabi_dbg_ctx_param );
 
Index: libcfa/src/concurrency/kernel.cfa
===================================================================
--- libcfa/src/concurrency/kernel.cfa	(revision e7231002bcdfdd0362118b8f0aa1cdc1d9a7e312)
+++ libcfa/src/concurrency/kernel.cfa	(revision fd642d2c3aee132ffbce05c2d7092e4dac7fa8d0)
@@ -13,4 +13,6 @@
 // Update Count     : 25
 //
+
+#define __cforall_thread__
 
 //C Includes
@@ -943,4 +945,10 @@
 	}
 )
+
+//-----------------------------------------------------------------------------
+// Debug
+bool threading_enabled(void) {
+	return true;
+}
 // Local Variables: //
 // mode: c //
Index: libcfa/src/concurrency/kernel_private.hfa
===================================================================
--- libcfa/src/concurrency/kernel_private.hfa	(revision e7231002bcdfdd0362118b8f0aa1cdc1d9a7e312)
+++ libcfa/src/concurrency/kernel_private.hfa	(revision fd642d2c3aee132ffbce05c2d7092e4dac7fa8d0)
@@ -26,5 +26,5 @@
 
 extern "C" {
-	void disable_interrupts();
+	void disable_interrupts() OPTIONAL_THREAD;
 	void enable_interrupts_noPoll();
 	void enable_interrupts( __cfaabi_dbg_ctx_param );
Index: libcfa/src/concurrency/monitor.cfa
===================================================================
--- libcfa/src/concurrency/monitor.cfa	(revision e7231002bcdfdd0362118b8f0aa1cdc1d9a7e312)
+++ libcfa/src/concurrency/monitor.cfa	(revision fd642d2c3aee132ffbce05c2d7092e4dac7fa8d0)
@@ -13,4 +13,6 @@
 // Update Count     : 9
 //
+
+#define __cforall_thread__
 
 #include "monitor.hfa"
Index: libcfa/src/concurrency/mutex.cfa
===================================================================
--- libcfa/src/concurrency/mutex.cfa	(revision e7231002bcdfdd0362118b8f0aa1cdc1d9a7e312)
+++ libcfa/src/concurrency/mutex.cfa	(revision fd642d2c3aee132ffbce05c2d7092e4dac7fa8d0)
@@ -15,4 +15,6 @@
 // Update Count     : 0
 //
+
+#define __cforall_thread__
 
 #include "mutex.hfa"
Index: libcfa/src/concurrency/preemption.cfa
===================================================================
--- libcfa/src/concurrency/preemption.cfa	(revision e7231002bcdfdd0362118b8f0aa1cdc1d9a7e312)
+++ libcfa/src/concurrency/preemption.cfa	(revision fd642d2c3aee132ffbce05c2d7092e4dac7fa8d0)
@@ -13,4 +13,6 @@
 // Update Count     : 37
 //
+
+#define __cforall_thread__
 
 #include "preemption.hfa"
Index: libcfa/src/concurrency/thread.cfa
===================================================================
--- libcfa/src/concurrency/thread.cfa	(revision e7231002bcdfdd0362118b8f0aa1cdc1d9a7e312)
+++ libcfa/src/concurrency/thread.cfa	(revision fd642d2c3aee132ffbce05c2d7092e4dac7fa8d0)
@@ -13,4 +13,6 @@
 // Update Count     : 8
 //
+
+#define __cforall_thread__
 
 #include "thread.hfa"
Index: libcfa/src/stdlib.cfa
===================================================================
--- libcfa/src/stdlib.cfa	(revision e7231002bcdfdd0362118b8f0aa1cdc1d9a7e312)
+++ libcfa/src/stdlib.cfa	(revision fd642d2c3aee132ffbce05c2d7092e4dac7fa8d0)
@@ -252,4 +252,9 @@
 long double _Complex random( void ) { return (long double)drand48() + (long double _Complex)(drand48() * _Complex_I); }
 
+//---------------------------------------
+
+bool threading_enabled(void) __attribute__((weak)) {
+	return false;
+}
 
 // Local Variables: //
Index: libcfa/src/stdlib.hfa
===================================================================
--- libcfa/src/stdlib.hfa	(revision e7231002bcdfdd0362118b8f0aa1cdc1d9a7e312)
+++ libcfa/src/stdlib.hfa	(revision fd642d2c3aee132ffbce05c2d7092e4dac7fa8d0)
@@ -15,4 +15,6 @@
 
 #pragma once
+
+#include "bits/defs.hfa"
 
 #include <stdlib.h>										// *alloc, strto*, ato*
@@ -246,4 +248,8 @@
 #include "common.hfa"
 
+//---------------------------------------
+
+extern bool threading_enabled(void) OPTIONAL_THREAD;
+
 // Local Variables: //
 // mode: c //
