Move setlocale(3) and the wchar stubs over to .cpp.

Also separate out the C++ files so we can use -Werror on them. I'd
rather wait for LOCAL_CPPFLAGS to be in AOSP, but this also lets us
see which files still need to be sorted into one bucket or the other.

Change-Id: I6acc1f7c043935c70a3b089f705d218b9aaaba0a
diff --git a/libc/Android.mk b/libc/Android.mk
index 84f4259..79f2c9d 100644
--- a/libc/Android.mk
+++ b/libc/Android.mk
@@ -178,14 +178,12 @@
 	bionic/eventfd.c \
 	bionic/fcntl.c \
 	bionic/fdprintf.c \
-	bionic/__fgets_chk.cpp \
 	bionic/flockfile.c \
 	bionic/fork.c \
 	bionic/fstatfs.c \
 	bionic/ftime.c \
 	bionic/ftok.c \
 	bionic/fts.c \
-	bionic/getcwd.cpp \
 	bionic/getdtablesize.c \
 	bionic/gethostname.c \
 	bionic/getpgrp.c \
@@ -199,18 +197,14 @@
 	bionic/issetugid.c \
 	bionic/ldexp.c \
 	bionic/libc_init_common.c \
-	bionic/locale.c \
 	bionic/logd_write.c \
 	bionic/lseek64.c \
 	bionic/md5.c \
 	bionic/memccpy.c \
 	bionic/memchr.c \
-	bionic/__memcpy_chk.cpp \
 	bionic/memmem.c \
-	bionic/__memmove_chk.cpp \
 	bionic/memmove_words.c \
 	bionic/memrchr.c \
-	bionic/__memset_chk.cpp \
 	bionic/memswap.c \
 	bionic/mmap.c \
 	bionic/openat.c \
@@ -253,40 +247,24 @@
 	bionic/sigwait.c \
 	bionic/sleep.c \
 	bionic/statfs.c \
-	bionic/__strcat_chk.cpp \
 	bionic/strcoll.c \
-	bionic/__strcpy_chk.cpp \
-	bionic/strerror.cpp \
-	bionic/strerror_r.cpp \
-	bionic/__strlcat_chk.cpp \
-	bionic/__strlcpy_chk.cpp \
-	bionic/__strlen_chk.cpp \
-	bionic/__strncat_chk.cpp \
-	bionic/__strncpy_chk.cpp \
 	bionic/strndup.c \
 	bionic/strnlen.c \
 	bionic/strntoimax.c \
 	bionic/strntoumax.c \
-	bionic/strsignal.cpp \
 	bionic/strtotimeval.c \
-	bionic/stubs.cpp \
 	bionic/system_properties.c \
 	bionic/tcgetpgrp.c \
 	bionic/tcsetpgrp.c \
 	bionic/tdestroy.c \
 	bionic/thread_atexit.c \
 	bionic/time64.c \
-	bionic/tmpfile.cpp \
-	bionic/__umask_chk.cpp \
 	bionic/umount.c \
 	bionic/unlockpt.c \
 	bionic/usleep.c \
 	bionic/utime.c \
 	bionic/utmp.c \
-	bionic/__vsnprintf_chk.cpp \
-	bionic/__vsprintf_chk.cpp \
 	bionic/wait.c \
-	bionic/wchar.c \
 	bionic/wcscoll.c \
 	netbsd/gethnamaddr.c \
 	netbsd/isc/ev_timers.c \
@@ -319,6 +297,30 @@
 	netbsd/nameser/ns_print.c \
 	netbsd/nameser/ns_samedomain.c \
 
+libc_bionic_src_files := \
+	bionic/__fgets_chk.cpp \
+	bionic/getcwd.cpp \
+	bionic/__memcpy_chk.cpp \
+	bionic/__memmove_chk.cpp \
+	bionic/__memset_chk.cpp \
+	bionic/setlocale.cpp \
+	bionic/__strcat_chk.cpp \
+	bionic/__strcpy_chk.cpp \
+	bionic/strerror.cpp \
+	bionic/strerror_r.cpp \
+	bionic/__strlcat_chk.cpp \
+	bionic/__strlcpy_chk.cpp \
+	bionic/__strlen_chk.cpp \
+	bionic/__strncat_chk.cpp \
+	bionic/__strncpy_chk.cpp \
+	bionic/strsignal.cpp \
+	bionic/stubs.cpp \
+	bionic/tmpfile.cpp \
+	bionic/__umask_chk.cpp \
+	bionic/__vsnprintf_chk.cpp \
+	bionic/__vsprintf_chk.cpp \
+	bionic/wchar.cpp \
+
 libc_upstream_netbsd_src_files := \
 	upstream-netbsd/libc/compat-43/creat.c \
 	upstream-netbsd/libc/gen/ftw.c \
@@ -509,7 +511,6 @@
     -I$(LOCAL_PATH)/private \
     -DPOSIX_MISTAKE \
     -DLOG_ON_HEAP_ERROR \
-    -std=gnu99 \
     -Wall -Wextra
 
 # these macro definitions are required to implement the
@@ -773,17 +774,33 @@
 
 
 # ========================================================
+# libc_bionic.a - home-grown C library code
+# ========================================================
+#
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := $(libc_bionic_src_files)
+LOCAL_CFLAGS := $(libc_common_cflags) -Werror
+LOCAL_C_INCLUDES := $(libc_common_c_includes)
+LOCAL_MODULE := libc_bionic
+LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
+LOCAL_SYSTEM_SHARED_LIBRARIES :=
+
+include $(BUILD_STATIC_LIBRARY)
+
+
+# ========================================================
 # libc_common.a
 # ========================================================
 
 include $(CLEAR_VARS)
 
 LOCAL_SRC_FILES := $(libc_common_src_files)
-LOCAL_CFLAGS := $(libc_common_cflags)
+LOCAL_CFLAGS := $(libc_common_cflags) -std=gnu99
 LOCAL_C_INCLUDES := $(libc_common_c_includes)
 LOCAL_MODULE := libc_common
 LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
-LOCAL_WHOLE_STATIC_LIBRARIES := libbionic_ssp libc_netbsd
+LOCAL_WHOLE_STATIC_LIBRARIES := libbionic_ssp libc_bionic libc_netbsd
 LOCAL_SYSTEM_SHARED_LIBRARIES :=
 
 include $(BUILD_STATIC_LIBRARY)
@@ -808,7 +825,8 @@
 
 LOCAL_C_INCLUDES := $(libc_common_c_includes)
 LOCAL_CFLAGS := $(libc_common_cflags) \
-                -DLIBC_STATIC
+                -DLIBC_STATIC \
+                -std=gnu99
 
 LOCAL_MODULE := libc_nomalloc
 LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
@@ -831,7 +849,8 @@
 	bionic/libc_init_static.c
 
 LOCAL_CFLAGS := $(libc_common_cflags) \
-                -DLIBC_STATIC
+                -DLIBC_STATIC \
+                -std=gnu99
 LOCAL_C_INCLUDES := $(libc_common_c_includes)
 LOCAL_MODULE := libc
 LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
@@ -852,7 +871,7 @@
 # Since this code is experimental it is disabled by default.
 # see libc/bionic/pthread_debug.c for details
 
-LOCAL_CFLAGS := $(libc_common_cflags) -DPTHREAD_DEBUG -DPTHREAD_DEBUG_ENABLED=0
+LOCAL_CFLAGS := $(libc_common_cflags) -std=gnu99 -DPTHREAD_DEBUG -DPTHREAD_DEBUG_ENABLED=0
 LOCAL_C_INCLUDES := $(libc_common_c_includes)
 
 LOCAL_SRC_FILES := \