Cmake & libc++ building on Linux observations

Assumption: Previously build llvm trunk to have a fresh clang/clang++ under /usr/local/bin

Libc++ Assumption: Building outside of llvm/clang trunk to test build the library.

When I configure cmake and pass clang++ and clang in the standard -DCMAKE_CXX_COMPILER=/usr/local/bin/clang++ and -DCMAKE_C_COMPILER=/usr/local/bin/clang respectively when building the CMakeCache.txt I see a jumping between [a mixed marriage] clang+/gcc or c++/clang.

Building Outside of Cmake: If I go into the libc++ source → lib folder and edit the buildit script with /usr/local/bin/clang++ and /usr/local/bin/clang I get a noisy (68 warning) but success as follows:;

^
…/src/exception.cpp:204:6: warning: exception_ptr not yet implemented [-W#warnings]
#warning exception_ptr not yet implemented
^
…/src/exception.cpp:217:6: warning: exception_ptr not yet implemented [-W#warnings]
#warning exception_ptr not yet implemented
^
…/src/exception.cpp:210:38: warning: unused parameter ‘p’ [-Wunused-parameter]
void rethrow_exception(exception_ptr p)
^
8 warnings generated.

  • for FILE in ‘…/src/*.cpp’
  • /usr/local/bin/clang++ -c -g -Os -fPIC -std=c++0x -fstrict-aliasing -Wall -Wextra -Wshadow -Wconversion -Wnewline-eof -Wpadded -Wmissing-prototypes -Wstrict-aliasing=2 -Wstrict-overflow=4 -nostdinc++ -I…/include …/src/future.cpp
  • for FILE in ‘…/src/*.cpp’
  • /usr/local/bin/clang++ -c -g -Os -fPIC -std=c++0x -fstrict-aliasing -Wall -Wextra -Wshadow -Wconversion -Wnewline-eof -Wpadded -Wmissing-prototypes -Wstrict-aliasing=2 -Wstrict-overflow=4 -nostdinc++ -I…/include …/src/hash.cpp
  • for FILE in ‘…/src/*.cpp’
  • /usr/local/bin/clang++ -c -g -Os -fPIC -std=c++0x -fstrict-aliasing -Wall -Wextra -Wshadow -Wconversion -Wnewline-eof -Wpadded -Wmissing-prototypes -Wstrict-aliasing=2 -Wstrict-overflow=4 -nostdinc++ -I…/include …/src/ios.cpp
  • for FILE in ‘…/src/*.cpp’
  • /usr/local/bin/clang++ -c -g -Os -fPIC -std=c++0x -fstrict-aliasing -Wall -Wextra -Wshadow -Wconversion -Wnewline-eof -Wpadded -Wmissing-prototypes -Wstrict-aliasing=2 -Wstrict-overflow=4 -nostdinc++ -I…/include …/src/iostream.cpp
  • for FILE in ‘…/src/*.cpp’
  • /usr/local/bin/clang++ -c -g -Os -fPIC -std=c++0x -fstrict-aliasing -Wall -Wextra -Wshadow -Wconversion -Wnewline-eof -Wpadded -Wmissing-prototypes -Wstrict-aliasing=2 -Wstrict-overflow=4 -nostdinc++ -I…/include …/src/locale.cpp
    …/src/locale.cpp:846:48: warning: array subscript is of type ‘char’ [-Wchar-subscripts]
    return isascii(c) ? __classic_upper_table()[c] : c;
    ^~
    …/src/locale.cpp:846:25: warning: implicit conversion loses integer precision: ‘const int’ to ‘char’
    [-Wconversion]
    return isascii(c) ? __classic_upper_table()[c] : c;
    ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~
    …/src/locale.cpp:860:55: warning: array subscript is of type ‘char’ [-Wchar-subscripts]
    *low = isascii(*low) ? __classic_upper_table()[*low] : *low;
    ^~~~~
    …/src/locale.cpp:860:32: warning: implicit conversion loses integer precision: ‘const int’ to ‘char_type’
    (aka ‘char’) [-Wconversion]
    *low = isascii(*low) ? __classic_upper_table()[*low] : *low;
    ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    …/src/locale.cpp:874:48: warning: array subscript is of type ‘char’ [-Wchar-subscripts]
    return isascii(c) ? __classic_lower_table()[c] : c;
    ^~
    …/src/locale.cpp:874:25: warning: implicit conversion loses integer precision: ‘const int’ to ‘char’
    [-Wconversion]
    return isascii(c) ? __classic_lower_table()[c] : c;
    ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~
    …/src/locale.cpp:887:55: warning: array subscript is of type ‘char’ [-Wchar-subscripts]
    *low = isascii(*low) ? __classic_lower_table()[*low] : *low;
    ^~~~~
    …/src/locale.cpp:887:32: warning: implicit conversion loses integer precision: ‘const int’ to ‘char_type’
    (aka ‘char’) [-Wconversion]
    *low = isascii(*low) ? __classic_lower_table()[*low] : *low;
    ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    …/src/locale.cpp:1056:34: warning: implicit conversion changes signedness: ‘char_type’ (aka ‘wchar_t’) to
    ‘wint_t’ (aka ‘unsigned int’) [-Wsign-conversion]
    if (m & space && !iswspace_l(c, __l)) result = false;
../src/locale.cpp:1057:34: warning: implicit conversion changes signedness: 'char_type' (aka 'wchar_t') to
'wint_t' (aka 'unsigned int') [-Wsign-conversion]
if (m & print && !iswprint_l(c, __l)) result = false;
~~~~~~~~~~ ^
../src/locale.cpp:1058:34: warning: implicit conversion changes signedness: 'char_type' (aka 'wchar_t') to
'wint_t' (aka 'unsigned int') [-Wsign-conversion]
if (m & cntrl && !iswcntrl_l(c, __l)) result = false;
~~~~~~~~~~ ^
../src/locale.cpp:1059:34: warning: implicit conversion changes signedness: 'char_type' (aka 'wchar_t') to
'wint_t' (aka 'unsigned int') [-Wsign-conversion]
if (m & upper && !iswupper_l(c, __l)) result = false;
~~~~~~~~~~ ^
../src/locale.cpp:1060:34: warning: implicit conversion changes signedness: 'char_type' (aka 'wchar_t') to
'wint_t' (aka 'unsigned int') [-Wsign-conversion]
if (m & lower && !iswlower_l(c, __l)) result = false;
~~~~~~~~~~ ^
../src/locale.cpp:1061:34: warning: implicit conversion changes signedness: 'char_type' (aka 'wchar_t') to
'wint_t' (aka 'unsigned int') [-Wsign-conversion]
if (m & alpha && !iswalpha_l(c, __l)) result = false;
~~~~~~~~~~ ^
../src/locale.cpp:1062:34: warning: implicit conversion changes signedness: 'char_type' (aka 'wchar_t') to
'wint_t' (aka 'unsigned int') [-Wsign-conversion]
if (m & digit && !iswdigit_l(c, __l)) result = false;
~~~~~~~~~~ ^
../src/locale.cpp:1063:34: warning: implicit conversion changes signedness: 'char_type' (aka 'wchar_t') to
'wint_t' (aka 'unsigned int') [-Wsign-conversion]
if (m & punct && !iswpunct_l(c, __l)) result = false;
~~~~~~~~~~ ^
../src/locale.cpp:1064:36: warning: implicit conversion changes signedness: 'char_type' (aka 'wchar_t') to
'wint_t' (aka 'unsigned int') [-Wsign-conversion]
if (m & xdigit && !iswxdigit_l(c, __l)) result = false;
~~~~~~~~~~~ ^
../src/locale.cpp:1065:34: warning: implicit conversion changes signedness: 'char_type' (aka 'wchar_t') to
'wint_t' (aka 'unsigned int') [-Wsign-conversion]
if (m & blank && !iswblank_l(c, __l)) result = false;
~~~~~~~~~~ ^
../src/locale.cpp:1080:28: warning: implicit conversion changes signedness: 'const char_type'
(aka 'const wchar_t') to 'wint_t' (aka 'unsigned int') [-Wsign-conversion]
if (iswspace_l(*low, __l))
~~~~~~~~~~ ^~~~
../src/locale.cpp:1082:28: warning: implicit conversion changes signedness: 'const char_type'
(aka 'const wchar_t') to 'wint_t' (aka 'unsigned int') [-Wsign-conversion]
if (iswprint_l(*low, __l))
~~~~~~~~~~ ^~~~
../src/locale.cpp:1084:28: warning: implicit conversion changes signedness: 'const char_type'
(aka 'const wchar_t') to 'wint_t' (aka 'unsigned int') [-Wsign-conversion]
if (iswcntrl_l(*low, __l))
~~~~~~~~~~ ^~~~
../src/locale.cpp:1086:28: warning: implicit conversion changes signedness: 'const char_type'
(aka 'const wchar_t') to 'wint_t' (aka 'unsigned int') [-Wsign-conversion]
if (iswupper_l(*low, __l))
~~~~~~~~~~ ^~~~
../src/locale.cpp:1088:28: warning: implicit conversion changes signedness: 'const char_type'
(aka 'const wchar_t') to 'wint_t' (aka 'unsigned int') [-Wsign-conversion]
if (iswlower_l(*low, __l))
~~~~~~~~~~ ^~~~
../src/locale.cpp:1090:28: warning: implicit conversion changes signedness: 'const char_type'
(aka 'const wchar_t') to 'wint_t' (aka 'unsigned int') [-Wsign-conversion]
if (iswalpha_l(*low, __l))
~~~~~~~~~~ ^~~~
../src/locale.cpp:1092:28: warning: implicit conversion changes signedness: 'const char_type'
(aka 'const wchar_t') to 'wint_t' (aka 'unsigned int') [-Wsign-conversion]
if (iswdigit_l(*low, __l))
~~~~~~~~~~ ^~~~
../src/locale.cpp:1094:28: warning: implicit conversion changes signedness: 'const char_type'
(aka 'const wchar_t') to 'wint_t' (aka 'unsigned int') [-Wsign-conversion]
if (iswpunct_l(*low, __l))
~~~~~~~~~~ ^~~~
../src/locale.cpp:1096:29: warning: implicit conversion changes signedness: 'const char_type'
(aka 'const wchar_t') to 'wint_t' (aka 'unsigned int') [-Wsign-conversion]
if (iswxdigit_l(*low, __l))
~~~~~~~~~~~ ^~~~
../src/locale.cpp:1112:38: warning: implicit conversion changes signedness: 'const char_type'
(aka 'const wchar_t') to 'wint_t' (aka 'unsigned int') [-Wsign-conversion]
if (m & space && !iswspace_l(*low, __l)) continue;
~~~~~~~~~~ ^~~~
../src/locale.cpp:1113:38: warning: implicit conversion changes signedness: 'const char_type'
(aka 'const wchar_t') to 'wint_t' (aka 'unsigned int') [-Wsign-conversion]
if (m & print && !iswprint_l(*low, __l)) continue;
~~~~~~~~~~ ^~~~
../src/locale.cpp:1114:38: warning: implicit conversion changes signedness: 'const char_type'
(aka 'const wchar_t') to 'wint_t' (aka 'unsigned int') [-Wsign-conversion]
if (m & cntrl && !iswcntrl_l(*low, __l)) continue;
~~~~~~~~~~ ^~~~
../src/locale.cpp:1115:38: warning: implicit conversion changes signedness: 'const char_type'
(aka 'const wchar_t') to 'wint_t' (aka 'unsigned int') [-Wsign-conversion]
if (m & upper && !iswupper_l(*low, __l)) continue;
~~~~~~~~~~ ^~~~
../src/locale.cpp:1116:38: warning: implicit conversion changes signedness: 'const char_type'
(aka 'const wchar_t') to 'wint_t' (aka 'unsigned int') [-Wsign-conversion]
if (m & lower && !iswlower_l(*low, __l)) continue;
~~~~~~~~~~ ^~~~
../src/locale.cpp:1117:38: warning: implicit conversion changes signedness: 'const char_type'
(aka 'const wchar_t') to 'wint_t' (aka 'unsigned int') [-Wsign-conversion]
if (m & alpha && !iswalpha_l(*low, __l)) continue;
~~~~~~~~~~ ^~~~
../src/locale.cpp:1118:38: warning: implicit conversion changes signedness: 'const char_type'
(aka 'const wchar_t') to 'wint_t' (aka 'unsigned int') [-Wsign-conversion]
if (m & digit && !iswdigit_l(*low, __l)) continue;
~~~~~~~~~~ ^~~~
../src/locale.cpp:1119:38: warning: implicit conversion changes signedness: 'const char_type'
(aka 'const wchar_t') to 'wint_t' (aka 'unsigned int') [-Wsign-conversion]
if (m & punct && !iswpunct_l(*low, __l)) continue;
~~~~~~~~~~ ^~~~
../src/locale.cpp:1120:40: warning: implicit conversion changes signedness: 'const char_type'
(aka 'const wchar_t') to 'wint_t' (aka 'unsigned int') [-Wsign-conversion]
if (m & xdigit && !iswxdigit_l(*low, __l)) continue;
~~~~~~~~~~~ ^~~~
../src/locale.cpp:1121:38: warning: implicit conversion changes signedness: 'const char_type'
(aka 'const wchar_t') to 'wint_t' (aka 'unsigned int') [-Wsign-conversion]
if (m & blank && !iswblank_l(*low, __l)) continue;
~~~~~~~~~~ ^~~~
../src/locale.cpp:1137:37: warning: implicit conversion changes signedness: 'const char_type'
(aka 'const wchar_t') to 'wint_t' (aka 'unsigned int') [-Wsign-conversion]
if (m & space && iswspace_l(*low, __l)) continue;
~~~~~~~~~~ ^~~~
../src/locale.cpp:1138:37: warning: implicit conversion changes signedness: 'const char_type'
(aka 'const wchar_t') to 'wint_t' (aka 'unsigned int') [-Wsign-conversion]
if (m & print && iswprint_l(*low, __l)) continue;
~~~~~~~~~~ ^~~~
../src/locale.cpp:1139:37: warning: implicit conversion changes signedness: 'const char_type'
(aka 'const wchar_t') to 'wint_t' (aka 'unsigned int') [-Wsign-conversion]
if (m & cntrl && iswcntrl_l(*low, __l)) continue;
~~~~~~~~~~ ^~~~
../src/locale.cpp:1140:37: warning: implicit conversion changes signedness: 'const char_type'
(aka 'const wchar_t') to 'wint_t' (aka 'unsigned int') [-Wsign-conversion]
if (m & upper && iswupper_l(*low, __l)) continue;
~~~~~~~~~~ ^~~~
../src/locale.cpp:1141:37: warning: implicit conversion changes signedness: 'const char_type'
(aka 'const wchar_t') to 'wint_t' (aka 'unsigned int') [-Wsign-conversion]
if (m & lower && iswlower_l(*low, __l)) continue;
~~~~~~~~~~ ^~~~
../src/locale.cpp:1142:37: warning: implicit conversion changes signedness: 'const char_type'
(aka 'const wchar_t') to 'wint_t' (aka 'unsigned int') [-Wsign-conversion]
if (m & alpha && iswalpha_l(*low, __l)) continue;
~~~~~~~~~~ ^~~~
../src/locale.cpp:1143:37: warning: implicit conversion changes signedness: 'const char_type'
(aka 'const wchar_t') to 'wint_t' (aka 'unsigned int') [-Wsign-conversion]
if (m & digit && iswdigit_l(*low, __l)) continue;
~~~~~~~~~~ ^~~~
../src/locale.cpp:1144:37: warning: implicit conversion changes signedness: 'const char_type'
(aka 'const wchar_t') to 'wint_t' (aka 'unsigned int') [-Wsign-conversion]
if (m & punct && iswpunct_l(*low, __l)) continue;
~~~~~~~~~~ ^~~~
../src/locale.cpp:1145:39: warning: implicit conversion changes signedness: 'const char_type'
(aka 'const wchar_t') to 'wint_t' (aka 'unsigned int') [-Wsign-conversion]
if (m & xdigit && iswxdigit_l(*low, __l)) continue;
~~~~~~~~~~~ ^~~~
../src/locale.cpp:1146:37: warning: implicit conversion changes signedness: 'const char_type'
(aka 'const wchar_t') to 'wint_t' (aka 'unsigned int') [-Wsign-conversion]
if (m & blank && iswblank_l(*low, __l)) continue;
~~~~~~~~~~ ^~~~
../src/locale.cpp:1156:12: warning: implicit conversion changes signedness: 'wint_t' (aka 'unsigned int') to
'wchar_t' [-Wsign-conversion]
return towupper_l(c, __l);
~~~~~~ ^~~~~~~~~~~~~~~~~~
../src/locale.cpp:1156:23: warning: implicit conversion changes signedness: 'char_type' (aka 'wchar_t') to
'wint_t' (aka 'unsigned int') [-Wsign-conversion]
return towupper_l(c, __l);
~~~~~~~~~~ ^
../src/locale.cpp:1163:16: warning: implicit conversion changes signedness: 'wint_t' (aka 'unsigned int') to
'char_type' (aka 'wchar_t') [-Wsign-conversion]
*low = towupper_l(*low, __l);
~ ^~~~~~~~~~~~~~~~~~~~~
../src/locale.cpp:1163:27: warning: implicit conversion changes signedness: 'char_type' (aka 'wchar_t') to
'wint_t' (aka 'unsigned int') [-Wsign-conversion]
*low = towupper_l(*low, __l);
~~~~~~~~~~ ^~~~
../src/locale.cpp:1170:12: warning: implicit conversion changes signedness: 'wint_t' (aka 'unsigned int') to
'wchar_t' [-Wsign-conversion]
return towlower_l(c, __l);
~~~~~~ ^~~~~~~~~~~~~~~~~~
../src/locale.cpp:1170:23: warning: implicit conversion changes signedness: 'char_type' (aka 'wchar_t') to
'wint_t' (aka 'unsigned int') [-Wsign-conversion]
return towlower_l(c, __l);
~~~~~~~~~~ ^
../src/locale.cpp:1177:16: warning: implicit conversion changes signedness: 'wint_t' (aka 'unsigned int') to
'char_type' (aka 'wchar_t') [-Wsign-conversion]
*low = towlower_l(*low, __l);
~ ^~~~~~~~~~~~~~~~~~~~~
../src/locale.cpp:1177:27: warning: implicit conversion changes signedness: 'char_type' (aka 'wchar_t') to
'wint_t' (aka 'unsigned int') [-Wsign-conversion]
*low = towlower_l(*low, __l);
~~~~~~~~~~ ^~~~
../src/locale.cpp:1187:12: warning: implicit conversion changes signedness: 'wint_t' (aka 'unsigned int') to
'wchar_t' [-Wsign-conversion]
return __btowc_l(c, __l);
~~~~~~ ^~~~~~~~~~~~~~~~~
../src/locale.cpp:1198:17: warning: implicit conversion changes signedness: 'wint_t' (aka 'unsigned int') to
'char_type' (aka 'wchar_t') [-Wsign-conversion]
*dest = __btowc_l(*low, __l);
~ ^~~~~~~~~~~~~~~~~~~~
../src/locale.cpp:1209:23: warning: implicit conversion changes signedness: 'char_type' (aka 'wchar_t') to
'wint_t' (aka 'unsigned int') [-Wsign-conversion]
int r = __wctob_l(c, __l);
~~~~~~~~~ ^
../src/locale.cpp:1211:14: warning: comparison of integers of different signs: 'int' and 'unsigned int'
[-Wsign-compare]
return r != WEOF ? static_cast<char>(r) : dfault;
~ ^ ~~~~
../src/locale.cpp:1222:27: warning: implicit conversion changes signedness: 'const char_type'
(aka 'const wchar_t') to 'wint_t' (aka 'unsigned int') [-Wsign-conversion]
int r = __wctob_l(*low, __l);
~~~~~~~~~ ^~~~
../src/locale.cpp:1224:19: warning: comparison of integers of different signs: 'int' and 'unsigned int'
[-Wsign-compare]
*dest = r != WEOF ? static_cast<char>(r) : dfault;
~ ^ ~~~~
../src/locale.cpp:1337:53: warning: implicit conversion changes signedness: 'long' to 'size_t'
(aka 'unsigned long') [-Wsign-conversion]
size_t n = __wcsnrtombs_l(to, &frm_nxt, fend-frm, to_end-to, &st, __l);
~~~~~~~~~~~~~~ ~~~~^~~~
../src/locale.cpp:1337:65: warning: implicit conversion changes signedness: 'long' to 'size_t'
(aka 'unsigned long') [-Wsign-conversion]
size_t n = __wcsnrtombs_l(to, &frm_nxt, fend-frm, to_end-to, &st, __l);
~~~~~~~~~~~~~~ ~~~~~~^~~
../src/locale.cpp:1406:53: warning: implicit conversion changes signedness: 'long' to 'size_t'
(aka 'unsigned long') [-Wsign-conversion]
size_t n = __mbsnrtowcs_l(to, &frm_nxt, fend-frm, to_end-to, &st, __l);
~~~~~~~~~~~~~~ ~~~~^~~~
../src/locale.cpp:1406:65: warning: implicit conversion changes signedness: 'long' to 'size_t'
(aka 'unsigned long') [-Wsign-conversion]
size_t n = __mbsnrtowcs_l(to, &frm_nxt, fend-frm, to_end-to, &st, __l);
~~~~~~~~~~~~~~ ~~~~~~^~~
../src/locale.cpp:1417:50: warning: implicit conversion changes signedness: 'long' to 'size_t'
(aka 'unsigned long') [-Wsign-conversion]
n = __mbrtowc_l(to_nxt, frm, fend-frm, &save_state, __l);
~~~~~~~~~~~ ~~~~^~~~
../src/locale.cpp:1522:43: warning: implicit conversion changes signedness: 'long' to 'size_t'
(aka 'unsigned long') [-Wsign-conversion]
size_t n = __mbrlen_l(frm, frm_end-frm, &st, __l);
~~~~~~~~~~ ~~~~~~~^~~~
../src/locale.cpp:1548:27: warning: implicit conversion loses integer precision:
'decltype((__ctype_get_mb_cur_max()))' (aka 'unsigned long') to 'int' [-Wshorten-64-to-32]
return __l == 0 ? 1 : __mb_cur_max_l(__l);
~ ^~~~~~~~~~~~~~~~~~~
68 warnings generated.
+ for FILE in '../src/*.cpp'
+ /usr/local/bin/clang++ -c -g -Os -fPIC -std=c++0x -fstrict-aliasing -Wall -Wextra -Wshadow -Wconversion -Wnewline-eof -Wpadded -Wmissing-prototypes -Wstrict-aliasing=2 -Wstrict-overflow=4 -nostdinc++ -I../include ../src/memory.cpp
+ for FILE in '../src/*.cpp'
+ /usr/local/bin/clang++ -c -g -Os -fPIC -std=c++0x -fstrict-aliasing -Wall -Wextra -Wshadow -Wconversion -Wnewline-eof -Wpadded -Wmissing-prototypes -Wstrict-aliasing=2 -Wstrict-overflow=4 -nostdinc++ -I../include ../src/mutex.cpp
+ for FILE in '../src/*.cpp'
+ /usr/local/bin/clang++ -c -g -Os -fPIC -std=c++0x -fstrict-aliasing -Wall -Wextra -Wshadow -Wconversion -Wnewline-eof -Wpadded -Wmissing-prototypes -Wstrict-aliasing=2 -Wstrict-overflow=4 -nostdinc++ -I../include ../src/new.cpp
+ for FILE in '../src/*.cpp'
+ /usr/local/bin/clang++ -c -g -Os -fPIC -std=c++0x -fstrict-aliasing -Wall -Wextra -Wshadow -Wconversion -Wnewline-eof -Wpadded -Wmissing-prototypes -Wstrict-aliasing=2 -Wstrict-overflow=4 -nostdinc++ -I../include ../src/random.cpp
+ for FILE in '../src/*.cpp'
+ /usr/local/bin/clang++ -c -g -Os -fPIC -std=c++0x -fstrict-aliasing -Wall -Wextra -Wshadow -Wconversion -Wnewline-eof -Wpadded -Wmissing-prototypes -Wstrict-aliasing=2 -Wstrict-overflow=4 -nostdinc++ -I../include ../src/regex.cpp
+ for FILE in '../src/*.cpp'
+ /usr/local/bin/clang++ -c -g -Os -fPIC -std=c++0x -fstrict-aliasing -Wall -Wextra -Wshadow -Wconversion -Wnewline-eof -Wpadded -Wmissing-prototypes -Wstrict-aliasing=2 -Wstrict-overflow=4 -nostdinc++ -I../include ../src/stdexcept.cpp
+ for FILE in '../src/*.cpp'
+ /usr/local/bin/clang++ -c -g -Os -fPIC -std=c++0x -fstrict-aliasing -Wall -Wextra -Wshadow -Wconversion -Wnewline-eof -Wpadded -Wmissing-prototypes -Wstrict-aliasing=2 -Wstrict-overflow=4 -nostdinc++ -I../include ../src/string.cpp
+ for FILE in '../src/*.cpp'
+ /usr/local/bin/clang++ -c -g -Os -fPIC -std=c++0x -fstrict-aliasing -Wall -Wextra -Wshadow -Wconversion -Wnewline-eof -Wpadded -Wmissing-prototypes -Wstrict-aliasing=2 -Wstrict-overflow=4 -nostdinc++ -I../include ../src/strstream.cpp
+ for FILE in '../src/*.cpp'
+ /usr/local/bin/clang++ -c -g -Os -fPIC -std=c++0x -fstrict-aliasing -Wall -Wextra -Wshadow -Wconversion -Wnewline-eof -Wpadded -Wmissing-prototypes -Wstrict-aliasing=2 -Wstrict-overflow=4 -nostdinc++ -I../include ../src/system_error.cpp
+ for FILE in '../src/*.cpp'
+ /usr/local/bin/clang++ -c -g -Os -fPIC -std=c++0x -fstrict-aliasing -Wall -Wextra -Wshadow -Wconversion -Wnewline-eof -Wpadded -Wmissing-prototypes -Wstrict-aliasing=2 -Wstrict-overflow=4 -nostdinc++ -I../include ../src/thread.cpp
+ for FILE in '../src/*.cpp'
+ /usr/local/bin/clang++ -c -g -Os -fPIC -std=c++0x -fstrict-aliasing -Wall -Wextra -Wshadow -Wconversion -Wnewline-eof -Wpadded -Wmissing-prototypes -Wstrict-aliasing=2 -Wstrict-overflow=4 -nostdinc++ -I../include ../src/typeinfo.cpp
+ for FILE in '../src/*.cpp'
+ /usr/local/bin/clang++ -c -g -Os -fPIC -std=c++0x -fstrict-aliasing -Wall -Wextra -Wshadow -Wconversion -Wnewline-eof -Wpadded -Wmissing-prototypes -Wstrict-aliasing=2 -Wstrict-overflow=4 -nostdinc++ -I../include ../src/utility.cpp
+ for FILE in '../src/*.cpp'
+ /usr/local/bin/clang++ -c -g -Os -fPIC -std=c++0x -fstrict-aliasing -Wall -Wextra -Wshadow -Wconversion -Wnewline-eof -Wpadded -Wmissing-prototypes -Wstrict-aliasing=2 -Wstrict-overflow=4 -nostdinc++ -I../include ../src/valarray.cpp
+ case $TRIPLE in
+ /usr/local/bin/clang algorithm.o bind.o chrono.o condition_variable.o debug.o exception.o future.o hash.o ios.o iostream.o locale.o memory.o mutex.o new.o random.o regex.o stdexcept.o string.o strstream.o system_error.o thread.o typeinfo.o utility.o valarray.o -fPIC -o libc++.so.1.0 -shared -nodefaultlibs -Wl,-soname,libc++.so.1 -lpthread -lrt -lc -lstdc++ -std=c++0x -fstrict-aliasing -Wall -Wextra -Wshadow -Wconversion -Wnewline-eof -Wpadded -Wmissing-prototypes -Wstrict-aliasing=2 -Wstrict-overflow=4
clang-3: warning: argument unused during compilation: '-nodefaultlibs'
+ '[' -z ']'
+ rm algorithm.o bind.o chrono.o condition_variable.o debug.o exception.o future.o hash.o ios.o iostream.o locale.o memory.o mutex.o new.o random.o regex.o stdexcept.o string.o strstream.o system_error.o thread.o typeinfo.o utility.o valarray.o
mdriftmeyer@horus:~/DeveloperProjects/LLVMProject/libcxx/lib$

Cmake Obstruction: Cmake won’t let me pass both clang++ & clang together and splits it up as I have stated, with far less noise [though I doubt that’s helpful], with the following:

mdriftmeyer@horus:~/DeveloperProjects/LLVMProject/cmake-libcxx$ cmake …/libcxx
– Host triple: x86_64-pc-linux
– Target triple: x86_64-pc-linux
– Configuring done
– Generating done
– Build files have been written to: /home/mdriftmeyer/DeveloperProjects/LLVMProject/cmake-libcxx
mdriftmeyer@horus:~/DeveloperProjects/LLVMProject/cmake-libcxx$ make clean && make -j3
[ 4%] [ 8%] [ 12%] Building CXX object lib/CMakeFiles/cxx.dir//src/stdexcept.cpp.o
Building CXX object lib/CMakeFiles/cxx.dir/
/src/bind.cpp.o
Building CXX object lib/CMakeFiles/cxx.dir//src/exception.cpp.o
/home/mdriftmeyer/DeveloperProjects/LLVMProject/libcxx/src/exception.cpp:106:6: warning: uncaught_exception not
yet implemented [-W#warnings]
#warning uncaught_exception not yet implemented
^
/home/mdriftmeyer/DeveloperProjects/LLVMProject/libcxx/src/exception.cpp:143:6: warning: exception_ptr not yet
implemented [-W#warnings]
#warning exception_ptr not yet implemented
^
/home/mdriftmeyer/DeveloperProjects/LLVMProject/libcxx/src/exception.cpp:154:6: warning: exception_ptr not yet
implemented [-W#warnings]
#warning exception_ptr not yet implemented
^
/home/mdriftmeyer/DeveloperProjects/LLVMProject/libcxx/src/exception.cpp:170:6: warning: exception_ptr not yet
implemented [-W#warnings]
#warning exception_ptr not yet implemented
^
/home/mdriftmeyer/DeveloperProjects/LLVMProject/libcxx/src/exception.cpp:204:6: warning: exception_ptr not yet
implemented [-W#warnings]
#warning exception_ptr not yet implemented
^
/home/mdriftmeyer/DeveloperProjects/LLVMProject/libcxx/src/exception.cpp:217:6: warning: exception_ptr not yet
implemented [-W#warnings]
#warning exception_ptr not yet implemented
^
6 warnings generated.
[ 16%] Building CXX object lib/CMakeFiles/cxx.dir/
/src/algorithm.cpp.o
[ 20%] Building CXX object lib/CMakeFiles/cxx.dir//src/mutex.cpp.o
[ 25%] Building CXX object lib/CMakeFiles/cxx.dir/
/src/ios.cpp.o
[ 29%] Building CXX object lib/CMakeFiles/cxx.dir//src/new.cpp.o
[ 33%] Building CXX object lib/CMakeFiles/cxx.dir/
/src/strstream.cpp.o
[ 37%] Building CXX object lib/CMakeFiles/cxx.dir//src/string.cpp.o
[ 41%] Building CXX object lib/CMakeFiles/cxx.dir/
/src/thread.cpp.o
[ 45%] Building CXX object lib/CMakeFiles/cxx.dir//src/iostream.cpp.o
[ 50%] Building CXX object lib/CMakeFiles/cxx.dir/
/src/future.cpp.o
[ 54%] Building CXX object lib/CMakeFiles/cxx.dir//src/chrono.cpp.o
[ 58%] Building CXX object lib/CMakeFiles/cxx.dir/
/src/system_error.cpp.o
[ 62%] Building CXX object lib/CMakeFiles/cxx.dir//src/regex.cpp.o
[ 66%] Building CXX object lib/CMakeFiles/cxx.dir/
/src/utility.cpp.o
[ 70%] Building CXX object lib/CMakeFiles/cxx.dir//src/hash.cpp.o
[ 75%] Building CXX object lib/CMakeFiles/cxx.dir/
/src/locale.cpp.o
[ 79%] Building CXX object lib/CMakeFiles/cxx.dir//src/typeinfo.cpp.o
[ 83%] Building CXX object lib/CMakeFiles/cxx.dir/
/src/random.cpp.o
[ 87%] Building CXX object lib/CMakeFiles/cxx.dir//src/valarray.cpp.o
[ 91%] Building CXX object lib/CMakeFiles/cxx.dir/
/src/memory.cpp.o
[ 95%] [100%] Building CXX object lib/CMakeFiles/cxx.dir//src/debug.cpp.o
Building CXX object lib/CMakeFiles/cxx.dir/
/src/condition_variable.cpp.o
Linking CXX shared library libc++.so
clang-3: warning: argument unused during compilation: ‘-nodefaultlibs’
[100%] Built target cxx

Libc++ under /trunk/llvm/projects: If I bring this back into llvm trunk and it’s /projects where compiler-rt is also under the first time I build llvm/clang [assuming no clang/clang++ generated from trunk] I get what I expect [libcxx failing to compile as it’s building against c++/gcc] so I have to ask:

Won’t clang have to be built earlier in the process and then run some sort of second pass to build libc++ against the newly built clang++/clang and if so it’s clear the cmake files presently play hide and seek between clang/c++ and clang++/gcc?

For now I’ll just build llvm/clang and not even bother with libc++ under my libcxx path adjacent to my llvm/clang trunk path.

  • Marc