Skip to content

Commit 08bea4c

Browse files
committed
enable clang
1 parent 8771afc commit 08bea4c

File tree

75 files changed

+740
-749
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

75 files changed

+740
-749
lines changed

RUNME

+20-2
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,26 @@ cp README.md.template README.md
4646
for i in $SUBDIRS
4747
do
4848
echo
49-
log $i:
50-
(cd $i; sh ./RUNME; ./example) | sed 's/^/ /g'
49+
echo
50+
echo
51+
echo
52+
echo
53+
echo
54+
log $i:
55+
log "================================================="
56+
cd $i
57+
sh ./RUNME;
58+
if [ $? -ne 0 ]; then
59+
log_err "failed"
60+
exit 1
61+
fi
62+
if [ ! -f example ]; then
63+
log_err "build failed"
64+
exit 1
65+
fi
66+
./example
67+
cd ..
68+
5169
# Makes the main page too long:
5270
# cat $i/README.md >> README.md
5371
done

common/RUNME

+39-32
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#!/bin/sh
2-
#
2+
#
33
# Copyright (C) 2014 Neil McGill
44
#
55
# This software is free software; you can redistribute it and/or
@@ -24,7 +24,7 @@ cat Makefile.base | sed '/DO NOT DELETE/,$d' > Makefile.tmp
2424
mv Makefile.tmp Makefile
2525
makedepend *.cpp -p .o/ 2>/dev/null
2626

27-
echo "COMPILER_FLAGS=-std=c++2a -Werror -g -ggdb3 # AUTOGEN" > .Makefile
27+
echo "COMPILER_FLAGS=-std=c++2a -Werror -g -O3 -fstack-protector-all -ggdb3 # AUTOGEN" > .Makefile
2828
echo " " >> .Makefile
2929
echo "CLANG_COMPILER_WARNINGS=-Wall # AUTOGEN" >> .Makefile
3030
echo "GCC_COMPILER_WARNINGS=-Wall # AUTOGEN" >> .Makefile
@@ -36,47 +36,46 @@ then
3636
echo "COMPILER_WARNINGS=\$(GCC_COMPILER_WARNINGS) # AUTOGEN" >> .Makefile
3737
echo "COMPILER_WARNINGS=\$(GXX_COMPILER_WARNINGS) # AUTOGEN" >> .Makefile
3838
echo "COMPILER_WARNINGS=\$(CLANG_COMPILER_WARNINGS) # AUTOGEN" >> .Makefile
39-
echo "CC=clang # AUTOGEN" >> .Makefile
40-
echo "# CC=gcc # AUTOGEN" >> .Makefile
41-
echo "# CC=cc # AUTOGEN" >> .Makefile
42-
echo "# CC=g++ # AUTOGEN" >> .Makefile
39+
echo "CXX=clang # AUTOGEN" >> .Makefile
40+
echo "# CXX=gcc # AUTOGEN" >> .Makefile
41+
echo "# CXX=cc # AUTOGEN" >> .Makefile
42+
echo "# CXX=g++ # AUTOGEN" >> .Makefile
4343
else
4444
`gcc --version >/dev/null 2>/dev/null`
4545
if [ $? -eq 0 ]
4646
then
4747
echo "COMPILER_WARNINGS=\$(CLANG_COMPILER_WARNINGS) # AUTOGEN" >> .Makefile
4848
echo "COMPILER_WARNINGS=\$(GXX_COMPILER_WARNINGS) # AUTOGEN" >> .Makefile
4949
echo "COMPILER_WARNINGS=\$(GCC_COMPILER_WARNINGS) # AUTOGEN" >> .Makefile
50-
echo "# CC=clang # AUTOGEN" >> .Makefile
51-
echo "CC=gcc # AUTOGEN" >> .Makefile
52-
echo "# CC=cc # AUTOGEN" >> .Makefile
53-
echo "# CC=g++ # AUTOGEN" >> .Makefile
50+
echo "# CXX=clang # AUTOGEN" >> .Makefile
51+
echo "CXX=gcc # AUTOGEN" >> .Makefile
52+
echo "# CXX=cc # AUTOGEN" >> .Makefile
53+
echo "# CXX=g++ # AUTOGEN" >> .Makefile
5454
else
55-
`g++ --version >/dev/null 2>/dev/null`
56-
if [ $? -eq 0 ]
57-
then
55+
`g++ --version >/dev/null 2>/dev/null`
56+
if [ $? -eq 0 ]
57+
then
5858
echo "COMPILER_WARNINGS=\$(CLANG_COMPILER_WARNINGS) # AUTOGEN" >> .Makefile
5959
echo "COMPILER_WARNINGS=\$(GCC_COMPILER_WARNINGS) # AUTOGEN" >> .Makefile
6060
echo "COMPILER_WARNINGS=\$(GXX_COMPILER_WARNINGS) # AUTOGEN" >> .Makefile
61-
echo "# CC=clang # AUTOGEN" >> .Makefile
62-
echo "# CC=gcc # AUTOGEN" >> .Makefile
63-
echo "# CC=cc # AUTOGEN" >> .Makefile
64-
echo "CC=g++ # AUTOGEN" >> .Makefile
65-
else
61+
echo "# CXX=clang # AUTOGEN" >> .Makefile
62+
echo "# CXX=gcc # AUTOGEN" >> .Makefile
63+
echo "# CXX=cc # AUTOGEN" >> .Makefile
64+
echo "CXX=g++ # AUTOGEN" >> .Makefile
65+
else
6666
echo "COMPILER_WARNINGS=\$(CLANG_COMPILER_WARNINGS) # AUTOGEN" >> .Makefile
6767
echo "COMPILER_WARNINGS=\$(GXX_COMPILER_WARNINGS) # AUTOGEN" >> .Makefile
6868
echo "COMPILER_WARNINGS=\$(GCC_COMPILER_WARNINGS) # AUTOGEN" >> .Makefile
69-
echo "# CC=clang # AUTOGEN" >> .Makefile
70-
echo "# CC=gcc # AUTOGEN" >> .Makefile
71-
echo "# CC=cc # AUTOGEN" >> .Makefile
72-
echo "CC=g++ # AUTOGEN" >> .Makefile
73-
fi
69+
echo "# CXX=clang # AUTOGEN" >> .Makefile
70+
echo "# CXX=gcc # AUTOGEN" >> .Makefile
71+
echo "# CXX=cc # AUTOGEN" >> .Makefile
72+
echo "CXX=g++ # AUTOGEN" >> .Makefile
73+
fi
7474
fi
7575
fi
7676

7777
echo " " >> .Makefile
78-
echo "EXE=$EXE # AUTOGEN" >> .Makefile
79-
echo "LDLIBS=$LDLIBS # AUTOGEN" >> .Makefile
78+
echo "LDLIBS+=-lstdc++ # AUTOGEN" >> .Makefile
8079
echo "CXXFLAGS=\$(COMPILER_FLAGS) \$(COMPILER_WARNINGS) # AUTOGEN" >> .Makefile
8180

8281
cat Makefile | grep -v AUTOGEN | grep -v "^ $" >> .Makefile
@@ -86,26 +85,30 @@ then
8685
mv .Makefile Makefile
8786
if [ ! -f Makefile ]
8887
then
89-
log_err "No makefile?!"
90-
exit 1
88+
log_err "No makefile?!"
89+
exit 1
9190
fi
92-
else
91+
else
9392
log_err "Makefile create fail?!"
9493
exit 1
9594
fi
9695

9796
log_info "Cleaning"
98-
make clobber | sed 's/^/ /g'
97+
make clobber
98+
if [ $? -ne 0 ]; then
99+
log_err "make clobber failed"
100+
exit 1
101+
fi
99102

100103
CORES=""
101104

102105
case `uname` in
103106
*Darwin*)
104-
CORES=`/usr/sbin/system_profiler -detailLevel full SPHardwareDataType | grep Cores | sed 's/.*: //g'`
107+
CORES=`/usr/sbin/system_profiler -detailLevel full SPHardwareDataType | grep Cores | sed 's/.*: //g'`
105108
;;
106109

107110
*inux*)
108-
CORES=`cat /proc/cpuinfo | grep "cpu cores" | head -1 | awk '{print $4}'`
111+
CORES=`cat /proc/cpuinfo | grep "cpu cores" | head -1 | awk '{print $4}'`
109112
;;
110113
esac
111114

@@ -115,7 +118,11 @@ then
115118
fi
116119

117120
log_info "Compiling"
118-
make $CORES $* all | sed 's/^/ /g'
121+
make $CORES $* all
122+
if [ $? -ne 0 ]; then
123+
log_err "make failed"
124+
exit 1
125+
fi
119126

120127
if [ $? -eq 0 ]
121128
then

constexpr/Makefile

+6-7
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,17 @@
1-
COMPILER_FLAGS=-std=c++2a -Werror -g -ggdb3 # AUTOGEN
1+
COMPILER_FLAGS=-std=c++2a -Werror -g -O3 -fstack-protector-all -ggdb3 # AUTOGEN
22

33
CLANG_COMPILER_WARNINGS=-Wall # AUTOGEN
44
GCC_COMPILER_WARNINGS=-Wall # AUTOGEN
55
GXX_COMPILER_WARNINGS=-Wall # AUTOGEN
66
COMPILER_WARNINGS=$(GCC_COMPILER_WARNINGS) # AUTOGEN
77
COMPILER_WARNINGS=$(GXX_COMPILER_WARNINGS) # AUTOGEN
88
COMPILER_WARNINGS=$(CLANG_COMPILER_WARNINGS) # AUTOGEN
9-
CC=clang # AUTOGEN
10-
# CC=gcc # AUTOGEN
11-
# CC=cc # AUTOGEN
12-
# CC=g++ # AUTOGEN
9+
CXX=clang # AUTOGEN
10+
# CXX=gcc # AUTOGEN
11+
# CXX=cc # AUTOGEN
12+
# CXX=g++ # AUTOGEN
1313

14-
EXE= # AUTOGEN
15-
LDLIBS= # AUTOGEN
14+
LDLIBS+=-lstdc++ # AUTOGEN
1615
CXXFLAGS=$(COMPILER_FLAGS) $(COMPILER_WARNINGS) # AUTOGEN
1716
NAME=example
1817

constexpr/README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -115,8 +115,8 @@ To build:
115115
<pre>
116116
cd constexpr
117117
rm -f *.o example
118-
g++ -std=c++2a -Werror -g -ggdb3 -Wall -c -o main.o main.cpp
119-
g++ main.o -o example
118+
clang -std=c++2a -Werror -g -O3 -fstack-protector-all -ggdb3 -Wall -c -o main.o main.cpp
119+
clang main.o -lstdc++ -o example
120120
./example
121121
</pre>
122122
Expected output:

decltype/Makefile

+6-7
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,17 @@
1-
COMPILER_FLAGS=-std=c++2a -Werror -g -ggdb3 # AUTOGEN
1+
COMPILER_FLAGS=-std=c++2a -Werror -g -O3 -fstack-protector-all -ggdb3 # AUTOGEN
22

33
CLANG_COMPILER_WARNINGS=-Wall # AUTOGEN
44
GCC_COMPILER_WARNINGS=-Wall # AUTOGEN
55
GXX_COMPILER_WARNINGS=-Wall # AUTOGEN
66
COMPILER_WARNINGS=$(GCC_COMPILER_WARNINGS) # AUTOGEN
77
COMPILER_WARNINGS=$(GXX_COMPILER_WARNINGS) # AUTOGEN
88
COMPILER_WARNINGS=$(CLANG_COMPILER_WARNINGS) # AUTOGEN
9-
CC=clang # AUTOGEN
10-
# CC=gcc # AUTOGEN
11-
# CC=cc # AUTOGEN
12-
# CC=g++ # AUTOGEN
9+
CXX=clang # AUTOGEN
10+
# CXX=gcc # AUTOGEN
11+
# CXX=cc # AUTOGEN
12+
# CXX=g++ # AUTOGEN
1313

14-
EXE= # AUTOGEN
15-
LDLIBS= # AUTOGEN
14+
LDLIBS+=-lstdc++ # AUTOGEN
1615
CXXFLAGS=$(COMPILER_FLAGS) $(COMPILER_WARNINGS) # AUTOGEN
1716
NAME=example
1817

decltype/README.md

+4-4
Original file line numberDiff line numberDiff line change
@@ -175,8 +175,8 @@ To build:
175175
<pre>
176176
cd decltype
177177
rm -f *.o example
178-
g++ -std=c++2a -Werror -g -ggdb3 -Wall -c -o main.o main.cpp
179-
g++ main.o -o example
178+
clang -std=c++2a -Werror -g -O3 -fstack-protector-all -ggdb3 -Wall -c -o main.o main.cpp
179+
clang main.o -lstdc++ -o example
180180
./example
181181
</pre>
182182
Expected output:
@@ -204,8 +204,8 @@ char [42]
204204
TheUniverse
205205

206206
What type is a lambda_add_two...:
207-
Z4mainEUliiE_
208-
main::{lambda(int, int)#1}
207+
Z4mainE3$_1
208+
main::$_1
209209

210210
What type is a lambda_add_two(1, 2)...:
211211
int

hello_world_color/Makefile

+6-7
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,17 @@
1-
COMPILER_FLAGS=-std=c++2a -Werror -g -ggdb3 # AUTOGEN
1+
COMPILER_FLAGS=-std=c++2a -Werror -g -O3 -fstack-protector-all -ggdb3 # AUTOGEN
22

33
CLANG_COMPILER_WARNINGS=-Wall # AUTOGEN
44
GCC_COMPILER_WARNINGS=-Wall # AUTOGEN
55
GXX_COMPILER_WARNINGS=-Wall # AUTOGEN
66
COMPILER_WARNINGS=$(GCC_COMPILER_WARNINGS) # AUTOGEN
77
COMPILER_WARNINGS=$(GXX_COMPILER_WARNINGS) # AUTOGEN
88
COMPILER_WARNINGS=$(CLANG_COMPILER_WARNINGS) # AUTOGEN
9-
CC=clang # AUTOGEN
10-
# CC=gcc # AUTOGEN
11-
# CC=cc # AUTOGEN
12-
# CC=g++ # AUTOGEN
9+
CXX=clang # AUTOGEN
10+
# CXX=gcc # AUTOGEN
11+
# CXX=cc # AUTOGEN
12+
# CXX=g++ # AUTOGEN
1313

14-
EXE= # AUTOGEN
15-
LDLIBS= # AUTOGEN
14+
LDLIBS+=-lstdc++ # AUTOGEN
1615
CXXFLAGS=$(COMPILER_FLAGS) $(COMPILER_WARNINGS) # AUTOGEN
1716
NAME=example
1817

hello_world_color/README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -261,6 +261,6 @@ To build:
261261
<pre>
262262
cd hello_world_color
263263
rm -f *.o example
264-
g++ -std=c++2a -Werror -g -ggdb3 -Wall -c -o main.o main.cpp
265-
g++ main.o -o example
264+
clang -std=c++2a -Werror -g -O3 -fstack-protector-all -ggdb3 -Wall -c -o main.o main.cpp
265+
clang main.o -lstdc++ -o example
266266
</pre>

initializer_lists/Makefile

+6-7
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,17 @@
1-
COMPILER_FLAGS=-std=c++2a -Werror -g -ggdb3 # AUTOGEN
1+
COMPILER_FLAGS=-std=c++2a -Werror -g -O3 -fstack-protector-all -ggdb3 # AUTOGEN
22

33
CLANG_COMPILER_WARNINGS=-Wall # AUTOGEN
44
GCC_COMPILER_WARNINGS=-Wall # AUTOGEN
55
GXX_COMPILER_WARNINGS=-Wall # AUTOGEN
66
COMPILER_WARNINGS=$(GCC_COMPILER_WARNINGS) # AUTOGEN
77
COMPILER_WARNINGS=$(GXX_COMPILER_WARNINGS) # AUTOGEN
88
COMPILER_WARNINGS=$(CLANG_COMPILER_WARNINGS) # AUTOGEN
9-
CC=clang # AUTOGEN
10-
# CC=gcc # AUTOGEN
11-
# CC=cc # AUTOGEN
12-
# CC=g++ # AUTOGEN
9+
CXX=clang # AUTOGEN
10+
# CXX=gcc # AUTOGEN
11+
# CXX=cc # AUTOGEN
12+
# CXX=g++ # AUTOGEN
1313

14-
EXE= # AUTOGEN
15-
LDLIBS= # AUTOGEN
14+
LDLIBS+=-lstdc++ # AUTOGEN
1615
CXXFLAGS=$(COMPILER_FLAGS) $(COMPILER_WARNINGS) # AUTOGEN
1716
NAME=example
1817

initializer_lists/README.md

+18-18
Original file line numberDiff line numberDiff line change
@@ -120,20 +120,20 @@ To build:
120120
<pre>
121121
cd initializer_lists
122122
rm -f *.o example
123-
g++ -std=c++2a -Werror -g -ggdb3 -Wall -c -o main.o main.cpp
124-
g++ main.o -o example
123+
clang -std=c++2a -Werror -g -O3 -fstack-protector-all -ggdb3 -Wall -c -o main.o main.cpp
124+
clang main.o -lstdc++ -o example
125125
./example
126126
</pre>
127127
Expected output:
128128
<pre>
129129

130130
Create a std::initializer_list of MyString:
131-
0x7ffc7ebe55f0 MyString(std::string &&) elem1
132-
0x7ffc7ebe5610 MyString(std::string &&) elem2
131+
0x7ffc5bcf8df0 MyString(std::string &&) elem1
132+
0x7ffc5bcf8e10 MyString(std::string &&) elem2
133133

134134
Assign this initializer_list to a vector:
135-
0x5617777dcec0 MyString(const std::string &) elem1
136-
0x5617777dcee0 MyString(const std::string &) elem2
135+
0x55bfd6c82ec0 MyString(const std::string &) elem1
136+
0x55bfd6c82ee0 MyString(const std::string &) elem2
137137

138138
Walk the vector with 'const auto &i': (should see no copies)
139139
elem1
@@ -144,18 +144,18 @@ elem1
144144
elem2
145145

146146
Create another vector with an inline initializer list
147-
0x7ffc7ebe5630 MyString(std::string &&) elem3
148-
0x7ffc7ebe5650 MyString(std::string &&) elem4
149-
0x5617777dcf10 MyString(const std::string &) elem3
150-
0x5617777dcf30 MyString(const std::string &) elem4
151-
0x7ffc7ebe5650 ~MyString() elem4
152-
0x7ffc7ebe5630 ~MyString() elem3
147+
0x7ffc5bcf8d90 MyString(std::string &&) elem3
148+
0x7ffc5bcf8db0 MyString(std::string &&) elem4
149+
0x55bfd6c82f10 MyString(const std::string &) elem3
150+
0x55bfd6c82f30 MyString(const std::string &) elem4
151+
0x7ffc5bcf8db0 ~MyString() elem4
152+
0x7ffc5bcf8d90 ~MyString() elem3
153153

154154
End:
155-
0x5617777dcf10 ~MyString() elem3
156-
0x5617777dcf30 ~MyString() elem4
157-
0x5617777dcec0 ~MyString() elem1
158-
0x5617777dcee0 ~MyString() elem2
159-
0x7ffc7ebe5610 ~MyString() elem2
160-
0x7ffc7ebe55f0 ~MyString() elem1
155+
0x55bfd6c82f10 ~MyString() elem3
156+
0x55bfd6c82f30 ~MyString() elem4
157+
0x55bfd6c82ec0 ~MyString() elem1
158+
0x55bfd6c82ee0 ~MyString() elem2
159+
0x7ffc5bcf8e10 ~MyString() elem2
160+
0x7ffc5bcf8df0 ~MyString() elem1
161161
</pre>

initializer_lists_with_custom_vector/Makefile

+6-7
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,17 @@
1-
COMPILER_FLAGS=-std=c++2a -Werror -g -ggdb3 # AUTOGEN
1+
COMPILER_FLAGS=-std=c++2a -Werror -g -O3 -fstack-protector-all -ggdb3 # AUTOGEN
22

33
CLANG_COMPILER_WARNINGS=-Wall # AUTOGEN
44
GCC_COMPILER_WARNINGS=-Wall # AUTOGEN
55
GXX_COMPILER_WARNINGS=-Wall # AUTOGEN
66
COMPILER_WARNINGS=$(GCC_COMPILER_WARNINGS) # AUTOGEN
77
COMPILER_WARNINGS=$(GXX_COMPILER_WARNINGS) # AUTOGEN
88
COMPILER_WARNINGS=$(CLANG_COMPILER_WARNINGS) # AUTOGEN
9-
CC=clang # AUTOGEN
10-
# CC=gcc # AUTOGEN
11-
# CC=cc # AUTOGEN
12-
# CC=g++ # AUTOGEN
9+
CXX=clang # AUTOGEN
10+
# CXX=gcc # AUTOGEN
11+
# CXX=cc # AUTOGEN
12+
# CXX=g++ # AUTOGEN
1313

14-
EXE= # AUTOGEN
15-
LDLIBS= # AUTOGEN
14+
LDLIBS+=-lstdc++ # AUTOGEN
1615
CXXFLAGS=$(COMPILER_FLAGS) $(COMPILER_WARNINGS) # AUTOGEN
1716
NAME=example
1817

0 commit comments

Comments
 (0)