Index: uspace/Makefile.common
===================================================================
--- uspace/Makefile.common	(revision a37eeb9ba97e3e9ba5e9566f217542e2b135459b)
+++ uspace/Makefile.common	(revision 8e2154e7a5f2efb72e5de559639e832fa5dd2d43)
@@ -237,5 +237,6 @@
 
 # Flags for the compilation of C++ code.
-CPPFLAGS = $(LIBCPP_INCLUDES_FLAGS) $(INCLUDES_FLAGS) -O$(OPTIMIZATION) $(CPP_ARCHSPEC) \
+CXX_BASE_LIBS = $(LIBCPP_PREFIX)/libcpp.a $(BASE_LIBS)
+CXXFLAGS = $(LIBCPP_INCLUDES_FLAGS) $(INCLUDES_FLAGS) -O$(OPTIMIZATION) $(COMMON_CFLAGS) \
 	-imacros $(CONFIG_HEADER) \
 	-fexec-charset=UTF-8 -fwide-exec-charset=UTF-32$(ENDIANESS) \
@@ -322,4 +323,9 @@
 endif
 
+ifneq ($(CXX_BINARY),)
+$(CXX_BINARY): $(LINKER_SCRIPT) $(OBJECTS) $(LIBTAGS) $(CXX_BASE_LIBS)
+	$(CXX) $(CXXFLAGS) $(LDFLAGS) $(EXTRA_LDFLAGS) -T $(LINKER_SCRIPT) -Wl,-Map,$@.map -o $@ $(OBJECTS) $(LIBARGS) $(CXX_BASE_LIBS)
+endif
+
 ifneq ($(TEST_BINARY),)
 $(TEST_BINARY): $(LINKER_SCRIPT) $(TEST_OBJECTS) $(TEST_BINARY_LIBS) $(LIBTAGS) $(BASE_LIBS)
@@ -357,5 +363,5 @@
 
 %.o: %.cpp | depend
-	$(CPP) $(CPPFLAGS) $(EXTRA_CPPFLAGS) -c $< -o $@
+	$(CXX) $(CXXFLAGS) $(EXTRA_CXXFLAGS) -c $< -o $@
 
 %.test.o: %.c | depend
@@ -372,5 +378,5 @@
 
 %.lo: %.cpp | depend
-	$(CPP) $(CPPFLAGS) $(EXTRA_CPPFLAGS) -c $< -o $@
+	$(CXX) $(CXXFLAGS) $(EXTRA_CXXFLAGS) -c $< -o $@
 
 -include $(DEPENDS)
Index: uspace/app/cpptest/Makefile
===================================================================
--- uspace/app/cpptest/Makefile	(revision a37eeb9ba97e3e9ba5e9566f217542e2b135459b)
+++ uspace/app/cpptest/Makefile	(revision 8e2154e7a5f2efb72e5de559639e832fa5dd2d43)
@@ -29,8 +29,5 @@
 USPACE_PREFIX = ../..
 
-# TODO: Force linker to link libcpp by default when linking cpp apps?
-LIBS = cpp
-
-BINARY = cpptest
+CXX_BINARY = cpptest
 
 SOURCES = \
Index: uspace/lib/c/arch/arm32/Makefile.common
===================================================================
--- uspace/lib/c/arch/arm32/Makefile.common	(revision a37eeb9ba97e3e9ba5e9566f217542e2b135459b)
+++ uspace/lib/c/arch/arm32/Makefile.common	(revision 8e2154e7a5f2efb72e5de559639e832fa5dd2d43)
@@ -30,6 +30,4 @@
 COMMON_CFLAGS += -ffixed-r9 -mtp=soft -fno-omit-frame-pointer -mapcs-frame \
 	-march=$(subst _,-,$(PROCESSOR_ARCH))
-CPP_ARCHSPEC= -ffixed-r9 -mtp=soft -fno-omit-frame-pointer -mapcs-frame \
-	-march=$(subst _,-,$(PROCESSOR_ARCH))
 
 LDFLAGS += -Wl,--gc-sections
@@ -37,5 +35,4 @@
 ifeq ($(CONFIG_FPU),y)
 	COMMON_CFLAGS += -mfloat-abi=hard
-	CPP_ARCHSPEC += -mfloat-abi=hard
 endif
 
Index: uspace/lib/c/arch/mips32/Makefile.common
===================================================================
--- uspace/lib/c/arch/mips32/Makefile.common	(revision a37eeb9ba97e3e9ba5e9566f217542e2b135459b)
+++ uspace/lib/c/arch/mips32/Makefile.common	(revision 8e2154e7a5f2efb72e5de559639e832fa5dd2d43)
@@ -28,5 +28,4 @@
 
 COMMON_CFLAGS += -msoft-float -mabi=32
-CPP_ARCHSPEC = -msoft-float -mabi=32
 AS_PROLOG = .module softfloat;.abicalls;
 LDFLAGS += -Wl,--gc-sections
Index: uspace/lib/c/arch/mips32eb/Makefile.common
===================================================================
--- uspace/lib/c/arch/mips32eb/Makefile.common	(revision a37eeb9ba97e3e9ba5e9566f217542e2b135459b)
+++ uspace/lib/c/arch/mips32eb/Makefile.common	(revision 8e2154e7a5f2efb72e5de559639e832fa5dd2d43)
@@ -28,5 +28,4 @@
 
 COMMON_CFLAGS += -msoft-float -mabi=32
-CPP_ARCHSPEC = -msoft-float -mabi=32
 AS_PROLOG = .module softfloat;.abicalls;
 LDFLAGS += -Wl,--gc-sections
