Index: libcfa/src/Makefile.am
===================================================================
--- libcfa/src/Makefile.am	(revision 167d5ae3d404a556561f41a5c8d53b2064a0a99f)
+++ libcfa/src/Makefile.am	(revision 5307c33ac607745e077a0b76307fdb1337b5010c)
@@ -17,10 +17,10 @@
 # create object files in directory with source files
 AUTOMAKE_OPTIONS = foreign subdir-objects
-ARFLAGS = cr
+ACLOCAL_AMFLAGS  = -I automake
 
 include $(srcdir)/../../src/cfa.make
 
 libdir = ${CFA_LIBDIR}
-lib_LIBRARIES =  libcfa.a
+lib_LTLIBRARIES =  libcfa.la
 
 VPATH += :../prelude
@@ -31,5 +31,5 @@
 # The built sources must not depend on the installed headers
 AM_CFAFLAGS = -quiet -in-tree -I$(srcdir)/stdhdr @CONFIG_CFAFLAGS@
-AM_CFLAGS = -g -Wall -Wno-unused-function @ARCH_FLAGS@ @CONFIG_CFLAGS@
+AM_CFLAGS = -g -Wall -Wno-unused-function -fPIC @ARCH_FLAGS@ @CONFIG_CFLAGS@
 AM_CCASFLAGS = -g -Wall -Wno-unused-function @ARCH_FLAGS@ @CONFIG_CFLAGS@
 CFACC = @CFACC@
@@ -37,13 +37,11 @@
 #----------------------------------------------------------------------------------------------------------------
 if BUILDLIB
+headers_nosrc = math.hfa gmp.hfa time_t.hfa bits/align.hfa bits/containers.hfa bits/defs.hfa bits/debug.hfa bits/locks.hfa
 headers = fstream.hfa iostream.hfa iterator.hfa limits.hfa rational.hfa time.hfa stdlib.hfa common.hfa \
 	  containers/maybe.hfa containers/pair.hfa containers/result.hfa containers/vector.hfa
 
-headers_nosrc = math.hfa gmp.hfa time_t.hfa bits/align.hfa bits/containers.hfa bits/defs.hfa bits/debug.hfa bits/locks.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
-
-headers_nosrc += concurrency/invoke.h
 
 libsrc = startup.cfa interpose.cfa bits/debug.cfa assert.cfa exception.c virtual.c heap.cfa ${headers:.hfa=.cfa}
@@ -63,5 +61,5 @@
 
 # add dependency of cfa files
-libobjs = $(addsuffix .o, $(basename $(filter %.cfa,$(libsrc))))
+libobjs = $(addsuffix .lo, $(basename $(filter %.cfa,$(libsrc))))
 $(libobjs) : @CFACC@ @CFACPP@ prelude.cfa
 
@@ -70,5 +68,5 @@
 libdeps = $(join \
 	$(addsuffix $(DEPDIR)/ , $(dir $(libobjs) ) ), \
-	$(notdir ${libobjs:.o=.Po}) \
+	$(notdir ${libobjs:.lo=.Po}) \
 )
 
@@ -78,10 +76,14 @@
 	${AM_V_GEN}@CFACC@ ${AM_CFLAGS} ${CFLAGS} -quiet -in-tree -XCFA -l ${<} -c -o ${@}
 
+prelude.lo: prelude.cfa extras.cf gcc-builtins.cf builtins.cf @CFACC@ @CFACPP@
+	${AM_V_GEN}$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile \
+	@CFACC@ ${AM_CFLAGS} ${CFLAGS} -quiet -in-tree -XCFA -l ${<} -c -o ${@}
 
 
 #----------------------------------------------------------------------------------------------------------------
-libcfa_a_SOURCES = prelude.cfa ${libsrc}
+libcfa_la_SOURCES = prelude.cfa ${libsrc}
+libcfa_la_LDFLAGS = -version-info @CFA_VERSION@
 
-stdhdr = ${shell find ${srcdir}/stdhdr -type f -printf "%p "}
+stdhdr = $(shell find $(srcdir)/stdhdr -type f -printf "%p ")
 
 cfa_includedir = $(CFA_INCDIR)
Index: libcfa/src/Makefile.in
===================================================================
--- libcfa/src/Makefile.in	(revision 167d5ae3d404a556561f41a5c8d53b2064a0a99f)
+++ libcfa/src/Makefile.in	(revision 5307c33ac607745e077a0b76307fdb1337b5010c)
@@ -90,8 +90,14 @@
 PRE_UNINSTALL = :
 POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
 subdir = src
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/../automake/cfa.m4 \
-	$(top_srcdir)/configure.ac
+am__aclocal_m4_deps = $(top_srcdir)/automake/libtool.m4 \
+	$(top_srcdir)/automake/ltoptions.m4 \
+	$(top_srcdir)/automake/ltsugar.m4 \
+	$(top_srcdir)/automake/ltversion.m4 \
+	$(top_srcdir)/automake/lt~obsolete.m4 \
+	$(top_srcdir)/../automake/cfa.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
@@ -129,13 +135,7 @@
   }
 am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(cfa_includedir)"
-LIBRARIES = $(lib_LIBRARIES)
-AR = ar
-AM_V_AR = $(am__v_AR_@AM_V@)
-am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@)
-am__v_AR_0 = @echo "  AR      " $@;
-am__v_AR_1 = 
-libcfa_a_AR = $(AR) $(ARFLAGS)
-libcfa_a_LIBADD =
-am__libcfa_a_SOURCES_DIST = prelude.cfa startup.cfa interpose.cfa \
+LTLIBRARIES = $(lib_LTLIBRARIES)
+libcfa_la_LIBADD =
+am__libcfa_la_SOURCES_DIST = prelude.cfa startup.cfa interpose.cfa \
 	bits/debug.cfa assert.cfa exception.c virtual.c heap.cfa \
 	fstream.cfa iostream.cfa iterator.cfa limits.cfa rational.cfa \
@@ -148,27 +148,26 @@
 	concurrency/invoke.c concurrency/preemption.cfa
 am__dirstamp = $(am__leading_dot)dirstamp
-@BUILDLIB_TRUE@am__objects_1 = fstream.$(OBJEXT) iostream.$(OBJEXT) \
-@BUILDLIB_TRUE@	iterator.$(OBJEXT) limits.$(OBJEXT) \
-@BUILDLIB_TRUE@	rational.$(OBJEXT) time.$(OBJEXT) \
-@BUILDLIB_TRUE@	stdlib.$(OBJEXT) common.$(OBJEXT) \
-@BUILDLIB_TRUE@	containers/maybe.$(OBJEXT) \
-@BUILDLIB_TRUE@	containers/pair.$(OBJEXT) \
-@BUILDLIB_TRUE@	containers/result.$(OBJEXT) \
-@BUILDLIB_TRUE@	containers/vector.$(OBJEXT) \
-@BUILDLIB_TRUE@	concurrency/coroutine.$(OBJEXT) \
-@BUILDLIB_TRUE@	concurrency/thread.$(OBJEXT) \
-@BUILDLIB_TRUE@	concurrency/kernel.$(OBJEXT) \
-@BUILDLIB_TRUE@	concurrency/monitor.$(OBJEXT) \
-@BUILDLIB_TRUE@	concurrency/mutex.$(OBJEXT)
-@BUILDLIB_TRUE@am__objects_2 = startup.$(OBJEXT) interpose.$(OBJEXT) \
-@BUILDLIB_TRUE@	bits/debug.$(OBJEXT) assert.$(OBJEXT) \
-@BUILDLIB_TRUE@	exception.$(OBJEXT) virtual.$(OBJEXT) \
-@BUILDLIB_TRUE@	heap.$(OBJEXT) $(am__objects_1) \
-@BUILDLIB_TRUE@	concurrency/CtxSwitch-@ARCHITECTURE@.$(OBJEXT) \
-@BUILDLIB_TRUE@	concurrency/alarm.$(OBJEXT) \
-@BUILDLIB_TRUE@	concurrency/invoke.$(OBJEXT) \
-@BUILDLIB_TRUE@	concurrency/preemption.$(OBJEXT)
-am_libcfa_a_OBJECTS = prelude.$(OBJEXT) $(am__objects_2)
-libcfa_a_OBJECTS = $(am_libcfa_a_OBJECTS)
+@BUILDLIB_TRUE@am__objects_1 = fstream.lo iostream.lo iterator.lo \
+@BUILDLIB_TRUE@	limits.lo rational.lo time.lo stdlib.lo \
+@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@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
+am_libcfa_la_OBJECTS = prelude.lo $(am__objects_2)
+libcfa_la_OBJECTS = $(am_libcfa_la_OBJECTS)
+AM_V_lt = $(am__v_lt_@AM_V@)
+am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 = 
+libcfa_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(libcfa_la_LDFLAGS) $(LDFLAGS) -o $@
 AM_V_P = $(am__v_P_@AM_V@)
 am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
@@ -184,9 +183,13 @@
 am__v_at_1 = 
 DEFAULT_INCLUDES = -I.@am__isrc@
-depcomp = $(SHELL) $(top_srcdir)/./automake/depcomp
+depcomp = $(SHELL) $(top_srcdir)/automake/depcomp
 am__depfiles_maybe = depfiles
 am__mv = mv -f
 CPPASCOMPILE = $(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
 	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS)
+LTCPPASCOMPILE = $(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CCAS) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CCASFLAGS) $(CCASFLAGS)
 AM_V_CPPAS = $(am__v_CPPAS_@AM_V@)
 am__v_CPPAS_ = $(am__v_CPPAS_@AM_DEFAULT_V@)
@@ -195,4 +198,8 @@
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
 AM_V_CC = $(am__v_CC_@AM_V@)
 am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
@@ -200,11 +207,13 @@
 am__v_CC_1 = 
 CCLD = $(CC)
-LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
 AM_V_CCLD = $(am__v_CCLD_@AM_V@)
 am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
 am__v_CCLD_0 = @echo "  CCLD    " $@;
 am__v_CCLD_1 = 
-SOURCES = $(libcfa_a_SOURCES)
-DIST_SOURCES = $(am__libcfa_a_SOURCES_DIST)
+SOURCES = $(libcfa_la_SOURCES)
+DIST_SOURCES = $(am__libcfa_la_SOURCES_DIST)
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
@@ -212,6 +221,6 @@
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
-am__nobase_cfa_include_HEADERS_DIST = ${shell find ${srcdir}/stdhdr \
-	-type f -printf "%p "} fstream.hfa iostream.hfa iterator.hfa \
+am__nobase_cfa_include_HEADERS_DIST = $(shell find $(srcdir)/stdhdr \
+	-type f -printf "%p ") fstream.hfa iostream.hfa iterator.hfa \
 	limits.hfa rational.hfa time.hfa stdlib.hfa common.hfa \
 	containers/maybe.hfa containers/pair.hfa containers/result.hfa \
@@ -242,5 +251,5 @@
 CTAGS = ctags
 am__DIST_COMMON = $(srcdir)/../../src/cfa.make $(srcdir)/Makefile.in \
-	$(top_srcdir)/./automake/depcomp
+	$(top_srcdir)/automake/depcomp
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 VPATH = @srcdir@ :../prelude
@@ -248,4 +257,5 @@
 AMTAR = @AMTAR@
 AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
 ARCHITECTURE = @ARCHITECTURE@
 ARCH_FLAGS = @ARCH_FLAGS@
@@ -266,4 +276,5 @@
 CFA_NAME = @CFA_NAME@
 CFA_PREFIX = @CFA_PREFIX@
+CFA_VERSION = @CFA_VERSION@
 CFLAGS = @CFLAGS@
 CONFIGURATION = @CONFIGURATION@
@@ -271,6 +282,8 @@
 CONFIG_CFAFLAGS = @CONFIG_CFAFLAGS@
 CONFIG_CFLAGS = @CONFIG_CFLAGS@
+CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CXX = @CXX@
+CXXCPP = @CXXCPP@
 CXXDEPMODE = @CXXDEPMODE@
 CXXFLAGS = @CXXFLAGS@
@@ -278,9 +291,15 @@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
 DRIVER_DIR = @DRIVER_DIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
 ECHO_C = @ECHO_C@
 ECHO_N = @ECHO_N@
 ECHO_T = @ECHO_T@
+EGREP = @EGREP@
 EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
@@ -288,11 +307,22 @@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
 PACKAGE = @PACKAGE@
 PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
@@ -304,4 +334,5 @@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 RANLIB = @RANLIB@
+SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -312,6 +343,8 @@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
 am__include = @am__include@
 am__leading_dot = @am__leading_dot@
@@ -320,5 +353,9 @@
 am__untar = @am__untar@
 bindir = @bindir@
+build = @build@
 build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
 builddir = @builddir@
 datadir = @datadir@
@@ -327,5 +364,9 @@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
+host = @host@
 host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
 htmldir = @htmldir@
 includedir = @includedir@
@@ -355,11 +396,16 @@
 # create object files in directory with source files
 AUTOMAKE_OPTIONS = foreign subdir-objects
-ARFLAGS = cr
+ACLOCAL_AMFLAGS = -I automake
 CFACOMPILE = $(CFACC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CFAFLAGS) $(CFAFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCFACOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CFACC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CFAFLAGS) $(CFAFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+
 AM_V_CFA = $(am__v_CFA_@AM_V@)
 am__v_CFA_ = $(am__v_CFA_@AM_DEFAULT_V@)
 am__v_CFA_0 = @echo "  CFA     " $@;
 am__v_CFA_1 = 
-lib_LIBRARIES = libcfa.a
+lib_LTLIBRARIES = libcfa.la
 
 # AM_CFLAGS for all cfa source
@@ -368,11 +414,16 @@
 # The built sources must not depend on the installed headers
 AM_CFAFLAGS = -quiet -in-tree -I$(srcdir)/stdhdr @CONFIG_CFAFLAGS@
-AM_CFLAGS = -g -Wall -Wno-unused-function @ARCH_FLAGS@ @CONFIG_CFLAGS@
+AM_CFLAGS = -g -Wall -Wno-unused-function -fPIC @ARCH_FLAGS@ @CONFIG_CFLAGS@
 AM_CCASFLAGS = -g -Wall -Wno-unused-function @ARCH_FLAGS@ @CONFIG_CFLAGS@
+@BUILDLIB_FALSE@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 = 
-
-#----------------------------------------------------------------------------------------------------------------
-
-# not all platforms support concurrency, add option do disable it
 @BUILDLIB_TRUE@headers = fstream.hfa iostream.hfa iterator.hfa \
 @BUILDLIB_TRUE@	limits.hfa rational.hfa time.hfa stdlib.hfa \
@@ -382,9 +433,4 @@
 @BUILDLIB_TRUE@	concurrency/thread.hfa concurrency/kernel.hfa \
 @BUILDLIB_TRUE@	concurrency/monitor.hfa concurrency/mutex.hfa
-@BUILDLIB_FALSE@headers_nosrc = 
-@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@libsrc = 
 
@@ -402,16 +448,17 @@
 
 # add dependency of cfa files
-libobjs = $(addsuffix .o, $(basename $(filter %.cfa,$(libsrc))))
+libobjs = $(addsuffix .lo, $(basename $(filter %.cfa,$(libsrc))))
 
 # .deps inclusion is not done automatically by automake for new languages
 libdeps = $(join \
 	$(addsuffix $(DEPDIR)/ , $(dir $(libobjs) ) ), \
-	$(notdir ${libobjs:.o=.Po}) \
+	$(notdir ${libobjs:.lo=.Po}) \
 )
 
 
 #----------------------------------------------------------------------------------------------------------------
-libcfa_a_SOURCES = prelude.cfa ${libsrc}
-stdhdr = ${shell find ${srcdir}/stdhdr -type f -printf "%p "}
+libcfa_la_SOURCES = prelude.cfa ${libsrc}
+libcfa_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}
@@ -419,5 +466,5 @@
 
 .SUFFIXES:
-.SUFFIXES: .S .c .cfa .o .obj
+.SUFFIXES: .S .c .cfa .lo .o .obj
 $(srcdir)/Makefile.in:  $(srcdir)/Makefile.am $(srcdir)/../../src/cfa.make $(am__configure_deps)
 	@for dep in $?; do \
@@ -450,7 +497,8 @@
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(am__aclocal_m4_deps):
-install-libLIBRARIES: $(lib_LIBRARIES)
+
+install-libLTLIBRARIES: $(lib_LTLIBRARIES)
 	@$(NORMAL_INSTALL)
-	@list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \
+	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
 	list2=; for p in $$list; do \
 	  if test -f $$p; then \
@@ -461,24 +509,27 @@
 	  echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
 	  $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
-	  echo " $(INSTALL_DATA) $$list2 '$(DESTDIR)$(libdir)'"; \
-	  $(INSTALL_DATA) $$list2 "$(DESTDIR)$(libdir)" || exit $$?; }
-	@$(POST_INSTALL)
-	@list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \
+	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
+	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
+	}
+
+uninstall-libLTLIBRARIES:
+	@$(NORMAL_UNINSTALL)
+	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
 	for p in $$list; do \
-	  if test -f $$p; then \
-	    $(am__strip_dir) \
-	    echo " ( cd '$(DESTDIR)$(libdir)' && $(RANLIB) $$f )"; \
-	    ( cd "$(DESTDIR)$(libdir)" && $(RANLIB) $$f ) || exit $$?; \
-	  else :; fi; \
+	  $(am__strip_dir) \
+	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \
+	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \
 	done
 
-uninstall-libLIBRARIES:
-	@$(NORMAL_UNINSTALL)
-	@list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(libdir)'; $(am__uninstall_files_from_dir)
-
-clean-libLIBRARIES:
-	-test -z "$(lib_LIBRARIES)" || rm -f $(lib_LIBRARIES)
+clean-libLTLIBRARIES:
+	-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
+	@list='$(lib_LTLIBRARIES)'; \
+	locs=`for p in $$list; do echo $$p; done | \
+	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+	      sort -u`; \
+	test -z "$$locs" || { \
+	  echo rm -f $${locs}; \
+	  rm -f $${locs}; \
+	}
 bits/$(am__dirstamp):
 	@$(MKDIR_P) bits
@@ -487,6 +538,5 @@
 	@$(MKDIR_P) bits/$(DEPDIR)
 	@: > bits/$(DEPDIR)/$(am__dirstamp)
-bits/debug.$(OBJEXT): bits/$(am__dirstamp) \
-	bits/$(DEPDIR)/$(am__dirstamp)
+bits/debug.lo: bits/$(am__dirstamp) bits/$(DEPDIR)/$(am__dirstamp)
 containers/$(am__dirstamp):
 	@$(MKDIR_P) containers
@@ -495,11 +545,11 @@
 	@$(MKDIR_P) containers/$(DEPDIR)
 	@: > containers/$(DEPDIR)/$(am__dirstamp)
-containers/maybe.$(OBJEXT): containers/$(am__dirstamp) \
+containers/maybe.lo: containers/$(am__dirstamp) \
 	containers/$(DEPDIR)/$(am__dirstamp)
-containers/pair.$(OBJEXT): containers/$(am__dirstamp) \
+containers/pair.lo: containers/$(am__dirstamp) \
 	containers/$(DEPDIR)/$(am__dirstamp)
-containers/result.$(OBJEXT): containers/$(am__dirstamp) \
+containers/result.lo: containers/$(am__dirstamp) \
 	containers/$(DEPDIR)/$(am__dirstamp)
-containers/vector.$(OBJEXT): containers/$(am__dirstamp) \
+containers/vector.lo: containers/$(am__dirstamp) \
 	containers/$(DEPDIR)/$(am__dirstamp)
 concurrency/$(am__dirstamp):
@@ -509,42 +559,42 @@
 	@$(MKDIR_P) concurrency/$(DEPDIR)
 	@: > concurrency/$(DEPDIR)/$(am__dirstamp)
-concurrency/coroutine.$(OBJEXT): concurrency/$(am__dirstamp) \
+concurrency/coroutine.lo: concurrency/$(am__dirstamp) \
 	concurrency/$(DEPDIR)/$(am__dirstamp)
-concurrency/thread.$(OBJEXT): concurrency/$(am__dirstamp) \
+concurrency/thread.lo: concurrency/$(am__dirstamp) \
 	concurrency/$(DEPDIR)/$(am__dirstamp)
-concurrency/kernel.$(OBJEXT): concurrency/$(am__dirstamp) \
+concurrency/kernel.lo: concurrency/$(am__dirstamp) \
 	concurrency/$(DEPDIR)/$(am__dirstamp)
-concurrency/monitor.$(OBJEXT): concurrency/$(am__dirstamp) \
+concurrency/monitor.lo: concurrency/$(am__dirstamp) \
 	concurrency/$(DEPDIR)/$(am__dirstamp)
-concurrency/mutex.$(OBJEXT): concurrency/$(am__dirstamp) \
+concurrency/mutex.lo: concurrency/$(am__dirstamp) \
 	concurrency/$(DEPDIR)/$(am__dirstamp)
-concurrency/CtxSwitch-@ARCHITECTURE@.$(OBJEXT):  \
-	concurrency/$(am__dirstamp) \
+concurrency/CtxSwitch-@ARCHITECTURE@.lo: concurrency/$(am__dirstamp) \
 	concurrency/$(DEPDIR)/$(am__dirstamp)
-concurrency/alarm.$(OBJEXT): concurrency/$(am__dirstamp) \
+concurrency/alarm.lo: concurrency/$(am__dirstamp) \
 	concurrency/$(DEPDIR)/$(am__dirstamp)
-concurrency/invoke.$(OBJEXT): concurrency/$(am__dirstamp) \
+concurrency/invoke.lo: concurrency/$(am__dirstamp) \
 	concurrency/$(DEPDIR)/$(am__dirstamp)
-concurrency/preemption.$(OBJEXT): concurrency/$(am__dirstamp) \
+concurrency/preemption.lo: concurrency/$(am__dirstamp) \
 	concurrency/$(DEPDIR)/$(am__dirstamp)
 
-libcfa.a: $(libcfa_a_OBJECTS) $(libcfa_a_DEPENDENCIES) $(EXTRA_libcfa_a_DEPENDENCIES) 
-	$(AM_V_at)-rm -f libcfa.a
-	$(AM_V_AR)$(libcfa_a_AR) libcfa.a $(libcfa_a_OBJECTS) $(libcfa_a_LIBADD)
-	$(AM_V_at)$(RANLIB) libcfa.a
+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)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
 	-rm -f bits/*.$(OBJEXT)
+	-rm -f bits/*.lo
 	-rm -f concurrency/*.$(OBJEXT)
+	-rm -f concurrency/*.lo
 	-rm -f containers/*.$(OBJEXT)
+	-rm -f containers/*.lo
 
 distclean-compile:
 	-rm -f *.tab.c
 
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/exception.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/virtual.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@concurrency/$(DEPDIR)/CtxSwitch-@ARCHITECTURE@.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@concurrency/$(DEPDIR)/invoke.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/exception.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/virtual.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@concurrency/$(DEPDIR)/CtxSwitch-@ARCHITECTURE@.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@concurrency/$(DEPDIR)/invoke.Plo@am__quote@
 
 .S.o:
@@ -564,4 +614,12 @@
 @am__fastdepCCAS_FALSE@	$(AM_V_CPPAS@am__nodep@)$(CPPASCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
+.S.lo:
+@am__fastdepCCAS_TRUE@	$(AM_V_CPPAS)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+@am__fastdepCCAS_TRUE@	$(LTCPPASCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCCAS_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Plo
+@AMDEP_TRUE@@am__fastdepCCAS_FALSE@	$(AM_V_CPPAS)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCCAS_FALSE@	DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCCAS_FALSE@	$(AM_V_CPPAS@am__nodep@)$(LTCPPASCOMPILE) -c -o $@ $<
+
 .c.o:
 @am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
@@ -579,4 +637,21 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+@am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+	-rm -rf bits/.libs bits/_libs
+	-rm -rf concurrency/.libs concurrency/_libs
+	-rm -rf containers/.libs containers/_libs
 install-nobase_cfa_includeHEADERS: $(nobase_cfa_include_HEADERS)
 	@$(NORMAL_INSTALL)
@@ -688,5 +763,5 @@
 check-am: all-am
 check: check-am
-all-am: Makefile $(LIBRARIES) $(HEADERS)
+all-am: Makefile $(LTLIBRARIES) $(HEADERS)
 installdirs:
 	for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(cfa_includedir)"; do \
@@ -731,5 +806,6 @@
 clean: clean-am
 
-clean-am: clean-generic clean-libLIBRARIES mostlyclean-am
+clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
+	mostlyclean-am
 
 distclean: distclean-am
@@ -757,5 +833,5 @@
 install-dvi-am:
 
-install-exec-am: install-libLIBRARIES
+install-exec-am: install-libLTLIBRARIES
 
 install-html: install-html-am
@@ -787,5 +863,6 @@
 mostlyclean: mostlyclean-am
 
-mostlyclean-am: mostlyclean-compile mostlyclean-generic
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
 
 pdf: pdf-am
@@ -797,5 +874,5 @@
 ps-am:
 
-uninstall-am: uninstall-libLIBRARIES \
+uninstall-am: uninstall-libLTLIBRARIES \
 	uninstall-nobase_cfa_includeHEADERS
 
@@ -803,17 +880,18 @@
 
 .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
-	clean-libLIBRARIES cscopelist-am ctags ctags-am distclean \
-	distclean-compile distclean-generic distclean-tags distdir dvi \
-	dvi-am html html-am info info-am install install-am \
-	install-data install-data-am install-dvi install-dvi-am \
-	install-exec install-exec-am install-html install-html-am \
-	install-info install-info-am install-libLIBRARIES install-man \
+	clean-libLTLIBRARIES clean-libtool cscopelist-am ctags \
+	ctags-am distclean distclean-compile distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-libLTLIBRARIES install-man \
 	install-nobase_cfa_includeHEADERS install-pdf install-pdf-am \
 	install-ps install-ps-am install-strip installcheck \
 	installcheck-am installdirs maintainer-clean \
 	maintainer-clean-generic maintainer-clean-local mostlyclean \
-	mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \
-	tags tags-am uninstall uninstall-am uninstall-libLIBRARIES \
-	uninstall-nobase_cfa_includeHEADERS
+	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+	pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \
+	uninstall-libLTLIBRARIES uninstall-nobase_cfa_includeHEADERS
 
 .PRECIOUS: Makefile
@@ -824,4 +902,9 @@
 	$(CFACOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
 	$(am__mv) $$depbase.Tpo $$depbase.Po
+
+.cfa.lo:
+	$(AM_V_CFA)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+	$(LTCFACOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+	$(am__mv) $$depbase.Tpo $$depbase.Plo
 $(libobjs) : @CFACC@ @CFACPP@ prelude.cfa
 
@@ -830,4 +913,8 @@
 prelude.o : prelude.cfa extras.cf gcc-builtins.cf builtins.cf @CFACC@ @CFACPP@
 	${AM_V_GEN}@CFACC@ ${AM_CFLAGS} ${CFLAGS} -quiet -in-tree -XCFA -l ${<} -c -o ${@}
+
+prelude.lo: prelude.cfa extras.cf gcc-builtins.cf builtins.cf @CFACC@ @CFACPP@
+	${AM_V_GEN}$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile \
+	@CFACC@ ${AM_CFLAGS} ${CFLAGS} -quiet -in-tree -XCFA -l ${<} -c -o ${@}
 
 #----------------------------------------------------------------------------------------------------------------
Index: libcfa/src/concurrency/invoke.h
===================================================================
--- libcfa/src/concurrency/invoke.h	(revision 167d5ae3d404a556561f41a5c8d53b2064a0a99f)
+++ libcfa/src/concurrency/invoke.h	(revision 5307c33ac607745e077a0b76307fdb1337b5010c)
@@ -59,5 +59,5 @@
 				volatile bool in_progress;
 			} preemption_state;
-		} kernelTLS;
+		} kernelTLS __attribute__ ((tls_model ( "initial-exec" )));
 	}
 
Index: libcfa/src/concurrency/kernel.cfa
===================================================================
--- libcfa/src/concurrency/kernel.cfa	(revision 167d5ae3d404a556561f41a5c8d53b2064a0a99f)
+++ libcfa/src/concurrency/kernel.cfa	(revision 5307c33ac607745e077a0b76307fdb1337b5010c)
@@ -57,5 +57,5 @@
 //-----------------------------------------------------------------------------
 // Global state
-thread_local struct KernelThreadData kernelTLS = {
+thread_local struct KernelThreadData kernelTLS __attribute__ ((tls_model ( "initial-exec" ))) = {
 	NULL,
 	NULL,
Index: libcfa/src/concurrency/kernel_private.hfa
===================================================================
--- libcfa/src/concurrency/kernel_private.hfa	(revision 167d5ae3d404a556561f41a5c8d53b2064a0a99f)
+++ libcfa/src/concurrency/kernel_private.hfa	(revision 5307c33ac607745e077a0b76307fdb1337b5010c)
@@ -79,5 +79,5 @@
 };
 
-extern volatile thread_local __cfa_kernel_preemption_state_t preemption_state;
+extern volatile thread_local __cfa_kernel_preemption_state_t preemption_state __attribute__ ((tls_model ( "initial-exec" )));
 
 //-----------------------------------------------------------------------------
Index: libcfa/src/exception.c
===================================================================
--- libcfa/src/exception.c	(revision 167d5ae3d404a556561f41a5c8d53b2064a0a99f)
+++ libcfa/src/exception.c	(revision 5307c33ac607745e077a0b76307fdb1337b5010c)
@@ -246,4 +246,13 @@
 }
 
+#if defined(PIC)
+#warning Exceptions not yet supported when using Position-Independent Code
+__attribute__((noinline))
+void __cfaabi_ehm__try_terminate(void (*try_block)(),
+		void (*catch_block)(int index, exception_t * except),
+		__attribute__((unused)) int (*match_block)(exception_t * except)) {
+	abort();
+}
+#else
 // This is our personality routine.  For every stack frame anotated with ".cfi_personality 0x3,__gcfa_personality_v0".
 // This function will be called twice when unwinding.  Once in the search phased and once in the cleanup phase.
@@ -477,2 +486,3 @@
 );
 #endif // __i386 || __x86_64
+#endif //PIC
