@@ -20,91 +20,43 @@ if [ "$cxx_type" = "Ubuntu" ]; then
2020fi
2121
2222if [ " $cxx_type " = " g++" ] || [ " $cxx_type " = " g++.exe" ]; then
23- gcc_ver=$( $CXX -dumpversion)
24- gcc_target=$( $CXX -v 2>&1 | grep Target: | cut -d' ' -f2)
25- # TODO: get built-in include paths from compiler
26- $CXX -x c++ -v -c - < /dev/null
27-
2823 defs=
2924 defs=" $defs -D__GNUC__"
3025 defs=" $defs -D__STDC__"
3126 defs=" $defs -D__STDC_HOSTED__"
3227 defs=" $defs -D__CHAR_BIT__=8"
3328 defs=" $defs -D__x86_64__"
34- defs=" $defs -D__INTPTR_TYPE__='long int'" # MSYS
3529 defs=" $defs -D__has_builtin(x)=(1)"
3630 defs=" $defs -D__has_cpp_attribute(x)=(1)"
3731 defs=" $defs -D__has_attribute(x)=(1)"
3832
39- find /usr -name cctype
40- find /usr/include -name cctype
41- find /usr -name stddef.h
42- find /usr/include -name stddef.h
43- find /usr -name c++config.h
44- cat /usr/include/sys/_intsup.h
45- # some required include paths might differ per distro
4633 inc=
47- inc=" $inc -I/usr/include"
48- if [ -d " /usr/include/linux" ]; then # Manjaro, ubuntu
49- inc=" $inc -I/usr/include/linux"
50- fi
51- if [ -d " /usr/include/c++/$gcc_ver " ]; then # Manjaro, ubuntu
52- inc=" $inc -I/usr/include/c++/$gcc_ver "
53- fi
54- if [ -d " /usr/include/c++/$gcc_ver /$gcc_target " ]; then
55- inc=" $inc -I/usr/include/c++/$gcc_ver /$gcc_target "
56- fi
57- if [ -d " /usr/lib/gcc/$gcc_target /$gcc_ver /include" ]; then
58- inc=" $inc -I/usr/lib/gcc/$gcc_target /$gcc_ver /include"
59- fi
60- if [ -d " /usr/lib/gcc/$gcc_target /$gcc_ver /include/c++" ]; then # MSYS
61- inc=" $inc -I/usr/lib/gcc/$gcc_target /$gcc_ver /include/c++"
62- fi
63- if [ -d " /usr/lib/gcc/$gcc_target /$gcc_ver /include/c++/$gcc_target " ]; then # MSYS
64- inc=" $inc -I/usr/lib/gcc/$gcc_target /$gcc_ver /include/c++/$gcc_target "
65- fi
66- if [ -d " /usr/include/$gcc_target " ]; then
67- inc=" $inc -I/usr/include/$gcc_target "
68- inc=" $inc -I/usr/include/$gcc_target /c++/$gcc_ver "
69- fi
34+ while read line
35+ do
36+ inc=" $inc -I$line "
37+ done <<< " $($CXX -x c++ -v -c - 2>&1 < /dev/null | grep -e'^ [/A-Z]' | grep -v /cc1plus | grep -v /as)"
7038elif [ " $cxx_type " = " clang" ]; then
71- clang_ver=$( $CXX -dumpversion)
72- clang_ver=${clang_ver%% .* }
73- clang_target=$( $CXX -v 2>&1 | grep Target: | cut -d' ' -f2)
74- # TODO: get built-in include paths from compiler
75- $CXX -x c++ -v -c - < /dev/null
76-
7739 defs=
7840 defs=" $defs -D__BYTE_ORDER__"
7941 defs=" $defs -D__linux__"
8042 defs=" $defs -D__x86_64__"
8143 defs=" $defs -D__SIZEOF_SIZE_T__=8"
44+ defs=" $defs -D__STDC_HOSTED__"
45+ defs=" $defs -D__CHAR_BIT__=8"
8246 defs=" $defs -D__has_feature(x)=(1)"
8347 defs=" $defs -D__has_extension(x)=(1)"
8448 defs=" $defs -D__has_attribute(x)=(0)"
8549 defs=" $defs -D__has_cpp_attribute(x)=(0)"
8650 defs=" $defs -D__has_include_next(x)=(0)"
87- defs=" $defs -D__building_module(x)=(0)" # MSYS
51+ defs=" $defs -D__building_module(x)=(0)"
52+ defs=" $defs -D__has_builtin(x)=(1)"
8853
89- find /usr -name cctype
90- find /usr/include -name cctype
91- find /usr -name stddef.h
92- find /usr/include -name stddef.h
93- # some required include paths might differ per distro
54+ # TODO: use libc++
9455 inc=
95- if [ -d " /usr/include/c++/v1" ]; then
96- inc=" $inc -I/usr/include/c++/v1"
97- fi
98- if [ -d " /usr/lib/llvm-$clang_ver /include/c++/v1" ]; then
99- inc=" $inc -I/usr/lib/llvm-$clang_ver /include/c++/v1"
100- fi
101- inc=" $inc -I/usr/include"
102- if [ -d " /usr/lib/clang/$clang_ver /include" ]; then # Manjaro, ubuntu
103- inc=" $inc -I/usr/lib/clang/$clang_ver /include"
104- fi
105- if [ -d " /usr/include/$clang_target " ]; then
106- inc=" $inc -I/usr/include/$clang_target "
107- fi
56+ while read line
57+ do
58+ inc=" $inc -I$line "
59+ done <<< " $($CXX -x c++ -v -c - 2>&1 < /dev/null | grep -e'^ [/A-Z]')"
10860elif [ " $cxx_type " = " Apple" ]; then
10961 appleclang_ver=$( $CXX -dumpversion)
11062 appleclang_ver=${appleclang_ver%% .* }
0 commit comments