Index: libcfa/src/Makefile.am
===================================================================
--- libcfa/src/Makefile.am	(revision 461eed2b8a088c1fd65ab1ad52dac73a115a7459)
+++ libcfa/src/Makefile.am	(revision eeb0767cec7eef8d463f33fcf957d5a78f34339d)
@@ -16,5 +16,5 @@
 
 # create object files in directory with source files
-AUTOMAKE_OPTIONS = subdir-objects
+AUTOMAKE_OPTIONS = foreign subdir-objects
 ARFLAGS = cr
 
@@ -24,9 +24,11 @@
 lib_LIBRARIES =  libcfa.a
 
+VPATH += :../prelude
+
 # AM_CFLAGS for all cfa source
 # AM_CFAFLAGS for only cfa source
 # use -no-include-stdhdr to prevent rebuild cycles
 # The built sources must not depend on the installed headers
-AM_CFAFLAGS = -quiet -in-tree -imacros prelude.c -I$(srcdir)/stdhdr @CONFIG_CFAFLAGS@
+AM_CFAFLAGS = -quiet -in-tree -I$(srcdir)/stdhdr @CONFIG_CFAFLAGS@
 AM_CFLAGS = -g -Wall -Wno-unused-function @ARCH_FLAGS@ @CONFIG_CFLAGS@
 AM_CCASFLAGS = -g -Wall -Wno-unused-function @ARCH_FLAGS@ @CONFIG_CFLAGS@
@@ -34,42 +36,62 @@
 
 #----------------------------------------------------------------------------------------------------------------
+if BUILDLIB
 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 += concurrency/coroutine.hfa concurrency/thread.hfa concurrency/kernel.hfa concurrency/monitor.hfa concurrency/mutex.hfa
 
-libobjs = ${headers:.hfa=.o}
-libsrc = prelude.c startup.cfa interpose.cfa bits/debug.cfa assert.cfa exception.c virtual.c heap.cfa \
-	${headers:.hfa=.cfa}
+headers_nosrc += concurrency/invoke.h
+
+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
+else
+headers =
+headers_nosrc =
+libsrc =
+endif
+
 
 #----------------------------------------------------------------------------------------------------------------
 # add dependency to cfa-cpp so all libraries are rebuilt with new translator
-${libobjs} : ${cfalib_DATA}
+#@CFACC@ @CFACPP@ prelude.cfa
 
-libcfa_a_SOURCES = ${libsrc}
+# add dependency of cfa files
+libobjs = $(addsuffix .o, $(basename $(filter %.cfa,$(libsrc))))
+$(libobjs) : @CFACC@ @CFACPP@ prelude.cfa
+
+
+# .deps inclusion is not done automatically by automake for new languages
+libdeps = $(join \
+	$(addsuffix $(DEPDIR)/ , $(dir $(libobjs) ) ), \
+	$(notdir ${libobjs:.o=.Po}) \
+)
+
+-include $(libdeps)
+
+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 ${@}
+
+
+
+#----------------------------------------------------------------------------------------------------------------
+libcfa_a_SOURCES = prelude.cfa ${libsrc}
 
 stdhdr = ${shell find ${srcdir}/stdhdr -type f -printf "%p "}
 
 cfa_includedir = $(CFA_INCDIR)
-nobase_cfa_include_HEADERS = \
-	${headers}             \
-	${stdhdr}              \
-	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
-
-MOSTLYCLEANFILES = prelude.c
+nobase_cfa_include_HEADERS = ${stdhdr} ${headers} ${headers_nosrc}
 
 #----------------------------------------------------------------------------------------------------------------
 maintainer-clean-local:
 	-rm -rf ${CFA_INCDIR} ${CFA_LIBDIR}
+
+
+# $(AM_V_CFA)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+# 	$(CFACOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+# 	$(am__mv) $$depbase.Tpo $$depbase.Po
Index: libcfa/src/Makefile.in
===================================================================
--- libcfa/src/Makefile.in	(revision 461eed2b8a088c1fd65ab1ad52dac73a115a7459)
+++ libcfa/src/Makefile.in	(revision eeb0767cec7eef8d463f33fcf957d5a78f34339d)
@@ -19,5 +19,4 @@
 
 
-VPATH = @srcdir@
 am__is_gnu_make = { \
   if test -z '$(MAKELEVEL)'; then \
@@ -97,6 +96,6 @@
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-DIST_COMMON = $(srcdir)/Makefile.am $(nobase_cfa_include_HEADERS) \
-	$(am__DIST_COMMON)
+DIST_COMMON = $(srcdir)/Makefile.am \
+	$(am__nobase_cfa_include_HEADERS_DIST) $(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_CLEAN_FILES =
@@ -138,21 +137,37 @@
 libcfa_a_AR = $(AR) $(ARFLAGS)
 libcfa_a_LIBADD =
+am__libcfa_a_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 \
+	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
 am__dirstamp = $(am__leading_dot)dirstamp
-am__objects_1 = fstream.$(OBJEXT) iostream.$(OBJEXT) \
-	iterator.$(OBJEXT) limits.$(OBJEXT) rational.$(OBJEXT) \
-	time.$(OBJEXT) stdlib.$(OBJEXT) common.$(OBJEXT) \
-	containers/maybe.$(OBJEXT) containers/pair.$(OBJEXT) \
-	containers/result.$(OBJEXT) containers/vector.$(OBJEXT) \
-	concurrency/coroutine.$(OBJEXT) concurrency/thread.$(OBJEXT) \
-	concurrency/kernel.$(OBJEXT) concurrency/monitor.$(OBJEXT) \
-	concurrency/mutex.$(OBJEXT)
-am__objects_2 = prelude.$(OBJEXT) startup.$(OBJEXT) \
-	interpose.$(OBJEXT) bits/debug.$(OBJEXT) assert.$(OBJEXT) \
-	exception.$(OBJEXT) virtual.$(OBJEXT) heap.$(OBJEXT) \
-	$(am__objects_1) \
-	concurrency/CtxSwitch-@ARCHITECTURE@.$(OBJEXT) \
-	concurrency/alarm.$(OBJEXT) concurrency/invoke.$(OBJEXT) \
-	concurrency/preemption.$(OBJEXT)
-am_libcfa_a_OBJECTS = $(am__objects_2)
+@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)
 AM_V_P = $(am__v_P_@AM_V@)
@@ -191,5 +206,5 @@
 am__v_CCLD_1 = 
 SOURCES = $(libcfa_a_SOURCES)
-DIST_SOURCES = $(libcfa_a_SOURCES)
+DIST_SOURCES = $(am__libcfa_a_SOURCES_DIST)
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
@@ -197,4 +212,13 @@
     *) (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 \
+	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 \
+	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
 HEADERS = $(nobase_cfa_include_HEADERS)
 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
@@ -220,4 +244,5 @@
 	$(top_srcdir)/./automake/depcomp
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+VPATH = @srcdir@ :../prelude
 ACLOCAL = @ACLOCAL@
 AMTAR = @AMTAR@
@@ -243,4 +268,5 @@
 CFLAGS = @CFLAGS@
 CONFIGURATION = @CONFIGURATION@
+CONFIG_BUILDLIB = @CONFIG_BUILDLIB@
 CONFIG_CFAFLAGS = @CONFIG_CFAFLAGS@
 CONFIG_CFLAGS = @CONFIG_CFLAGS@
@@ -328,5 +354,5 @@
 
 # create object files in directory with source files
-AUTOMAKE_OPTIONS = subdir-objects
+AUTOMAKE_OPTIONS = foreign subdir-objects
 ARFLAGS = cr
 CFACOMPILE = $(CFACC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CFAFLAGS) $(CFAFLAGS) $(AM_CFLAGS) $(CFLAGS)
@@ -341,41 +367,53 @@
 # use -no-include-stdhdr to prevent rebuild cycles
 # The built sources must not depend on the installed headers
-AM_CFAFLAGS = -quiet -in-tree -imacros prelude.c -I$(srcdir)/stdhdr @CONFIG_CFAFLAGS@
+AM_CFAFLAGS = -quiet -in-tree -I$(srcdir)/stdhdr @CONFIG_CFAFLAGS@
 AM_CFLAGS = -g -Wall -Wno-unused-function @ARCH_FLAGS@ @CONFIG_CFLAGS@
 AM_CCASFLAGS = -g -Wall -Wno-unused-function @ARCH_FLAGS@ @CONFIG_CFLAGS@
+@BUILDLIB_FALSE@headers = 
 
 #----------------------------------------------------------------------------------------------------------------
 
 # not all platforms support concurrency, add option do disable it
-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 concurrency/coroutine.hfa \
-	concurrency/thread.hfa concurrency/kernel.hfa \
-	concurrency/monitor.hfa concurrency/mutex.hfa
-libobjs = ${headers:.hfa=.o}
+@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@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 = 
 
 # not all platforms support concurrency, add option do disable it
-libsrc = prelude.c startup.cfa interpose.cfa bits/debug.cfa assert.cfa \
-	exception.c virtual.c heap.cfa ${headers:.hfa=.cfa} \
-	concurrency/CtxSwitch-@ARCHITECTURE@.S concurrency/alarm.cfa \
-	concurrency/invoke.c concurrency/preemption.cfa
-libcfa_a_SOURCES = ${libsrc}
+@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
+
+#----------------------------------------------------------------------------------------------------------------
+# add dependency to cfa-cpp so all libraries are rebuilt with new translator
+#@CFACC@ @CFACPP@ prelude.cfa
+
+# add dependency of cfa files
+libobjs = $(addsuffix .o, $(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}) \
+)
+
+
+#----------------------------------------------------------------------------------------------------------------
+libcfa_a_SOURCES = prelude.cfa ${libsrc}
 stdhdr = ${shell find ${srcdir}/stdhdr -type f -printf "%p "}
 cfa_includedir = $(CFA_INCDIR)
-nobase_cfa_include_HEADERS = \
-	${headers}             \
-	${stdhdr}              \
-	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
-
-MOSTLYCLEANFILES = prelude.c
+nobase_cfa_include_HEADERS = ${stdhdr} ${headers} ${headers_nosrc}
 all: all-am
 
@@ -506,5 +544,4 @@
 
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/exception.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/prelude.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@
@@ -676,5 +713,4 @@
 	fi
 mostlyclean-generic:
-	-test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
 
 clean-generic:
@@ -784,12 +820,14 @@
 
 
-.cfa.o: $(CFACC) $(CFACPP)
+.cfa.o:
 	$(AM_V_CFA)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
 	$(CFACOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
 	$(am__mv) $$depbase.Tpo $$depbase.Po
-
-#----------------------------------------------------------------------------------------------------------------
-# add dependency to cfa-cpp so all libraries are rebuilt with new translator
-${libobjs} : ${cfalib_DATA}
+$(libobjs) : @CFACC@ @CFACPP@ prelude.cfa
+
+-include $(libdeps)
+
+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 ${@}
 
 #----------------------------------------------------------------------------------------------------------------
@@ -797,4 +835,8 @@
 	-rm -rf ${CFA_INCDIR} ${CFA_LIBDIR}
 
+# $(AM_V_CFA)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+# 	$(CFACOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+# 	$(am__mv) $$depbase.Tpo $$depbase.Po
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
