@@ -4,8 +4,47 @@ output=$(./simplecpp simplecpp.cpp -e -f 2>&1)
44ec=$?
55errors=$( echo " $output " | grep -v ' Header not found: <' )
66if [ $ec -ne 0 ]; then
7- # only fail if got errors which do not refer to missing system includes
7+ # only fail if we got errors which do not refer to missing system includes
88 if [ ! -z " $errors " ]; then
99 exit $ec
1010 fi
11- fi
11+ fi
12+
13+ if [ -z " $CXX " ]; then
14+ exit 0
15+ fi
16+
17+ cxx_type=$( $CXX --version | head -1 | cut -d' ' -f1)
18+ if [ " $cxx_type " = " Ubuntu" ]; then
19+ cxx_type=$( $CXX --version | head -1 | cut -d' ' -f2)
20+ fi
21+ if [ " $cxx_type " = " g++" ]; then
22+ gcc_ver=$( $CXX -dumpversion)
23+ ./simplecpp simplecpp.cpp -e -f -std=gnu++11 -D__GNUC__ -D__STDC__ -D__STDC_HOSTED__ -D__CHAR_BIT__=8 -I" /usr/include" -I" /usr/include/linux" -I" /usr/include/c++/$gcc_ver " -I" /usr/include/c++/$gcc_ver /x86_64-pc-linux-gnu" -I" /usr/lib64/gcc/x86_64-pc-linux-gnu/$gcc_ver /include" -I" /usr/include/x86_64-linux-gnu/c++/$gcc_ver "
24+ ec=$?
25+ if [ $ec -ne 0 ]; then
26+ exit $ec
27+ fi
28+ elif [ " $cxx_type " = " clang" ]; then
29+ # clang_ver=$($CXX -dumpversion)
30+ # clang_ver=${clang_ver%%.*}
31+ find /usr/include -name cctype
32+ ./simplecpp simplecpp.cpp -e -f -std=gnu++11 -D__BYTE_ORDER__ -D__GNUC__ -I" /usr/include/c++/v1"
33+ ec=$?
34+ if [ $ec -ne 0 ]; then
35+ exit $ec
36+ fi
37+ elif [ " $cxx_type " = " Apple" ]; then
38+ # clang_ver=$($CXX -dumpversion)
39+ # clang_ver=${clang_ver%%.*}
40+ find /Application -name cctype
41+ # 16.1 is a Xcode version common to all used platforms
42+ ./simplecpp simplecpp.cpp -e -f -std=gnu++11 -D__BYTE_ORDER__ -D__GNUC__ -I" /Applications/Xcode_16.1.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include" -I" /Applications/Xcode_16.1.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/c++/v1"
43+ ec=$?
44+ if [ $ec -ne 0 ]; then
45+ exit $ec
46+ fi
47+ else
48+ echo " unknown compiler '$cxx_type '"
49+ exit 1
50+ fi
0 commit comments